通信的分类:
通信:两个不同设备之间数据的传输
分为串行通信和并行通信—例如发送8位数据
串行通信: 在一个时钟脉冲下,一次发送1位数据 -- 8次
并行通信: 在一个时钟脉冲下,一次发送8位数据 -- 1次
串行通信:分为同步和异步模式
同步: 同时发送,同时接收
异步: 发送数据和接收数据不在同一时刻;
串行设备分类:
单工设备: 只作为接收设备或者发送设备 : 收音机
半双工设备: 同一时刻,只能作为发送或者接收设备 :对讲机 –IIC RS-485
全双工设备: 同一时刻,既可以作为发送 也可以接收数据 :手机—USART SPI
***************************************************************************
通信协议: 协议:数据传输的格式
规定了数据发送接收的方式 (约定通信的双方,使用统一的协议、更好去有效通信)
1、串口:串行异步全双工通信
物理层: TX(发送管脚) RX(接收管脚)
数据链接层: RS232
RS232协议---位协议:
格式:起始位+数据位+奇偶校验位+停止位 ----- 一帧数据
1 5~8 奇/偶/无 1~2
常用: 1 8 0 1 即:一个起始位+8个数据位+0个校验位+1个停止位
常见用于USART串口
数据总线: 空闲是高电平
起始位;标志数据开始传输 --是一个低电平
数据位:要发送的数据
奇偶校验位:校验数据传输的正确性
停止位: 一帧数据传输结束 ---是一个高电平
2、8080并口:并行协议 (并行同步半双工)
物理接口:
CS----片选端 (0---选中该芯片)
RS----数据(1)或者命令(0)选择端
WR----写使能(0---使能)
RD----读使能(0---使能)
DB0~DB15---数据传输端(并行通信)
协议: 硬件协议 -- 时序 -- 状态
发送数据:
CS:低电平有效
DC: RS 数据/命令 命令:L 数据:H
RD:读使能,上升沿同步
WR:写使能,上升沿同步
写数据:
读数据:
8080协议应用于LCD屏显示
在STM32中,没有集成8080外设,所以我们常用FSMC(静态存储器存取)模拟8080协议
3、SPI:串行同步全双工 主从模式(一主多从)
SPI---高速 全双工 同步 串行通信 主从模式
时钟是由主机产生
物理接口:
CS --- 片选 ---主机片从机
SCLK--- 时钟 ---主机产生
MOSI--- 主发从收
MISO--- 主收从发
SPI协议常用于:Flash、电阻式触摸屏、OLED屏、SD卡等中传输数据
主从机各有一个8位的移位寄存器,在时钟的驱动下进行数据交换(MOSI/MISO)
如果只需要主机发给从机,主机准备数据并发送,接收的值只接收不做处理;
如果只需要从机发给主机,主机随意发任意值,去进行数据交换,把接收值当作读取到的值;
时钟极性:
CPOL=0,串行同步时钟的空闲状态为低电平
CPOL=1,串行同步时钟的空闲状态为高电平
时钟相位:
CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样(读取);
CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样(读取);
CPHA=0 |
CPHA=1 |
|
CPOL=0 |
上升沿采样 :模式0 |
下降沿采样:模式1 |
CPOL=1 |
下降沿采样 :模式2 |
上升沿采样:模式3 |
模式0/模式3使用较多;
协议:固定格式,规定了数据发送接收的方式 (约定通信的双方,使用统一的协议、更好去有效通信)
4、IIC:串行同步半双工
物理层: SDA(数据线) SCL(时钟线)
协议:开始条件和停止条件,设备有固定的器件地址
协议层:
IIC器件: 发送器 接收器 主机 从机
IIC器件都有一个唯一的器件地址
IIC采用的是主从结构 -- 一个主机,多个从机。
主机 : 产生时钟信号 主机控制总线上的数据传输的开始和结束
从机: 被主机寻址的器件 (寻址:从机的器件地址)
IIC总线的通信协议
1.开始条件和停止条件
在SCL为高电平时,SDA由高电平变为低电平。 -- 开始条件
在SCL为高电平时,SDA由低电平变为高电平。 -- 停止条件
2.读数据
1.主机发送开始条件(总线状态:所有从机等待接收数据)
2.主机发送设备地址 + 读 -- (总线状态:所有从机都接收设备地址,如果是本身地址,那么从机返回一个应答信号)
3.从机给主机发送数据(8位) (总线状态,主机发送应答信号)
4.从机接收到应答信号,再次发送数据,直到主机发送停止条件。
3.写数据
1.主机发送开始条件
2.主机发送设备地址+ 写(从机应答)
3.主机发送数据(8位)(从机应答)
4.主机发送停止条件。
(通信:一次发送8位数据,先发送高位)
IIC常见用于:电容式触摸屏、MPU6050
- RS232:串行异步全双工 RS232和RS485都属于通信标准,不是通信协议
RS232协议---位协议:
格式:起始位+数据位+奇偶校验位+停止位 -----一帧数据
1 5~8 奇/偶/无 1~2
RS-232 被定义为一种在低速率、近距离串行通讯的单端标准。 RS-232 采取不平衡传输方式,即所谓单端通讯。
RS-232 的电气标准:
电平为逻辑“ 0”时: +3V~+15V;
电平为逻辑“ 1”时: -3V~-15V;
常见用于USART串口、设备之间通讯
- RS485:串行异步半双工
RS485既可以是半双工,也可以是全双工,不同的芯片方式不一样
我们常用的是SP3485芯片,它的通信方式是半双工的
485通信(不是通信协议,通信方法(电平))
1.解决串口通信距离短,传输速度慢的特点。
2.485的介绍(接收器/发送器)
把串口的TTL电平转化为485信号:
3.485芯片的管脚:半双工芯片
单片机的输入输出都是TTL电平,在长距离传输过程中易被干扰。485协议输出的是差分信号,经过TTL转485芯片的转换后其有效信息为两条信号线的电压差,即可大大消除通信时的共模干扰。
实际操作时,芯片的接收器输出端RO与单片机的RX相连,驱动器输入端DI则与单片机的TX相连。
485芯片既有全双工通信,也有半双工通信。如果485为半双工通信模式(SP3485),其在发送信息时便无法读取信息,因此当DE被拉高时完全处于发送信息的状态,此时DI接受单片机写入的数字信号,当输入信号DI为1时输出正的差分信号,即A-B>0.2V。
RS485(仪表通信接口):物理层面协议,RS-485和RS-232一样,都是串行通信标准,RS-485总线弥补了RS-232通信距离短,速率低的缺点,RS-485的速率可高达10Mbit/s,理论通讯距离可达1200米;RS-485和RS-232的单端传输不一样,是差分传输,使用一对双绞线,其中一根线定义为A,另一个定义为B。
标准规定了:
逻辑0:-6V to -2V
逻辑1:+2V to +6V
RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。规定了电平,接线方式,使用驱动器接收器决定谁发谁收,为MODBUS服务,在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。
A和B为总线;
R为接收器输入;
RE为接收器使能信号;
DE为发送器使能信号;
D为发送器输出;
RS485常用于设备之间通信
- 单总线:串行半双工
单总线数据传输:(主从结构)
运用一根线,实现串行通信。
半双工的通信。
2.单总线的通信方式:
空闲态:高电平
开始信号:主机产生18ms的低电平
从机应答:产生80us的低电平
数字量:0 -- 先发送50us低电平+26~28us高电平
1 -- 先发送50us低电平+70us高电平
如:DHT11
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
测量范围
温度:0--50 度
湿度:20-90%
硬件层:
- DHT11模块(电容式传感器):DHT11是一款含有已校准数字信号输出温湿度数据的数字温湿度传感器(不用自己校准,只需要直接使用数据即可)。传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。DHT11采用简化的单总线通信,单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成。MCU与DHT11是主从结构,只有主机呼叫从机,从机才能应答,且主机访问器件必须严格遵循单总线序列。
- 采样周期:DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。数据=温度数据高位+温度数据低位+湿度数据高位+湿度数据低位+校验位。完整采样周期:主机发送起始信号、从机响应信号、从机发送数据、主机接收数据(40bit数据)、从机结束、信号转至空闲状态,总计大约至少2s时间。
数据格式:8bit湿度整数数据+8bit湿度小数数据 +8bi温度整数数据+8bit温度小数数据 +8bit校验位
校验:
校验和 = 8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据
通讯时序图如下:
输出:
空闲状态下:主机发送高电平
主机起始信号:发送至少18ms低电平 发送20-40us的高电平
输入:
DHT响应信号:发送80us的低电平 发送80us的高电平
DHT数据:信号0/1 判断 保存 校验
DHT结束信号:从机发送50us的低电平 主机拉高进入空闲状态
信号0判断
发送50us的低电平 发送26-28us高电平
信号1判断
文章来源:https://www.toymoban.com/news/detail-401044.html
发送50us的低电平 发送70us高电平文章来源地址https://www.toymoban.com/news/detail-401044.html
到了这里,关于STM32中常见通信协议汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!