跳转至

uart

UART (Universal Asynchronous Receiver/Transmitter) 提供异步串行通信功能,支持轮询、中断和 DMA 数据传输模式。

头文件清单

#include "include/driver/uart.h"

接口清单

接口名称 功能简述
uapi_uart_init 初始化指定的串口
uapi_uart_deinit 去初始化指定的串口
uapi_uart_set_attr 设置串口的基础配置参数
uapi_uart_get_attr 获取串口的基础配置参数
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_single 轮询模式向单线UART发送数据
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_update_dma_recv_buff 更新接收UART DMA数据的buffer
uapi_uart_dma_lli_continue_recv 判断状态后继续接收数据
uapi_uart_dma_recv_register 注册接收UART DMA数据的buffer信息和处理函数
uapi_uart_dma_send UART通过DMA数据链表发送数据
uapi_uart_dma_recv_end_transfer 结束接收UART DMA数据
uapi_uart_dma_send_end_transfer 结束发送UART DMA数据
uart_dma_recv_get_bus 获取UART不定长数据的串口号
uapi_uart_recv_raw_data_end_transfer 结束UART不定长数据接收
uapi_uart_dma_recv_raw_data UART DMA不定长数据接收接口
uapi_uart_read 从UART读取数据
uapi_uart_flush_rx_data 刷新UART接收Buffer中的数据
uapi_uart_update_rx_buff 更新UART接收Buffer的地址和长度
uapi_uart_suspend 挂起所有的UART通道
uapi_uart_resume 恢复所有的UART通道
uapi_uart_register_write_by_dma_callback 注册DMA完成后直接调用dma写的回调函数
uapi_uart_pin_cfg_get 获取一个通道的管脚配置

Functions

uapi_uart_init

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

头文件清单

#include "include/driver/uart.h"

功能说明

  • 初始化指定的串口,配置UART引脚、基础属性、扩展属性及接收缓存
  • 需在调用其他UART接口之前完成初始化,否则后续接口调用返回错误码
  • 初始化时需指定接收Buffer,用于存储接收到的数据

前置条件

  • 调用时序约束:当前接口必须在UART硬件时钟使能后调用
  • 依赖关系:入参pins、attr、extra_attr、uart_buffer_config指针不为NULL,且指向内存空间已申请成功

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
pins const uart_pin_config_t * UART中使用的PIN,包括TX, RX, RTS和CTS 非NULL
attr const uart_attr_t * UART的基础配置参数 非NULL
extra_attr const uart_extra_attr_t * UART的高级配置参数 非NULL
uart_buffer_config uart_buffer_config_t * 指定UART的接收Buffer 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 串口初始化成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_RX 功能宏 支持UART RX功能 y

uapi_uart_deinit

