附件是我运行的 图片,请教这是什么原因呢???
Shine:
检查一下板子的供电电源, 看是否稳定干净, 纹波要求在数据手册上电气特性表列出的范围内.
user1853832:
回复 Shine:
谢谢您的回答,能否请教下C6743 EMIFA读写不正确的原因
Shine:
回复 user1853832:
先量一下时序是否正确?
user1853832:
回复 Shine:
您好,我单步运行写程序,在 运行*(temp_add) = 10;之前,用示波器观察CS、WE全是高电平,在运行这条程序的时候波形会出现一个向下的尖,运行下一条程序时就又变高了,不知道正确不
user1853832:
回复 user1853832:
附上程序,帮忙看看是否有问题:
void main( void ){ /* 初始化6747核*/ C6747_init(); C6747_GPIO_setDirection( 0x57,0);
while(1)
{ /* 调用SDRAM测试程序*/ testallblock(); } }
void testallblock(void){
Uint8 i; Uint8 *DRAM_StartAdd; Uint8 *temp_add; Uint32 Length=100; DRAM_StartAdd = (Uint8 *)(0x60000000);
for(i=0;i<Length;i++) {
temp_add = DRAM_StartAdd+i; *(temp_add) = 10; C6747_GPIO_setOutput ( 0x57, 0); //写 C6747_GPIO_setOutput ( 0x57, 1); //写 asm(" NOP 1 "); }
for(i=0;i<Length;i++) {
C6747_GPIO_setOutput ( 0x57, 1); temp[i]=*(DRAM_StartAdd+i); C6747_GPIO_setOutput ( 0x57, 1); //写 asm(" NOP 1 "); }
}
Shine:
回复 user1853832:
请检查一下程序中的其他配置.1. pinmux寄存器要使能EMIFA管脚.2. PSC里要enable EMIFA module. 3. EMIFA寄存器要根据外接memory进行配置.
user1853832:
回复 Shine:
您好,pinmux寄存器、 PSC已经仔细检查啦,没有错误,EMIFA外接的是FPGA的双口RAM,8位数据,9位地址,以下是EMIFA CE寄存器配置,能否请教下我的建立、触发、保持的设置是否正确?这些参数与数据宽度有关系么?
void CEint(){
AEMIF_A2CR = 0 //CE2 | ( 0 << 31 ) // selectStrobe | ( 0 << 30 ) // extWait | ( 0 << 26 ) // writeSetup //1 // 0 ns | ( 9 << 20 ) // writeStrobe //4 // 40 ns | ( 3 << 17 ) // writeHold //1 // 0 ns | ( 0 << 13 ) // readSetup //1 // 0 ns | ( 9 << 7 ) // readStrobe //8 // 80 ns | ( 3 << 4 ) // readHold // 1 // 10 ns | ( 0 << 2 ) // turnAround //3 // 10 ns | ( 0 << 0 ); // asyncSize // 8-bit bus // asyncSize // 8-bit bus*/
}
Shine:
回复 user1853832:
setupt, strobe, hold时间你要根据双口RAM的时序要求来配.
user1853832:
回复 Shine:
1 请问是根据DSP 的EMIFA 时序来设置还是根据FPGA的双口RAM时序来配置???
2 附件是两个手册分别给出的时序图,DSP的EMIFA时序上标注的2,3,2是指该寄存器要配置的值吗?
Shine:
回复 user1853832:
1. 根据双口RAM时序配EMIF寄存器
2. 这里只是个示例, 具体要根据外接memory的时序要求配.