自学内容网 自学内容网

【程序设计-底层设计-串口通信-底层交互-一些定义-嵌入式学习-自己思考(1)】

1、概述

在底层软件,或者mcu端,自己工作并没有做很多年,但是通过自己的一些学习,希望总结出一些通用的知识,这些解释我不写出来,你只要多年工作,也能有大致感觉,但这样太漫长了,对新手有些不友好。

不像某个芯片的技术手册,你只要上网,基本都能查到,软件设计和底层交换协议是一种内化的功夫,如果可能,一个工程师不应该去讲,因为这是他通过很多年摸索出来的,但是这种不清不楚的东西,有些像“软技能”,你求职时候,无法直接体现出来,但这也是真功夫。

本博客我想说说有关底层交互协议,特别指串口这块,硬件交互协议设计方向,自己的一点所学所感。

2、环境说明

这块需要看情况,本篇是用协议讲解篇,后续想设计一份代码。用以实现协议。

系统:win10
硬件:SMT32H743II

3、学习部分-底层硬件

1、当我们说:底层串口-TX&RT,我们在说什么

当我们说低等串口或者 TX或者RX的时候。
大部分时候我们默认说的是,UART串口通信,如下是一些定义的东西,我们在聊串口的时候,默认有些知识是知道的,如果你忘了,以下我们一起复习下,定义的这类东西,不需要你逐字逐句背诵,大概了解就可以,忘记了就查查。

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种常见的串口通信方式,通常用于嵌入式系统中,当然也有叫UASRT,是稍微有些区别的。UART通信通过以下信号线进行数据传输:
在这里插入图片描述

  1. TX: 发送数据。
  2. RX: 接收数据。
  3. GND: 地线,提供公共参考电平。

其中着重注意GND的重要性,实际调试过程中,很容易忘记共地,倒是收到数据有问题,或者就不通。

