【备战软考(嵌入式系统设计师)】12 - 嵌入式系统总线接口

我们嵌入式系统的总线接口可以分为两类,一类是并行接口,另一类是串行接口。

并行通信就是用多个数据线,每条数据线表示一个位来进行传输数据,串行接口就是一根数据线可以来一位一位地传递数据。

从上图也可以看出,并行通信的优点就是传输效率高,缺点就是占用的数据线比较多。而串行通信的优缺点是和并行通信相反的,优点是省数据线,缺点是传输速率较低。

并行通信用的不是很多(跟串行通信相比),我们就记几个总线知道它们是并行的就行:IEEE488,SCSI,MXI。

串行将数据一位一位传输,也就是每一位数据都占一段固定的时间长度。

通信模式上分为三种:单工,半双工,全双工。

单工就是只能是A给B传输数据,而B不能给A传输数据,也就是数据是单向流动的。

半双工就是A和B可以相互发送数据,但是不能同时发送,也就是A给B发的时候B不能给A发,而B给A发的时候A不能给B发,因为数据线就一条,两边同时发会让信号混在一起。

全双工就是A和B在任何时候都可以给对方发送数据,一般是拥有多条数据线的时候才能实现。

通信方式上分为两种:同步和异步。

同步通信对硬件的要求比较高,因为需要双方的时钟信号一致(同频同相),但是传输速率高,因为不需要过多的控制位去控制双方同步。同步通信可以将多个字符聚集成一个字符块,在字符块的开始和结尾加上同步字符,这和异步差不多,区别在于同步通信传输的字符块可以有多个bit,而异步通信则是较少的bit组成一个字符块,可以参考我们之前说过的UART,我们常用的配置是8位数据位,一位停止位,无校验位,也就是说一个字符块只有一个Byte。

异步通信的数据是一帧一帧传输的,每帧数据需要包含起始位,数据位,校验位(不一定要),停止位,因此每次发送数据,实际上发送的内容中只有中间的数据位才是有用的数据,因此跟同步相比,数据传输的速率较低。但是好处就在于对硬件的要求低,我们用软件模拟都行。不需要同步时钟,还是拿UART举例,我们用串口通信的时候只需要通信双方共地,然后连接RX和TX即可对吧,不需要同步时钟。

关于接口我们再介绍一下RS家族(Recommand Standard,推荐标准):

RS-232,由美国电子工业协会提出的一种串行通用接口标准。在这个规定中规定了25条线,但是实际上我们只用九条线,也就是DB-9的插接件。

可能小伙伴一听到这个RS-232就懵逼了,但是实际上我们都见过(应该吧)。

在实验室里还蛮常见的,一些看起来很屌的仪器用的通信接口用的都是这些。

我们就拿上面的图片来简单介绍一下这九根线分别是做什么的。

上图中有标号1、5、6、9,1和5之间大家脑补一下2~4,6和9之间大家脑补一下7和8。

1、CD,载波检测,用于通知是否处于在线状态。

2、RXD,接收数据线。

3、TXD,发送数据线。

4、DTR,数据终端就绪,高电平时表示可以传输数据。

5、SG,接地信号线。

6、DSR,数据设备就绪。

7、RTS,请求发送。

8、CTS,清除允许发送。

9、RI,振铃提醒。

虽然RS-232已经从原本的25条线被砍到9条线了,但是我们可以更极端一点,只连接RXD,TXD和SG(共地)就可以进行最简单的通信了,就跟我们的串口通信一样了。

在RS-232的基础上还有RS-422和RS-485。

RS-422是RS-232的改进版,将原本的RXD和TXD替换成了差分信号,也就是平衡传输。

原本我们用一根TXD(RXD)就用来传输信号了,高电平就是逻辑1,低电平就是逻辑0,但是这种方式很容易受外界干扰使得传输出现误差。

