跳转至

UART

UART(Universal Asynchronous Receiver/Transmitter)异步串行通信,TX/RX/GND 三线制,无需时钟线(双方约定波特率)。WS63 UART 支持三种传输模式:轮询、中断和 DMA。

DMA 模式下零 CPU 开销收发大批量数据,RX 回调可按字节数或超时触发。配置流程:引脚复用 → 波特率/数据位/停止位/校验位 → 中断/DMA 使能。适用串口日志、AT 指令、透传模块等场景。

头文件清单

#include "include/driver/uart.h"

接口清单

接口名称 功能简述
uapi_uart_init 初始化指定的UART串口
uapi_uart_deinit 去初始化指定的UART串口
uapi_uart_set_attr 设置UART基础配置参数
uapi_uart_get_attr 获取UART基础配置参数
uapi_uart_has_pending_transmissions 判断是否存在正在等待的传输
uapi_uart_rx_fifo_is_empty 判断RX FIFO是否为空
uapi_uart_tx_fifo_is_empty 判断TX FIFO是否为空
uapi_uart_register_rx_callback 注册接收数据回调函数
uapi_uart_unregister_rx_callback 去注册接收数据回调函数
uapi_uart_register_parity_error_callback 注册奇偶校验错误处理回调函数
uapi_uart_register_frame_error_callback 注册帧错误处理回调函数
uapi_uart_register_overrun_error_callback 注册溢出错误处理回调函数
uapi_uart_write 轮询模式发送数据
uapi_uart_write_nolock 轮询模式发送数据(不锁中断)
uapi_uart_write_int 中断模式发送数据
uapi_uart_write_by_dma DMA模式发送数据
uapi_uart_read_by_dma DMA模式接收数据
uapi_uart_register_read_by_dma_callback 注册中断触发DMA搬运回调
uapi_uart_unregister_read_by_dma_callback 去注册中断触发DMA搬运回调
uapi_uart_read 轮询模式读取数据
uapi_uart_flush_rx_data 刷新UART接收Buffer中的数据
uapi_uart_update_rx_buff 更新UART接收Buffer的地址和长度
uapi_uart_suspend 挂起所有UART通道
uapi_uart_resume 恢复所有UART通道

Functions

uapi_uart_init

errcode_t uapi_uart_init(uart_bus_t bus, const uart_pin_config_t *pin_config, const uart_attr_t *attr, const uart_extra_attr_t *extra_attr, uart_buffer_config_t *uart_buffer_config)

初始化指定的UART串口,配置引脚、基础属性、扩展属性和接收缓冲区。

前置条件

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号,取值范围:UART_BUS_0 ~ UART_BUS_2
pin_config const uart_pin_config_t * IN 引脚配置结构体指针
attr const uart_attr_t * IN 基础属性配置结构体指针
extra_attr const uart_extra_attr_t * IN 扩展属性配置结构体指针
uart_buffer_config uart_buffer_config_t * IN 接收缓冲区配置结构体指针

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化
ERRCODE_UART_INIT_TRX_STATE_FAIL UART初始化收发状态失败
ERRCODE_UART_ADD_QUEUE_FAIL UART添加队列失败

参考案例 uart_demo.cuart_init_config() 函数演示了poll模式初始化流程。

Kconfig配置 CONFIG_UART_BUSMODE_POLL / CONFIG_UART_BUSMODE_INT / CONFIG_UART_BUSMODE_DMA,不同模式控制不同初始化路径。

uapi_uart_deinit

errcode_t uapi_uart_deinit(uart_bus_t bus)

去初始化指定的UART串口,释放资源。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号,取值范围:UART_BUS_0 ~ UART_BUS_2

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例 uart_demo.cuart_deinit_config() 函数。

Kconfig配置 CONFIG_UART_BUSMODE_POLL / CONFIG_UART_BUSMODE_INT / CONFIG_UART_BUSMODE_DMA,不同模式控制不同去初始化路径。

uapi_uart_set_attr

errcode_t uapi_uart_set_attr(uart_bus_t bus, const uart_attr_t *attr, const uart_extra_attr_t *extra_attr)

