1.12.1. 并口通讯
如下图,假如mcu1把想要传递给mcu2的数据(4个位分别为d0/d1/d2/d3)放到对应的引脚(实际上就是设置对应引脚的高、低电平),接着设置cs引脚高电平。Muc2感知cs引脚高电平后,将d0~d3的数据读入。这就是并口通讯的模型。
可见,并口通讯一次性传递多位数据,数据带宽大(数据总线位数),速度快,但占用IO口多,如图中传递4位需要占用5个IO口。
1.12.2. 串行通讯
以单总线结构为例,如下图:
假如MCU1和MCU2做出如下约定:
1. 空闲时间d0始终保持高电平(硬件上MCU1/MCU2均可将d0拉低);
2. 启动发送数据,数据发起方将d0拉低并保持1S;
3. 高电平0.75s+低电平0.25s代表1;
4. 低电平0.75s+高电平0.25s代表0;
5. 数据高位在前,地位在后;
接下来,MCU1就可以向MCU2传递数据了,比如要传递字符“a”,二级制码是0b10010111,顺序如下:
1. Mcu1将d0拉低并维持1S,MCU2在感知到d0有1S低电平时准备好接受数据;
2. 1S后MCU1继续保持d0高电平0.75s,然后将d0拉低0.25S,在此期间MCU2根据高、低电平的比例区分0/1;
3. 循环至发送完最后一位1;
4. MCU1将d0拉高;
以上过程,就是串行通讯的模型,显然串行通讯是通讯双方根据约定操控、读取IO口数据的过程,其本质依然是操控IO。在串行通讯中,双方的约定就是通讯协议,通讯时使用到的硬件接口称为总线(如图中d0),协议和总线分别从软件层、硬件层描述串行通讯。
单片机上常用的串行通讯协议/总线有spi总线、i2c总线、uart总线等。常见的单片机已经将通讯协议做成硬件内置模块,使用者只需要调用响应的寄存器就可以完成通讯。
----*----*----*----*----*----*----*----*----*----*----*----
史久超
email:shijiuchao1983@163.com
tel:15999550975 微信同号
qq:157185173 经常不在线,尽量微信