6.1.4. UART控制

OpenMV Cam 在引脚 P4(TX)和 P5(RX)上有一个主 UART,您可以使用它进行串行通信。要创建 UART 对象,请执行以下操作:

import pyb

uart = pyb.UART(3, 115200, timeout_char = 1000)

首先,让我们分解一下我们做了什么。第一个参数是 UART 总线。这是 OpenMV Cam 上 UART 总线的索引。您必须使用此值调用 UART 构造函数,因为我们正在利用 MicroPython 的 pyboard 中的 pyb 模块。第二个值是波特率,可以是您喜欢的任何标准波特率值。最后,第三个参数告诉驱动程序,如果 UART 忙碌,则在发送字符之间等待最多 1 秒。 timeout_char 的默认值为 0,如果您的代码必须阻塞等待 UART 缓冲区中的空间,则导致驱动程序放弃发送字符,这是您不想要的(通常)。

无论如何,一旦您有了 UART 对象,发送数据就很容易。只需执行操作:

uart.write("Hello World\n")

就这样。

但是,如果您想发送二进制数据,请使用 struct 模块。struct 模块将让您轻松序列化数据。以下是一个示例:

import ustruct

uart.write(ustruct.pack("<lhb", a_32_bit_value, a_16_bit_value, a_8_bit_value))

上面的第一个字符串告诉 ustruct 如何将数据打包成字节流。 “<” 表示数据将以小端格式打包。 “l” 表示打包一个长整型, “h” 表示打包一个短整型,”b” 表示打包一个字节。有关更多信息,请参阅 Python 结构化模块

现在,如果您想接收数据,只需使用 pyb.UART.any() 方法以及 pyb.UART.read() 方法。请注意,您需要编写某种状态机来可靠地接收数据。例如,请参阅 Examples->Pixy Emulation->pixy_uart_emulation.py 示例。