设置UART基础配置参数,包括波特率、数据位、校验位、停止位等。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
attr const uart_attr_t * IN 基础属性配置结构体指针
extra_attr const uart_extra_attr_t * IN 扩展属性配置结构体指针

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例 uart_demo.cuart_init_config() 函数。

uapi_uart_get_attr

errcode_t uapi_uart_get_attr(uart_bus_t bus, uart_attr_t *attr, uart_extra_attr_t *extra_attr)

获取UART当前基础配置参数。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号

出参

名称 数据类型 输出说明
attr uart_attr_t * OUT
extra_attr uart_extra_attr_t * OUT

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例

uapi_uart_has_pending_transmissions

bool uapi_uart_has_pending_transmissions(uart_bus_t bus)

判断指定UART是否存在正在等待发送的数据。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号

出参

返回值

返回值 文字含义 触发场景
true 存在等待发送的数据
false 无等待发送的数据

参考案例

uapi_uart_tx_fifo_is_empty

bool uapi_uart_tx_fifo_is_empty(uart_bus_t bus)

判断指定UART的发送FIFO是否为空。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号

出参

返回值

返回值 文字含义 触发场景
true TX FIFO为空
false TX FIFO不为空

参考案例

uapi_uart_register_rx_callback

errcode_t uapi_uart_register_rx_callback(uart_bus_t bus, uart_rx_callback_t callback)

注册UART接收数据回调函数,当中断模式下接收到数据时触发回调。

前置条件 已调用 uapi_uart_init 完成初始化,且使用中断模式或DMA模式。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
callback uart_rx_callback_t IN 接收回调函数指针

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例 uart_demo.cuart_irq_mode_test() 函数演示了中断模式回调注册。

Kconfig配置 CONFIG_UART_BUSMODE_INT / CONFIG_UART_BUSMODE_DMA

uapi_uart_unregister_rx_callback

errcode_t uapi_uart_unregister_rx_callback(uart_bus_t bus)

去注册UART接收数据回调函数。

前置条件 已调用 uapi_uart_register_rx_callback 注册回调。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例 uart_demo.cuart_deinit_config() 函数。

Kconfig配置 CONFIG_UART_BUSMODE_INT / CONFIG_UART_BUSMODE_DMA

uapi_uart_register_parity_error_callback

errcode_t uapi_uart_register_parity_error_callback(uart_bus_t bus, uart_parity_error_callback_t callback)

注册奇偶校验错误处理回调函数,当UART检测到奇偶校验错误时触发回调。

前置条件 已调用 uapi_uart_init 完成初始化,且配置了奇偶校验功能。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
callback uart_parity_error_callback_t IN 奇偶校验错误回调函数指针

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例

Kconfig配置 CONFIG_UART_BUSMODE_INT / CONFIG_UART_BUSMODE_DMA

uapi_uart_register_frame_error_callback

errcode_t uapi_uart_register_frame_error_callback(uart_bus_t bus, uart_frame_error_callback_t callback)

注册帧错误处理回调函数,当UART检测到帧错误时触发回调。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
callback uart_frame_error_callback_t IN 帧错误回调函数指针

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例

Kconfig配置 CONFIG_UART_BUSMODE_INT / CONFIG_UART_BUSMODE_DMA

uapi_uart_write

errcode_t uapi_uart_write(uart_bus_t bus, const uint8_t *buffer, uint32_t length, int32_t timeout)

以轮询模式发送数据,阻塞直到数据发送完成或超时。

前置条件 已调用 uapi_uart_init 完成初始化,且使用poll模式。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
buffer const uint8_t * IN 发送数据缓冲区指针
length uint32_t IN 发送数据长度(字节)
timeout int32_t IN 超时时间(ms),-1表示永久等待

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例 uart_demo.cuart_poll_mode_test() 函数。

Kconfig配置 CONFIG_UART_BUSMODE_POLL

uapi_uart_write_nolock

errcode_t uapi_uart_write_nolock(uart_bus_t bus, const uint8_t *buffer, uint32_t length, int32_t timeout)

以轮询模式发送数据,不锁中断,适用于中断上下文中调用。

