我采用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地址的数据不正确
}
}
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |