C6416 EMIFA 这样配置寄存器 然后向外部存储器的三个地址写数据,最后观看CCS的memory为什么出现0xA0000000以后的所有地址都是一个值啊???都是0xFFFFFFFF,而不是0xA0000000是0x55555555,0xA0000004是0x12345678,0xA0000008是0xFFFFFFF?????
程序如下:
#include <csl.h>
#include <csl_emifa.h>
#include <stdio.h>
#define EMIFA_CE3_BASE_ADDR1 0xA0000000
#define EMIFA_CE3_BASE_ADDR2 0xA0000004
#define EMIFA_CE3_BASE_ADDR3 0xA0000008
EMIFA_Config emifaCfg0 = {
0x0009207C,
0xFFFFFFD3,
0xFFFFFF03,
0xFFFFFF43,
0x6326CC22,
0x57116000,
0x0008061A,
0x00054549,
0x00000042,
0x00000042,
0x00000042,
0x00000042
};
Uint32 index, tempData1,tempData2,tempData3;
Uint32 *pAsyncData1 = (Uint32 *)EMIFA_CE3_BASE_ADDR1;
Uint32 *pAsyncData2 = (Uint32 *)EMIFA_CE3_BASE_ADDR2;
Uint32 *pAsyncData3 = (Uint32 *)EMIFA_CE3_BASE_ADDR3;
void main()
{
/*Initialise CSL,???CSL?*/
CSL_init();
EMIFA_config(&emifaCfg0);
tempData1 = 0x55555555;
tempData2 = 0x12345678;
tempData3 = 0xFFFFFFFF;
index=0;
while(1){
*pAsyncData1 = tempData1;
*pAsyncData2 = tempData2;
*pAsyncData3 = tempData3;
}
printf("\nAsynchronous Read Write is Successful\n");
return;
}
不是显示的问题啊,memory上显示的全都是一个值;是不是在写数据的时候出错了啊,下面的这样赋值对不对啊
*pAsyncData1 = tempData1;
*pAsyncData2 = tempData2;
*pAsyncData3 = tempData3;
是不是在写每个数据之间还要时延啊? FPGA这边用singletap查看信号,发现有三个数据的现实 但是不规则 而且还有别的数值,这又是怎么回事啊?
都显示这样的
Brighton Feng:
怎么还在用十几年前的芯片啊!
你是用FPGA模拟一个同步存储器吗?如果是同步方式访问的话,每次访问可能都会产生一个burst。建议先仔细研究一下文档。
你代码里访问的地址是0xA0000000,而memory窗口里显示的是0xB0000000?