我使用外部存储的zone6,但是我只要给地址0x100000赋值,0x102000、0x104000、0x106000这三个地址的值就会变得跟0x100000的值一样,其他相对应的地址还是相同的现象,感觉像是分成了四个模块:0x100000~0x11FFFF 0x120000~0x13FFFF 0x140000~0x15FFFF 0x160000~0x17FFFF ,只要其中一个模块的值改变,其他三个模块对应地址的值就会变成一样的值,设置如下:
cmd文件加了一句: A012 : origin = 0x100000, length = 0x080000
xintf初始化:XintfRegs.XINTCNF2.bit.XTIMCLK = 0x0000;
XintfRegs.XTIMING6.bit.USEREADY = 0;
XintfRegs.XTIMING6.bit.XWRACTIVE = 7;
XintfRegs.XTIMING6.bit.XRDTRAIL = 3;
XintfRegs.XBANK.bit.BANK = 2;
XintfRegs.XBANK.bit.BCYC = 3;
主函数中宏定义:
#define A2 *(Uint32 *)(0x108000+n*2)
#define A3 *(Uint32 *)(0x110000+n*2)
A1=n;
A2=i_rebulid;
A3=Um;
n++; n=n%16384;
n是存储个数据个数,还请遇到过的高手回复下,谢谢了
mangui zhang:
你扩展的外设是什么 这些数据是写出去读上来看到的吗
有没有外设影响了数据线的可能
我使用外部存储的zone6,但是我只要给地址0x100000赋值,0x102000、0x104000、0x106000这三个地址的值就会变得跟0x100000的值一样,其他相对应的地址还是相同的现象,感觉像是分成了四个模块:0x100000~0x11FFFF 0x120000~0x13FFFF 0x140000~0x15FFFF 0x160000~0x17FFFF ,只要其中一个模块的值改变,其他三个模块对应地址的值就会变成一样的值,设置如下:
cmd文件加了一句: A012 : origin = 0x100000, length = 0x080000
xintf初始化:XintfRegs.XINTCNF2.bit.XTIMCLK = 0x0000;
XintfRegs.XTIMING6.bit.USEREADY = 0;
XintfRegs.XTIMING6.bit.XWRACTIVE = 7;
XintfRegs.XTIMING6.bit.XRDTRAIL = 3;
XintfRegs.XBANK.bit.BANK = 2;
XintfRegs.XBANK.bit.BCYC = 3;
主函数中宏定义:
#define A2 *(Uint32 *)(0x108000+n*2)
#define A3 *(Uint32 *)(0x110000+n*2)
A1=n;
A2=i_rebulid;
A3=Um;
n++; n=n%16384;
n是存储个数据个数,还请遇到过的高手回复下,谢谢了
rookiecalf:
这需要看一下你的外围器件设计的时候的地址范围,如果设计的时候有些地址位没设计好,或者是使用的时候某些位有问题,可能会出上述问题。你可以看一下你上面地址异或为真值的位是不是有问题。