使用 UART 进行确定性串行通信

使用 UART 进行确定性串行通信

我们正尝试通过 Raspberry Pi 4(运行 ubuntu mate)和另一个使用 pic18 的嵌入式板之间的 UART 通信每 10 毫秒(100 字节)接收一次敏感数据。UART 设置如下:

  • 波特率 = 115200 bps
  • 8 位,无奇偶校验

我们正在使用许多使用该功能的互联网资源中可用的通用代码”ssize_t 读取(int fd,void *buf,size_t count);“使用函数打开文件(串行接口)后读取端口”int open(const char *pathname,int flags);”

为了测量数据字符的数量和接收此类数据的时间,我们使用了clock_gettime。我们尝试了以下方法:

  1. 使用 pthread 库将接收函数作为线程运行,并为其分配最高优先级
  2. 使用 mutext 使读取函数成为临界区

检查了控制台上花费的时间(使用 printf())后,我们发现接收正确数据的时间并不确定;有时需要 95 毫秒才能接收 100 个字符,有时则需要 1 毫秒,而在其他情况下,测量的时间为 (-ve)!!! 这意味着接收数据后的记录时间 < 测量的开始时间!!!。

提前致谢

相关内容