详解通信协议之单总线、UART、RS232、RS485通信协议

本文介绍了单总线通信协议,如DHT11的通信过程,以及UART、RS232和RS485的特点和工作原理。单总线简单但速度慢,UART实现全双工,RS232提高电平抗干扰,RS485采用差分通信增强抗干扰能力。
摘要由CSDN通过智能技术生成

详解通信协议之单总线、UART、RS232、RS485、IIC、SPI

1、单总线(以DHT11为例)

何为单总线通信?单总线就是通过一根线实现主机和从机的通信,所以其数据的发送和接收都是在一根数据线上完成的,单总线为半双工异步通信。
单总线是如何通信的呢?简单来说:就是双方约定好什么样的电平代表什么信号,接收方按照此信号进行识别通信。以DHT11为例:

  1. 设置空闲状态数据线为高电平,所以高电平时有可能就是数据线处于空闲状态;
  2. 主机建立连接动作:主机拉低数据线大于18ms,再拉高数据线20-40us,从机接收到这样的信号后,就知道主机要传输数据了。
  3. 从机响应动作:拉低数据线40-50us再拉高数据线40-50us,表示从机接收到启动信号可以进行通信。
  4. 1信号:50us低电平+70us高电平
  5. 0信号:50us低电平+26-28us高电平
  6. 结束信号从机拉低数据线50us然后释放数据线

主机和从机在通信前先约定好这些指令,双方就可以通信啦。
单总线通信有优点:结构简单,方便操作,但是它也有缺点:不能同时收发,误码率较高,且传输速率较慢,以DHT11启动信号为例,至少需要18ms,如果直接用延时的化,会严重影响代码的运行。

2、UART通信

相比于单总线通信,串口通信实现了全双工,即:接收和发送可以同时进行,且通信速率也极大的提高了。
和单总线通信一样,在通信建立之前需要建立约定,如:波特率、数据位、起始位、停止位和奇偶的校验。
波特率:就是1s传输bit的个数。115200就是1s传输115200bit数据。
数据位:可以选择一组数据包括几位,一般选择8位,因为8位正好为1个字节。
起始位:起始位必须是持续一个比特时间的逻辑0电平,标志传输一个字符的开始,接收方可用起始位使自己的接收时钟与发送方的数据同步。
停止位:停止位可以是1位、1.5位或2位,可以由软件设定。它是逻辑1电平,标志着传输一个字符的结束。
奇偶的校验:奇偶校验位仅占一位,用于进行奇校验或偶校验。奇校验:校验位+数据中‘1’的个数为奇数;偶校验:校验位+数据中‘1’的个数为偶数。一般不设置校验位。
由于没有远距离传输和外界干扰,所以在嵌入式调试中经常使用串口进行通信。

3、RS232通信

RS232通信协议是串口通信的延伸。由于TTL电平,也就是串口使用的信号电平为0V和5V,0V表示0,5V表示1。在长距离通信或者有干扰的地方是很容易被干扰的从而增加了误码率。RS232可以弥补这一缺点,其通过电源转换芯片将将逻辑电平转换为+13/+15表示0,-15/-13表示1。提高了电平差的绝对值,且变换了方向,相比于TTL电平就可靠了许多。
| `````````| ~ 数据0~ | ~ 数据1~ |
|RS232 | 15/13V | -15/-13V |
|````TTL | `````0V ```| ` ```````5V |

4、RS485通信

RS485为工业传感器常用的方式之一,相比于UART和RS232通信方式,其采用了差分通信的方式,所以其可以避免共模信号的干扰。其为半双工通信方式,同一时刻只能发或者收信号。在使用时使用SP3485芯片进行协议转化,在信号线的起始端和结束端需要连接120欧的匹配电阻。sp3485芯片
1 RO 接收器输出
2 RE 接收器输出使能(低电平-接收使能)
3 DE 驱动器输出使能(高电平-发送使能)
4 DI 驱动器输入
5 GND 接地
6 A 驱动器输出/接收器输入(同相)
7 B 驱动器输出/接收器输入(反相)
8 VCC 芯片供电+3.3V
普通收发
在其B端接入下拉电阻,A端接入上拉电阻,输出使能端连接到一起可以实现普通收发的功能。由引脚功能可知:
RS485_EN 为高电平,逻辑为1,发送使能,接收禁止。
RS485_EN 为低电平,逻辑为0,发送禁止,接收使能
自动收发电路
接收数据
将控制线置为低电平,RE和DE的引脚是低电平,发送禁止,接收使能,进入接收状态,在1角进行接收

发送数据
发送数据引脚是 RS485_TX,应该 RS485_TX 发送1,AB发送1;RS485_TX 发送0,AB发送0。
当 RS485_TX 发送1时:NPN三极管导通,RE和DE的引脚是低电平,发送禁止,接收使能,进入接收状态,SP3485芯片的AB引脚进入高阻状态,因为R4把A拉高,R5把B拉低,所以,AB传输的是1。所以,当RS485_TX发送1时,AB引脚发送1。
当 RS485_TX 发送0时:NPN三极管不导通,RE和DE的引脚是高电平,进入发送状态,SP3485芯片会把DI上的电平反应到AB引脚上输出,因为DI已经接地,所以AB引脚会传输0。所以,当RS485_TX发送0时,AB引脚发送0。原文出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值