fpga将128个32bit的数,拆分成256个16bit数之后传给DSP。upp_CLK一直都有,upp_ENABLE的长度是256个CLK,没有使用upp_START和upp_WAIT。当USB口接GPS等会产生信号的设备时。upp传送给DSP的数据会产生高低位的错位(本来高低高低排列的数据,会变成低高低高),reset upp的话,下一组数据会恢复正常,否则的话,需要等到下一个不确定因素的产生才能恢复。
upp的设置和使用如下:
#define UPP_UPCTL 0x02220000
#define UPP_UPICR 0x0f000010
#define UPP_UPIVR 0x00000000
#define UPP_UPTCR 0
#define UPP_UPDLB 0
#define UPP_UPIES 0
#define UPP_UPPCR 0
UPP->UPID0 = UPP_Read_Addr;
UPP->UPID1 = 0x00010200;
UPP->UPID2 = 0x00000200;
有什么地方设置错误吗?
Tony Tang:
请问出错规律是怎样的?是16bit数据前后移位了,还是16bit数据内的高低字节移位了,或者还是别的出错情况?
yanhui zhang1:
16bit内数据是正常的,32bit数据的高16位和低16位发生了互换
Tony Tang:
回复 yanhui zhang1:
尝试将DDR的BPPBR寄存器设为0x20试试。