通讯协议学习之路:RS232协议理论

通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。

后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374)

序:个人理解

1、232协议概念:串口通信时串行通信里面的异步方式 UART是串口通信里面的一种协议,通俗的讲:

2、串口(基本上) = RS232 = UART = USART = U(S/A)RT

3、对于223协议就是通过将串口通信的RX、TX、GND接入到MAX232进行处理转化为232电平

    • 对于串口的高电平逻辑(5V)转换为-12V的高电平逻辑
    • 对于串口的低电平逻辑(0V)转换为12V的低电平逻辑

4、通过放大电平高低逻辑差异来增强通讯的抗干扰能力

5、RS232是负逻辑,比如说232芯片收到的电压是5V,它输出-12V!收到0V,它输出+12

    • 3~15V属于低电平
    • -3~15V属于高电平

一、简述

RS232(Recommended Standard 232)是一种串行通信的物理层标准,最初由美国电子工业协会(EIA)制定。它定义了串行通信中的电气特性、连接器和信号级别等。

RS232标准规定了串行通信中的以下内容:

  1. 电气特性:RS232规定了通信线路的电气特性,包括信号电平、电流、阻抗等。它使用正负电平来表示逻辑1和逻辑0,通常使用负电平表示逻辑1,正电平表示逻辑0。
  2. 连接器:RS232通常使用DB9或DB25连接器,其中DB9连接器有9个引脚,DB25连接器有25个引脚。这些连接器用于将串行通信设备(如计算机、终端、调制解调器等)与外部设备(如打印机、传感器、仪器等)连接起来。
  3. 信号级别:RS232规定了不同信号的电平范围。例如,逻辑1的负电平通常在-3V至-15V之间,逻辑0的正电平通常在+3V至+15V之间。这种较大的电平范围使得RS232可以在较长距离上进行可靠的数据传输。
  4. 数据位、停止位和校验位:RS232规定了数据传输中的数据位数、停止位数和校验位的设置。通常,数据位可以是5位、6位、7位或8位,停止位可以是1位或2位,校验位可以是无校验、奇校验或偶校验。

RS232通常用于连接计算机与外部设备之间的串行通信,如连接打印机、调制解调器、传感器等。然而,随着技术的发展,RS232逐渐被更先进的串行通信标准(如USB、Ethernet等)所取代。尽管如此,RS232仍然在某些特定的应用领域中得到广泛应用,特别是在工业控制、通信设备和仪器仪表等领域。

二、RS232与uart的关系

三、为什么选择RS232

RS232基本概念:

串口通信时串行通信里面的异步方式 UART是串口通信里面的一种协议,通俗的讲:

串口(基本上) = RS232 = UART = USART = U(S/A)RT

注:

①RS232是协议名称,而串口还应该包括了其它协议,如:RS485、RS422等;

②U是通用,A是异步,S是同步,所以,UART跟USRT区别在于有无同步时钟,所以有的串口会有三根线(地线除外),多了一根时钟线;

距离稍微远一点,同步通信就不太合适了,通着通着就乱了;

③RS232发送是靠TXD和GND之间的电压来传数据(接收跟发送雷同),是共模电压,抗干扰能力差,导致传输距离非常有限;

④被广泛使用的原因:因为RS232的简单、低成本,所以不管是单片机、ARM、DSP都配了这种接口;

⑤真正设备间通信肯定是RS232电平的串口数据,抗干扰能力强,TTL电平是电路板上使用的电平,所以真正传输时,肯定会进行RS232和TTL之间的转换。

RS232的协议

因为是异步的通信,那么如何保证数据发送的可靠呢,那么就需要几个扛大旗的人,如起始位,停止位;

典型的其中一种消息协议主要分以下几个部分:起始位、数据位、校验位、停止位,注意:这里用的是位(bit)。

单纯地按照协议规定的去做,会出现一些问题。

1、奇偶校验的校验能力太差。

2、传错一个数据,没法重传。

3、在总线上挂了几个从机,主机如何区分是哪台从机发出的数据(有的设备不能把校验位当地址位用)。

4、如果没有成功发送停止位,那么接收端会不会一直等待。

5、总线上传错了一组数据,没法定位是哪个地方(哪个位)出问题。

鉴于以上诸多问题,我们想到了一种解决办法,就是封装成帧。一帧数据包含多个byte,而一个byte的数据包含多个bit(起始位、数据位等)。

自定义协议

根据实际需求自定义协议。下面举个例子(非通用协议/准则),并以“域”来表示协议里面各个功能模块。

1、帧起始。

帧起始,一般以0x55或者0xaa作为起始的标志,为什么要用这种数字?

十六进制的5,转为二进制是0101;十六进制的A,转为二进制是1010。这样,0x55,就是01010101了。

0和1交替出现,一来方便接收方实现自适应波特率,二来避免干扰。

a、通过检测0和1之间的时间间隔,即可知道该帧数据的波特率。

b、如果设为0xff,那么,在总线上出现一个干扰,接收端很有可能误以为要接收数据。

2、命令域。

命令域,可以随意一点,如:设上行为0x1d,下行为0x3a,重传为0xb7,应答为0x89。

3、地址域(可选)。

地址域,也可以随意一点,如果所有设备的地址均不相同,那就只具备点对点的功能。

当然,你也可以视实际情况,把某几台设备的地址设为一样,这样就有点对多点的功能。

