UART

UART(通用异步收发传输器)的简称,在单片机和嵌入式系统中,串口(UART)一直都是非常重要的外设。虽然串口的速度并不快,但是因为它使用简单(串口可能是两个芯片之间传输数据最简单的方式),占用软件和硬件资源少,所以在通信、控制、数据传输、仿真调试等许多方面有非常广泛应用。很多设备或者模块甚至都会提供专用的串口接口用于通信和控制,如GPRS模块、蓝牙/WiFi透传模块等。UART使用一个GPIO做发送,一个GPIO做接收,没有单独的时钟信号。收发双方需要先约定好相同的波特率、数据位、校验位、停止位等参数才能正常通信,所以也叫做异步串行总线。

1.获取UART类的方法



>>> from pyb import UART
>>> help(pyb.UART)
object <class 'UART'> is of type type
  init -- <function>
  deinit -- <function>
  any -- <function>
  read -- <function>
  readline -- <function>
  readinto -- <function>
  write -- <function>
  irq -- <function>
  writechar -- <function>
  readchar -- <function>
  sendbreak -- <function>
  RTS -- 256
  CTS -- 512
  IRQ_RXIDLE -- 16
>>>



在MicroPython中,操作串口和使用GPIO一样简单。我们先看看串口的常用函数,从这里就可以看出串口的基本使用方法。

python uart读取拼接 pyboard uart_python uart读取拼接

串口的基本使用方式是,首先定义使用的串口,再设置串口参数(最主要就是设置波特率),然后通过 write()函数发送缓冲区或者字符串。或者用 any()函数判断是否接收到数据,再用read()函数读取数据。

UART的函数如下:

(1)class pyb.UART(bus,...)

bus:1-6,或者‘XA’,‘XB’,‘YA’,‘YB’。

在PYB V10上,串口对应的GPIO是:

python uart读取拼接 pyboard uart_数据_02

 

(2)uart.init(baudrate,bits=8,parity=None,stop=1,timeout=1000,flow=None,timeout_char=0,read_buf_len=64)

串口初始化。

◆baudrate:波特率

◆bits:数据位,可以是7/8/9

◆parity:奇偶校验位,可以设置为None,0 (even)或1 (odd),默认无校验

◆stop:停止位,1/2

◆flow:流量控制,可以是None,UART.RTS,UART.CTS或UART.RTS|UART.CTS,默认None(无流量控制)

◆timeout:读取一个字节的超时时间(ms)

◆timeout_char:读或写时两个字节之间的等待时间

◆read_buf_len:读缓存的长度,0代表禁用缓冲区

(3)uart.deinit()

关闭串口。

(4)uart.any()

返回缓冲区数据个数,大于0代表收到数据。

(5)uart.writechar(char)

写入一个字节。

(6)uart.read([nbytes])

读取最多nbytes个字节。如果数据位是9bits,那么一个数据占用两个字节,并且nbytes必须是偶数。

(7)uart.readall()

读取所有数据。

(8)uart.readchar()

读取一个字节。

(9)uart.readinto(buf[,nbytes])

buf:数据缓冲区;

nbytes:最大读取数量。

(10)uart.readline()

读取一行。

(11)uart.write(buf)

写入缓冲区。在9bits模式下,两个字节算一个数据。

(12)uart.sendbreak()

往总线上发送停止状态,拉低总线13bits时间。

注:

当设置波特率时,如果波特率的误差超过5%,将引起一个异常。

当无奇偶校验时,数据位可以设置为8或9位;而使用奇偶校验时,数据位只能设置成7或8位。

在9位数据位模式下,无论读或写,一个数据都占用2个字节。

目前在MicroPython中,串口还不支持回调函数(中断),只能通过查询的方式(any()函数)来判断是否收到了数据。考虑到串口通信的速度不是太快,在大部分情况下这种方式是能够满足性能上的要求的。

在PYB V10上,只有串口2和3支持流量控制功能。

python uart读取拼接 pyboard uart_串口_03