使用Ubuntu系统作为上位机,多线程开发时,使用其中一个线程专门作为通信使用。
使用tc264作为下位机,使用同一UART分别进行数据接收和数据传输
问题:当上位机把数据传输和接收的代码都放入同一线程中时,上位机接收和传输速率受到影响,延迟增强,时效性降低。
但UART是全双工异步串行通信,可以同时进行上下位机的传输和发送数据的操作。
排查现象:当我把上位机的传输和接收两部分代码分别放入两个线程,两者通信速率皆不受影响。
猜测:时间片轮询时,处于同一线程的代码,传输数据代码不断发送给下位机,触发下位机接收中断,下位机FIFO容量小,中断被频繁触发,打断下位机传输信息给上位机,导致上位机接收数据的延时增强,信息滞后,时效性下降。
解决方案:
1.增大FIFO容量,一次性读取多组数据,减少下位机接收中断的触发次数。
2.将上位机接收和发送数据的代码分别用两个线程实现,当上位机发送数据时不接收,接收时不发送。