1.12.1. 并口通讯

如下图,假如mcu1把想要传递给mcu2的数据(4个位分别为d0/d1/d2/d3)放到对应的引脚(实际上就是设置对应引脚的高、低电平),接着设置cs引脚高电平。Muc2感知cs引脚高电平后,将d0~d3的数据读入。这就是并口通讯的模型。

wps13

可见,并口通讯一次性传递多位数据,数据带宽大(数据总线位数),速度快,但占用IO口多,如图中传递4位需要占用5个IO口。

1.12.2. 串行通讯

以单总线结构为例,如下图:

wps14

假如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总线等。常见的单片机已经将通讯协议做成硬件内置模块,使用者只需要调用响应的寄存器就可以完成通讯。

posted on 2022-07-24 11:31  史久超  阅读(576)  评论(0编辑  收藏  举报
知识改变命运