一、串行通信与并行同通信
(一)串行通讯
1、特点
是指设备之间通过少量数据信号线(一般是 8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。
主要起到主机与外设以及主机之间的数据传输作用,串行通信具有传输线少、成本低的特点,主要适用于近距离的人-机交换、实时监控等系统通信工作当中。
2、常见的串行通信协议
名称 | UART | IIC(I2C) | SPI | CAN | USB |
---|---|---|---|---|---|
针脚 | TXD:发送端 RXT:接收端 GND:共地 |
SCK:同步时钟 SDA:数据输入/输出端 |
SCK:同步时钟 MISO:主机输入,从机输出 MOSI:主机输出,从机输入 |
||
优点 | 简单、全双工 | 结构简单、仅两条数据总线 | 快速、全双工 | 差分信号、双绞线==》可靠 | 快速;差分信号、双绞线==》可靠 |
缺点 | 速率低、抗干扰能力差 | 半双工通信、协议复杂 | 主机较多的口线(每个从机都需要一根片选线) | 半双工通信、协议复杂 | |
速率 | RS232传输速率一般不超过20Kbps | 标准100kbit/s;快速400kbit/s;高速3.4Mbit/s | 传输速率可达几Mbps水平 | 速率可达到1Mbps(通信距离小于40M) | |
用途 | PC与MCU | MCU之间 | MCU之间 | PC与MCU |
项目中:I2C通信速率为100kbit/s,SPI通信速率为5Mbit/s;CAN通信速率500kbps;LIN通信速率19200bps。
(二)并行通讯
1、特点
一般是指使用 8、16、32 及 64 根或更多的数据线进行传输的通讯方式。
它们的通讯传输对比说明见下图 ,并行通讯就像多个车道的公路,可以同时传输多个数据位的数据,而串行通讯,而串行通讯就像单个车道的公路,同一时刻只能传输一个数据位的数据。
2、常见应用
例如:微机与并行接口打印机、磁盘驱动器
例如:系统板上各部件之间,接口电路板上各部件之间
(三)特性对比
因为一次可传输多个数据位的数据 ,在数据传输速率相同的情况下,并行通讯传输的数据量要大得多,而串行通讯则可以节省数据线的硬件成本(特别是远距离时)以及 PCB 的布线面积,串行通讯与并行通讯的特性对比见下表。
特性 | 串行通信 | 并行通信 |
---|---|---|
通信距离 | 较远 | 较近 |
抗干扰能力 | 较强 | 较弱 |
传输速率 | 较低 | 较高 |
成本 | 较低 | 较高 |
二、全双工、半双工及单工通信
根据数据通讯的方向,通讯又分为全双工、半双工及单工通讯,它们主要以信道的方向来区分。
通信方式 | 说明 |
---|---|
全双工 | 在同一时刻,两个设备之间可以同时收发数据 |
半双工 | 两个设备之间可以收发数据,但是不能同时进行 |
单工 | 任何时刻都只能进行一个方向上的通信,一个固定的发送设备,另一个是固定的接收设备 |
三、同步通信与异步通信
根据通信的数据同步方式,分为同步和异步两种,可以根据通信过程中是否使用到时钟信号进行简单区分。
1、同步通信
在同步通讯中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据,见下图 。通讯中通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样。
同步通信
2、异步通信
在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,见下图,某些通讯中还需要双方约定数据的传输速率,以便更好地同步。
异步通信
3、同步与异步通信对比
- 在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含有帧的各种标识符,所以同步通讯的效率更高
- 是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大。
- 同步通信一般用于总线长度较短、各部件存取时间比较一致的场合
四、通信速率
衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即每秒钟传输的二进制位数,单位为比特每秒(bit/s)。
容易与比特率混淆的概念是“波特率”(Baudrate),它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。如常见的通讯传输中,用 0V 表示数字 0,5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有 0V、2V、4V 以及 6V 分别表示二进制数 00、01、10、11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示比特率,虽然严格来说没什么错误。
参考资料
STM32 F4xxx 参考手册 (RM0009)-new.pdf
【野火】零死角玩转STM32—F429挑战者V2.pdf