UART类 – 双工串行通信总线

UART实现标准UART / USART双向串行通信协议。其物理层包括两条线:RX和TX。通信单元是一个可为8位或9位宽的字符(请勿与字符串字符混淆)。

UART对象可使用下列方式创建并初始化:

from machine import UART

uart = UART(3, 9600)                         # init with given baudrate 使用给定波特率初始化
uart.init(9600, bits=8, parity=None, stop=1) # init with given parameters 使用给定参数初始化

所支持的参数在一个板上有所不同:

Pyboard/OpenMVCam:位数可为7、8、9。终止可为1或2。当parity为None时,仅支持8位和9位。启用parity时,仅支持7位和8位。

UART对象的运行类似于流对象,其读写都使用标准流方法进行:

uart.read(10)       # read 10 characters, returns a bytes object 读取10字符,返回一个字节对象
uart.read()         # read all available characters 读取所有可用字符
uart.readline()     # read a line 读取一个行
uart.readinto(buf)  # read and store into the given buffer 读取并存入给定缓冲区
uart.write('abc')   # write the 3 characters 写入3字符

构造函数

class machine.UART(id, ...)

构造一个具有给定id的UART对象。

方法

UART.init(baudrate=9600, bits=8, parity=None, stop=1, *, ...)

用给定的参数初始化UART总线:

  • baudrate 是时钟速率。
  • bits 是每个字符的位数,7,8或9。
  • parity 是奇偶校验,None,0(偶数) 或 1(奇数)。
  • stop 是停止位的数目,1或2。
UART.deinit()

关闭UART总线。

UART.any()

返回一个整数,该整数即为在不阻塞情况下可读取的字符数。若无可用字符,则返回0,;若有可用字符,则返回一个正数。若有超过1个可读取字符,该方法则返回1。

若对可用字符进行更复杂查询,请使用select.poll:

poll = select.poll()
poll.register(uart, select.POLLIN)
poll.poll(timeout)
UART.read([nbytes])

读取字符。若指定 nbytes ,则最多读取该数量的字节。否则可读取尽可能多的数据。

返回值:一个包括读入字节的字节对象。超时则返回 None

UART.readinto(buf[, nbytes])

将字节读取入 buf 。若指定 nbytes ,则最多读取该数量的字节。否则,最多读取 len(buf) 数量的字节。

返回值:读取并存入 buf 的字节数;若超时则返回 None

UART.readline()

读取一行,并以一个换行符结束。

返回值:读取的行;若超时,则返回 None

UART.write(buf)

将字节缓冲区写入总线。

返回值:写入的字节数;若超时,则返回 None

UART.sendbreak()

在总线上发送一个中断状态。这使得总线在一段时间内保持低状态,其持续时间比字符的正常传输所需时间长。