前置条件 已调用 uapi_uart_init 完成初始化,且使用poll模式。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
buffer const uint8_t * IN 发送数据缓冲区指针
length uint32_t IN 发送数据长度(字节)
timeout int32_t IN 超时时间(ms),-1表示永久等待

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例

Kconfig配置 CONFIG_UART_BUSMODE_POLL

uapi_uart_write_int

errcode_t uapi_uart_write_int(uart_bus_t bus, const uint8_t *buffer, uint32_t length)

以中断模式发送数据,非阻塞方式,发送完成后触发中断。

前置条件 已调用 uapi_uart_init 完成初始化,且使用中断模式。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
buffer const uint8_t * IN 发送数据缓冲区指针
length uint32_t IN 发送数据长度(字节)

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例 uart_demo.cuart_irq_mode_test() 函数。

Kconfig配置 CONFIG_UART_BUSMODE_INT

uapi_uart_write_by_dma

errcode_t uapi_uart_write_by_dma(uart_bus_t bus, const uart_write_dma_config_t *dma_config)

以DMA模式发送数据,非阻塞方式,通过DMA搬运数据到UART发送FIFO。

前置条件 已调用 uapi_uart_init 完成初始化,且使用DMA模式。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
dma_config const uart_write_dma_config_t * IN DMA发送配置结构体指针

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化
UART_DMA_CFG_PARAM_INVALID DMA配置参数无效
UART_DMA_BUFF_NULL DMA缓冲区为空
UART_DMA_SHAKING_INVALID_OR_UART_FUNCS_NULL DMA握手无效或UART函数指针为空
UART_DMA_CONFIGURE_FAIL DMA配置失败
UART_DMA_START_TRANSFER_FAIL DMA启动传输失败
UART_DMA_TRANSFER_TIMEOUT DMA传输超时
UART_DMA_TRANSFER_ERROR DMA传输错误

参考案例 uart_demo.cuart_dma_mode_test() 函数。

Kconfig配置 CONFIG_UART_BUSMODE_DMA

uapi_uart_read_by_dma

errcode_t uapi_uart_read_by_dma(uart_bus_t bus, const uart_write_dma_config_t *dma_config)

以DMA模式接收数据,非阻塞方式,通过DMA从UART接收FIFO搬运数据。

前置条件 已调用 uapi_uart_init 完成初始化,且使用DMA模式。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
dma_config const uart_write_dma_config_t * IN DMA接收配置结构体指针

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化
UART_DMA_CFG_PARAM_INVALID DMA配置参数无效
UART_DMA_BUFF_NULL DMA缓冲区为空
UART_DMA_SHAKING_INVALID_OR_UART_FUNCS_NULL DMA握手无效或UART函数指针为空
UART_DMA_CONFIGURE_FAIL DMA配置失败
UART_DMA_START_TRANSFER_FAIL DMA启动传输失败
UART_DMA_TRANSFER_TIMEOUT DMA传输超时
UART_DMA_TRANSFER_ERROR DMA传输错误

参考案例 uart_demo.cuart_dma_mode_test() 函数。

Kconfig配置 CONFIG_UART_BUSMODE_DMA

uapi_uart_register_read_by_dma_callback

errcode_t uapi_uart_register_read_by_dma_callback(uart_bus_t bus, uart_write_dma_config_t *dma_cfg)

注册中断触发DMA搬运回调函数,当接收中断触发DMA搬运完成时调用。

前置条件 已调用 uapi_uart_init 完成初始化,且使用DMA模式。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
dma_cfg uart_write_dma_config_t * IN DMA配置结构体指针

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例 uart_demo.cuart_dma_mode_test() 函数。

Kconfig配置 CONFIG_UART_BUSMODE_DMA

uapi_uart_read

int32_t uapi_uart_read(uart_bus_t bus, const uint8_t *buffer, uint32_t length, uint32_t timeout)

以轮询模式读取数据,阻塞直到读取到指定长度的数据或超时。

前置条件 已调用 uapi_uart_init 完成初始化,且使用poll模式。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
buffer const uint8_t * IN 接收数据缓冲区指针
length uint32_t IN 期望读取的数据长度(字节)
timeout uint32_t IN 超时时间(ms)

出参

