8. UART操作指南¶
8.1. UART的操作准备如下:¶
使用SDK发布的kernel。
8.2. 模块编译¶
源码路径为 drivers/uart。用户需要对 UART 设备进行访问操作时, 首先要在编译脚本里指定 UART 源码路径与头文件路径。编译成功后, out 目录下会生成名为 libuart.a 的库文件。链接时需要通过-luart 参数指定该库文件。
8.3. 操作示例¶
步骤1:
在初始化函数中调用以下接口,实现 UART 驱动注册:
uart_dev_init();
若启用 dma 接收数据,要进行 dmac 初始化,初始化函数中调用:
cvi_dmac_init();
步骤2:
通过/dev/ttySN 节点调用 open 打开指定 UART
步骤3:
打开 UART 后可调用 ioctl 配置read读取数据,write发送数据,可采用select阻塞read.
步骤4:
不使用UART时,调用close关闭,关闭后UART控制器不再接收串口接收在线的数据.
8.4. 操作示例UART API参考¶
uart_dev_init:UART 设备初始化
uart_suspend: UART 设备挂起
uart_resume: UART 设备唤醒
8.4.1. uart_dev_init¶
【描述】
UART 设备初始化。
【语法】
int uart_dev_init(void);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
无 |
无 |
无 |
8.4.2. uart_suspend¶
【描述】
UART 设备挂起。
【语法】
int uart_suspend(void);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
data |
保留, 传入NULL |
无 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功 |
其它 |
失败 |
8.4.3. uart_resume¶
【描述】
UART 设备初唤醒。
【语法】
int uart_resume(void);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
data |
未使用, 传入NULL |
无 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功 |
其它 |
失败 |
8.5. ioctl配置说明¶
【描述】
打开 UART 后,通过 ioctl 配置 UART 波特率,dma 接收,阻塞读取,线控等。例如,配置波特率:ret = ioctl(fd, CFG_BAUDRATE, 9600);
【配置说明】
命令号 |
命令码 |
参数 |
说明 |
---|---|---|---|
UART_CFG_BAUDRATE |
0x101 |
波特率 |
配置波特率,UART0 默认波特率为 115200;UART1、UART2、UART3 为9600支持最大波特率为 921600。 |
UART_CFG_DMA_RX |
0x102 |
0或1 |
0:配置为中断接收方式; 1:配置为 DMA 接收方式默认为中断方式 |
UART_CFG_DMA_TX |
0x103 |
0或1 |
0:配置为中断接收方式; 1:配置为 DMA 接收方式默认为中断方式 |
UART_CFG_RD_BLOCK |
0x104 |
0或1 |
0:配置为非阻塞方式 read; 1:配置为事件阻塞方式 read 默认为阻塞方式; |
UART_CFG_ATTR |
0x105 |
0或1 |
配置校验位,数据位,停止位,FIFO, CTS/RTS 等 默认值为:无校验位,8 位数据位,1 位 停止位,禁能 CTS/RTS。 参考头文件 struct uart_attr |
UART_CFG_PRIV |
0x110 |
自定义 |
驱动自定命令 |