什么是串口?
UART: Universal Asynchronous Receiver Transmitter 通用异步收发器
USART: Universal Synchronous Asynchronous Receiver Transmitter 通用同步异步收发器
什么是同步异步?
通信双方有没有共同的时钟线作为同步时钟使用。
有 --> 同步通信时钟线作为通信时的同步信号
1)在时钟信号为低跳变的时候,改变通信信号
2)在时钟信号为高跳变的时候,采样通信信号
由于时钟信号,是周期性变化的电平信号
在地跳变后面总会跟着一个高跳变–>实现无 --> 异步通信
串口通信的特点
串口:是单片机中最常见,最简单的穿行数据传输协议 串口只需要两根数据线,就可以实现全双工通信。
什么是全双工通信?(重点记住,很容易忘掉)
全双工通信:两个设备的接收端和发送端是相互独立的,互不干扰的
接收数据不会干扰到发送数据
两个设备可以同时收/发半双工通信:接收和发送共用“端口”,因此接收的时候就不能发送
串口的两根数据线
两根数据线:
Tx:发送数据端,用于向接收端口发送数据
Rx:接收端口,用于接收发送端口发送的数据设备A——————————设备B
Tx————————————Rx
Rx————————————Tx
什么是串行?
串行:数据的传输只有一根“电线”,每次就只能传输1bit数据
当多个数据发送时,也只能1bit 1bit的发送
发送数据的过程?
首先引入一个问题:
比如:
发送0x5C
0101 1100在发送数据的时候,一个电平周期是多久呢?
即便不发送数据,数据线上也会有一个电平状态,接收端如何知道发送端有没有发送数据?
这时就需要引入一个协议
协议:双方约定好的传输方式
UART协议(UART Protocol)
作用:规定了串口发送和接收数据的方式,必须以帧(frame)为单位
串口的1帧数据包括以下部分:
1个起始位:
一个周期低电平信号
串口的数据线Tx在空闲的时候永远保持高电平5~9个数据位
通信的正文
具体多少bit,需要双方协商
并且是先传送最低位(LSB),最后传送最高位(MSB)1个校验位
表示是否需要校验
0——不需要校验
1——有一个校验位——“赖子”
奇校验:用数据位的最后1个bit来确保发送数据中1的个数
偶校验:用数据位的最后1个bit来确保发送的数据中1的个数是偶数个
比如: 9bits发送0x5C(0101 1100)
奇校验——00110101 x=1
偶校验——00110101 x=00.5~2个停止位
高电平 具体持续多久高电平,由双方约定
0.5个周期
1个周期
1.5个周期
2个周期
那么一个周期为多长呢?
UART异步串口,没有时钟进行同步,因此光靠帧格式传输数据还是不能准确收发,这里我们需要引入波特率
Baudrate波特率
Baudrate波特率:UART的传输速率
决定1帧的传输周期
115200
9600
57600
bps:bit per second
UART协议:帧格式 + 波特率
物理层标准
串口有不同的分类
根据串口电气协议:TTL level usart:TTL电平协议
Tx:——数据发送端口
Rx:——数据接收端口
VCC:——电源端口(+)
GND:——接地端口(-),通信双方的GND必须相同,即必须连接在一起(共地)
串口类型 | 信号 | 电平1 | 电平0 | 传输距离 |
---|---|---|---|---|
TTL | 单端信号 | 3.3 / 5 V | 0 V | < 2m |
RS232 | 单端信号 | -5 ~ -15 V | 5V ~ 15 V | < 15m |
RS422 | 差分信号 | + / -2V | <1200m | |
RS485 | 差分信号 | + /- 1.5 V | <1200m |