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

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

  • 1、概述
  • 2、环境说明
  • 3、学习部分-底层硬件
      • 1、当我们说:底层串口-TX&RT,我们在说什么
          • (1)uart(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器
          • (2)usart(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发传输器
          • (3)举例-底层看波形
      • 2、当我们说:RS485,我们在说什么
          • (1)485全称TIA/EIA-485-A
          • (2)举例-底层示例波形
      • 3、当我们说:422通信,我们在说什么
          • (1)422全称TIA/EIA-422-A
          • (2)RS422 与 RS485比较
      • 4、当我们说:TTL电平,我们在说什么
  • 4、总结说明

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千多字了,没关系,我们慢慢来,期待接下来的文章,我们一步步来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学建模~~~SPSS相关和回归分析

目录 1.双变量相关分析 1.1理论基础 1.2简单散点图的绘制介绍 1.3相关性分析 1.4分析相关性结果 2.简单线性回归分析 2.1简单概括 2.2分析过程 2.3结果分析 3.曲线回归分析 3.1问题介绍 3.2分析过程 3.3结果分析 1.双变量相关分析 1.1理论基础 双变量相关分析并不…

HTML5-canvas1

1、canvas&#xff1a;创建画布 <canvas id"canvas"></canvas>2、画一条直线 var canvasdocument.getElementById(cancas&#xff09;; canvas.width800; canvas.height800; var contextcanvas.getContext(2d); //获得2d绘图上下文环境 //画一条直线 c…

码蹄集部分题目(2024OJ赛7.17-7.21;并查集+最小生成树+线段树+树状数组+DP)

1&#x1f40b;&#x1f40b;供水管线&#xff08;钻石&#xff1b;并查集最小生成树&#xff09; 时间限制&#xff1a;1秒 占用内存&#xff1a;128M &#x1f41f;题目思路 该题目就是最小生成树的问题。我们使用选边的方法&#xff0c;每次选取最小边加入&#xff0c;用…

Kettle 登录示例 POST请求

登录接口是post请求&#xff0c;组装Body为json字符串 var body "{\"username\":\""username"\",\"password\": \""password"\",\"code\":\""verification"\",\"uuid\…

小阿轩yx-高性能内存对象缓存

小阿轩yx-高性能内存对象缓存 案例分析 案例概述 Memcached 是一款开源的高性能分布式内存对象缓存系统用于很多网站提高访问速度&#xff0c;尤其是需要频繁访问数据的大型网站是典型的 C/S 架构&#xff0c;需要构建 Memcached 服务器端与 Memcached API 客户端用 C 语言…

【C++】内存管理的深度解析与实例

C内存管理的深度解析与实例 一、C内存管理的基本概念二、C内存分配方式1. 静态内存分配2. 动态内存分配 三、C内存管理的常见问题及解决策略1. 内存泄漏2. 堆内存碎片化3. 栈溢出 四、C内存管理的最佳实践1. 使用RAII&#xff08;Resource Acquisition Is Initialization&#…

【BUG】已解决:python setup.py bdist_wheel did not run successfully.

已解决&#xff1a;python setup.py bdist_wheel did not run successfully. 目录 已解决&#xff1a;python setup.py bdist_wheel did not run successfully. 【常见模块错误】 解决办法&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主…

在Django项目中创建Django App

进入code虚拟环境 .\.venv\Scripts\activate创建demoapp python demo/manage.py startapp demoapp

Neuralink首款产品Telepathy:意念控制设备的革新与挑战

近年来&#xff0c;科技领域不断涌现出令人惊叹的突破&#xff0c;其中尤以脑机接口&#xff08;BCI&#xff09;技术为代表。近日&#xff0c;Elon Musk的Neuralink公司发布了其首款脑机接口产品Telepathy&#xff0c;引发了广泛关注。本文将详细探讨Telepathy的功能、技术原理…

PCIe总线-RK3588 PCIe平台驱动分析(十)

1.简介 RK3588 PCIe RC和EP使用同一个平台驱动&#xff0c;其主要的作用是解析设备树中的资源、初始化中断、使能电源、初始化PHY、使能时钟和释放复位&#xff0c;然后根据compatible属性初始化RC或者EP驱动。 2.入口 平台驱动的定义如下&#xff0c;当compatible属性为&qu…

C语言:静态库和动态(共享)库

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 在软件开发中&#xff0c;库&#xff08;Library&#xff09;是一个至关重要的概念。它们是由函数和数据的集合构成&#xff0c;用于实现特定的功能&#xff0c;供其他程…

使用Vuepress搭建个人网站

网站地址&#xff1a;bloggo.chat

MySQL学习作业二

作业描述 SQL语言 建库&#xff0c;使用库 mysql> create database mydb8_worker;#新建库mysql> use mydb8_worker; 建表&#xff0c;查看表 #建表 mysql> create table t_worker(department_id int(11) not null comment部门号,worker_id int(11) primary key no…

无人机足球比赛技术详解

一、无人机类型参数 在无人机比赛中&#xff0c;不同类型的无人机因其独特的参数配置而表现出不同的性能。这些参数包括但不限于&#xff1a; 1. 机体尺寸&#xff1a;小型无人机适合室内或狭窄空间比赛&#xff0c;而大型无人机则更适用于室外大场地赛事。 2. 动力系统&…

动态路由协议 —— EIGRP 与 OSPF 的区别

EIGRP&#xff08;增强内部网关路由协议&#xff09;和 OSPF&#xff08;开放式最短路径优先&#xff09;是两种最常见的动态路由协议&#xff0c;主要是用来指定路由器或交换机之间如何通信。将其应用于不同的情况下&#xff0c;可提高速率、延迟等方面的性能。那么它们之间到…

IO多路复用-select的使用详解【C语言】

1.多进程/线程并发和IO多路复用的对比 IO多路转接也称为IO多路复用&#xff0c;它是一种网络通信的手段&#xff08;机制&#xff09;&#xff0c;通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的&#xff0c;一旦检测到有文件描述符就绪&#xff08; 可以读数据…

【数据结构进阶】二叉搜索树

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; C || 数据结构 目录 &#x1f308;前言&#x1f525;二叉搜索树&#x1f525; 二叉搜索树的实现Insert&#xff08;插入&#xff09;find&#xff08;查找&#xff09;erase(删除)destro…

分布式锁、Lua脚本、redisson、运行lua脚本优化代码

20240721 一、分布式锁1. 什么是分布式锁2. 分布式锁的实现3. 基于redis的分布式锁4 总结 二、对于lua脚本可以保证事务&#xff0c;要么成功要么失败。1. 在redis中调用lua脚本 三、Redisson1 步骤2. Redisson的总结3. 几种分布式锁的区别 三、优化我们的秒杀1. 我们在创建优惠…

Docker安装笔记

1. Mac安装Docker 1.1 Docker安装包下载 1.1.1 阿里云 对于10.10.3以下的用户 推荐使用 对于10.10.3以上的用户 推荐使用 1.1.2 官网下载 系统和芯片选择适合自己的安装包 1.2 镜像加速 【推荐】阿里镜像 登陆后&#xff0c;左侧菜单选中镜像加速器就可以看到你的专属地…

windows和linux的等保加固测评的经验分享

一头等保加固测评的牛马&#xff0c;需要能做到一下午测评n个服务器 接下来就讲讲如何当一头xxxxxxxxx》严肃的等保测评加固的经验分享&#xff08; 一、window等保 首先你要自己按着教程在虚拟机做过一遍&#xff08;win2012和win2008都做过一遍&#xff0c;大概windows的…