4、长度域(可选)。

如果是发送固定长度的帧,是可以不使用长度域;如果是不固定长度的帧,则可以加上。

4、数据域。

数据域,一般由数据个数和数据组成。

比如,你要传3个数,分别是0x00到0x02。那么数据域就是0x03 0x00 0x01 0x02。

5、校验域。

校验域,可以使用校验和或者CRC校验。如,使用CRC16算法话,校验域为2个byte。

一般除了帧起始和帧结束以外,都送进CRC校验。

好了,这样的话,我要发一个上行的数据,到地址为0x0a的设备,一共3个数据(固定长度),分别是0xa0,0xb0,0xc0。

那么一帧数据就是:0x55 0x1d 0x0a 0x03 0xa0 0xb0 0xc0 0x53 0xfb

只要把上面这一帧数据,一个byte一个byte地发送出去,即可。

使用CRC-16对该帧(除去帧起始)进行计算,可以得到0x53FB。如下图所示。

6、应答和重传。

如果接收端,收到一帧数据,经过CRC校验,数据正确,这时得传一帧简易的应答帧,以告诉主机,这个帧接收成功。

应答帧, 如:0x55 0x89 0xa6 0xc1。

如果接收端,收到一帧数据,经过CRC校验,发现数据有错,这时得传一帧简易的重传帧,以请求重传。

重传帧,如:0x55 0xb7 0x76 0x40。

这样,串口的功能就强大了很多

总结:

不管是RS232、或者其他协议,一般是都以byte为单位,传输数据的。如果你想把12位的ADC数据,通过串口发到PC机,那么,你得分成两个byte,高位补零。

从RS232到USB、以太网,不难看出,物理层/物理接口变化不大,而协议/数据链路层却越来越复杂。

这也说明了,传输数据的可靠性,不能过于依赖物理层,而应该依赖协议上的一些机制(校验、重传等)。

参考文章:详解RS232/UART/协议/串口通信_rs232 uart-CSDN博客

四、问题解答

1、RS232为什么设计成负逻辑呢?

因为闭合开关视为有动作的“1”,电信号则是由于闭合操作接地了,所谓是“0V”。

所以才有了所谓的负逻辑。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: RS232串口通信协议是一个用于串行数字通信的标准协议。它规定了从发送端向接收端传输数据时所用的电气信号、数据格式、传输速率等的参数和规定。RS232协议是连接计算机和外设的通用标准,比如打印机、调制解调器、视听设备等。 RS232串口通信协议在通信线路中使用的是单根信号线,即发送串口和接收串口之间用一根电缆连接。主要包括三个部分:传输速度、数据帧格式、通信控制。 传输速度部分,也称为波特率(Baud Rate),决定了数据传输的速度。RS232串口通信协议规定,波特率通常是110、300、600、1200、2400、4800、9600、19200、38400、57600、115200等。 数据帧格式部分主要包含数据位、奇偶校验位和停止位。其中,数据位表示每个字符传输的位数,奇偶校验位用于检查数据传输的完整性,停止位表示每个字符的结束位。 通信控制部分包括控制RTS/CTS、DSR/DTR等引脚的信号,用于控制数据传输的开始和停止、流量控制和收发同步等。 总之,RS232串口通信协议是一种广泛应用于串行数字通信中的标准协议,它为计算机和外设之间的数据传输提供了一个共同的标准。 ### 回答2: RS232是一种广泛使用的串行通信协议,它被设计用于连接计算机和外设,如调制解调器、打印机以及数码相机等。该协议采用传统的电气特性,包括异步通信、双工通信和点到点连接。 在RS232中,数据传输按照位元组的形式进行,一个字节由8位二进制位构成,通信速率可在通信双方之间协商确定。数据传输可以是全双工、半双工或单工模式,通信双方必须约定好通信模式和通信速率才能进行数据传输。 在RS232中,数据传输是异步进行的,这意味着数据字节中没有同步位,通信双方需要自己协商好数据传输的开始和结束位置。为了避免错误的数据传输,RS232使用了一些控制信号,如RTS、CTS、DSR、DTR和CD等。这些信号负责控制数据的流动、连接的状态以及错误的检测与修复。 总的来说,RS232是一种非常成熟、广泛使用的串口通信协议,具有简单、易于实现和可靠的传输特性,十分适用于许多应用场景,如数据采集、工业自动化、通信等领域。 ### 回答3: RS232串口通信协议是一种标准的串行通信协议,它是由美国电气电子工程师学会(IEEE)制定的。RS232协议规定了串口通信的物理层和数据链路层的标准,如数据传输格式、流控制、校验等内容,以实现在不同设备之间进行可靠的串行数据通信。 在RS232协议中,数据传输采用异步串行方式,即逐位传输非连续的数据,以一定的速率(波特率)进行传输。通常情况下,串口通信分为两种模式:单工模式和双工模式。单工模式下,数据只能从一个设备流向另一个设备;而双工模式下,两个设备之间可以同时发送和接收数据。 RS232协议还规定了常用的数据传输格式,如数据位(一般为8位)、校验位和停止位。同时,它还支持多种流控制方式,如软件流控制和硬件流控制,以确保传输过程中的数据准确性。 总的来说,RS232串口通信协议是一种非常实用的通信协议,在电脑、路由器和传感器等领域得到广泛应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JASON丶LI

作者码力不足了,卑微的求个打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值