新人求助!!!
我自己做了块板,上面其他功能都正常,但唯独板子上的扩展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, 下载次数: 69)
|