【硬件外设使用】——UART
- UART基本概念
- UART通信协议
- UART使用方法
- pyb.uart
- machine.uart
- UART 可用的传感器
UART基本概念
UART全称为Universal Asynchronous Receiver/Transmitter,是通过异步(Asynchronous)方式传输数据的一个串行通信协议。UART可以实现点对点的全双工通信,即发送方和接收方可以同时发送和接收数据。
UART常见于嵌入式系统、计算机外设、通讯设备等领域。
UART的特点是无需传输时钟信号,而是通过发送方和接收方之间的预定协议来确定数据传输速率(波特率)。在UART通信中,每个数据字节都需要添加起始位、数据位、奇偶校验位和停止位等附加信息,以便接收方正确提取数据。
UART通常使用两条信号线来进行数据传输:TX(发送)和RX(接收)。通过这两条信号线,UART可以在不同的设备之间发送和接收数据,并支持多个设备之间的通信。
与其他串行通信协议相比,UART具有简单、成本低等优点,并且广泛应用于各种应用场景。
UART通信协议
UART通信协议是通过异步串行通信方式传输数据的一种协议。该协议中,数据按照一定的数据格式进行传输,包括起始位、数据位、校验位和停止位等附加信息,以便接收方正确提取数据。
UART通信协议中,发送方和接收方之间必须预先约定波特率(即数据传输速率),并且在数据传输过程中保持同步。如果发送方和接收方之间的波特率不一致,则会导致数据传输错误。
UART通信协议的数据格式如下:
起始位:指定了数据传输的开始位置,通常为逻辑“0”。
数据位:指定了每个数据字节的位数
奇偶校验位:用于检测数据传输过程中的错误。通常有奇校验和偶校验两种方式。
停止位:指定了数据传输的结束位置,通常为逻辑“1”。
其中,起始位和停止位都是固定的,数据位的长度可以根据需要进行调整。奇偶校验位可以选择使用或不使用。
UART通信协议在数据传输过程中,每个数据字节都需要添加起始位、数据位、奇偶校验位和停止位等附加信息。发送方通过TX线将数据字节发送给接收方,接收方通过RX线接收数据。该协议通常使用两根信号线进行数据传输。
UART使用方法
pyb.uart
pyb.uart是MicroPython中用于控制UART通信的模块。它提供了一系列函数和属性,用于配置UART接口、发送和接收数据等操作。
在使用pyb.uart模块之前,需要先导入该模块:
import pyb
导入模块后,可以使用pyb.UART()函数创建一个UART对象,并对其进行配置。例如,下面的代码将创建一个UART对象,波特率为115200,不启用校验位,数据位为8位,停止位为1位:
uart = pyb.UART(1, 115200, parity=None, stop=1, bits=8)
其中,参数1表示使用哪一个UART接口(1或者6),115200表示波特率,None表示不启用校验位,1表示停止位长度,8表示数据位长度。
创建好UART对象之后,可以使用其send()函数向外部设备发送数据,也可以通过read()函数读取外部设备发送过来的数据。
例如,下面的代码向串口发送字符串“Hello World!”:
uart.send("Hello World!")
而下面的代码则从串口中读取10个字节的数据:
data = uart.read(10)
除了上述函数之外,pyb.uart模块还提供了其他一些函数和属性,例如设置流控制、配置中断回调函数等。具体使用方法请参考MicroPython官方文档。
machine.uart
machine.uart是MicroPython中用于控制UART通信的模块。它提供了一系列函数和属性,用于配置UART接口、发送和接收数据等操作。
在使用machine.uart模块之前,需要先导入该模块:
import machine
导入模块后,可以使用machine.UART()函数创建一个UART对象,并对其进行配置。例如,下面的代码将创建一个UART对象,波特率为115200,不启用校验位,数据位为8位,停止位为1位:
uart = machine.UART(1, baudrate=115200, bits=8, parity=None, stop=1)
其中,参数1表示使用哪一个UART接口(0或者1),baudrate表示波特率,None表示不启用校验位,1表示停止位长度,8表示数据位长度。
创建好UART对象之后,可以使用其write()函数向外部设备发送数据,也可以通过read()函数读取外部设备发送过来的数据。
例如,下面的代码向串口发送字符串“Hello World!”:
uart.write("Hello World!")
而下面的代码则从串口中读取10个字节的数据:
data = uart.read(10)
除了上述函数之外,machine.uart模块还提供了其他一些函数和属性,例如设置流控制、配置中断回调函数等。具体使用方法请参考MicroPython官方文档。
UART 可用的传感器
UART是一种通用的串行通信接口,可以用于连接各种传感器,包括但不限于以下几种:
-
距离传感器:如超声波传感器、激光雷达等,通过UART接口输出距离信息。
-
温度传感器:如DS18B20等数字温度传感器,通过UART接口输出温度信息。
-
湿度传感器:如DHT11、DHT22等数字湿度传感器,通过UART接口输出湿度和温度信息。
-
光强传感器:如BH1750等数字光强传感器,通过UART接口输出光强信息。
-
气压传感器:如BMP180、BMP280等数字气压传感器,通过UART接口输出气压和温度信息。
-
姿态传感器:如MPU6050、MPU9250等数字姿态传感器,通过UART接口输出角速度、加速度和角度信息。
这只是一些常见的UART传感器示例,实际上还有很多其他类型的传感器可以使用UART进行通信,只要该传感器本身支持UART接口并且输出数据格式可以被解析。