Raspberry Pi和Arduino Mega 2560 UART行为差异

时间:2016-09-01 14:52:08

标签: arduino raspberry-pi uart

我一直试图在Raspberry Pi Model B Revision 2.0(检查this page上描述的模型)和Arduino Mega 2560之间建立串行(UART)通信。我在Pi上做了一个服务写入UART,然后期望一条消息和同事使用echo程序对Arduino进行编程。当他们正在进行通信时,我在接收数据时遇到了麻烦,这意味着它被集中在8个字节的片段中,我不得不在它们之间引入一个等待超时(我实际上和可用的一样多,并为下一个集群调用select()但它变成了8字节的集群,除了可能是最后一个集群。正如我在这个网站上发现的一个问题所解释的那样,程序员是负责协议的人,并且不能依赖整个消息准备好立即阅读(这是合乎逻辑的)。 然而,当我只连接Pi的TXD和RXD引脚时,无论我尝试发送多少字节,它都会一次性发送它们(我已经超过256个,那就是'对我来说绰绰有余)。我也有大约50毫秒的持续时间差异,使用gettimeofday()函数直接在程序中测量。

所以,任何人都可以为我清楚:

  1. 为什么会这样?
  2. 这种行为有何不同?
  3. 这两种设备是否存在潜在问题(如果甚至可以从给定的信息中得出结论)。
  4. 当然,如果我忘记询问一些被认为重要的事情,欢迎任何其他信息。

1 个答案:

答案 0 :(得分:0)

为什么会这样?

我试着回复一下Arduino-Arduino和Arduino-Pi。我遇到了UART通信的一些问题。但是,您可能希望在两个设备上保持相同的波特率。使用Pi,如果从Arduino接收数据,则可能需要触发事件。另一方面,如果您的代码运行时间较长,那么您可能会丢失一些数据,即当Pi通过UART发送数据时,您的Arduino代码正在运行其他内容。

这种行为是否有所不同?

是。 Arduino是基于微控制器的设备,而Pi是基于微处理器的(在OS上运行)

任何一个设备是否存在潜在问题(如果甚至可以从给定的信息中得出结论)。

我认为除非它根本不起作用,否则可能存在任何硬件问题。

另外,由于这个问题,我从UART通信切换到SPI通信。这完全解决了我的问题。