USART(RS232422485)、I2C、SPI、CAN、USB总线【USART串⼝】
全双⼯、异步通讯⽅式.。接下来说单⽚机中最常⽤的USART串⼝,USART串⼝的协议相⽐于I2C要简单很多,它没有地址的概念,也没有主设备、从设备的区别,⽤户可以⾃⼰定义地址和主从,不定义也可以,完全⾃由开放。正因为USART本⾝的协议简单,硬性规定少,所以它有很好的扩展性。如【图3】所⽰,USART串⼝可以有3种常⽤的通信⽅式。最基本的是TTL电平直接连接,多⽤于单⽚机与带有USART串⼝的模块通信。⽐如WIFI模块、GPS模块、蓝⽛模块都⽀持USART串⼝。另外它还常⽤于单⽚机与电脑的通信,今后我们要⽤电脑给单⽚机下载程序,就是通过USART串⼝。 还有⼀种基于USART串⼝的扩展接⼝,叫RS232。它⽤于⼯业控制类设备的通信接⼝,常见于电脑和⼯控设备之间的通信。⽐如电脑与PLC(⼯控常⽤的可编程控制器)之间的通信就是RS232。RS232接⼝并没有改变USART串⼝的协议规范,⽽是通过专⽤的RS232转换芯⽚,把TTL的5V电平转换成了正负12V电平。因为电平电压的升⾼,通信的距离和稳定性都有所提⾼。RS232的连接线可达20⽶长,在⼲扰众多的⼯业场合使⽤依然稳定。但是随着⼯业技术的发现,20⽶的距离已经满⾜不了需要,于是市场上⼜出来了性能更好的
RS485接⼝。
锰矿选矿方法RS485的通信线长度可达1000⽶,⽽且传输速度还要⽐RS232快很多。虽然RS232和RS485都可以挂接 多个设备,可是因为
RS232的通信距离太短,20⽶的距离内挂多个设备的意义不⼤。所以RS232多⽤于⼀对⼀通信,⽽RS485被⽤于多个设备挂接的总线,当然也可以⼀对⼀通信。
RS485的应⽤⾮常⼴泛,⾼层住宅和商场⾥的电梯直梯就是⽤RS485连接各楼层,控制叫梯和显⽰楼层信息。是属于⾮常成熟的通信接⼝之⼀。但不论如何,RS232和RS485的协议还是USART,本质上是⼀个功能的不同扩展。STM32单⽚机内部只有⽀持USART协议的TTL电平的接⼝,如果想使⽤RS232或RS485需要外接⼀个芯⽚才能实现。【图3】所⽰是USART串⼝的三种通信形式。
STM32F103单⽚机上有3个USART串⼝,都⽀持DMA功能。其中USART1的速度可达4.5MB/S,其他可达2.5MB/S,算是相当快的速度。在8051单⽚机中也有⼀种叫UART的串⼝,少了⼀个S,它们是什么关系呢?其实USART的全称是同步/异步收发器,⽽UART 是异步收发器,它们之间差了⼀个“同步”,USART接⼝⽐UART多了⼀个“USART_CK”的同步时钟线,可以同步时钟通信,但这个功能很少⽤到,所以它们在应⽤上并没有什么差别。
【图3】USART串⼝电路连接⽰意图
RS-232、RS422 和 RS-485 区别
⼀、串⼝简介
RS-232、RS-422 与 RS-485 都是串⾏数据接⼝标准,最初都是由电⼦⼯业协会(EIA)制订并发布的,RS-232 在1962 年发布,命名为 EIA-232-E,作为⼯业标准,以保证不同⼚家产品之间的兼容。RS-422 由 RS-232 发展⽽来,它是为弥补 RS-232 之不⾜⽽提出的。为改进 RS-232 通信距离短、速率低的缺点,RS-422 定义了⼀种平衡通信接⼝,将传输速率提⾼到 10Mb/s,传输距离延长到 4000 英尺(速率低于 100kb/s 时),并允许在⼀条平衡总线上连接最多 10 个接收器。RS-422 是⼀种单机发送、多机接收的单向、平衡传输规范,被命名为 TIA/EIA-422-A 标准。为扩展应⽤范围,EIA ⼜于 1983 年在 RS-422 基础上制定了 RS-485标准,增加了多点、双向通信能⼒,即允许多个发送器连接到同⼀条总线上,同时增加了发送器的驱动能⼒和冲突保护特性,扩展了总线共模范围,后命名为 TI地理位置服务
A/EIA-485-A 标准。由于 EIA 提出的建议标准都是以“RS”作为前缀,所以在通讯⼯业领域,仍然习惯将上述标准以 RS 作前缀称谓。
RS-232、RS-422 与RS-485 标准只对接⼝的电⽓特性做出规定,⽽不涉及接插件、电缆或应⽤层通信协议,在此基础上⽤户可以建⽴⾃⼰的⾼层通信协议。因此在视频界的应⽤,许多⼚家都建⽴了⼀套⾼层通信协议,或公开或⼚家独家使⽤。如录像机⼚家中的Sony 与松下对录像机的 RS-422 控制协议是有差异的,视频服务器上的控制协议则更多了,如 Louth、Odetis协议是公开的,⽽ProLINK 则是基于 Profile 上的。
⼆、RS-232 串⾏接⼝标准
⽬前 RS-232 是 PC 机与通信⼯业中应⽤最⼴泛的⼀种串⾏接⼝。RS-232 被定义为⼀种在低速率串⾏通讯中增加通讯距离的单端标准。RS-232 采取不平衡传输⽅式,即所谓单端通讯。
收、发端的数据信号是相对于信号地,如从 DTE 设备发出的数据在使⽤ DB25 连接器时是 2 脚相对 7 脚(信号地)的电平。典型的RS-232 信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V 电平。当⽆数据传输时,线上为 TTL,从开始传送数据到结束,线上电平从 TTL 电平到 RS-232 电平再返回 TTL 电平。接收器典型的⼯作电平在+3~+12V 与-3~-12V。由于发送电平与接收电平的差仅为 2V⾄ 3V 左右,所以其共模抑制能⼒差,再加上双绞线上
立方体拼图的分布电容,其传送距离最⼤为约15⽶,最⾼速率为 20kb/s。RS-232 是为点对点(即只⽤⼀对收、发设备)通讯⽽设计的,其驱动器负载为 3~7kΩ。所以RS-232 适合本地设备之间的通信。其有关电⽓参数参见下表。
三、RS-422 与 RS-485 串⾏接⼝标准
回馈单元
1. 平衡传输
RS-422、RS-485 与 RS-232 不⼀样,数据信号采⽤差分传输⽅式,也称作平衡传输,使⽤⼀它对双绞线,将其中⼀线定义为 A,另⼀线定义为 B。通常情况下,发送驱动器A、B 之间的正电平在+2~+6V,是⼀个逻辑状态,负电平在-2~6V,是另⼀个逻辑状态。另有⼀个信号地C,在RS-485 中还有⼀“使能”端,⽽在RS-422中这是可⽤可不⽤的。“使能”端是⽤于控制发送驱动器与传输线的切断与连接。当“使能”端起作⽤时,发送驱动器处于⾼阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。
接收器也作与发送端相对的规定,收、发端通过平衡双绞线将A-A 与B-B 对应相连,当在收端AB 之间有⼤于+200mV 的电平时,输出正逻辑电平,⼩于-200mV 时,输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV ⾄6V 之间。
2.RS-422 电⽓规定
RS-422 标准全称是“平衡电压数字接⼝电路的电⽓特性”,它定义了接⼝电路的特性。实际上还有⼀根信号地线,共5 根线。由于接收器采⽤⾼输⼊阻抗和发送驱动器⽐RS232更强的驱动能⼒,故允许在相同传输线上连接多个接收节点,最多可接10 个节点。即⼀个主设备(Master),其余为从设备(Salve),从设备之间不能通信,所以RS-422 ⽀持点对多的双向通信。接收器输⼊阻抗为4k,故发
端最⼤负载能⼒是10×4k+100Ω(终接电阻)。RS-422 四线接⼝由于采⽤单独的发送和接收通道,因此不必控制数据⽅向,各装置之间任何必须的信号交换均可以按软件⽅式(XON/XOFF 握⼿)或硬件⽅式(⼀对单独的双绞线)实现。
RS-422 的最⼤传输距离为4000 英尺(约1219 ⽶),最⼤传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反⽐,在
100kb/s 速率以下,才可能达到最⼤传输距离。只有在很短的距离下才能获得最⾼速率传输。⼀般100 ⽶长的双绞线上所能获得的最⼤传输速率仅为1Mb/s。
RS-422 需要⼀终接电阻,要求其阻值约等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻,即⼀般在300 ⽶以下不需终接电阻。终接电阻接在传输电缆的最远端。
RS-422 有关电⽓参数见表 1
3.RS-485 电⽓规定
由于RS-485 是从RS-422 基础上发展⽽来的,所以RS-485 许多电⽓规定与RS-422 相仿。如都采⽤平衡传输⽅式、都需要在传输线上接终接电阻等。RS-485 可以采⽤⼆线与四线⽅式,⼆线制可实现真正的多点双向通信。⽽采⽤四线连接时,与RS-422 ⼀样只能实现点对多的通信,即只能有⼀个主
(Master)设备,其余为从设备,但它⽐RS-422 有改进,⽆论四线还是⼆线连接⽅式总线上可多接到32 个设备。
RS-485 与RS-422 的不同还在于其共模输出电压是不同的,RS-485 是-7V ⾄+12V 之间,⽽RS-422 在-7V ⾄+7V 之间,RS-485 接收器最⼩输⼊阻抗为12k,RS-422 是4k;RS-485满⾜所有RS-422 的规范,所以RS-485 的驱动器可以⽤在RS-422 ⽹络中应⽤。
RS-485 有关电⽓规定参见表1。
RS-485 与RS-422 ⼀样,其最⼤传输距离约为1219 ⽶,最⼤传输速率为10Mb/s。平衡双绞线的长度与传输速率成反⽐,在
100kb/s 速率以下,才可能使⽤规定最长的电缆长度。只有在很短的距离下才能获得最⾼速率传输。⼀般100 ⽶长双绞线最⼤传输速率仅为1Mb/s。
RS-485 需要2 个终接电阻,其阻值要求等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻,即⼀般在300 ⽶以下不需终接电阻。终接电阻接在传输总线的两端。
RS-485 通讯协议(⾃定义应⽤层协议)
RS-485 标准只对接⼝的电⽓特性做出规定,⽽不涉及接插件、电缆或协议;因此,⽤户需要在RS-485 应⽤⽹络的基础上建⽴⾃⼰的应⽤层通信协议。由于RS-485 标准是基于PC 的UART 芯⽚上的处理⽅式,因此,其通讯协议也规定了串⾏数据单元的格式(8-N-1
纳米除臭装置
格式):1 位逻辑0 的起始位,6/7/8 位数据位,1 位可选择的奇ODD)/偶(EVEN)校验位,1/2 位逻辑1 的停⽌位。
下⾯将分别对ModBus 协议(RTU 模式)、多功能电能表通讯规约(DL/T645-1997)进⾏简单介绍,便于⼤家对应⽤层通信协议有⼀个基本的概念与理解。
1.4.1 ModBus 协议(RTU 模式)
以下资料摘录于Modbus 协议(RTU 模式)的⼀部分,介绍了Modbus RTU 协议的基本构成、主要特点、参数规定;便于我们理解⼀个通讯协议的基本模式与要求。关于详细的ModBus 协议,⽤户可以从ModBus-IDA 协会 () ⽹站下载具体的内容。
1. 查询—响应周期
ModBus 协议遵循“查询—响应”模式,如图 1-23 所⽰。
查询:
查询消息中的功能代码告之被选中的从设备要执⾏何种功能。数据段包含了从设备要执⾏功能的任何附加信息。例如功能代码03 是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了⼀种验证消息内容是否正确的⽅法。 响应
如果从设备产⽣⼀正常的响应,在响应消息中的功能代码是在查询消息中的功能代码的响应。数据段包括了从设备收集的资料:象寄存器值或状态。如果有错误发⽣,功能代码将被修改以⽤于指出响应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可⽤。
2. RTU 模式
当控制器设为在Modbus ⽹络上以RTU(远程终端单元)模式通信,在消息中的每个8Bit 字节包含两个4Bit 的⼗六进制字符。这种⽅式的主要优点是:在同样的波特率下,可⽐ASCII ⽅式传送更多的数据。
代码系统:
8 位⼆进制,⼗六进制数0...9,A...F
消息中的每个8 位域都是⼀个两个⼗六进制字符组成
每个字节的位:
1 个起始位
8 个数据位,最⼩的有效位先发送
1 个奇偶校验位,⽆校验则⽆
1 个停⽌位(有校验时),
2 个Bit(⽆校验时)
错误检测域:
CRC(循环冗长检测)
3. RTU 帧
使⽤RTU 模式,消息发送⾄少要以3.5 个字符时间的停顿间隔开始。在⽹络波特率下多样的字符时间,这是最容易实现的(如图 1-24的T1-T2-T3-T4 所⽰)。传输的第⼀个域是设备地址。可以使⽤的传输字符是⼗六进制的0...F。⽹络设备不断侦测⽹络总线,包括停顿间隔时间。当第⼀个域(地址域)接收到,每个设备都进⾏译码以判断是否发往⾃⼰的。在最后⼀个传输字符之后,⼀个⾄少3.5 个字符时间的停顿标定了消息的结束。⼀个新的消息可在此停顿后开始。城乡信息一体化
整个消息帧必须作为⼀连续的流转输。如果在帧完成之前有超过1.5 个字符时间的停顿,接收设备将刷新不完整的消息并假定下⼀字节是⼀个新消息的地址域。同样地,如果⼀个新消息在⼩于3.5 个字符时间内开始,接收的设备将认为它是前⼀消息的延续。这将导致⼀个错误,因为在最后的CRC 域的值不可能是正确的。⼀典型的消息帧如下图 1-24 所⽰:
4. 地址
地址0 是⽤作⼴播地址,以使所有的从设备都能认识。当Modbus 协议⽤于更⾼⽔平的⽹络,⼴播可能不允许或以其它⽅式代替。
5. 响应
当从设备响应时,它使⽤功能代码域来指⽰是正常响应(⽆误)还是有某种错误发⽣(称作异议响应)。对正常响应,从设备仅响应相应的功能代码。对异议响应,从设备返回⼀等同于正常代码的代码,但最重要的位置为逻辑1。
例如:从⼀个主设备发往从设备的消息要求读⼀组保持寄存器,将产⽣如下功能代码:
0 0 0 0 0 0 1 1 (⼗六进制03H)
对正常响应,从设备仅响应同样的功能代码。对异议响应,它返回:
1 0 0 0 0 0 1 1 (⼗六进制83H)
除功能代码因异议错误作了修改外,从设备将⼀独特的代码放到响应消息的数据域中,这能告诉主设备发⽣了什么错误。主设备应⽤程序得到异议响应后,典型的处理过程是重发消息,或者诊断发⾃从设备的消息并报告给操作员。
从主设备发给从设备消息的数据域包含附加的信息:从设备必须⽤于进⾏执⾏由功能代码所定义的⾏为。这包括了象不连续的寄存器地址,要处理项的数⽬,域中实际数据字节数。
例如,如果主设备需要从设备读取⼀组保持寄存器(功能代码03),数据域指定了起始寄存器以及要读的寄存器数量。如果主设备写⼀组从设备的寄存器(功能代码10 ⼗六进制),数据域则指明了要写的起始寄存器以及要写的寄存器数量,数据域的数据字节数,要写⼊寄存器的数据。
关于详细的ModBus 协议,⽤户可以从ModBus-IDA 协会 () ⽹站下载具体的协议内容。
⾃定义协议可参考通讯帧格式:
RS-485参考电路: