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

RE: CC3235MODSF: UART 串口中断

对最先问题的回答。

仔细看了UART2的实现源码,慢慢理解了UART2_Mode_CALLBACK模式的工作过程,才明白版主给的答案。

问题:实现接收0x10 02开头,0x10 03结尾的数据包。

答案:

a. 准备好一个用户缓冲(rx_my_buf)。

b. 配置串口参数:readmode= UART2_Mode_CALLBACK

c. 执行UART2_read(handle, rx_my_buf, sizeof(rx_my_buf));     

d. 在read的回调函数(如readCallback)中实现:处理刚刚接收的N个数据,并当bytesRead == readCount时,!!重新调用UART2_read()。

这样,就一直read下去,不断地、默默地读取着。读到的数据放在了UART2驱动自带的RingBuf,再放入用户缓冲rx_my_buf。

e. 用户处理数据时,就在readCallback()。就能判断读到的数据:是否有0x10 02的头,0x10, 03的尾。这样再发消息过去。

从UART2源码,知道一个方法:传输必用DMASunglasses

疑惑的是RingBuf的环形缓冲,怎么应对DMA的自动自增模式,不怕越出Ringbuf的边界吗。

20220214补充:RingBuf中,做了和DMA的匹配,即将RingBuf当前位置至Ringbuf的边界之间的个数作为本次DMA的传输个数,这样,DMA对地址自增时,不会越界RingBuf的buf的边界。

Cherry Zhou:

感谢您的分享,关于您的问题会再反馈到工程师看下,有新的消息会尽快给到您。

,

Cherry Zhou:

感谢您的分享! 

zhiyong chen 说:疑惑的是RingBuf的环形缓冲,怎么应对DMA的自动自增模式,不怕越出Ringbuf的边界吗。

UART2 驱动程序将环缓冲器从应用程序中隐藏,因此只要应用程序获得中断 /SEM_posts 并持续读取,缓冲器应该就不会填充和过载。

赞(0)
未经允许不得转载:TI中文支持网 » RE: CC3235MODSF: UART 串口中断
分享到: 更多 (0)