返回值 实际读取到的数据长度(字节),返回值类型为 int32_t

参考案例 uart_demo.cuart_poll_mode_test() 函数。

Kconfig配置 CONFIG_UART_BUSMODE_POLL

uapi_uart_flush_rx_data

errcode_t uapi_uart_flush_rx_data(uart_bus_t bus)

刷新UART接收Buffer中的数据,清空接收缓冲区。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例

uapi_uart_update_rx_buff

errcode_t uapi_uart_update_rx_buff(uart_bus_t bus, uint8_t *rx_buffer, uint16_t rx_buffer_size)

更新UART接收Buffer的地址和长度。

前置条件 已调用 uapi_uart_init 完成初始化,且使用中断模式或DMA模式。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
rx_buffer uint8_t * IN 接收Buffer的地址
rx_buffer_size uint16_t IN 接收Buffer的长度

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例

Kconfig配置 CONFIG_UART_BUSMODE_INT / CONFIG_UART_BUSMODE_DMA

uapi_uart_suspend

errcode_t uapi_uart_suspend(uintptr_t arg)

挂起所有UART通道,暂停UART操作。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t IN 挂起所需要的参数

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功

参考案例

Kconfig配置 CONFIG_UART_SUPPORT_LPM

uapi_uart_resume

errcode_t uapi_uart_resume(uintptr_t arg)

恢复所有UART通道,从挂起状态恢复UART操作。

前置条件 已调用 uapi_uart_suspend 挂起UART。

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t IN 恢复所需要的参数

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功

参考案例

uapi_uart_unregister_read_by_dma_callback

void uapi_uart_unregister_read_by_dma_callback(uart_bus_t bus)

去注册中断触发DMA搬运回调函数。

前置条件 已调用 uapi_uart_register_read_by_dma_callback 注册回调。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号

出参

返回值

参考案例

Kconfig配置 CONFIG_UART_SUPPORT_DMA / CONFIG_UART_SUPPORT_INT_TRIGGER_DMA

uapi_uart_register_overrun_error_callback

errcode_t uapi_uart_register_overrun_error_callback(uart_bus_t bus, uart_overrun_error_callback_t callback)

注册溢出错误处理回调函数,当UART检测到溢出错误时触发回调。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号
callback uart_overrun_error_callback_t IN 溢出错误回调函数指针

出参

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC 成功
ERRCODE_UART_NOT_INIT UART未初始化

参考案例

Kconfig配置 CONFIG_UART_BUSMODE_INT / CONFIG_UART_BUSMODE_DMA

uapi_uart_rx_fifo_is_empty

bool uapi_uart_rx_fifo_is_empty(uart_bus_t bus)

判断指定UART的接收FIFO是否为空。

前置条件 已调用 uapi_uart_init 完成初始化。

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t IN UART总线号

出参

返回值

返回值 文字含义 触发场景
true RX FIFO为空
false RX FIFO不为空

参考案例

Type definitions

uart_pin_config_t

typedef hal_uart_pin_config_t uart_pin_config_t;

UART引脚配置类型,等价于 hal_uart_pin_config_t

uart_data_bit_t

typedef hal_uart_data_bit_t uart_data_bit_t;

UART数据位定义类型,等价于 hal_uart_data_bit_t

uart_parity_t

typedef hal_uart_parity_t uart_parity_t;

UART奇偶校验位定义类型,等价于 hal_uart_parity_t

uart_stop_bit_t

typedef hal_uart_stop_bit_t uart_stop_bit_t;

UART停止位定义类型,等价于 hal_uart_stop_bit_t

uart_attr_t

typedef hal_uart_attr_t uart_attr_t;

UART基本属性定义类型,等价于 hal_uart_attr_t

uart_extra_attr_t

typedef hal_uart_extra_attr_t uart_extra_attr_t;

UART扩展属性定义类型,等价于 hal_uart_extra_attr_t

uart_flow_ctrl_t

typedef hal_uart_flow_ctrl_t uart_flow_ctrl_t;

UART流控类型定义,等价于 hal_uart_flow_ctrl_t

uart_rx_callback_t

typedef void (*uart_rx_callback_t)(const void *buffer, uint16_t length, bool error);

