> 文章列表 > 【硬件外设使用】——UART

【硬件外设使用】——UART

【硬件外设使用】——UART

【硬件外设使用】——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通信协议的数据格式如下:

  1. 起始位:指定了数据传输的开始位置,通常为逻辑“0”。

  2. 数据位:指定了每个数据字节的位数

  3. 奇偶校验位:用于检测数据传输过程中的错误。通常有奇校验和偶校验两种方式。

  4. 停止位:指定了数据传输的结束位置,通常为逻辑“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是一种通用的串行通信接口,可以用于连接各种传感器,包括但不限于以下几种:

  1. 距离传感器:如超声波传感器、激光雷达等,通过UART接口输出距离信息。

  2. 温度传感器:如DS18B20等数字温度传感器,通过UART接口输出温度信息。

  3. 湿度传感器:如DHT11、DHT22等数字湿度传感器,通过UART接口输出湿度和温度信息。

  4. 光强传感器:如BH1750等数字光强传感器,通过UART接口输出光强信息。

  5. 气压传感器:如BMP180、BMP280等数字气压传感器,通过UART接口输出气压和温度信息。

  6. 姿态传感器:如MPU6050、MPU9250等数字姿态传感器,通过UART接口输出角速度、加速度和角度信息。

这只是一些常见的UART传感器示例,实际上还有很多其他类型的传感器可以使用UART进行通信,只要该传感器本身支持UART接口并且输出数据格式可以被解析。