差分信号则是使用两根线来传输信号,逻辑1就是其中一根数据线是+5V(举个例子,这边可以看成是+nV),另一根数据线是-5V,则两根数据线的电压差就是10V,这表示逻辑1。逻辑0则是两根数据线都是0V(也是举个例子,实际上两根数据线的电压差相差不多即可)。这样使用差分信号,那么就算干扰,也是两根数据线一起受到干扰,它们之间的电压差不会有很明显的改变,也就是传输更加可靠了。并且因为是全双工的,因此传输线路有两条,每条需要两根差分信号线,所以在极简的状态下只需要4根数据线即可(RXD-,RXD+,TXD-,TXD+)。

RS-485是建立在RS-422的基础上的,它们的差别首先是差分电压不一样,RS-485的差分信号的电压差更大,这意味着出现误差的概率进一步减小,因此RS-285的传输距离也就比RS-422更远了。并且RS-285是半双工的,因此所需的数据线只需要两条。

最后简单总结一下RS家族。

RS-232,一对一,全双工,传输距离小。

RS-422,一对多,全双工,使用差分信号。最多连接10个设备。

RS-485,多对多,半双工,使用差分信号。最多连接32个设备。

我们来看个选择题。我们知道RS-422和RS-485都是使用的差分信号,差分信号每条通道是两根差分信号线,因此RS-422最少是4根线,而RS-485最少只要2根线。

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

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

相关文章

SR3-05S电机保护器 施耐德 EOCR-SR3

EOCR-SR3电机保护器 施耐德 EOCR主要产品有电子式电动机保护继电器,电子式过电流继电器,电子式欠电流继电器,电子式欠电压继电器,其它保护和监视装置,电流互感器。 系列型号: EOCR-SR3-05S EOCR-SR3-30…

VR全景技术在养老院的应用优势浅析

随着时代的快速发展,人口老龄化越来越严重,如何利用VR技术提升养老服务的质量,成为了社会各界关注的焦点。为养老院拍摄制作VR全景,不仅能够为养老院的老人子女们跨越空间限制,实现与家人的情感连接,还可以…

Vditor集成于VUE笔记

文章目录 前言一、安装Vditor二、渲染markdown三、options3.1 自建CDN3.2 outline大纲不显示、不跳转问题3.3 upload 图片/视频上传3.4 toolbar提示位置点击事件more中文字 3.5 sv分屏渲染模式隐藏编辑框3.6 after中的insertValue或者setValue 前言 Vditor是一款易于使用的 Ma…

带你手撕红黑树! c++实现 带源码

目录 一、概念 二、特性 三、接口实现 1、插入 情况一:p为黑,结束 情况二:p为红 1)叔叔存在且为红色 2)u不存在/u存在且为黑色 (1)p在左,u在右 (2)…

MySQL中JOIN连接的实现算法

目录 嵌套循环算法(NLJ) 简单嵌套循环(SNLJ) 索引嵌套循环(INLJ) 块嵌套循环(BNLJ) 三种算法比较 哈希连接算法(Hash Join) 注意事项: 工…

异常处理/CC++ 中 assert 断言 应用实践和注意事项

文章目录 概述assert 本质浅析Release版本下的assert是否生效默认设置下 QtCreator环境 assert 过程默认配置下 VS环境 assert 过程配置VS发布模式下的断言生效VS环境Release版本的UI程序Release下请当我不生效 请勿滥用assert导致逻辑错误再强调不要在assert内执行逻辑功能怎敢…

【UnityRPG游戏制作】Unity_RPG项目_PureMVC框架应用

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:就业…

Vue-watch监听器

监听器 watch侦听器(监视器)简单写法完整写法 watch侦听器(监视器) 作用:监视数据变化,执行一些业务逻辑或异步操作 语法: watch同样声明在跟data同级的配置项中简单写法: 简单类型…

C++ 中的 lambda 表达式

