TI中文支持网
TI专业的中文技术问题搜集分享网站

求助:c6678调试uart fifo中断接收数据问题

器件:c6678 EVM板调试uart

配置:fifo中断方式接收,配置成1byte trigger lever

现象:在单步模式下调试,uart edma中断服务函数中设置断点 , (1)通过上位机一次性发送5个bytes,查看到接收数组里收到这5个字节,但是后续填充了3个字节的随机值; (2)通过上位机一次性发送10个bytes,查看到接收数组里只收到了8个字节,第二次再进入中断,接收了剩下的2个字节,但是后续填充了6个字节的随机值

上述问题是,不论实际有效的接收数据有多少,fifo总是按照8个字节的方式填充,那么我就不能判断一帧数据到底发了多少有效的字节

请大师们指教!

Zhan Xiang:

UART的FIFO如果用EDMA是有这样的问题,必须FIFO满了才能产生EDMA事件,如果需要实时进行接收,建议通过CPU中断方式实现。

Vincent Han:

您好,

不知您用的是哪个版本的KI的STK,论坛本版里置顶的帖子里有较新的版本(http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx     KI_STK_20140123.7z), 这个里面UART的例程TX侧是可以选择用EDMA或是DSP Core,RX侧只是使用DSP的,在包里面的/docs/KeyStone_1_UART_STK_User's_Guide.pdf里面也有具体实现说明以及使用方法:

另外,全局变量gUARTCfg.fifoRxTriBytes决定了RX FIFO的深度,可选范围请参考/common/KeyStone_UART_Init_drv.h中的定义:

typedef enum

{

   TRIGGER_LEVEL_1BYTE = CSL_UART_FCR_RXFIFTL_CHAR1,

   TRIGGER_LEVEL_4BYTE = CSL_UART_FCR_RXFIFTL_CHAR4,

   TRIGGER_LEVEL_8BYTE = CSL_UART_FCR_RXFIFTL_CHAR8,  

   TRIGGER_LEVEL_14BYTE = CSL_UART_FCR_RXFIFTL_CHAR14

}UART_triLevel;

请根据需要选择适合的接收FIFO的颗粒度。

多谢!

 

赞(0)
未经允许不得转载:TI中文支持网 » 求助:c6678调试uart fifo中断接收数据问题
分享到: 更多 (0)