咸鱼Micropython—UART(串口)
咸鱼Micropython—UART
咸鱼Micropython—UART(串口)
UART是Universal Asynchronous Receiver/Transmitter(通用异步收发传输器)的简称,在单片机和嵌入式系统中,串口(UART)一直都 是非常重要的外设。虽然串口的速度并不快,但是因为它使用简单(串口可能是两个芯片之间传输数据最简单的方式),占用软件和硬件资源 少,所以在通信、控制、数据传输、仿真调试等许多方面有非常广泛应用。
很多设备或者模块甚至都会提供专用的串口接口用于通信和控制, 如GPRS模块、蓝牙/WiFi透传模块等。UART使用一个GPIO做发送,一个GPIO做接收,没有单独的时钟信号。收发双方需要先约定好相同的 波特率、数据位、校验位、停止位等参数才能正常通信,所以也叫做异步串行总线。
在MicroPython中,操作串口和使用GPIO一样简单。我们先看看串口的常用函数,从这里就可以看出串口的基本使用方法。
UART的基本用法
from pyb import UART
u1 = UART(1, 9600) #设置波特率和串口号
u1.writechar(65) #发送字符"A"
u1.write('xianyu') #发送字符串“xianyu”
u1.readchar() #从接受缓冲区读取一个字符
u1.readall() #读取缓冲区全部内容
u1.readline() #读取一行
u1.read(10) #读取10个字节
u1.readinto(buf) #读取缓冲区内容并存放到缓冲区buf
u1.any() #检测缓冲区是否收到数据
串口的基本使用方式是,首先定义使用的串口,再设置串口参数 (最主要就是设置波特率),然后通过 write()函数发送缓冲区或者字符串。或者用 any()函数判断是否接收到数据,再用read()函数 读取数据。
UART的函数如下:
串口方法
-
class pyb.UART(bus, …)
bus: 1-6,或者‘XA’,‘XB’,‘YA’,‘YB’. -
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) or 1 (odd)
stop:停止位,1/2
flow:流控,可以是 None, UART.RTS, UART.CTS or UART.RTS | UART.CTS
timeout:读取一个字节超时时间(ms)
timeout_char:两个字节之间超时时间 -
read_buf_len:读缓存长度
-
uart.deinit():关闭串口
-
uart.any():返回缓冲区数据个数,大于0代表有数据
-
uart.writechar(char):写入一个字节
-
uart.read([nbytes]):读取最多nbytes个字节。如果数据位是9bit,那么一个数据占用两个字节,并且nbytes必须是偶数
-
uart.readall():读取所有数据
-
uart.readchar():读取一个字节
-
uart.readinto(buf[, nbytes])
buf:数据缓冲区
bytes:最大读取数量 -
uart.readline():读取一行
-
uart.write(buf):写入缓冲区。在9bits模式下,两个字节算一个数据
-
uart.sendbreak():往总线上发送停止状态,拉低总线13bit时间
串口对应GPIO
UART(4) is on XA: (TX, RX) = (X1, X2) = (PA0, PA1)
UART(1) is on XB: (TX, RX) = (X9, X10) = (PB6, PB7)
UART(6) is on YA: (TX, RX) = (Y1, Y2) = (PC6, PC7)
UART(3) is on YB: (TX, RX) = (Y9, Y10) = (PB10, PB11)
UART(2) is on: (TX, RX) = (X3, X4) = (PA2, PA3)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)