【备战软考(嵌入式系统设计师)】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根线。
相关文章:
【备战软考(嵌入式系统设计师)】12 - 嵌入式系统总线接口
我们嵌入式系统的总线接口可以分为两类,一类是并行接口,另一类是串行接口。 并行通信就是用多个数据线,每条数据线表示一个位来进行传输数据,串行接口就是一根数据线可以来一位一位地传递数据。 从上图也可以看出,并行…...
【一刷《剑指Offer》】面试题 18:树的子结构
力扣对应题目链接:LCR 143. 子结构判断 - 力扣(LeetCode) 牛客对应题目链接:树的子结构_牛客题霸_牛客网 (nowcoder.com) 核心考点:二叉树理解,二叉树遍历。 一、《剑指Offer》对应内容 二、分析问题 二叉…...
17 M-LAG 配置思路
16 华三数据中心最流行的技术 M-LAG-CSDN博客 M-LAG 配置思路 什么是M-LAG?为什么需要M-LAG? - 华为 (huawei.com) 1 配置 M-LAG 的固定的MAC地址 [SW-MLAG]m-lag system-mac 2-2-2 2 配置M-LAG 的系统标识符系统范围1到2 [SW-MLAG]m-lag system-nu…...
深入探索CSS3 appearance 属性:解锁原生控件的定制秘密
CSS3 的 appearance 属性,作为一个强大的工具,让我们得以细致入微地控制元素的外观,特别是对于那些具有平台特定样式的表单元素,如按钮、输入框等。本文不仅会深入解析 appearance 属性的基本工作原理和使用场景,还将通…...
C# 集合(五) —— Dictionary类
总目录 C# 语法总目录 集合五 Dictionary 1. Dictionary 1. Dictionary 字典是键值对集合,通过键值对来查找 Dictionary和Hashtable的区别是Dictionary可以用泛型,而HashTable不能用泛型 OrderedDictionary 是按照添加元素时的顺序的字典,是…...
Java 函数式接口BiConsumer
BiConsumer是一个函数式接口,代表一个接受两个输入参数且不返回任何内容的操作符 import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer;public class BatchOperate<T> {private int batchSize3000;private List<T&…...
SWERC 2022-2023 - Online Mirror H. Beppa and SwerChat (双指针)
Beppa and SwerChat 题面翻译 B和她的怪胎朋友在某个社交软件上的聊天群聊天。 这个聊天群有包括B在内的n名成员,每个成员都有自己从1-n的独特id。 最近使用这个聊天群的成员将会在列表最上方,接下来较次使用聊天软件的成员将会在列表第二名࿰…...
四川汇昌联信:拼多多运营属于什么行业?
拼多多运营属于什么行业?这个问题看似简单,实则涉及到了电商行业的深层次理解。拼多多运营,顾名思义,就是在拼多多这个电商平台上进行商品销售、推广、客户服务等一系列活动。那么,这个行业具体包含哪些内容呢?下面就从四个不同…...
C++11 特性
总结 语法糖: 关键字: auto、decltype。nullptr。override、final。constexpr。语法: 基于范围的 for 循环。function 函数对象。 lambda 产生函数对象。bind 产生函数对象。目的:写代码更便捷、更严谨,让编译器做更多的事情。STL 容器: array。forward_list。unordered_…...
二、使用插件一键安装HybridCLR
预告 本专栏将介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用。 专栏: Unity开发AR系列 插件简介 通过热更技术实现动态地加载AR场景,简化了AR开发流程,让用户可更多地关注Unity场景内容的制作。 热更方案 基于Hybri…...
【江科大STM32学习笔记】新建工程
1.建立工程文件夹,Keil中新建工程,选择型号 2.工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹 为添加工程文件准备,建文件夹是因为文件比较多需要分类管理,需要用到的文件一定要复…...
C++小程序:同一路由器下两台计算机简单通信(1/2)——服务器端
同一路由器下两台电脑如何进行通信呢?这里通过小程序实例的方式介绍SOCKET结构体以及相关函数的使用。计算机通信是在服务器端与客户端之间进行,这里先介绍服务器端程序。 我这里编辑编译软件是VS2022,使用C空项目进行编程。在介绍程序…...
EditReady for Mac激活版:专业视频转码工具
对于视频专业人员来说,一款高效的视频转码工具是不可或缺的。EditReady for Mac正是这样一款强大的工具,它拥有简洁直观的操作界面和强大的功能,让您的视频处理工作事半功倍。 EditReady for Mac支持多种视频格式的转码,并且支持常…...
Android app通过jcifs-ng实现Samba连接共享文件夹
Android端使用Samba连接共享文件夹,下载或上传文件的功能实现。如果你是用jcifs工具包,那么你要注意jcifs-ng 和 jcifs 支持的SMB版本区别。 JCIFS-NG的github地址 JCIFS官网地址 这里有关于jciffs、jcifs-codelibs、jcifs-ng、smbj的详细介绍 对比 支…...
linux开发笔记(buildroot打包镜像)
参考文章:https://www.cnblogs.com/arnoldlu/p/9553995.html mangopi_r3的buildroot在编译完成后会将所有镜像打包到一起。与之有关的buildroot配置项为 BR2_ROOTFS_POST_IMAGE_SCRIPT"board/allwinner/generic/scripts/genimage.sh" genimage.sh内容如下 #!/bin…...
预编码算法学习笔记
预编码算法是无线通信系统中的一项关键技术,它能够在发送端对信号进行处理,以提高系统的可靠性和频谱效率。以下是关于预编码算法的详细学习笔记。 1. 引言 在无线通信系统中,由于存在多径效应、信号衰减以及干扰等因素,接收到的…...
2024OD机试卷-最长子字符串的长度(一) (java\python\c++)
题目:最长子字符串的长度(一) 题目描述 给你一个字符串 s,首尾相连成一个环形,请你在环中找出 ‘o’ 字符出现了偶数次最长 子字符串 的长度。 输入描述 输入是一个小写字母组成的字符串 输出描述 输出是一个整数 用例1 输入 alolobo 输出 6 用例2 输入 looxdolx …...
docker 部署并运行一个微服务
要将微服务部署并运行在Docker容器中,你需要按照以下步骤操作: 编写Dockerfile:在项目根目录下创建一个名为Dockerfile的文件,并添加以下内容: # 使用一个基础的Docker镜像 FROM docker-image# 将项目文件复制到容器…...
Hive on Tez 作业优化参数
常用参数 参数名 参数说明 默认值 所在配置文件 关联问题 hive.tez.container.size Tez AppMaster向RM申请的container大小 -(单位:MB) hive-site.xml OOM tez.runtime.io.sort.mb 这个参数设定了 Tez 运行排序操作时可用的最大内存。排序操作的内存大小也会影响到排序的效率…...
flink mysql数据表同步API CDC
概述: CDC简介 Change Data Capture API CDC同步数据代码 package com.yclxiao.flinkcdcdemo.api;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.ververica.cdc.connectors.mysql.source.MySqlSource; import com.verv…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
