我采用S3C2410总线直接读写外部存储器IDT7132遇到一个很奇怪的问题,请大虾们帮忙解答一下。
IDT7132是2K x 8bits Dual-Port Static RAM,我们试图用S3C2410直接读写IDT7132中2K Bytes的数据。IDT7132有地址线11条:A0~A10(原理图上接S342410的ADDR0~ADDR10);有数据线8条:I/O0~I/O7.
我们在对IDT7132按字节读写时(即逐字节读写)遇到如下问题:可以对2KBytes的数据连续写,但是无法对2Kbytes的数据连续读。比如我可以读到地址为:0、2、4、6、8、10......1996、1998中的数据,但是同时却无法正确读取到地址为:1、3、5、7、9.......1997、1999中的数据。
读写的时候我们是用C语言主程序中嵌入汇编实现的,具体程序如下:
void Main(void)
{
int j,i=0;
volatile unsigned char pp[2];
ChangeClockDivider(1,1); // 1:2:4
ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz
Port_Init();
//下面是IDT7132的读写程序
for(j=0;j <200;j++)//只测试200个Bytes
{
unsigned int x=0x28000000;//用nGCS5,所以IDT7132的基地址为0x28000000
char y=0;
x=x+j;
y=y+j;
__asm
{
STRB y,[x]//把y值写入IDT7132
}
}
for( j=0;j <200;j++)
{
unsigned int x=0x28000000;//IDT7132基地址
char y;
x=x+j;
__asm
{
LDRB y,[x]//按字节读出IDT7132中的数据
}
pp[0]=y;//读出的1、3、5、7。。。。1995、1997、1999地址的数据不正确
}
}
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
我要赚赏金
