奏奏奏 发表于 2020-8-13 19:44:57

串口接收用RTOS中任务轮询接收会丢数据吗?

项目中用到 串口通讯 与 I2C总线上主从机通讯,
因为考虑到I2C通讯很可能会被串口接收中断给打断,
所以正在考虑 串口接收从原来的接收中断方式 改为 在FreeRTOS中独立一个任务轮询接收数据,波特率是115200
考虑到可能会丢失串口数据,希望有这么干过的大佬能指点一下,先谢谢各位!

yklstudent-1794 发表于 2020-8-14 08:31:12

会。。。

Dandjinh 发表于 2020-8-14 08:54:45

上了操作系统一般建议用DMA的,I2C主机可以用DMA,串口可以用DMA+空闲中断,这样不会占CPU时间。

butterflyspring 发表于 2020-8-19 16:53:58

Dandjinh 发表于 2020-8-14 08:54
上了操作系统一般建议用DMA的,I2C主机可以用DMA,串口可以用DMA+空闲中断,这样不会占CPU时间。 ...

有些型号的I2C有一些事件处理,这些处理需要用高优先级中断,所以这部分还不能依靠DMA。只有数据收发的时候是可以用DMA帮助处理的

发表于 2020-8-19 17:38:25

轮询肯定会丢数据的。建议I2C和串口都用中断。发送可以考虑DMA,但是接收的时候,需要考虑接收的数据长度问题来判断DMA和中断方式哪一种更合适。
页: [1]
查看完整版本: 串口接收用RTOS中任务轮询接收会丢数据吗?