我采用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地址的数据不正确
}
}
我要赚赏金打赏帖 |
|
|---|---|
| 在K230DBOX上实现多时段语音提示功能被打赏¥14元 | |
| 使K230DBOX实现相机持续拍照功能被打赏¥12元 | |
| 基于K230DBOX的文本管理器设计被打赏¥14元 | |
| 基于K230DBOX的彩色画板功能实现被打赏¥15元 | |
| 在K230DBOX上实现音乐播放器功能被打赏¥15元 | |
| NXP MCU系列开发板MCULink固件升级方法【VSCode】被打赏¥28元 | |
| 三分钟快速搭建NXP MCU开发环境(VSCode)被打赏¥22元 | |
| 为遥控小车巧添功能被打赏¥26元 | |
| 【S32K3XX】FlexCAN 模块配置使用被打赏¥30元 | |
| 【S32K3XX】FlexCAN RAM 资源分配整理被打赏¥25元 | |
我要赚赏金