UART接收数据回调函数类型。在中断上下文中执行,接收缓冲区在回调返回后会被释放。

参数

参数名 类型 说明
buffer const void * 读取数据时用于存储数据的Buffer
length uint16_t Buffer的长度
error bool true表示接收数据时产生了错误,false表示正常

uart_rx_by_dma_callback_t

typedef void (*uart_rx_by_dma_callback_t)(uart_bus_t bus, const void *buffer, uint32_t length, uart_write_dma_config_t *dma_cfg);

UART RX中断触发DMA搬运回调函数类型。在中断上下文中执行。

参数

参数名 类型 说明
bus uart_bus_t UART总线号
buffer const void * DMA搬运的目的地址
length uint32_t DMA搬运的数据长度
dma_cfg uart_write_dma_config_t * DMA配置结构体指针

Kconfig配置 CONFIG_UART_SUPPORT_DMA / CONFIG_UART_SUPPORT_INT_TRIGGER_DMA

uart_tx_callback_t

typedef void (*uart_tx_callback_t)(const void *buffer, uint32_t length, const void *params);

UART发送数据回调函数类型,在中断上下文中执行。

参数

参数名 类型 说明
buffer const void * 发送时的数据缓存
length uint32_t 发送时的数据长度
params const void * 传递的参数

Kconfig配置 CONFIG_UART_SUPPORT_TX

uart_error_callback_t

typedef void (*uart_error_callback_t)(uint32_t *err_info, uint32_t len);

UART错误处理回调函数类型,在中断上下文中执行,执行完成后会自动释放内存。

参数

参数名 类型 说明
err_info uint32_t * 错误信息,每一个成员都是32-bit
len uint32_t 错误信息的长度

Enumerations

uart_bus_t

typedef enum {
    UART_BUS_0 = 0,
    UART_BUS_1 = 1,
    UART_BUS_2 = 2,
    UART_BUS_NONE = UART_BUS_MAX_NUMBER
} uart_bus_t;

UART总线号枚举,定义于 platform_core.h

枚举值 说明
UART_BUS_0 UART总线0
UART_BUS_1 UART总线1
UART_BUS_2 UART总线2
UART_BUS_NONE 无效总线号

uart_data_bit_t

typedef enum {
    HAL_UART_DATA_BIT_5 = 0,
    HAL_UART_DATA_BIT_6 = 1,
    HAL_UART_DATA_BIT_7 = 2,
    HAL_UART_DATA_BIT_8 = 3
} hal_uart_data_bit_t;

UART数据位枚举,定义于 hal_uart.h

枚举值 说明
HAL_UART_DATA_BIT_5 5位数据位
HAL_UART_DATA_BIT_6 6位数据位
HAL_UART_DATA_BIT_7 7位数据位
HAL_UART_DATA_BIT_8 8位数据位

uart_parity_t

typedef enum {
    HAL_UART_PARITY_NONE = 0,
    HAL_UART_PARITY_ODD = 1,
    HAL_UART_PARITY_EVEN = 2,
    HAL_UART_PARITY_MARK = 3,
    HAL_UART_PARITY_SPACE = 4
} hal_uart_parity_t;

UART奇偶校验位枚举,定义于 hal_uart.h

枚举值 说明
HAL_UART_PARITY_NONE 无校验
HAL_UART_PARITY_ODD 奇校验
HAL_UART_PARITY_EVEN 偶校验
HAL_UART_PARITY_MARK Mark校验
HAL_UART_PARITY_SPACE Space校验

uart_stop_bit_t

typedef enum {
    HAL_UART_STOP_BIT_1 = 0,
    HAL_UART_STOP_BIT_2 = 1
} hal_uart_stop_bit_t;

UART停止位枚举,定义于 hal_uart.h

枚举值 说明
HAL_UART_STOP_BIT_1 1位停止位
HAL_UART_STOP_BIT_2 2位停止位

uart_flow_ctrl_t

typedef enum {
    HAL_UART_FLOW_CTRL_NONE = 0,
    HAL_UART_FLOW_CTRL_RTS_CTS = 1,
    HAL_UART_FLOW_CTRL_RTS = 2,
    HAL_UART_FLOW_CTRL_CTS = 3
} hal_uart_flow_ctrl_t;

