UART Hal 接口文档#
硬件介绍#
K230 内部集成了五个 UART(通用异步收发传输器)硬件模块,其中rtsmart系统占用一个串口(默认占用串口 0),其他串口可以供用户使用。
数据结构说明#
struct uart_configure#
UART 配置结构体,包含以下成员:
baud_rate:波特率data_bits:数据位数(5-9)stop_bits:停止位(0-3 对应 1-4 个停止位)parity:校验位(0:无校验,1:奇校验,2:偶校验)bit_order:位顺序(0:LSB 优先,1:MSB 优先)invert:信号反转(0:正常模式,1:反转模式)bufsz:缓冲区大小reserved:保留字段
函数接口说明#
int drv_uart_inst_create(int id, drv_uart_inst_t** inst);#
功能:创建 UART 驱动实例。
参数:
id:UART 接口 ID,范围[0, KD_HARD_UART_MAX_NUM-1]inst:双重指针,用于存储创建的实例
返回值:
0:创建成功-1:参数无效-2:UART ID 无效-3:内存分配失败
void drv_uart_inst_destroy(drv_uart_inst_t** inst);#
功能:销毁 UART 驱动实例。
参数:
inst:双重指针,指向要销毁的实例
size_t drv_uart_read(drv_uart_inst_t* inst, const uint8_t* buffer, size_t size);#
功能:从 UART 读取数据。
参数:
inst:UART 实例buffer:存储读取数据的缓冲区size:要读取的字节数
返回值:
成功时:实际读取的字节数
-1:参数无效-2:读取错误
size_t drv_uart_write(drv_uart_inst_t* inst, uint8_t* buffer, size_t size);#
功能:向 UART 写入数据。
参数:
inst:UART 实例buffer:要写入的数据size:要写入的字节数
返回值:
成功时:实际写入的字节数
-1:参数无效-2:写入错误
int drv_uart_poll(drv_uart_inst_t* inst, int timeout_ms);#
功能:轮询 UART 读取可用性。
参数:
inst:UART 实例timeout_ms:超时时间(毫秒),-1表示无限等待,0表示非阻塞
返回值:
>0:有数据可读0:超时-1:参数无效-errno:轮询错误(负的 errno 值)-EIO:设备错误
size_t drv_uart_recv_available(drv_uart_inst_t* inst);#
功能:检查可读取的字节数。
参数:
inst:UART 实例
返回值:
成功时:可读取的字节数
-1:参数无效-2:IOCTL 错误
int drv_uart_send_break(drv_uart_inst_t* inst);#
功能:在 UART TX 线上发送中断信号。将 TX 线强制拉低一段时间,用于特殊事件信号(如 LIN 同步、注意请求、软复位等)。
参数:
inst:UART 实例
返回值:
0:成功-1:实例无效或未打开-2:IOCTL 调用失败
int drv_uart_set_config(drv_uart_inst_t* inst, struct uart_configure* cfg);#
功能:设置 UART 配置。
参数:
inst:UART 实例cfg:配置结构体
返回值:
0:成功-1:参数无效-2:IOCTL 错误
注意:此函数不能修改 bufsz,请使用 drv_uart_configure_buffer_size 修改缓冲区大小。
int drv_uart_get_config(drv_uart_inst_t* inst, struct uart_configure* cfg);#
功能:获取当前 UART 配置。
参数:
inst:UART 实例cfg:用于存储配置的结构体
返回值:
0:成功-1:参数无效-2:IOCTL 错误
int drv_uart_configure_buffer_size(int id, uint16_t size);#
功能:配置指定 UART 设备的缓冲区大小。
参数:
id:UART 设备 ID(如 0 表示 UART0,1 表示 UART1 等)size:要设置的缓冲区大小
返回值:
0:成功-1:UART ID 无效或状态错误-2:设备未找到或配置失败
注意:应在创建实例之前调用此函数。
int drv_uart_get_id(drv_uart_inst_t *inst);#
功能:获取 UART 实例的 ID。
参数:
inst:UART 实例
返回值:
有效时:UART ID
无效时:
-1
int drv_uart_get_fd(drv_uart_inst_t *inst);#
功能:获取 UART 实例的文件描述符。
参数:
inst:UART 实例
返回值:
有效时:文件描述符
无效时:
-1
示例#
请参考src/rtsmart/libs/testcases/rtsmart_hal/test_uart.c
注意事项#
struct uart_configure的bufsz字段只能通过drv_uart_configure_buffer_size接口修改,使用drv_uart_set_config无法修改bufsz。一般做法是先调用drv_uart_get_config获取当前配置,修改除bufsz外的其他参数,然后调用drv_uart_set_config。drv_uart_configure_buffer_size必须在创建实例之前调用。invert 字段在 K230 上不支持。
