BF537和FPGA通过PPI口连接,FPGA写,BF537读。读数时遇到一个怪现象:前29个数是对的,后边的数则是隔一个存一个。比如说送了1~50,那么BF537内存储的结果是:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,34,36,38,40,42,44,46,48,50.程序如下,请高手帮忙看看问题在哪儿,谢谢了!
int main( void )
{
int circflag = -1;
break_flg = 0;
*pPLL_DIV = 0x000A; //sclk = 50MHz;
ssync();
Init_SDRAM();
ssync();/* Begin adding your custom code here */
short temp = 0;
temp = *pPORTG_FER;
ssync();
temp = 0xFFFF;
*pPORTG_FER = temp;
ssync();
*pPORTG_FER = temp;
ssync();
temp = *pPORTF_FER;
ssync();
temp = 0xFFC0;
*pPORTF_FER = temp;
ssync();
*pPORTF_FER = temp;
ssync();
temp = *pPORT_MUX;
ssync();
temp = 0x0180;
*pPORT_MUX = temp;
ssync();
*pPORT_MUX = temp;
ssync();
for(kk=0;kk<64;kk++)
{
circflag = -circflag;
if (circflag==1)
addrtemp = rx1_buffer;
else
addrtemp = rx2_buffer;
*pDMA0_START_ADDR = addrtemp;
*pDMA0_CURR_ADDR = addrtemp;
*pPPI_CONTROL = 0x0000;
*pPPI_CONTROL = 0x383c;//387c;
*pDMA0_CONFIG = 0x0000;
*pDMA0_CONFIG = 0x0086;
*pDMA0_X_COUNT = cashdatalength;
*pDMA0_CURR_X_COUNT = cashdatalength;
*pDMA0_X_MODIFY = 0x0002;
Init_Interrupts();
*pDMA0_CONFIG = 0x0087;//0x0087;//0x0087;
ssync();
*pPPI_CONTROL = 0x383d;//0x383d;
ssync();
for (pp = 0;;pp++)
{
pp = 0;
if (break_flg==1) break;
}
//Init_SDRAMInterrupts();
}
}