UART流控类型枚举,定义于 hal_uart.h

枚举值 说明
HAL_UART_FLOW_CTRL_NONE 无流控
HAL_UART_FLOW_CTRL_RTS_CTS RTS/CTS硬件流控
HAL_UART_FLOW_CTRL_RTS 仅RTS流控
HAL_UART_FLOW_CTRL_CTS 仅CTS流控

uart_rx_condition_t

typedef enum uart_rx_condition {
    UART_RX_CONDITION_FULL_OR_IDLE = (UART_RX_CONDITION_MASK_FULL | UART_RX_CONDITION_MASK_IDLE),
    UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA = (UART_RX_CONDITION_MASK_FULL | UART_RX_CONDITION_MASK_SUFFICIENT_DATA),
    UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE = (UART_RX_CONDITION_MASK_FULL | UART_RX_CONDITION_MASK_SUFFICIENT_DATA | UART_RX_CONDITION_MASK_IDLE)
} uart_rx_condition_t;

UART接收数据触发回调的条件枚举,定义于 uart.h

枚举值 说明
UART_RX_CONDITION_FULL_OR_IDLE 接收缓存已满或接收暂停时触发回调
UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA 接收缓存已满或接收数据量达到指定长度时触发回调
UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE 接收缓存已满、接收数据量达到指定长度或接收暂停时触发回调

Kconfig配置 CONFIG_UART_SUPPORT_RX

Structures

uart_pin_config_t

typedef struct {
    uint8_t tx_pin;
    uint8_t rx_pin;
    uint8_t rts_pin;
    uint8_t cts_pin;
} hal_uart_pin_config_t;

UART引脚配置结构体,定义于 hal_uart.h

成员 类型 说明
tx_pin uint8_t TX引脚编号
rx_pin uint8_t RX引脚编号
rts_pin uint8_t RTS引脚编号
cts_pin uint8_t CTS引脚编号

uart_attr_t

typedef struct {
    uint32_t baud_rate;
    uart_data_bit_t data_bits;
    uart_parity_t parity;
    uart_stop_bit_t stop_bits;
} hal_uart_attr_t;

UART基本属性配置结构体,定义于 hal_uart.h

成员 类型 说明
baud_rate uint32_t 波特率
data_bits uart_data_bit_t 数据位
parity uart_parity_t 校验位
stop_bits uart_stop_bit_t 停止位

uart_extra_attr_t

typedef struct {
    uart_flow_ctrl_t flow_ctrl;
    bool dma_mode;
    uint16_t rx_buf_size;
    uint16_t tx_buf_size;
} hal_uart_extra_attr_t;

UART扩展属性配置结构体,定义于 hal_uart.h

成员 类型 说明
flow_ctrl uart_flow_ctrl_t 流控类型
dma_mode bool 是否使用DMA模式
rx_buf_size uint16_t 接收缓冲区大小
tx_buf_size uint16_t 发送缓冲区大小

uart_buffer_config_t

typedef struct uart_buffer_config {
    void *rx_buffer;
    size_t rx_buffer_size;
} uart_buffer_config_t;

UART缓冲区配置结构体,定义于 uart.h

成员 类型 说明
rx_buffer void * 接收数据Buffer指针
rx_buffer_size size_t 接收Buffer的长度

uart_write_dma_config_t

typedef struct uart_write_dma_config {
    uint8_t src_width;
    uint8_t dest_width;
    uint8_t burst_length;
    uint8_t priority;
} uart_write_dma_config_t;

UART DMA发送配置结构体,定义于 uart.h

成员 类型 说明
src_width uint8_t 源端传输数据宽度:0-1字节,1-2字节,2-4字节
dest_width uint8_t 目的端传输数据宽度:0-1字节,1-2字节,2-4字节
burst_length uint8_t burst长度:0-1,1-4,2-8,3-16
priority uint8_t 传输通道优先级(最小0,最大3)

Kconfig配置 CONFIG_UART_SUPPORT_TX / CONFIG_UART_SUPPORT_DMA