一、串行通信基础知识
1.处理器与外部设备通信有两种方式
并行通信:数据的各个位用多条数据线同时传输。(传输速度快,但占用引脚资源多。)
串行通信:将数据分成一位一位的形式在一条数据线上逐个传输。(线路简单、占用引脚资源少,但传输速度慢。)
例如:传输0x5a
并行通信需要8条数据线,1一个时钟周期
串行通信需要8个时钟周期
2.串行通信按通信方式
同步通信:带同步时钟信号的数据传输,发送方和接收方在同一时钟的控制下,同步传输数据。(数据线和时钟信号线)
异步通信:不带同步时钟信号的数据传输,发送方和接收方使用各自的时钟,控制数据的发送和接收过程。
3.串行通信按传输方向
发送 --------- 接收
单工:数据只能沿一个方向传输。
半双工:数据传输可以沿两个方向传输,但需要分时进行。
全双工:数据可以同时进行双向传输。
综上:单工和半双工只有1条数据线,全双工有2条数据线。
4.常见的串行通信接口
二、异步串口通信UART基础知识
1.UART(universal asynchronous receiver-transmitter)
功能:发送数据时将并行数据转换成串行数据传输,接收数据时将收到的串行数据转换成并行数据。
(实现数据的串并转换)
协议层:通信协议(包括数据格式、传输速率等)
物理层:接口类型、电平标准等
2.协议层:数据格式
UART串口通信需要2根数据线来实现,1根用于串口发送,另外1根用于串口接收。
数据(线)格式:
数据位:5位、6位、7位、8位(常用)
奇校验(数据位和校验位中1的个数和为奇数)
校验位:
偶校验(数据位和校验位中1的个数和为偶数)
停止位:1clk、1.5clk、2clk
3.协议层:传输速率
串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数,单位是bps(位/秒)
常见的波特率:9600、19200、38400、57600以及115200等
波特率因子 = 时钟频率 / 波特率(传输1bit数据所需的时钟个数)
(时钟频率:1s的时钟个数)
1 / 波特率,即传输1bit所需时间
4.物理层:接口标准
异步串行通信的接口标准:RS232、RS422、RS485等
RS232:3线全双工 -> T R G;点对点 -> 只能有两个设备进行传输;传输距离:15米。
RS422:差分传输(抗干扰能力强) -> (相对单端传输而言的,单端传输是使用1根信号线和1根地线进行传输,采用信号线和地线的电平差值表示传输的信号。)
(差分传输,采用2根信号线传输一路数据,这2根信号线,幅值相等,极性相反,也是采用电平差值表示传输的信号。)(受到干扰时,2根信号线受到的干扰幅值和相位相等(共模干扰),2根信号线做减法运算时,干扰被抵消掉了。)
(这里的2根信号线组成一根数据线)
差分传输 -> 2根信号线 -> 全双工(2根数据线)-> 4线全双工
传输距离:1200米
RS485:可以实现一个串口通信的网络