(1)uart(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器

特点:

  1. 异步通信: UART仅支持异步通信,这意味着在传输数据时不需要时钟信号同步。
  2. 波特率: 发送和接收设备必须事先约定好波特率,波特率决定了数据传输速度。
  3. 数据格式: 典型的数据格式包括一个起始位、数据位、可选的奇偶校验位和停止位。

工作原理:

  • 起始位: 表示数据帧的开始,通常为低电平。
  • 数据位: 实际传输的数据,通常为7或8位。
  • 奇偶校验位: 用于错误检测的可选位。
  • 停止位: 表示数据帧的结束,通常为高电平

应用:

  • 用于低成本、低速串行通信,如微控制器与传感器、模块之间的通信
(2)usart(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发传输器

特点:

  1. 同步和异步通信: USART可以支持同步通信和异步通信。
  2. 同步通信: 在同步模式下,发送和接收设备使用一个共同的时钟信号进行数据传输,这种方式下可以达到更高的传输速度和精确的时序控制。
  3. 异步通信: 类似于UART,USART在异步模式下不需要时钟信号同步。
  4. 灵活性: USART比UART更加灵活,适用于更多类型的应用。

工作原理:

  • 同步模式: 发送和接收设备共享一个时钟信号,这个时钟信号可以是外部提供的或者内部生成的。数据在时钟信号的上升沿或下降沿进行传输。
  • 异步模式: 与UART相同,使用起始位、数据位、校验位和停止位进行数据传输。

应用:

  • 用于需要更高传输速度和精确时序控制的场合,如工业自动化、通信设备等。
(3)举例-底层看波形

这里需要说明的是,自己没有使用过usart的同步模式,没有使用过带有时钟这种,反而uart这种经常使用,这里使用逻辑分析仪的一张图片说明下,串口数据是怎么被识别,并且各种(起始位、数据位、校验位和停止位)是怎么回事。

如下图,一般串口软件,都会带有如下设置,(起始位、数据位、校验位和停止位),在开始自己为新手的时候,其实不知道是怎么回事,反正最后数据对了就无所谓了。暂时不需要了解硬件如何实现也行,但是随着深入,应该都需要了解的。
在这里插入图片描述
如下图使用逻辑分析仪抓的一个波形。这块的好处就是他都给你标记好了,一幕了然。

  1. 因为校验位我们一般不设置,或者设置“NONE”。所以这里没有校验位。
  2. 开始位我们发现,和很多设计类似,都是拉低一段时间,告诉单片机开始了。
  3. 停止位就是拉高一段时间,再放下,告诉单片机结束了
  4. 在特定波特率下,每一位时间都是固定的,像都是1和1挨着,长度超了,像数据位这样,是连续的话,默认挨着这两位都是1,或者都是0,自动分块。

因为通信前协议波特率和各种位都是定好的,硬件自动帮你划分。
在这里插入图片描述
那么接下来,就是,硬件如何知道这段数据位8为,是什么数呢,逻辑分析仪器已经告诉你了,但你也需要知道为什么是这个数0x67,因为传输时,是小端模式,即小位在前,即bit0在第一位,顺次位bit1,直到bit7。如下图,
在这里插入图片描述
所以在计算器上,你要反过来输入。倒这输入,就可以得到0x67这个十六进制的数了。

2、当我们说:RS485,我们在说什么

当我们说485是一般是指差分信号的RS-485,并且多为半双工两条线A和B,即同一时间,在这条总线上,只能有一个设备发送或接受数据。主要用于工业和商业应用中的数据传输。它因其长距离、高速和多点通信能力而受到广泛欢迎。
参考链接:https://zh.wikipedia.org/wiki/EIA-485
在这里插入图片描述
其中终端电阻很重要,如果电阻不是特别匹配位120欧,通信很有可能出问题。

(1)485全称TIA/EIA-485-A

特点:

  1. 差分信号传输:RS-485使用差分信号传输,意味着数据通过两条线(A和B)传输。信号通过两条线的电压差来表示,高抗干扰能力使其适用于噪声环境,另外485的线有个特点,一般是双绞线,两个绕在一起的,这样差分信号可以更好地抵抗电磁干扰(EMI),提供更可靠的通信
  2. 多点通信:RS-485支持多点通信,即同一总线上可以连接多个设备(最多32个设备),这使其非常适合分布式系统。
  3. 长距离传输:RS-485支持长距离数据传输,理论上可以达到4000英尺(约1200米),具体距离取决于数据传输速率和电缆质量。这块自己实际应用都不是很长,没有实际测试过。
  4. 高速传输:RS-485可以支持高达10 Mbps的传输速率,但速率和距离成反比关系:距离越远,速率越低。这块也是,一般都是串口波特率115200左右。

工作原理:

  1. 差分对: 数据通过两条线(A和B)传输。A和B之间的电压差决定了逻辑电平
    这块需要注意的时候,从定义上,来说是比信号高低。
如果A > B,则表示逻辑1。
如果A < B,则表示逻辑0。

在这里插入图片描述

  1. 全双工和半双工: RS-485可以工作在全双工(同时发送和接收)或半双工(发送和接收分时进行)模式下。
全双工: 需要四条线,两条用于发送,两条用于接收。
半双工: 需要两条线,发送和接收共享同一对差分线。

接线方式:
(1)两线制

设备A     设备B     设备C
--------  --------  --------
A -------- A -------- A
B -------- B -------- B

(2)四线制

发送线A  设备A TX+ 设备B RX+
发送线B  设备A TX- 设备B RX-
接收线A  设备A RX+ 设备B TX+
接收线B  设备A RX- 设备B TX-

应用:

  1. 工业自动化:RS-485广泛用于PLC(可编程逻辑控制器)、传感器、执行器等工业设备的通信。
  2. 楼宇自动化:用于楼宇控制系统中的HVAC(供暖、通风和空调)、照明控制、安全系统等。
  3. 计算机和外设:RS-485用于计算机与外部设备之间的数据通信,如POS(销售点)系统、远程数据采集等。
  4. 能源管理:在能源管理系统中用于智能电表、能源计量设备等。
(2)举例-底层示例波形

查到的维基百科也有波形示例,如下图所示。
在这里插入图片描述

3、当我们说:422通信,我们在说什么

一般来说,它和RS485真的很像,不特指的情况下,一般是4线制度。RS-422是一种串行通信标准,常用于需要长距离和高可靠性数据传输的应用。它在物理层上与RS-485有很多相似之处,但在一些特性和应用上有所不同。
参考链接:https://zh.wikipedia.org/wiki/EIA-422
在这里插入图片描述

(1)422全称TIA/EIA-422-A

特点:

  1. 差分信号传输:RS-422使用差分信号传输,与RS-485类似,通过两条线(A和B)传输数据,具有高抗干扰能力。
  2. 区别:点对多点通信:RS-422支持点对多点通信,即一个发送设备(驱动器)可以连接多个接收设备(接收器),最多可以连接10个接收器。但RS-422不支持多驱动器通信,即不能有多个发送设备在同一总线上
  3. 长距离传输:RS-422支持长距离传输,理论上传输距离可达4000英尺(约1200米),具体距离取决于传输速率和电缆质量
  4. 高速传输:RS-422可以支持高达10 Mbps的传输速率,但速率和距离成反比关系:距离越远,速率越低。

工作原理:

  1. 差分对: 数据通过两条线(A和B)传输。A和B之间的电压差决定了逻辑电平
  2. 单向通信: RS-422通常用于单向通信,一个发送设备发送数据,多个接收设备接收数据。
如果A > B,则表示逻辑1。
如果A < B,则表示逻辑0。

接线方式:

发送线A  设备A TX+ 设备B RX+
发送线B  设备A TX- 设备B RX-
接收线A  设备A RX+ 设备B TX+
接收线B  设备A RX- 设备B TX-

(2)RS422 与 RS485比较

在这里插入图片描述

4、当我们说:TTL电平,我们在说什么

TTL(Transistor-Transistor Logic,晶体管-晶体管逻辑)电平是一种用于数字电路的电压标准,它在数字电路和通信中非常常见,TTL电平标准定义了数字信号的高电平(逻辑1)和低电平(逻辑0)的电压范围。。

简单说它是一个标准,定义了一些东西。

在这里插入图片描述
不一定准确,但是你大体上可以将一个电平为1.8V以下的电压,认为是数字0.高于这个的认为是数字1.

以下是一些应用和电平比较

在这里插入图片描述

4、总结说明

原本想简单说说,然后弄协议的,没想到已经4千多字了,没关系,我们慢慢来,期待接下来的文章,我们一步步来。


原文地址:https://blog.csdn.net/qq_22146161/article/details/140543034

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!