新人求助!!! 
 
我自己做了块板,上面其他功能都正常,但唯独板子上的扩展SRAM不能使用,读取数据时全部都是乱码,调了好久了,还请各位大佬指点一二! 
 
电路图: 
 
 
 
程序: 
SRAM.C文件 
			
			
			- #include "sram.h"
 - 
 - void SRAM_Init()
 - {
 -         GPIO_InitTypeDef SRAM_Gpio_User;
 -         
 -         SRAM_Gpio_User.Mode = GPIO_PullUp;
 -         SRAM_Gpio_User.Pin  = GPIO_Pin_All;
 -         
 -         GPIO_Inilize(SRAM_DataPort,&SRAM_Gpio_User);
 -         GPIO_Inilize(SRAM_AddrPortH,&SRAM_Gpio_User);
 -         GPIO_Inilize(SRAM_AddrPortL,&SRAM_Gpio_User);
 -         
 -         GPIO_Initnumber(SRAM_LE,GPIO_PullUp);
 -         GPIO_Initnumber(SRAM_OE,GPIO_PullUp);
 -         GPIO_Initnumber(SRAM_WE,GPIO_PullUp);
 -         GPIO_Initnumber(SRAM_CE,GPIO_PullUp);
 -         
 -         P41 = 0;    //扩展SRAM使能
 -     P27 = 0;    //最高地址位置零
 -         P45 = 0;
 -         
 -         BUS_SPEED_4T();
 - }
 - 
 - u8 SRAM_Test()
 - {
 -         u8 a;
 -         u32 i;
 -         for(i=0;i<XDATA_LENTH;i++)
 -         {
 -                 if(i%2)EXRAM[i] = 0XFF;
 -                 EXRAM[i] = 0X00;
 -                 delay_ms(1);
 -         }
 -         delay_ms(1000);
 -         for(i=0;i<XDATA_LENTH;i++)
 -         {
 -                 if(EXRAM[i] != 0X55)
 -                 {                
 -                         printf("0X55 ADDRESS %ld 0X%X\r\n",i,EXRAM[i]);//测试输出用[apoyl_multivideo]
 - ##第一集
 - ##第二集
 - ##第三集
 - [/apoyl_multivideo]
 -                 }                
 -         }
 -         
 -         for(i=0;i<XDATA_LENTH;i++)
 -         {
 -                 EXRAM[i] = 0XAA;
 -         }
 -         for(i=0;i<XDATA_LENTH;i++)
 -         {
 -                 if(EXRAM[i] != 0XAA)
 -                 {                
 -                         printf("0XAA ADDRESS %ld 0X%X\r\n",i,EXRAM[i]);
 -                 }                
 -         }
 -         
 -         a=0;
 -         for(i=0;i<XDATA_LENTH;i++)
 -         {
 -                 a++;
 -                 if(a > 254)a=0;
 -                 EXRAM[i] = a;
 -         }
 -         a=0;
 -         for(i=0;i<XDATA_LENTH;i++)
 -         {
 -                 a++;
 -                 if(a > 254)a=0;
 -                 if(EXRAM[i] != a)
 -                 {                
 -                         printf("%d ADDRESS %ld 0X%X\r\n",a,i,EXRAM[i]);
 -                 }                
 -         }
 - }
 
  复制代码
  
 
 
SRAM.H头文件 
- #ifndef _SRAM_H_
 - #define _SRAM_H_
 - 
 - #include  "STC32G_GPIO.h"
 - #include        "public/config.h"
 - #include        "public/STC32G_Delay.h"
 - 
 - /*************  本地常量声明    **************/
 - #define     Baudrate1       115200L
 - 
 - #define     XDATA_LENTH     65536   //xdata长度
 - 
 - #define     BUS_SPEED_1T()  BUS_SPEED = 0
 - #define     BUS_SPEED_2T()  BUS_SPEED = 1
 - #define     BUS_SPEED_4T()  BUS_SPEED = 2
 - #define     BUS_SPEED_8T()  BUS_SPEED = 3
 - 
 - #define EXRAM           ((unsigned char volatile far *)0x7f0000)
 - 
 - #define EXRAM_Enble() EXTRAM = 1
 - #define EXRAM_Disble() EXTRAM = 0
 - 
 - #define SRAM_DataPort GPIO_P0
 - #define SRAM_AddrPortH GPIO_P2
 - #define SRAM_AddrPortL GPIO_P0
 - 
 - #define SRAM_LE P45
 - #define SRAM_OE P44
 - #define SRAM_WE P42
 - #define SRAM_CE P41
 - 
 - void SRAM_Init();
 - u8 SRAM_Test();
 - #endif
 
  复制代码
  
 
串口输出: 
 
 
 
SRAM芯片使用的IS61WV5128BL 
64KB 8BIT  
我第一下次使用这个扩展SRAM功能,应该是我的配置有问题,还烦请各位大佬帮忙查正,谢谢! 
 
 
sram.zip
(1.05 KB, 下载次数: 131)
 
 
 |