分享

【总线】UART、Modbus、I2C、SPI、RS232、RS485及串口通讯常用参数

 袁先森lemon 2021-12-04
   1、UART
UART
异步收发传输,作为集成于微处理器中的周边设备,把并行输入信号转成串行输出信号,(一般是RS-232C规格的,与类似Maxim的MAX232之类的标准信号幅度变换芯片进行搭配)作为连接外部设备的接口。
该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如与PC机通信包括与监控调试器和其它器件,如EEPROM通信。
一个字符接着一个字符传输,一个字符的信息由起始位、数据位、奇偶校验位和停止位组成。

传输时低位在前高位在后。

发送端和接收端必须按照相同的字节帧格式和波特率进行通信。
UART的设计采用模块化的设计思想,主要分为 3个模块:数据发送模块、数据接收模块及波特率发生器控制模块。发送模块实现数据由并行输入到串行输出,接收模块实现数据由串行输入到并行输出,波特率发生器模块控制产生UART时钟频率。
发送逻辑对从发送FIFO读取的数据执行“并→串”转换。控制逻辑输出起始位在先的串行位流,并且根据控制寄存器中已编程的配置,后面紧跟着数据位(注意:最低位 LSB 先输出)、奇偶校验位和停止位。
在检测到一个有效的起始脉冲后,接收逻辑对接收到的位流执行“串→并”转换。此外还会对溢出错误、奇偶校验错误、帧错误和线中止(line-break)错误进行检测,并将检测到的状态附加到被写入接收FIFO的数据中。
需要两根信号线和一根地线。


2、Modbus

 1、ASCII模式与RTU模式的区别

(1)ASCII:消息中每个ASCII字符都是一个十六进制字符组成

(2)RTU:消息中每个8位域都是两个十六进制字符组成

在同样波特率下,RTU可比ASCII方式传输更多的数据

 

3、RS232、RS485

(1)RS232

RS232接口可以实现点对点的通信方式,但这种方式不能实现联网功能。

个人计算机上的通讯接口之一,异步传输标准接口。
在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。
对于一般双工通信,仅需几条信号线就可实现,工业控制的RS-232口一般只使用RXD、TXD、GND三条线。

(2)RS485

RS485/MODBUS是现在流行的一种布网方式,实施简单方便 ,支持RS485的仪表很多。

有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式。
在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来,而忽略了信号地的连接。RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。

 

(3)区别

1)传输方式不同。 RS-232采取不平衡传输方式,即所谓单端通讯(即所谓单端通讯.收、发端的数据信号是相对于信号地). 而RS485则采用平衡传输,即差分传输方式。
2)传输距离不同。RS-232适合本地设备之间的通信,传输距离一般不超过20m。而RS-485的传输距离
为几十米到上千米。
3)RS-232 只允许一对一通信,而RS-485 接口在总线上是允许连接多达128个收发器。
4)rs232是全双工的,也就是可以同时收发;
rs485是半双工的,某一时刻只能收或只能发数据,否则,总线将瘫痪

 4、I2C

采用的是主从式通信方式,通信的过程完全由主设备仲裁。在通信之前,必须由主设备发送一个起始信号,决定数据是否可以开始传送,并且在结束通信时,必须再由主设备发送一个结束信号,以表示通信已经结束。先传输高位。

5、SPI

主从方式工作,可以用全双工通信方式同时发送和接收8(16)位数据。
MSB 先行或 LSB 先行并没有作硬性规定,但要保证两个 SPI通讯设备之间使用同样的协定,一般都会采用图 2 中的 MSB先行模式。
NSS 信号线由高变低,是 SPI 通讯的起始信号。NSS 是每个从机各自独占的信号线,当从机在自己的 NSS 线检测到起始信号后,就知道自己被主机选中了,开始准备与主机通讯。在图中的标号6处,NSS 信号由低变高,是 SPI 通讯的停止信号,表示本次通讯结束,从机的选中状态被取消。
MOSI及 MISO的数据在 SCK的上升沿期间变化输出,在SCK 的下降沿时被采样。即在 SCK 的下降沿时刻,MOSI 及 MISO 的数据有效
SPI 一共有四种通讯模式,它们的主要区别是总线空闲时 SCK 的时钟状态以及数据采样时刻。

6、Modbus 、SPI,IIC,CAN和RS232,RS485区分

MODBUS协议是一种软件协议,而RS232,RS485是一种电平标准,关系是在一种电平关系下应用一种MODBUS协议。MODBUS协议是一种人为约定的协议,他和SPI,IIC,CAN总线协议还是有些不同的,SPI,IIC,CAN总线这些协议必须是设备在硬件上支持的,可以说SPI,IIC,CAN总线是一种软硬件的结合体,也就是常分为两层物理层和协议层,MODBUS本身就是类似于协议层的东西,而RS232和RS485就是一种物理层电平的东西。

7、串口通讯常用参数

串口是一种非常通用的设备通信的协议(不要与 通用串行总线Universal Serial Bus(USB)混淆)。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
典型地,串口用于ASCII码字符的传输。通信使用3根线完成:
(1)地线(2)发送(3)接收
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
对于两个进行通行的端口,这些参数必须匹配:
波特率
数据位
停止位
奇偶校验
8、串口发送数据类型都有哪些?
(1)字符串
(2)十六进制数据

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多