USP FIFO无数据的解决

现象:

 

调试USP PCM driver,controller作为slave,参照文档基本正确配置。外部BC06设备作为master,由示波器测量PCM CLK, PCM SYNC, PCM OUT一切正常(PCM SYNC信号高电平未达到3.3V,为2.75V),然Rx FIFO中始终无数据。

 

 

思考:

在其他证据不足的情况下,PCM SYNC信号线偏低是一个线索。即便2.75V能够达到RISC所要求的逻辑1 (0.7VDD即满足逻辑1),然终有干扰影响了波形的完整。

 

 

解决:

USP一共有五个引脚X_USCLK, X_URXD, X_UTXD, X_URFS, X_UTFS,由于芯片引脚个数的限制,很多PAD都是公用的,有些甚至是一个PAD有四个功能。因为仅仅凭借GPIO_PAD_EN来区分是特定功能还是GPIO功能是不够的,需要RSC MUX另行判断。这里就涉及到了两次判断来使能USP功能,UART Stream control使能造成了这个问题(UART stream control不能与USP0 sync模式共同作用)。各个模块自行设置公用的寄存器造成冲突,或者遗忘更正很容易产生这种问题,原因较难查找,因而优化相应的代码结构可以解决一些出错的可能性。

 

PS:之所以在使用USP模拟UART时没有出现类似问题,原因是UART是async模式,不需要TFS和RFS两根同步信号线,问题也就不会产生了。

你可能感兴趣的:(优化,Stream,文档)