1.概念 lambda表达式实际上是一个匿名类的成员函数,该类由编译器为lambda创建,该函数被隐式地定义为内联。因此,调用lambda表达式相当于直接调用匿名类的operator()函数,这个函数可以被编译器内联优化(建议&#xff0…

地图涟漪效果

参考API echarts图表集 useEcharts.js import { onBeforeUnmount, onDeactivated } from "vue"; // import * as echarts from "echarts";/*** description 使用 Echarts (只是为了添加图表响应式)* param {Element} myChart Echarts实例 (必传)* param …

AcWing-168生日蛋糕-搜索/剪枝

题目 思路 表面积和体积公式&#xff1a;以下分析参考自&#xff1a;AcWing 168. 生日蛋糕【图解推导】 - AcWing&#xff1b;AcWing 168. 关于四个剪枝的最清楚解释和再次优化 - AcWing 代码 #include<iostream> #include<cmath> using namespace std;const in…

【爬虫基础1.1课】——requests模块上

目录索引 requests模块的作用&#xff1a;实例引入&#xff1a; 特殊情况&#xff1a;锦囊1&#xff1a;锦囊2: 这一个栏目&#xff0c;我会给出我从零开始学习爬虫的全过程。感兴趣的小伙伴可以关注一波&#xff0c;用于复习和新学都是不错的选择。 那么废话不多说&#xff0c…

C语言学习(九)多文件编程 存储类型 结构体

目录 一、多文件编程&#xff08;一&#xff09;不写头文件的方方式进行多文件编程 &#xff08;二&#xff09;通过头文件方式进行多文件编程&#xff08;1&#xff09;方法&#xff08;2&#xff09;头文件守卫 &#xff08;三&#xff09; 使用多文件编程实现 - * / 功能 二…

HC-06 蓝牙串口从机 AT 命令详解

HC-06 蓝牙串口从机 AT 命令详解 要使用 AT 命令&#xff0c;首先要知道 HC-06 的波特率&#xff0c;然后要进入 AT 命令模式。 使用串口一定要知道三要素&#xff0c;一是波特率&#xff0c;二是串口号&#xff0c;三是数据格式, HC-06只支持一种数据格式: 数据位8 位&#…

HTTP 连接详解

概述 世界上几乎所有的 HTTP 通信都是由 TCP/IP 承载的&#xff0c;客户端可以打开一条TCP/IP连接&#xff0c;连接到任何地方的服务器。一旦连接建立&#xff0c;客户端和服务器之间交换的报文就永远不会丢失、受损或失序 TCP&#xff08;Transmission Control Protocol&…

97. 交错字符串-----回溯、动态规划

题目链接 97. 交错字符串 - 力扣&#xff08;LeetCode&#xff09; 解答 递归回溯 题目所述为两个字符串交替组成第三个字符串&#xff0c;之前好像做过相似的题目&#xff0c;直接联想到可以考虑使用递归回溯的做法&#xff0c;让字符串s1和字符串s2分别作为起始字符串&…

Mybatis-Plus大批量插入数据到MySQL

MyBatis-Plus的saveBatch方法 GetMapping("/save1") public void save1() {// 数据准备List<MallOrder> orderList getMallOrderList();// mybatis-pluslong start System.currentTimeMillis();mallOrderService.saveBatch(orderList);System.out.println(&…

计算机服务器中了360后缀勒索病毒怎么解密,360后缀勒索病毒恢复

计算机网络技术的不断发展与应用&#xff0c;为企业的生产运营提供了极大便利&#xff0c;大大提高了企业的办公效率&#xff0c;为企业的生产运营注入了新的动力&#xff0c;但网络是一把双刃剑&#xff0c;在为企业提供便利的同时&#xff0c;也为企业的数据安全带来严重威胁…

google test 使用指南

目录 测试项目 calculator.h calculator.cpp test01.cpp 创建新项目 选择Google Test 选择要测试的项目 pch.cpp 加入依赖 设为启动项目 ​编辑 运行 ​编辑 关键点 测试项目 calculator.h #ifndef __CALCULATOR_H__ #define __CALCULATOR_H__#include <i…

Linux操作系统中管理磁盘的另外一种操作方式。即LVM——逻辑卷管理操作

在Linux操作系统中管理磁盘的一种方法名称——LVM&#xff0c;这种管理磁盘的优势。 1.使用LVM去管理磁盘可以在不影响原来数据的前提下去扩容磁盘空间或者是缩减磁盘空间。 在LVM中除了上层逻辑券可以扩容&#xff0c;下层的券组也可以扩容。 2.使用LVM管理的磁盘支持快照功…