uart
UART (Universal Asynchronous Receiver/Transmitter) 提供异步串行通信功能,支持轮询、中断和 DMA 数据传输模式。
头文件清单
接口清单
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)
头文件清单
功能说明
- 初始化指定的串口,配置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
头文件清单
功能说明
- 去初始化指定的串口,释放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
头文件清单
功能说明
- 设置串口的基础配置参数,包括波特率、数据位、停止位、奇偶校验和流控
- 可在初始化后修改串口配置,无需重新初始化
- 配置后立即生效,影响后续数据收发行为
前置条件
- 调用时序约束:该串口已通过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
头文件清单
功能说明
- 获取串口的基础配置参数,包括波特率、数据位、停止位、奇偶校验和流控
- 用于查询当前串口的配置状态
- 获取的参数存储在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
头文件清单
功能说明
- 判断指定串口是否存在正在等待的传输
- 用于在发送数据前检查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
头文件清单
功能说明
- 判断指定串口的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
头文件清单
功能说明
- 判断指定串口的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)
头文件清单
功能说明
- 注册接收回调函数,回调函数会根据触发条件和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
头文件清单
功能说明
- 去注册接收回调函数,取消已注册的接收回调
- 去注册后,该串口不再触发接收回调
- 可用于在不需要接收数据时释放回调资源
前置条件
- 调用时序约束:该串口已通过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
头文件清单
功能说明
- 注册奇偶校验错误处理的回调函数
- 回调函数在中断上下文执行,执行完成后会自动释放内存
- 当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
头文件清单
功能说明
- 注册帧错误处理的回调函数
- 回调函数在中断上下文执行,执行完成后会自动释放内存
- 当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
头文件清单
功能说明
- 注册溢出错误处理的回调函数
- 回调函数在中断上下文执行,执行完成后会自动释放内存
- 当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
头文件清单
功能说明
- 将数据发送到已打开的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)
头文件清单
功能说明
- 将数据发送到已打开的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)
头文件清单
功能说明
- 将数据发送到已打开的单线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)
头文件清单
功能说明
- 使用中断模式将数据发送到已打开的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)
头文件清单
功能说明
- 通过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)
头文件清单
功能说明
- 通过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
头文件清单
功能说明
- 注册中断触发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
头文件清单
功能说明
- 去注册中断触发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
头文件清单
功能说明
- 更新接收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
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 注册接收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)
头文件清单
功能说明
- 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
头文件清单
功能说明
- 结束接收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
头文件清单
功能说明
- 结束发送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不定长数据的串口号
- 用于在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
头文件清单
功能说明
- 结束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
头文件清单
功能说明
- 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
头文件清单
功能说明
- 从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
头文件清单
功能说明
- 刷新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
头文件清单
功能说明
- 更新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
头文件清单
功能说明
- 挂起所有的UART通道,保存UART硬件寄存器状态
- 用于低功耗模式进入前保存UART状态
- 挂起后所有UART通道停止工作
前置条件
- 调用时序约束:所有使用中的UART通道已完成当前传输操作
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| arg | uintptr_t | 挂起所需要的参数 | 由调用者指定 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 成功 | 挂起成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_UART_SUPPORT_LPM | 功能宏 | 支持UART低功耗模式功能 | y |
uapi_uart_resume
头文件清单
功能说明
- 恢复所有的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)
头文件清单
功能说明
- 注册在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
头文件清单
功能说明
- 获取一个通道的管脚配置
- 返回指定串口的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
使用说明
作为UART接口的返回值类型使用
uart_pin_config_t
使用说明
作为uapi_uart_init入参pins类型和uapi_uart_pin_cfg_get返回值类型使用
uart_data_bit_t
使用说明
作为uart_attr_t结构体中data_bits字段的枚举类型使用
uart_parity_t
使用说明
作为uart_attr_t结构体中parity字段的枚举类型使用
uart_stop_bit_t
使用说明
作为uart_attr_t结构体中stop_bits字段的枚举类型使用
uart_attr_t
使用说明
作为uapi_uart_init、uapi_uart_set_attr、uapi_uart_get_attr的入参/出参类型使用
uart_extra_attr_t
使用说明
作为uapi_uart_init入参extra_attr类型使用
uart_flow_ctrl_t
使用说明
作为uart_attr_t结构体中flow_ctrl字段的枚举类型使用
uart_rx_callback_t
使用说明
作为uapi_uart_register_rx_callback入参callback类型使用,回调在UART接收中断上下文中被调用
uart_error_callback_t
使用说明
作为uapi_uart_register_parity_error_callback、uapi_uart_register_frame_error_callback、uapi_uart_register_overrun_error_callback的入参callback类型使用,回调在UART错误中断上下文中被调用
uart_tx_callback_t
使用说明
作为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
使用说明
作为uapi_uart_dma_send入参cb类型使用,回调在DMA LLI发送完成时被调用
uart_idle_int_receive_cb_t
使用说明
作为uapi_uart_dma_recv_raw_data入参callback类型使用,回调在UART IDLE中断上下文中被调用,返回true表示继续接收,false表示停止接收
uart_data_recv_cb_t
使用说明
作为uapi_uart_dma_recv_register入参cb类型使用,回调在DMA LLI接收完成时被调用,返回true表示继续接收,false表示停止接收
uart_tx_by_dma_callback_t
使用说明
作为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
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| 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水线 |