我想问下,我的板子不是EVM板,硬件上面UPP接口和FPGA已经连上了可以做回环模式测试的吗?如果可以的话不知道为什么发送数据就是接受不到,初始化化
严格按照文档上面来的,能不能帮我分析下问题的所在,以下是程序的代码:
// void pinmux()
{ HWREG( SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13) ) = 0x48440000; //UPP_CHA(CH1),RESETOUT,bit0 需要被确认,可0可1?
HWREG( SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(14) ) = 0x44444400; //UPP_D[10]-UPP_D[15]
HWREG( SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(15) ) = 0x44444444; //UPP_D[2]-UPP_D[9]
HWREG( SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(16) ) = 0x44444444; //UPP_XD[10]-UPP_XD[15],UPP_D[0]-UPP_D[1]
HWREG( SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(17) ) = 0x44444444; //UPP_XD[2]-UPP_XD[9]
HWREG( SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(18) ) = 0x00444444;
HWREG( SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(19) ) = 0x00010000; }
///test code
#pragma DATA_ALIGN(xmit_buffer, 64) //ensures data is alight on 64 byte boundry
short xmit_buffer[64] = //as required by UPP DMA controller
{
512,562,612,661,708,753,796,837,874,908,938,964,985,1002,1014,1022,
1023,1022,1014,1002,985,964,938,908,874,837,796,753,708,661,612,562,
512,462,412,363,316,271,228,187,150,116,86,60,39,22,10,2,
0,2,10,22,39,60,86,116,150,187,228,271,316,363,412,462
};
#pragma DATA_ALIGN(recv_buffer,64)
short recv_buffer[64] =
{
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0
};
void upp_test()
{
int i,result = 1;
UPQD0 = (Uint32)&xmit_buffer;//add next DMA transfer
UPQD1 = 0x00010080; //1 lines 128 bytes per line
UPQD2 = 0x00000080; //no offset between lines
while(UPQS2 & 0x2){};
UPID0 = (Uint32)&recv_buffer;//add next DMA transfer
UPID1 = 0x00010080; //1 lines 128 bytes per line
UPID2 = 0x00000080; //no offset between lines
while(UPIS2 & 0x2){};
for(i=0;i<64;i++)
{
if(xmit_buffer[i] != recv_buffer[i])
{
result = 0;
break;
}
}
if(result ==1)
printf("test uPP OK/n");
printf("test uPP not OK\n");
}
//UPP initialization funcition
void UPP_init()
{
UPPCR = 0x00000010;
sw_wait(400);
UPPCR = 0;
UPCTL = 0x02020006;
//UPICR = 0X21000100; /
UPICR = 0X01000000;
UPIVR = 0x00000000;
UPTCR = 0;
UPDLB |= 1<<13 ;
UPIES = 0X0; //关掉所有中断
UPPCR = 0x0000000e; //使能UPP
}