我采用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地址的数据不正确
}
}
我要赚赏金打赏帖 |
|
|---|---|
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
| 【分享开发笔记,赚取电动螺丝刀】墨水屏文本显示器被打赏¥25元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取磁力计iis2mdc被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取LPS22HH气压、温度被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取STTS751温度被打赏¥17元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX软件读取HTS221温湿度被打赏¥22元 | |
| M5PAPERESP32EINKDEVKIT评测|使用MicroPython开发M5Paper被打赏¥15元 | |
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
我要赚赏金
