This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
附件是我运行的 图片,请教这是什么原因呢???
您好,我单步运行写程序,在 运行*(temp_add) = 10;之前,用示波器观察CS、WE全是高电平,在运行这条程序的时候波形会出现一个向下的尖,运行下一条程序时就又变高了,不知道正确不
附上程序,帮忙看看是否有问题:
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 ");
}
}
请检查一下程序中的其他配置.
1. pinmux寄存器要使能EMIFA管脚.
2. PSC里要enable EMIFA module.
3. EMIFA寄存器要根据外接memory进行配置.
您好,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*/
}
1 请问是根据DSP 的EMIFA 时序来设置还是根据FPGA的双口RAM时序来配置???
2 附件是两个手册分别给出的时序图,DSP的EMIFA时序上标注的2,3,2是指该寄存器要配置的值吗?
您好,我现在DSP往双口RAM写数,每次写入一个数,不仅这个地址里变成相应的数,双口RAM所对应的DSP映射所有地址都里变为这个数,现象见附图,请问什么原因呢,实在找不出来啦
您好,请教下DSP写进去的数FPGA能读出,但是FPGA写进去的数DSP读出来全是0,请问这是什么原因?
补充:FPGA先写后读打印的程序下进去之打印出来是对的,但是之后我只下载读打印的程序,却读不出来之前写进去的数啦。中间没有断电啊,那双口RAM的数应该是写进去就一直存在的把??