串口通信协议 UART+I2C+SPI

UART【异步 串行 全双工】
I2C
SPI

不同通信协议比较

UART

UART协议详解
UART通信,接收与发送(详细版,附代码)

※※UART串行通信详解※※
待整理

UART是Universal Asynchronous Receiver/Transmitter通用异步收发传输器,使用RxD和TxD两根线实现【异步 串行 全双工】通信;为确保通信可靠,可以在通信两边接共地;因此,完整的UART通信只需最少3根线即可。

RxD是发送数据线,TxD是接收数据线,通信双方使用交叉互联,RxD接对方TxD,TxD接对方RxD。UART使用标准的TTL/CMOS电平(0-5V,0-3.3V,0-2.5V,0-1.8V)来表示数据,高电平表示1,低电平表示0.为了增强抗干扰能力,提高传输长度,可将TTL/CMOS 电平转换为RS232电平逻辑电平,3-12V表示0,-3~-12V表示1(RS232为负逻辑电平)

TTL电路的工作电压为5V
对于输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.4V为逻辑0;
对于输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)0.8V为逻辑0;

1)UART平时处于空闲状态(逻辑1状态)。

2)当有数据发送时,先发送起始位,即将TxD拉低并维持1位时间,接收方在检测到起始位下降沿,等待1.5位后开始一位一位检测数据。

3)发送数据,UART数据一帧可以是5,6,7,8位等,一般是8bit,一个字节。数据发送是先发送低位,依次发送,直到最高位。

4)【可选】可以使用0或者1bit的校验位,校验位可以是奇校验或者偶检验。数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验)

5)停止位,数据线恢复到空闲状态,停止位可以是1、1.5、2位高电平
【由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供 计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。】

在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。UART也产生额外的信号来指示发送和接收的状态。例如,如果产生一个奇偶错误,UART就置位奇偶标志。

在这里插入图片描述
1位时间由波特率决定,在UART通信中,波特率(一秒钟传输的符号数)等于比特率(一秒钟传输的字符数),通信双方使用约定的一致的波特率进行通信,常见的波特率有4800,9600,115200等。
  波特率:是衡量资料传送速率的指标。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200位/秒=1200波特。

全双工:三根线:理论上至少需要3根——TXD、RXD、GND。

UART指协议【类似于通信网络中的数据链路层】它实际只定义了数据链路层的规范,
也就是起始位、数据位、停止位。

而最底层的物理层则是RS232、RS499、RS423、RS422和RS485等【类似于网络通信中的物理层,与通信协议没有直接关系】
【更多的是规定电气特性和各个引脚的功能定义】
对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、
传输速率、连接特性和接口的机械特性等内容。

TTL串口:它是MCU芯片之间进行数据通信的串口,它以+5V(或者+3.3V)表示1,以GND表示0。 
是一般芯片的串口的输入和输出端,可以接不通的芯片完成不通的外设功能。
输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.4V为逻辑0;
输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)0.8V为逻辑0;

RS232串口:它是实现设备之间通信的串口,其主要将信号电压从05V的电压变为±15V(实际一般为±12V)。电压的增加,增大了数据传输的距离和可靠性。 
  RS232电平:使用315v有效电平
  采用负逻辑电平,即-15V ~ -3V代表逻辑"1"+3V ~ +15V代表逻辑"0"。这里的电平,是TxD线(或者RxD线)相对于 GND 的电压。
   接口有标准的DB9插头,台式电脑一般都有这个插头。




RS485串口:它是实现远距离通信的串口,可以实现上千米的数据传输。其主要特征是用差模信号(A、B两根线之间的电压)代替了RS232共模信号(信号线和GND之间的电压),从而能够抵抗共模干扰,实现更远距离的传。
>③RS485:
 【差分线】,术语叫A,B,通过双绞线连接。
	    →→能够抵抗共模干扰,实现更远距离的传。【实现上千米的数据传输】
	    →→没有独立的Tx/Rx→→半双工(可以双向,但同时只能单向)
	               硬件上通过方向切换来保证数据收发的不冲突。
 既然是差分线,那“1”,“0”就要通过差来得到了。
 发送驱动器A、B之间的正电平在+2
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值