目录
常见通信标准
通信标准 | 引脚说明 | 通信方式 | 通信方向 |
UART (通用异步收发器) | TXD:发送端 RXD:接受端 GND:公共地 | 异步通信 | 全双工 |
单总线 (1-wire) | DQ:发送/接受端 | 异步通信 | 半双工 |
SPI | SCK:同步时钟 MISO:主机输入, 从机输出 MOSI:主机输出, 从机输入 SS: 片选 | 同步通信 | 全双工 |
I2C | SCL:同步时钟 SDA:数据输入/输出端 | 同步通信 | 半双工 |
UART
全称是Universal Asynchronous Receiver/Transmitter。
特点
1.UART没有时钟信号来同步发送和接受设备,是异步传输数据
2.发送设备根据自身的时钟信号生成一定的比特率(位流)代替时钟信号,接收器使用其内部时钟信号对输入数据进行采样。
3.串行通信
小总结:
同步点是通过两个设备的相同波特率(UART和大多数串行通信一样,发送和接收设备需要将波特率(波特率是指信息传输到信道的速率)设置为相同的值。对于串行端口,设定的波特率将用作每秒传输的最大位数)来管理的。
如果波特率不同,发送和接收数据的时序可能会受影响,导致数据处理过程出现不一致。允许的波特率差异最大值为10%,超过此值,位的时序就会脱节。
UART的帧格式
在 UART中,传输模式为数据包形式。数据包由起始位、数据位、奇偶校验位和停止位组成。
起始位
当不传输数据时, UART 数据传输线通常保持高电压电平。若要开始数据传输,发送UART 会将传输线从高电平拉到低电平并保持1 个时钟周期。
当接收 UART 检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位。
数据位和奇偶校验位
数据位包含所传输的实际数据。如果使用奇偶校验位,数据帧长度可以是5 位到 8 位。如果不使用奇偶校验位,数据帧长度可以是9 位。
在大多数情况下,数据以最低有效位优先方式发送。
停止位
当数据传输结束时,UART数据线将电平拉高,代表传输数据结束。
单总线协议(1-wire)
定义
主机和从机用一根总线进行通信,是一种半双工的通信方式,单线=时钟线+数据线+控制线( +电源线)。理想状况下一条总线上的从器件数量几乎不受数量限制。
特点
只有一根线,可以在一根线上传输时钟,数据,而且传输方向是双向的
优势
因其只有一根线,所以具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点
实例(DHT11)
![](https://img-blog.csdnimg.cn/direct/9963a98de8134e6a9265a04ca065a180.png)
![](https://img-blog.csdnimg.cn/direct/8d154e79138349939f14d14824b966b4.png)
![](https://img-blog.csdnimg.cn/direct/f8c6abb530da4505814f62d7f74ca903.png)
SPI
定义
SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线 四根通信线:
SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select)
同步,全双工 支持总线挂载多设备(一主多从)
硬件电路
所有SPI设备的SCK、MOSI、MISO分别连在一起 主机另外引出多条SS控制线,分别接到各从机的SS引脚 输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入
这是spi的连线图,其中MOSI是主机输出从机输入线,MISO是从机输入主机输出线,SCK提供大家共用的时钟信号,SS是片选线,决定着主机跟哪个从机进行通信,相关的片选线置低电平有效。
所有的输出口在输出的时候要配置成推挽输出,这样在没有外部上拉电阻的情况的也可以有较强的输出高低点平的能力。但需要考虑一点:当主机跟从机3进行通信的时候,从机2和从机1的MISO线如果是推挽输出(推挽必输出高电平或低电平的一种)那肯定会影响主机跟从机三的正常通信,所以为了消去这一影响,让从机SS片选线为高电平,即非选中状态时置为高阻态,这样既不是高电平也不是低电平不会影响主机跟所选中从机的正常通信。
数据交互原理
如上图:数据移除和移入,先移出,再移入,当进行八次时,便完成了数据的交换
SPI时序基本单元
CPOL: 时钟极性
CPHA:时钟相位
(模式0)
CPOL=0:空闲状态时,SCK为低电平
CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据
(模式1)
CPOL=0:空闲状态时,SCK为低电平
CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据
(模式2)
CPOL=1:空闲状态时,SCK为高电平
CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据
(模式3)
CPOL=1:空闲状态时,SCK为高电平
CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据
I2C
简介
IIC(Inter-Integrated Circuit)是一个多主从的串行总线,又叫I2C,是由飞利浦公司发明的通讯总线,属于半双工同步传输类型总线。IIC总线是非常常见的数据总线,仅仅使用两条线就能完成多机通讯,一条SCL时钟线,另外一条双向数据线SDA。
串行数据线SDA——负责在设备间传输串行数据 串行时钟线SCL——负责产生同步时钟脉冲
通信双方约定好通信时钟后,SCL来输出时钟,主机会首先发送要通信的从机地址,然后通过SDA线发送数据。
下图是STM32的MCU和E2PROM芯片AT24C02芯片连接的一个典型电路图。通过程序控制MCU的IIC控制器来完成对E2PROM的读写。