通信的目的
将一个设备的数据传送到另一个设备,扩展硬件系统。
通信协议
制定通信的规则,通信双方按照协议规则进行数据收发。
每一种通讯协议都有硬件与软件上的要求。
常见的协议
USART | TX、RX | 全双工 | 异步 | 单端 | 点对点 |
I2C | SCL、SDA | 半双工 | 同步 | 单端 | 多设备 |
SPI | SCLK、MOSI、MISO、CS | 全双工 | 同步 | 单端 | 多设备 |
CAN | CAN_H、CAN_L | 半双工 | 异步 | 差分 | 多设备 |
USB | DP、DM | 半双工 | 异步 | 差分 | 点对点 |
一些电平标准
电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
TTL电平:+3.3V或+5V表示1,0V表示0
RS232电平:-3~-15V表示1,+3~+15V表示0
RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)
串行 并行
串行就是一个一个的走,就一条道
并行就是可以一排一排的走,多车道并行
全双工 半双工 单工
全双工就是,可以同时进行数据的收和发。(典型就是UART的RX与TX,不过我们在用的时候,很少用到,都是先发一段指令过去之后,再返回来要的数据)
半双工就是数据的收发不能同时进行,只有一条数据线。(典型就是I2C,一条时钟线,一条数据线)
单工就是只能向一个固定的方向发数据,一般就是各种遥控器,广播电视、收音机什么的。
同步 异步
简单来说 看看有没有时钟线。
如下:同步
如下,异步
在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,某些通讯中还需要双方约定 数据的传输速率,以便更好地同步。
差分 单端
单端就是,除了参考地之外,就只有一个信号端,也就是一根数据线。
大于VH就是1,小于VL就是0,位于中间的叫做高阻态,取决外设怎么解析, 有些硬件寄存器会表示高阻态有些表示0或者1。
优点: 走线少且简单方便
缺点: 抗干扰性差
差分就是D+大于D-为1,D+小于D-为0。
优点:抗干扰性强; D+ /D-的差值是固定的, 不受地势差或者外部干扰。至于高低电平用D+/D-相比较得出(上面是D+大于D-为高电平),同时也不需要参考地和VH/VL阈值了!灵敏度高, 由于是比较相对差值, 振幅可以很低, 降低设备在通信上的功耗
缺点: 信号线多增加布线难度和干扰
通讯速率
衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率 (Bitrate) 来表示,即每秒钟传输的二进制位数,单位为比特每秒 (bit/s)。
容易与比特率混淆的概念是“波特率”(Baudrate),它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。如常见的通讯传输中,用 0V 表示数字 0,5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;
如果在通讯传输中,有 0V、2V、4V 以及 6V 分别表示二进制数 00、01、10、11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。