我一直试图在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()
函数直接在程序中测量。
所以,任何人都可以为我清楚:
当然,如果我忘记询问一些被认为重要的事情,欢迎任何其他信息。
答案 0 :(得分:0)
我试着回复一下Arduino-Arduino和Arduino-Pi。我遇到了UART通信的一些问题。但是,您可能希望在两个设备上保持相同的波特率。使用Pi,如果从Arduino接收数据,则可能需要触发事件。另一方面,如果您的代码运行时间较长,那么您可能会丢失一些数据,即当Pi通过UART发送数据时,您的Arduino代码正在运行其他内容。
是。 Arduino是基于微控制器的设备,而Pi是基于微处理器的(在OS上运行)
我认为除非它根本不起作用,否则可能存在任何硬件问题。
另外,由于这个问题,我从UART通信切换到SPI通信。这完全解决了我的问题。