errcode_t uapi_uart_deinit(uart_bus_t bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 去初始化指定的串口,释放UART硬件资源
  • 去初始化后该串口不再可用,需重新调用uapi_uart_init初始化后方可使用
  • 去初始化会注销已注册的回调函数

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 去初始化成功
Other 其他错误码,参考errcode_t 执行失败

uapi_uart_set_attr

errcode_t uapi_uart_set_attr(uart_bus_t bus, const uart_attr_t *attr)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 设置串口的基础配置参数,包括波特率、数据位、停止位、奇偶校验和流控
  • 可在初始化后修改串口配置,无需重新初始化
  • 配置后立即生效,影响后续数据收发行为

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参attr指针不为NULL

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
attr const uart_attr_t * UART的基础配置参数 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 设置成功
Other 其他错误码,参考errcode_t 执行失败

uapi_uart_get_attr

errcode_t uapi_uart_get_attr(uart_bus_t bus, const uart_attr_t *attr)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 获取串口的基础配置参数,包括波特率、数据位、停止位、奇偶校验和流控
  • 用于查询当前串口的配置状态
  • 获取的参数存储在attr指向的结构体中

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参attr指针不为NULL

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
attr const uart_attr_t * UART的基础配置参数 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 获取成功
Other 其他错误码,参考errcode_t 执行失败

uapi_uart_has_pending_transmissions

bool uapi_uart_has_pending_transmissions(uart_bus_t bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 判断指定串口是否存在正在等待的传输
  • 用于在发送数据前检查UART发送状态
  • 避免在传输未完成时进行操作导致数据丢失

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
true 存在正在等待的传输 发送通道有数据未发送完成
false 没有正在等待的传输 发送通道空闲

uapi_uart_rx_fifo_is_empty

bool uapi_uart_rx_fifo_is_empty(uart_bus_t bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 判断指定串口的RX FIFO是否为空
  • 用于在读取数据前检查是否有数据可读
  • 可配合轮询模式实现数据接收

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
true RX FIFO为空 接收FIFO中无数据
false RX FIFO非空 接收FIFO中有数据

uapi_uart_tx_fifo_is_empty

bool uapi_uart_tx_fifo_is_empty(uart_bus_t bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 判断指定串口的TX FIFO是否为空
  • 用于在发送数据后检查发送是否完成
  • 可用于判断是否可以安全进行下一步操作

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
true TX FIFO为空 发送FIFO中数据已全部发送
false TX FIFO非空 发送FIFO中仍有数据待发送

uapi_uart_register_rx_callback

errcode_t uapi_uart_register_rx_callback(uart_bus_t bus, uart_rx_condition_t condition, uint32_t size, uart_rx_callback_t callback)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 注册接收回调函数,回调函数会根据触发条件和Size触发
  • 回调函数在中断上下文执行,需注意执行时间不可过长
  • 支持多种触发条件:接收缓存满或空闲、接收数据量到达指定长度、或两者组合

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参callback不为NULL

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
condition uart_rx_condition_t 回调触发的条件 UART_RX_CONDITION_FULL_OR_IDLE(5) / UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA(6) / UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE(7)
size uint32_t 如果触发条件涉及到数据长度,这个参数表示需要的数据长度 0 ~ 65535
callback uart_rx_callback_t 接收数据的回调函数 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 注册成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_RX 功能宏 支持UART RX功能 y

uapi_uart_unregister_rx_callback

void uapi_uart_unregister_rx_callback(uart_bus_t bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 去注册接收回调函数,取消已注册的接收回调
  • 去注册后,该串口不再触发接收回调
  • 可用于在不需要接收数据时释放回调资源

前置条件

  • 调用时序约束:该串口已通过uapi_uart_register_rx_callback注册了接收回调

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_RX 功能宏 支持UART RX功能 y

uapi_uart_register_parity_error_callback

errcode_t uapi_uart_register_parity_error_callback(uart_bus_t bus, uart_error_callback_t callback)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 注册奇偶校验错误处理的回调函数
  • 回调函数在中断上下文执行,执行完成后会自动释放内存
  • 当UART接收数据出现奇偶校验错误时触发该回调

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参callback不为NULL

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
callback uart_error_callback_t 奇偶校验错误处理回调函数 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 注册成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_RX 功能宏 支持UART RX功能 y

uapi_uart_register_frame_error_callback

errcode_t uapi_uart_register_frame_error_callback(uart_bus_t bus, uart_error_callback_t callback)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 注册帧错误处理的回调函数
  • 回调函数在中断上下文执行,执行完成后会自动释放内存
  • 当UART接收数据出现帧错误时触发该回调

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参callback不为NULL

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
callback uart_error_callback_t 帧错误处理回调函数 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 注册成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_RX 功能宏 支持UART RX功能 y

uapi_uart_register_overrun_error_callback

errcode_t uapi_uart_register_overrun_error_callback(uart_bus_t bus, uart_error_callback_t callback)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 注册溢出错误处理的回调函数
  • 回调函数在中断上下文执行,执行完成后会自动释放内存
  • 当UART接收数据出现溢出错误时触发该回调

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参callback不为NULL

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
callback uart_error_callback_t 溢出错误处理回调函数 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 注册成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_RX 功能宏 支持UART RX功能 y

uapi_uart_write

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

头文件清单

#include "include/driver/uart.h"

功能说明

  • 将数据发送到已打开的UART上,使用轮询(直接发送)模式
  • 发送过程中会锁中断,确保数据完整性
  • 返回实际发送的数据长度,可能小于请求长度(超时场景)

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参buffer不为NULL,且length大于0

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer const uint8_t * 要发送的数据Buffer 非NULL
length uint32_t 要发送的数据Buffer长度 大于0
timeout uint32_t 超时时间 0 ~ 0xFFFFFFFF

返回值

返回值 文字含义 触发场景
>=0 实际发送的数据长度 数据发送完成或超时
<0 发送失败 发送过程出错

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y

uapi_uart_write_nolock

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

头文件清单

#include "include/driver/uart.h"

功能说明

  • 将数据发送到已打开的UART上,使用轮询模式且不锁中断
  • 适用于中断上下文或已持有锁的场景,避免死锁
  • 返回实际发送的数据长度,可能小于请求长度(超时场景)

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参buffer不为NULL,且length大于0
  • 上下文限制:调用者已确保无并发访问冲突,或已在中断上下文中

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer const uint8_t * 要发送的数据Buffer 非NULL
length uint32_t 要发送的数据Buffer长度 大于0
timeout uint32_t 超时时间 0 ~ 0xFFFFFFFF

返回值

返回值 文字含义 触发场景
>=0 实际发送的数据长度 数据发送完成或超时
<0 发送失败 发送过程出错

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y

uapi_uart_write_single

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

头文件清单

#include "include/driver/uart.h"

功能说明

  • 将数据发送到已打开的单线UART上,使用轮询模式
  • 单线UART模式下TX和RX共用同一引脚
  • 返回实际发送的数据长度,可能小于请求长度(超时场景)

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功且配置为单线模式
  • 依赖关系:入参buffer不为NULL,且length大于0

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer const uint8_t * 要发送的数据Buffer 非NULL
length uint32_t 要发送的数据Buffer长度 大于0
timeout uint32_t 超时时间 0 ~ 0xFFFFFFFF

返回值

返回值 文字含义 触发场景
>=0 实际发送的数据长度 数据发送完成或超时
<0 发送失败 发送过程出错

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y

uapi_uart_write_int

errcode_t uapi_uart_write_int(uart_bus_t bus, const uint8_t *buffer, uint32_t length, void *params, uart_tx_callback_t finished_with_buffer_func)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 使用中断模式将数据发送到已打开的UART上,数据发送完成后调用回调函数
  • 回调函数在中断上下文执行,需注意执行时间不可过长
  • 发送完成后通过回调通知上层应用释放缓冲区或进行后续操作

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参buffer不为NULL,且length大于0,finished_with_buffer_func不为NULL

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer const uint8_t * 要发送的数据Buffer 非NULL
length uint32_t 要发送的数据Buffer长度 大于0
params void * 传递到完成传输的回调函数的参数 可为NULL
finished_with_buffer_func uart_tx_callback_t 数据发送完成的回调函数 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 发起中断发送成功
Other 其他错误码,参考errcode_t 发送失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_TX_INT 功能宏 支持UART TX中断模式 y

uapi_uart_write_by_dma

int32_t uapi_uart_write_by_dma(uart_bus_t bus, const void *buffer, uint32_t length, uart_write_dma_config_t *dma_cfg)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 通过DMA发送数据到指定UART
  • DMA模式可减少CPU占用,适用于大数据量传输
  • 需通过dma_cfg参数配置DMA传输参数

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功,且extra_attr中tx_dma_enable设为true
  • 依赖关系:入参buffer不为NULL,dma_cfg不为NULL
  • 依赖关系:DMA通道已配置就绪

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer const void * 要发送的数据Buffer 非NULL
length uint32_t 要发送的数据Buffer长度 大于0
dma_cfg uart_write_dma_config_t * 发送数据时候的DMA配置 非NULL

返回值

返回值 文字含义 触发场景
>=0 完成发送的数据长度 DMA发送完成
<0 发送失败 DMA发送过程出错

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y

uapi_uart_read_by_dma

int32_t uapi_uart_read_by_dma(uart_bus_t bus, const void *buffer, uint32_t length, uart_write_dma_config_t *dma_cfg)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 通过DMA从指定UART读取数据
  • DMA模式可减少CPU占用,适用于大数据量接收
  • 需通过dma_cfg参数配置DMA传输参数

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功,且extra_attr中rx_dma_enable设为true
  • 依赖关系:入参buffer不为NULL,dma_cfg不为NULL
  • 依赖关系:DMA通道已配置就绪

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer const void * 接收数据的Buffer 非NULL
length uint32_t 接收Buffer长度 大于0
dma_cfg uart_write_dma_config_t * 接收数据时候的DMA配置 非NULL

返回值

返回值 文字含义 触发场景
>=0 完成接收的数据长度 DMA接收完成
<0 接收失败 DMA接收过程出错

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y

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)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 注册中断触发DMA搬运的回调
  • 当UART接收中断触发时,通过DMA自动搬运数据到指定buffer
  • 需通过dma_cfg参数配置DMA传输参数

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参dma_cfg不为NULL
  • 依赖关系:DMA通道已配置就绪

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
dma_cfg uart_write_dma_config_t * 接收数据时候的DMA配置 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 注册成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_INT_TRIGGER_DMA 功能宏 支持UART RX中断触发DMA功能 y

uapi_uart_unregister_read_by_dma_callback

void uapi_uart_unregister_read_by_dma_callback(uart_bus_t bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 去注册中断触发DMA搬运的回调
  • 去注册后,该串口不再触发中断触发DMA搬运
  • 可用于在不需要DMA接收时释放资源

前置条件

  • 调用时序约束:该串口已通过uapi_uart_register_read_by_dma_callback注册了回调

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_INT_TRIGGER_DMA 功能宏 支持UART RX中断触发DMA功能 y

uapi_uart_update_dma_recv_buff

errcode_t uapi_uart_update_dma_recv_buff(uart_bus_t uart_bus, void *buffer, uint16_t length)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 更新接收UART DMA数据的buffer
  • 在DMA LLI接收过程中,可用于切换接收buffer
  • 允许在不停止DMA传输的情况下更新接收buffer地址和长度

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功,DMA LLI接收已启动
  • 依赖关系:入参buffer不为NULL

入参

名称 参数类型 详细说明 约束取值范围
uart_bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer void * 接收数据的buffer地址 非NULL
length uint16_t 接收数据的长度 大于0

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 更新成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_DMA_LLI 功能宏 支持UART DMA LLI传输功能 n

uapi_uart_dma_lli_continue_recv

errcode_t uapi_uart_dma_lli_continue_recv(uart_bus_t uart_bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • UART判断状态后继续接收数据的接口
  • 在DMA LLI接收回调中调用,用于继续接收下一批数据
  • 配合uapi_uart_dma_recv_register使用,实现连续DMA接收

前置条件

  • 调用时序约束:该串口已通过uapi_uart_dma_recv_register注册了DMA接收
  • 上下文限制:在接收回调中调用

入参

名称 参数类型 详细说明 约束取值范围
uart_bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 继续接收成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_DMA_LLI 功能宏 支持UART DMA LLI传输功能 n

uapi_uart_dma_recv_register

errcode_t uapi_uart_dma_recv_register(uart_bus_t uart_bus, void *buffer, uint16_t length, uart_data_recv_cb_t cb)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 注册接收UART DMA数据的buffer信息和处理函数
  • 设置DMA LLI接收所需的buffer地址、长度和完成回调
  • 接收完成后触发回调函数,回调返回true表示继续接收,false表示停止接收

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参buffer不为NULL,cb不为NULL
  • 依赖关系:DMA通道已配置就绪

入参

名称 参数类型 详细说明 约束取值范围
uart_bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer void * 接收数据的buffer地址 非NULL
length uint16_t 接收数据的长度 大于0
cb uart_data_recv_cb_t 该串口接收完成后触发的回调 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 注册成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_DMA_LLI 功能宏 支持UART DMA LLI传输功能 n

uapi_uart_dma_send

errcode_t uapi_uart_dma_send(uart_bus_t uart_bus, const void *buffer, uint16_t length, uart_data_send_cb_t cb)

头文件清单

#include "include/driver/uart.h"

功能说明

  • UART通过DMA数据链表发送数据
  • 发送完成后触发回调函数,回调参数包含发送数据指针和长度
  • 适用于大数据量DMA LLI传输场景

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参buffer不为NULL,cb不为NULL
  • 依赖关系:DMA通道已配置就绪

入参

名称 参数类型 详细说明 约束取值范围
uart_bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer const void * 发送数据的buffer地址 非NULL
length uint16_t 发送数据buffer的长度 大于0
cb uart_data_send_cb_t 该数据发送完成后触发的回调 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 DMA发送发起成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_DMA_LLI 功能宏 支持UART DMA LLI传输功能 n

uapi_uart_dma_recv_end_transfer

errcode_t uapi_uart_dma_recv_end_transfer(uart_bus_t uart_bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 结束接收UART DMA数据
  • 停止DMA LLI接收通道,释放DMA接收资源
  • 调用后DMA接收不再进行

前置条件

  • 调用时序约束:DMA LLI接收已启动

入参

名称 参数类型 详细说明 约束取值范围
uart_bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 结束接收成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_DMA_LLI 功能宏 支持UART DMA LLI传输功能 n

uapi_uart_dma_send_end_transfer

errcode_t uapi_uart_dma_send_end_transfer(uart_bus_t uart_bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 结束发送UART DMA数据
  • 停止DMA LLI发送通道,释放DMA发送资源
  • 调用后DMA发送不再进行

前置条件

  • 调用时序约束:DMA LLI发送已启动

入参

名称 参数类型 详细说明 约束取值范围
uart_bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 结束发送成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_DMA_LLI 功能宏 支持UART DMA LLI传输功能 n

uart_dma_recv_get_bus

uart_bus_t uart_dma_recv_get_bus(void)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 获取UART不定长数据的串口号
  • 用于在IDLE中断处理中获取当前接收不定长数据的UART总线号
  • 配合uapi_uart_dma_recv_raw_data使用

前置条件

  • 调用时序约束:UART DMA不定长数据接收已启动

返回值

返回值 文字含义 触发场景
uart_bus_t 串口号 返回当前接收不定长数据的串口号

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_DMA_LLI 功能宏 支持UART DMA LLI传输功能 n
CONFIG_UART_SUPPORT_RECV_RAW_DATA 功能宏 支持UART接收不定长数据功能 n

uapi_uart_recv_raw_data_end_transfer

errcode_t uapi_uart_recv_raw_data_end_transfer(uart_bus_t uart_bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 结束UART不定长数据接收
  • 停止DMA不定长数据接收模式,释放相关资源
  • 调用后不定长数据接收不再进行

前置条件

  • 调用时序约束:UART DMA不定长数据接收已通过uapi_uart_dma_recv_raw_data启动

入参

名称 参数类型 详细说明 约束取值范围
uart_bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 结束接收成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_DMA_LLI 功能宏 支持UART DMA LLI传输功能 n
CONFIG_UART_SUPPORT_RECV_RAW_DATA 功能宏 支持UART接收不定长数据功能 n

uapi_uart_dma_recv_raw_data

errcode_t uapi_uart_dma_recv_raw_data(uart_bus_t uart_bus, uart_idle_int_receive_cb_t callback)

头文件清单

#include "include/driver/uart.h"

功能说明

  • UART DMA不定长数据接收接口
  • 通过IDLE中断触发回调,接收不定长数据
  • 回调返回true表示继续接收,false表示停止接收

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参callback不为NULL
  • 依赖关系:DMA通道已配置就绪

入参

名称 参数类型 详细说明 约束取值范围
uart_bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
callback uart_idle_int_receive_cb_t 该串口接收完成后触发的idle回调 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 启动不定长接收成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_TX 功能宏 支持UART TX功能 y
CONFIG_UART_SUPPORT_DMA 功能宏 支持UART DMA功能 y
CONFIG_UART_SUPPORT_DMA_LLI 功能宏 支持UART DMA LLI传输功能 n
CONFIG_UART_SUPPORT_RECV_RAW_DATA 功能宏 支持UART接收不定长数据功能 n

uapi_uart_read

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

头文件清单

#include "include/driver/uart.h"

功能说明

  • 从UART读取数据,使用轮询模式
  • 返回实际读取的数据长度,可能小于请求长度(超时或数据不足场景)
  • 读取的数据存储在buffer指向的内存中

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参buffer不为NULL,且length大于0

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
buffer const uint8_t * 存储接收数据的Buffer 非NULL
length uint32_t 存储接收数据的Buffer长度 大于0
timeout uint32_t 超时时间 0 ~ 0xFFFFFFFF

返回值

返回值 文字含义 触发场景
>=0 实际读到的数据长度 数据读取完成或超时
<0 读取失败 读取过程出错

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_RX 功能宏 支持UART RX功能 y

uapi_uart_flush_rx_data

errcode_t uapi_uart_flush_rx_data(uart_bus_t bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 刷新UART接收Buffer中的数据,清空接收缓存
  • 清空后接收Buffer可重新用于接收新数据
  • 适用于需要丢弃已接收数据的场景

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 刷新成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_RX 功能宏 支持UART RX功能 y

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)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 更新UART接收Buffer的地址和长度
  • 可在接收过程中切换接收Buffer,实现乒乓缓冲
  • 更新后新接收的数据将写入新的Buffer

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功
  • 依赖关系:入参rx_buffer不为NULL

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
rx_buffer uint8_t * buffer的地址 非NULL
rx_buffer_size uint16_t buffer的长度 大于0

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 更新成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_RX 功能宏 支持UART RX功能 y

uapi_uart_suspend

errcode_t uapi_uart_suspend(uintptr_t arg)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 挂起所有的UART通道,保存UART硬件寄存器状态
  • 用于低功耗模式进入前保存UART状态
  • 挂起后所有UART通道停止工作

前置条件

  • 调用时序约束:所有使用中的UART通道已完成当前传输操作

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t 挂起所需要的参数 由调用者指定

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 挂起成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_LPM 功能宏 支持UART低功耗模式功能 y

uapi_uart_resume

errcode_t uapi_uart_resume(uintptr_t arg)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 恢复所有的UART通道,恢复UART硬件寄存器状态
  • 用于低功耗模式退出后恢复UART工作状态
  • 恢复后所有UART通道可继续正常工作

前置条件

  • 调用时序约束:UART通道已通过uapi_uart_suspend挂起

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t 恢复所需要的参数 由调用者指定

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 恢复成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_LPM 功能宏 支持UART低功耗模式功能 y

uapi_uart_register_write_by_dma_callback

errcode_t uapi_uart_register_write_by_dma_callback(uart_bus_t bus, uart_tx_by_dma_callback_t tx_dma_cb)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 注册在DMA完成后直接调用DMA写的回调函数
  • 回调函数在DMA完成中断中直接调用
  • 适用于需要在DMA发送完成后立即发起下一次DMA发送的场景

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功,DMA发送已配置
  • 依赖关系:入参tx_dma_cb不为NULL

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 串口号 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)
tx_dma_cb uart_tx_by_dma_callback_t DMA完成中断中调用DMA写函数 非NULL

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 成功 注册成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_UART_SUPPORT_SEND_IN_DMA_ISR 功能宏 支持UART DMA中断中发送功能 n

uapi_uart_pin_cfg_get

uart_pin_config_t *uapi_uart_pin_cfg_get(uart_bus_t bus)

头文件清单

#include "include/driver/uart.h"

功能说明

  • 获取一个通道的管脚配置
  • 返回指定串口的PIN配置结构体指针
  • 可用于查询当前UART通道的引脚分配情况

前置条件

  • 调用时序约束:该串口已通过uapi_uart_init初始化成功

入参

名称 参数类型 详细说明 约束取值范围
bus uart_bus_t 需要获取管脚配置的通道 UART_BUS_0(0) / UART_BUS_1(1) / UART_BUS_2(2) / UART_BUS_3(3)

返回值

返回值 文字含义 触发场景
uart_pin_config_t * 该通道的管脚配置指针 查询成功
NULL 查询失败 串口号无效或未初始化

Type definitions

errcode_t

typedef uint32_t errcode_t;

使用说明

作为UART接口的返回值类型使用

uart_pin_config_t

typedef hal_uart_pin_config_t uart_pin_config_t;

使用说明

作为uapi_uart_init入参pins类型和uapi_uart_pin_cfg_get返回值类型使用

uart_data_bit_t

typedef hal_uart_data_bit_t uart_data_bit_t;

使用说明

作为uart_attr_t结构体中data_bits字段的枚举类型使用

uart_parity_t

typedef hal_uart_parity_t uart_parity_t;

使用说明

作为uart_attr_t结构体中parity字段的枚举类型使用

uart_stop_bit_t

typedef hal_uart_stop_bit_t uart_stop_bit_t;

使用说明

作为uart_attr_t结构体中stop_bits字段的枚举类型使用

uart_attr_t

typedef hal_uart_attr_t uart_attr_t;

使用说明

作为uapi_uart_init、uapi_uart_set_attr、uapi_uart_get_attr的入参/出参类型使用

uart_extra_attr_t

typedef hal_uart_extra_attr_t uart_extra_attr_t;

使用说明

作为uapi_uart_init入参extra_attr类型使用

uart_flow_ctrl_t

typedef hal_uart_flow_ctrl_t uart_flow_ctrl_t;

使用说明

作为uart_attr_t结构体中flow_ctrl字段的枚举类型使用

uart_rx_callback_t

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

使用说明

作为uapi_uart_register_rx_callback入参callback类型使用,回调在UART接收中断上下文中被调用

uart_error_callback_t

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

使用说明

作为uapi_uart_register_parity_error_callback、uapi_uart_register_frame_error_callback、uapi_uart_register_overrun_error_callback的入参callback类型使用,回调在UART错误中断上下文中被调用

uart_tx_callback_t

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

使用说明

作为uapi_uart_write_int入参finished_with_buffer_func类型使用,回调在UART发送完成中断上下文中被调用

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);

使用说明

作为uapi_uart_register_read_by_dma_callback内部使用的回调类型

uart_data_send_cb_t

typedef void (*uart_data_send_cb_t)(uint8_t* data, uint16_t length, errcode_t result);

使用说明

作为uapi_uart_dma_send入参cb类型使用,回调在DMA LLI发送完成时被调用

uart_idle_int_receive_cb_t

typedef bool (*uart_idle_int_receive_cb_t)(uint8_t *receive_buff, uint32_t receive_length);

使用说明

作为uapi_uart_dma_recv_raw_data入参callback类型使用,回调在UART IDLE中断上下文中被调用,返回true表示继续接收,false表示停止接收

uart_data_recv_cb_t

typedef bool (*uart_data_recv_cb_t)(uint8_t channel, uint16_t length, errcode_t result);

使用说明

作为uapi_uart_dma_recv_register入参cb类型使用,回调在DMA LLI接收完成时被调用,返回true表示继续接收,false表示停止接收

uart_tx_by_dma_callback_t

typedef errcode_t (*uart_tx_by_dma_callback_t)(void);

使用说明

作为uapi_uart_register_write_by_dma_callback入参tx_dma_cb类型使用,回调在DMA发送完成中断上下文中被调用

Enumerations

uart_bus_t

typedef enum {
    UART_BUS_0 = 0,
    UART_BUS_1 = 1,
    UART_BUS_2 = 2,
    UART_BUS_3 = 3,
    UART_BUS_NONE = UART_BUS_MAX_NUMBER
} uart_bus_t;
枚举成员 取值 描述
UART_BUS_0 0 UART0串口
UART_BUS_1 1 UART1串口
UART_BUS_2 2 UART2串口
UART_BUS_3 3 UART3串口
UART_BUS_NONE 4 无效/未使用的UART串口号

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_RX_CONDITION_FULL_OR_IDLE 5 接收缓存满或接收数据暂停时触发回调
UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA 6 接收缓存满或接收数据量到达指定长度时触发回调
UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE 7 接收缓存满或接收数据量到达指定长度或接收数据暂停时触发回调

hal_uart_data_bit_t

typedef enum hal_uart_data_bit {
    UART_DATA_BIT_5,
    UART_DATA_BIT_6,
    UART_DATA_BIT_7,
    UART_DATA_BIT_8
} hal_uart_data_bit_t;
枚举成员 取值 描述
UART_DATA_BIT_5 0 UART数据位为5-bit
UART_DATA_BIT_6 1 UART数据位为6-bit
UART_DATA_BIT_7 2 UART数据位为7-bit
UART_DATA_BIT_8 3 UART数据位为8-bit

hal_uart_parity_t

typedef enum hal_uart_parity {
    UART_PARITY_NONE,
    UART_PARITY_ODD,
    UART_PARITY_EVEN
} hal_uart_parity_t;
枚举成员 取值 描述
UART_PARITY_NONE 0 UART无奇偶校验
UART_PARITY_ODD 1 UART奇校验
UART_PARITY_EVEN 2 UART偶校验

hal_uart_stop_bit_t

typedef enum hal_uart_stop_bit {
    UART_STOP_BIT_1,
    UART_STOP_BIT_2
} hal_uart_stop_bit_t;
枚举成员 取值 描述
UART_STOP_BIT_1 0 UART停止位为1-bit
UART_STOP_BIT_2 1 UART停止位为2-bit

hal_uart_flow_ctrl_t

typedef enum {
    UART_FLOW_CTRL_NONE = 0x0,
    UART_FLOW_CTS = 0x1,
    UART_FLOW_RTS = 0x2,
    UART_FLOW_CTRL_RTS_CTS = UART_FLOW_CTS | UART_FLOW_RTS,
    UART_FLOW_CTRL_SOFT = 0x4
} hal_uart_flow_ctrl_t;
枚举成员 取值 描述
UART_FLOW_CTRL_NONE 0x0 无流控
UART_FLOW_CTS 0x1 CTS流控
UART_FLOW_RTS 0x2 RTS流控
UART_FLOW_CTRL_RTS_CTS 0x3 RTS和CTS流控
UART_FLOW_CTRL_SOFT 0x4 软件流控

Structures

uart_write_dma_config_t

typedef struct uart_write_dma_config {
    uint8_t src_width;          /*!< 源端传输数据宽度
                                 *   - 0: 1字节
                                 *   - 1: 2字节
                                 *   - 2: 4字节 */
    uint8_t dest_width;         /*!< 目的端传输数据宽度
                                 *   - 0: 1字节
                                 *   - 1: 2字节
                                 *   - 2: 4字节 */
    uint8_t burst_length;       /*!< 每次从相应的硬件或软件握手接口发出目的burst请求时,要写入目的端数据量
                                 *   - 0: burst长度是1
                                 *   - 1: burst长度是4
                                 *   - 2: burst长度是8
                                 *   - 3: burst长度是16 */
    uint8_t priority;           /*!< 传输通道优先级(最小为0以及最大为3) */
} uart_write_dma_config_t;

成员说明

成员名称 数据类型 描述
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

uart_buffer_config_t

typedef struct uart_buffer_config {
    void *rx_buffer;            /*!< 接收数据的buffer指针 */
    size_t rx_buffer_size;      /*!< 接收Buffer的长度 */
} uart_buffer_config_t;

成员说明

成员名称 数据类型 描述
rx_buffer void * 接收数据的buffer指针
rx_buffer_size size_t 接收Buffer的长度

hal_uart_pin_config_t

typedef struct {
    pin_t tx_pin;                   /*!< 发送引脚 */
    pin_t rx_pin;                   /*!< 接收引脚 */
    pin_t cts_pin;                  /*!< 发送就绪引脚 */
    pin_t rts_pin;                  /*!< 接收就绪引脚 */
} hal_uart_pin_config_t;

成员说明

成员名称 数据类型 描述
tx_pin pin_t 发送引脚
rx_pin pin_t 接收引脚
cts_pin pin_t 发送就绪引脚
rts_pin pin_t 接收就绪引脚

hal_uart_attr_t

typedef struct uart_attr {
    uint32_t baud_rate;                 /*!< UART波特率 */
    uint8_t data_bits;                  /*!< UART数据位,参考 uart_data_bit_t */
    uint8_t stop_bits;                  /*!< UART停止位,参考 uart_stop_bit_t */
    uint8_t parity;                     /*!< UART奇偶校验位,参考 uart_parity_t */
    uint8_t flow_ctrl;                  /*!< UART流控,参考 uart_flow_ctrl_t */
} hal_uart_attr_t;

成员说明

成员名称 数据类型 描述
baud_rate uint32_t UART波特率
data_bits uint8_t UART数据位,参考uart_data_bit_t
stop_bits uint8_t UART停止位,参考uart_stop_bit_t
parity uint8_t UART奇偶校验位,参考uart_parity_t
flow_ctrl uint8_t UART流控,参考uart_flow_ctrl_t

hal_uart_extra_attr_t

typedef struct uart_extra_attr {
    bool tx_dma_enable;                     /*!< false: TX没有使用DMA,使用 uapi_uart_write 发送数据
                                                 true:  TX使用DMA,使用 uapi_uart_write_by_dma 发送数据 */
    uint8_t tx_int_threshold;               /*!< 触发中断的txfifo水线 */
    bool rx_dma_enable;                     /*!< false: RX没有使用DMA,使用 uapi_uart_write 发送数据
                                                 true:  RX使用DMA,使用 uapi_uart_write_by_dma 发送数据 */
    uint8_t rx_int_threshold;               /*!< 触发中断的rxfifo水线 */
} hal_uart_extra_attr_t;

成员说明

成员名称 数据类型 描述
tx_dma_enable bool TX DMA使能:false-使用uapi_uart_write,true-使用uapi_uart_write_by_dma
tx_int_threshold uint8_t 触发中断的TX FIFO水线
rx_dma_enable bool RX DMA使能:false-使用uapi_uart_write,true-使用uapi_uart_write_by_dma
rx_int_threshold uint8_t 触发中断的RX FIFO水线

Macros

ERRCODE_SUCC

#define ERRCODE_SUCC                                        0UL

ERRCODE_UART_NOT_INIT

#define ERRCODE_UART_NOT_INIT                               0x80001040

ERRCODE_UART_CLAIM_FAIL

#define ERRCODE_UART_CLAIM_FAIL                             0x80001041

ERRCODE_UART_RELEASE_FAIL

#define ERRCODE_UART_RELEASE_FAIL                           0x80001042

ERRCODE_UART_PARITY_ERROR

#define ERRCODE_UART_PARITY_ERROR                           0x80001052

ERROCDE_UART_TRANSFER_TIMEOUT

#define ERROCDE_UART_TRANSFER_TIMEOUT                       0x80001053

UART_RX_CONDITION_MASK_IDLE

#define UART_RX_CONDITION_MASK_IDLE            1

UART_RX_CONDITION_MASK_SUFFICIENT_DATA

#define UART_RX_CONDITION_MASK_SUFFICIENT_DATA 2

UART_RX_CONDITION_MASK_FULL

#define UART_RX_CONDITION_MASK_FULL            4