linux驱动之串口驱动分析

UART串口时序

UART使用异步模式工作,不需要时钟信号,其一般格式为:起始位+数据位+校验位+停止位。其中起始位1位,数据位5~8位,校验位0或1位,停止位1、1.5或2位。不过最常用的格式是1位起始位、8位数据位、没有奇偶校验、1位停止位,简记为8/N/1
8/N/1格式的时序图
linux驱动之串口驱动分析
TX、RX、GND信号外,UART中还会有诸如RTS、CTS等流控信号
空闲时数据线上规定为逻辑1。
开始传输数据时先发送起始位,规定为逻辑0,接收端会检测这个下降沿,以便之后开始采样接收数据。
起始位之后是数据位,规定先发送最低位,即LSB First。
停止位一般使用1位,规定为逻辑1,除了表示传输结束外,停止位还可以起到时钟同步的作用

在UART通信中,两个UART直接相互通信。发送UART将来自CPU等控制设备的并行数据转换为串行形式,并将其串行发送到接收UART,接收UART然后将串行数据转换回接收设备的并行数据。在两个UART之间传输数据只需要两根线。数据从发送UART的Tx引脚流向接收UART的Rx引脚
linux驱动之串口驱动分析

Linux串口串口层次分析

linux驱动之串口驱动分析
serial core层对tty驱动进行封装,与硬件无关性,提供给uart驱动API接口,针对于串口的所有操作,主要都在uart驱动中。
linux驱动之串口驱动分析

串口源码解析

1、串口驱动中的数据结构

• UART驱动程序结构:struct uart_driver 驱动

• UART端口结构: struct uart_port 串口

• UART相关操作函数结构: struct uart_ops 串口操作函数集

• UART状态结构: struct uart_state 串口状态

• UART信息结构: struct uart_info 串口信息