嵌入式的七种接口

2023-11-17

我们将简要介绍七个串行接口:SIO、UART、SSP(SPI)、I2C、CAN、USB和EtherMAC。虽然每个接口都有几个不同的操作模式,但我们只介绍一个典型的模式。因此,本文的解释不适用于其它操作模式。摘自东芝

SIO(串行输入输出)

最基本的串行接口是SIO,它由一个主器件和一个从器件通过一条数据线和一条时钟线采用一对一的方式连接组成。主器件把传输时钟提供给从器件。
接口将被其控制电路中的寄存器指定为主从器件。在数据传输之前,应该设置另一个寄存器以确定哪一个成为发射器或接收器。
在这里插入图片描述
如果数据集为8位,则发出8个时钟来同步传输数据。主器件的指令随时钟信号传输至从器件。这就是说,当主器件向从器件发送或接收数据时,主器件将通过发出时钟来启动传输请求。由于数据传输方向是预先定义的,因此主器件将在必要时向从器件发出时钟,并执行与从器件之间的数据发送或接收,与时钟同步。在这里插入图片描述
数据通常是8位串行数据。可以在数据末尾添加一个奇偶校验位,这将使得长度总共为9位。在这种情况下,从器件接口必须在接收串行数据之前已经知道串行数据有一个奇偶校验位。在这里插入图片描述

UART(通用异步收发器)

UART是异步串行接口,两个接口之间没有时钟信号。因此在UART中,主从器件的定义没有意义。
虽然消除时钟信号的目的是防止噪声问题,但这将造成另一个问题。如前所述,来自主器件的命令将通过SIO中的时钟信号发送到从器件。但是由于UART没有任何时钟信号,UART接口无法接受任何命令。因此,接收器必须等待数据到达,然后随时正确接收数据。
为了使接收器能够识别传输数据的开始和结束,发射器应对传输数据的开始或结束数据设置一些指示。起始位是数据“0”,停止(结束)位是数据“1”,它们分别添加在传输数据之前和之后。
在这里插入图片描述
在数据传输之前,发射器或接收器的分配已经完成。如果数据线变为“0”(数据线通常为“1”),则接收器会识别到发射器将要发送数据并准备开始接收传输数据。在数据传输过程中,由于没有时钟信号,很难理解一个位的时间间隔有多长。如果发射器发送了两个“0”(“00”),则接收器不可能在发射器和接收器之间没有任何约定的情况下识别出传输数据只是一个“0”或“00”。
关于该约定的典型例子是,接收器用频率比发射器中的发送时钟快16倍的时钟接收数据,该发射器应在数据传输之前预先定义。一旦接收器检测到起始位,它将每隔16个时钟捕获一次数据。在这里插入图片描述
在UART和SIO中都可以添加奇偶校验位。
UART中可能有两个以上的接口。在这种情况下,只有一个接口能分配为主器件,其它接口作为从器件。接收器将应答返回给发射器,使得对接功能可在UART上工作。

SSP(SPI)(同步串行端口(串行外围接口))

SSP是同步串行接口的总称,是指包括SPI在内的几种不同的数据传输方法。
SPI有一个主器件和多个从器件,这就是说SPI具有星型结构。所有接口共享两条数据线。其中一条是主器件发送数据线(SPDO),另一条是主器件接收数据线(SPDI)。通过使用这两条数据线,SPI可以方便地控制从器件接口,同时可轻松地增加从器件接口的数量,因为数据线上不会发生数据冲突。一条时钟线(SPCLK)将由主器件和所有从器件以及数据线共享。

主器件具有选择线路(SPFSSn)来访问其中一个从器件以便与主器件进行通信。一条选择线路连接到一个从器件,因此主器件的选择线路数量与从器件的相同。
在这里插入图片描述

I2C(内部集成电路)

即使网络中存在多个从器件,在I2C中也只需要两条线路,即一条数据线和一条时钟线。I2C还允许多个主器件结构(可以分配多个主器件)。在每个接口控制电路中设置一个寄存器,可以完成主从器件的分配。I2C是同步接口。

设计I2C数据线和时钟线以实现多个主器件结构。所有接口的输出只有“0”或高阻状态,数据和时钟的高电平由线路上的上拉元件(“线与”结构)提供。每个接口的输出缓冲区只有NMOS晶体管,没有PMOS晶体管。必要时,这些晶体管变为“导通”,接口的输出将为“0”。如果这些NMOS晶体管变为“关断”,则接口的输出变为高阻状态。由于上拉元件连接到每条线路,如果连接到信号线的接口的所有输出变成高Z状态,则该线路被上拉直至VDD并变成“1”。这是“线与”结构。
在这里插入图片描述
在这里插入图片描述
在“线与”连接中,数据“0”比数据“1”强。也就是说,如果两个接口分别输出“0”和“1”(高阻状态),则该线路的数据变为“0”。该强度优先级实现了对于防止多个主器件系统中发生数据冲突的仲裁方式。考虑两个主器件同时向数据线输出数据的情况,如果其中一个数据为“0”,另一个数据为“1”,则后一个接口将立即知道其它输出为“0”,并根据自己的判断立即停止线路访问。结果是前一个接口将保留使用线路的优先级,后一个接口将在知道前一个接口的数据传输结束后恢复数据传输。这种仲裁方式使得多个主器件系统成为可能。

CAN(控制器区域网络)

CAN是一种主要用于汽车内部通信的网络。CAN的结构致力于抗噪声。它采用差分数据线结构,不需要任何时钟线。所以CAN是异步接口,尽管CAN仅由与I2C一样的两条信号线构成。在这里插入图片描述
双数据线即所谓的CAN.H和CAN.L。两个数据信号之间的电压差表示数据;较高电压的CAN.H和较低电压的CAN.L定义数据“0”,而这些信号的相同电压电平定义数据“1”。这些定义实现了高的抗噪性,因为噪声将以相同的方式同时影响两条线路。在这里插入图片描述
CAN接口有一种特殊的同步方式,不需要任何时钟,主从器件之间没有区别。因此,信号线上存在数据冲突的可能性,所以每个接口应设置优先级。接口之间的同步按以下方式进行。首先,发射器将在发送数据之前传输起始位“0”。因为到目前为止,信号线上的数据一直是“1”,所以其它接口将检测到这个“0”数据,并将它们自己的时钟同步到数据“0”的边缘。当接收到传输的数据时,接收器将其时钟定时调整到数据“0”的任意边缘。当数据“1”继续时,这个方法将出现问题,因为数据“1”在CAN.H或CAN.L上没有边缘。连续的数据序列“1”无边缘,并且接收器可能与发射器失去同步。其解决方案是采用“位填充”技术,这种情况下,在五个连续的“1”数据之后插入一个数据“0”,这仅用于发射器的同步。接收器将使用数据“0”来同步其时钟,并将其从接收的数据中消除。在这里插入图片描述
如前所述,应对每个接口设置优先级,以防止数据冲突。为此,每个CAN接口都有标识符(11位)。标识符可用于确定每个接口传输数据的优先级,以防止数据冲突。

实际上,当数据“0”和数据“1”从不同的接口输出到数据线时,数据“0”在CAN中的传输类似于在I2C中的传输。在起始位之后和传输数据之前,发射器将传输其自己的标识符。当两个接口同时发送它们的标识符时,其中一个接口将取得优先级,输出“0”,另一个输出“1”。前一个接口可以占用数据线,在另一个接口之前完成发送。

USB 2.0(通用串行总线2.0)

USB 2.0是一种非常流行的串行接口,特别是对于个人电脑而言。众所周知,USB 2.0被广泛应用于各种应用,比如键盘、鼠标、打印机、闪存、硬盘、扬声器等接口。

USB 2.0有三种速度等级,分别是低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。东芝TX03系列微处理器支持USB 2.0全速。

USB接口采用分层结构。在USB中,主器件称为“主机”,从器件称为“设备”。USB 2.0是一个星型网络,其中一个“主机”控制着许多“设备”。例如,PC是主机,设备可以是通过USB电缆连接到PC的任何设备,比如键盘、鼠标等。
在这里插入图片描述
USB的显著特点是即插即用。连接或卸下USB设备时,不必关闭电脑。这就是USB变得如此流行的原因之一。

为了使USB设备能够很容易地连接到网络或从网络中移除,USB主机必须做一些工作。当USB设备连接到网络时,该设备会向主机发送请求。接收来自设备的请求后,主机开始获取设备的信息,选择最合适的驱动器,并为设备分配地址。主机的这个操作称为枚举。枚举成功后,主机可以正确访问设备。

主机可控制的设备和集线器的最大数量为127。如果集线器插入网络,则串联连接的集线器数量必须小于或等于5。

USB 2.0电缆有4根导线:VDD、GND、信号D+和信号D-。对于一个传输数据,信号D+和D-彼此取互补值。如果D+为高电平,D-为低电平,则数据被称为“差分1”。如果D+为低电平,D-为高电平,则数据被称为“差分0”。

但在USB 2.0网络的实际数据传输中,“差分1”和“差分0”并不一定分别意味着数据“1”和数据“0”。USB的数据格式为NRZI(反向不归零)。当一个时钟间隔内没有变化时,此格式将定义数据“1”,当发生从高到低或从低到高的变化时,则定义数据“0”。
在这里插入图片描述
在这里插入图片描述
USB 2.0没有任何时钟线,所以它是异步接口。所以主机和驱动器必须像在CAN中一样进行相互同步。传输8位SYNC码,使接收器与发射器以USB全速同步。

数据传输时,在USB 2.0中连续传输6次数据“1”后,完成数据“0”的位填充,因为只有数据“1s”连续传输时,NRZI格式中无信号边缘出现。
在这里插入图片描述

EtherMAC(以太网媒体访问控制)

EtherMAC是以太网接口的一部分。由于以太网的接口结构非常复杂,所以不容易闸释完全的以太网功能。我们只对以太网进行简要说明,提供到目前为止所述的与其它串行接口的差异概述。

以太网的“以太”来自一种叫做“以太”的介质,它是一种物理学定义,曾经被认为可以填满所有的空间。“以太”的存在最终被否定了,但由于“以太”被认为是无处不在的,所以它成为了网络命名的起源。

以太网主要分为四层,即物理层、数据链路层、网络层和上层。EtherMAC处理最低的两层:物理层和数据链路层。

以太网电缆由四根信号线组成。两条绞合线用于输出数据,另两条绞合线用于输入数据。这种电缆即使没有电屏蔽层也有很好的抗噪性(非屏蔽双绞线:UTP)。由于没有时钟线,因此以太网是一个异步接口。

为了理解以太网的概念,我们先介绍一下10Base-T,尽管100Base-TX是当今最流行的版本,但10Base-T是基本的,且比100Base-TX简单得多。

10Base-T是一个使用双绞线的接口,具有10Mbps传输速率和基带格式。

信号传输采用曼彻斯特代码格式。在曼彻斯特代码中,数据“1”和“0”分别定义为上升转换和下降转换。
在这里插入图片描述
以太网没有任何时钟线。接收器和发射器必须彼此同步,与CAN和USB2.0接口中一样。但即使相同的数据连续重复,也不需要位填充,因为数据“1”和数据“0”中都有信号转换。发射器发送数据前的56位连续脉冲,仅用于使接收器与发射器同步。

以太网没有USB 2.0中所必不可少的主机和设备关系等层次结构。当接口的一个单元想要输出数据时,该线路必须是空闲的。如果另一个单元占用线路,该单元必须等待。即使该单元已确保线路可用并开始发送数据,但如果另一个单元也开始同时发送数据,则会发生冲突。一旦发生冲突,所有单元将停止发送数据,并等待线路空闲。当一个单元尝试开始发送时,可能会再次发生另一个冲突,因为其它单元也尝试开始发送。为了防止这种永久性的冲突,以太网有一个防止冲突的对策。当发生冲突时,发射器的等待时间由随机数决定。这对发生冲突的单元有效。但是当先前的一个单元开始再次发送数据时,新单元可能会发生冲突。一个单元最多可以发送16次相同的数据。

对于无主从器件关系的系统分担通信责任而言,这是最佳的仲裁方式之一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式的七种接口 的相关文章

  • 对线性代数库Eigen3中eulerAngles函数的理解

    编写程序时有时会遇到在四元数 旋转矩阵 欧拉角之间进行转换的操作 使用eulerAngles函数从旋转矩阵中获得欧拉角 了解其使用方法才能保证转换时不出错 头文件
  • 基于双参数蜜蜂算法解决车辆路径问题(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 群智能起源于自然环境中生物群体经过长期自然
  • ffmpeg 合并转换文件_使用FFmpeg转换媒体文件的快速指南

    ffmpeg 合并转换文件 有许多开源工具可用于编辑 调整和将多媒体准确地转换为您所需的内容 诸如Audacity或Handbrake之类的工具非常出色 但有时您只想快速将文件从一种格式更改为另一种格式 输入FFmpeg FFmpeg是处理
  • 机器学习实战—利用SVD简化数据

    一 SVD的应用 奇异值分解 优点 简化数据 去除噪声 提高算法的结果 缺点 数据转换难以理解 利用SVD能够实现用小得多的数据集来表示原始数据集 这样做 实际上是去除了噪声和冗余信息 当我们视图节省空间时 去除噪声和冗余信息是目标 但是我
  • 正睿OI补题(搜索)

    搜索 目录 P1036 NOIP2002 普及组 选数 P2392 kkksc03考前临时抱佛脚 P1025 NOIP2001 提高组 数的划分 P6201 USACO07OPEN Fliptile S P1460 USACO2 1 健康的
  • linux svn新增用户名密码,Linux环境SVN添加用户账号及密码

    一 检查Svn安装版本 svn version 结果为 root iZm5e9ujl2isnk0qfeeyyhZ svn version svn version 1 7 14 r1542130 compiled Apr 11 2018 02
  • OpenHarmony之轻量系统编译构建流程

    首先我们先来熟悉几个概念 子系统 子系统是一个逻辑概念 它由一个或多个具体的组件组成 OpenHarmony整体遵从分层设计 从下向上依次为 内核层 系统服务层 框架层和应用层 系统功能按照 系统 gt 子系统 gt 组件 逐级展开 在多设
  • sql语句常见问题

    between是否包括两端 与字段类型有关 数据库类型如果是data 则包括两端 如果是datatime 则不包括右边 时间转字符串 DATE FORMAT statistic date Y m d as statistic date SQ
  • obsidian移动端PC段同步

    参考内容 https zhuanlan zhihu com p 431124370 https www bilibili com read cv13339751 文章目录 1 安装坚果云 2 开启坚果云WebDAV 3 在FolderSyn
  • 转载--我与英语技术书籍

    原文 http www cnblogs com KnightsWarrior p EnglishTechBooks html 我与英语技术书籍 2013 09 05 00 01 by 圣殿骑士 17877 阅读 122 评论 收藏 编辑 前
  • 优达学城《DeepLearning》2-1:卷积神经网络

    本次由3部分组成 可视化卷积神经网络 设计和训练一个CNN来对MNIST手写数字分类 设计并训练一个CNN来对CIFAR10数据集中的图像进行分类 本次遇到的深度学习核心概念 SGD优化器 GD就是梯度下降 Gradient Descent
  • 【SpringCloud】Ribbon定制化配置

    文章目录 使用Ribbon自带负载均衡算法 添加负载均衡算法Configuration RestTemplate使用上面负载均衡算法 自定义负载均衡算法 负载均衡算法实现 RestTemplate 在Controller中使用该负载均衡算法
  • SLIP, PPP, L2F ,PPTP, L2TP的简介以及关联

    都是网络连接的方式 其中又分为两大类 拨号连接 dialup 和虚拟私人网络 virtual private network 俗称VPN 依旧用我的浅薄而又粗俗的言语来向大家解释一下 如有错误 尽情打脸 拨号连接 Dalup 包含两种连接方
  • Tim定时器学习打卡

    通用定时器 TIM2 TIM3 TIM4和TIM5 1 主要功能 16位向上 向下 向上 向下自动装载计数器 16位可编程 可以实时修改 预分频器 计数器时钟频率的分频系数为1 65536之间的任意 数值 4个独立通道 输入捕获通道 输出比
  • 【Sql语句】创建表、修改、删除表,增添列、删除列

    编写以下语句 1 创建dept表 2 创建emp表 3 将列Last name的长度增加到50 4 根据表emp创建employees2 5 删除表employees2 6 在表dept和emp中添加新列test column 并检查所作的
  • Windows桌面文件夹删除被提示“找不到该项目”——顽固目录、文件的删除

    注意 若转载 请贴上链接 https blog csdn net qq 41042595 article details 112576438 如若发现抄袭或未标明来源现象 都可举报反馈 文章目录 问题来源场景 原因分析 解决方案 步骤一 1
  • Java创建文件和文件夹

    创建文件和文件夹 有异常 抛出或捕获IOException 如果文件 文件夹 存在则不创建 也不会覆盖文件中的内容 createNewFile 方法创建一个普通文件 使用mkdir 方法创建一个文件夹 使用mkdirs 方法创建多级文件夹
  • Android不同版本SD卡存储权限解决

    1 Android6 0之前 6 0之前是不需要动态申请权限的 直接在manifest中申请即可以正常使用
  • gulp基础:gulptask

    var gulp require gulp var browserify require gulp browserify 模块化的打包 var uglify require gulp uglify js的压缩 var webserver r
  • Mysql设计学生宿舍管理系统+考勤系统

    一 学生宿舍管理系统 要求 学校宿舍管理系统 要求包含宿舍信息 学生信息 每日的宿舍查房记录 分析 学生与宿舍的关系 m 1 宿舍的查房记录是根据宿舍来查的 与宿舍有关系 一个宿舍可以多次查房 宿舍与查房记录是1 m的关系 宿舍信息表 cr

随机推荐

  • 浅谈什么是大数据

    浅谈什么是大数据 有人可能发现了 我这个专栏写的就是大数据 所以我们一起来谈谈大数据 大数据概念 百度百科 对于 大数据 Big data 研究机构Gartner给出了这样的定义 大数据 是需要新处理模式才能具有更强的决策力 洞察发现力和流
  • 基于BCM53262交换芯片平台的Linux操作系统移植(一)编译环境

    2018 05 10 09 26 zhoulinhua 2018 05 10 一 源码 相关链接 http www at91 com linux4sam bin view Linux4SAM 1 a91bootstrap源码获取 git c
  • C++ 外观模式

    include
  • redhat 6.4安装oracle11g RAC (四)

    创建集群数据库 在节点rac1上用oracle用户执行dbca创建RAC数据库 root rac1 su oracle oracle rac1 dbca 选择创建数据库 自定义数据库 也可以是通用 配置类型选择Admin Managed 输
  • 微信小程序使用npm安装包

    小程序现在支持直接通过npm安装包了 点击这里了解更多 记录一下我自己的安装步骤及安装过程中遇到的一些问题 希望能够帮助到正在阅读此篇文章的你 我就直接通过在项目根目录安装miniprogram datepicker做演示了 1 在项目根目
  • SIMD优化之ARM纯汇编开发

    ARM纯汇编开发 注 这篇文章是两年前写的 现在更新到CSDN 当时认知不足 其中可能有不少错误 敬请行家指正 为什么要用纯汇编 开发效率高 这里可能让很多人大跌眼镜了 纯汇编开发效率高 首先 这个是有限定条件的 需要反复调优的重度运算场景
  • selenium读取excel中的数据实现自动登录

    一 当用selenium实现自动登录时 测试不同账号的登录 1 可以写一个登录方法login driver username password 对每一个账号分别写一个方法test zhnagshan log 然后将数据传入到登录方法logi
  • 【自动驾驶技术】优达学城无人驾驶工程师学习笔记(六)——Github与Markdown相关教程

    Github与Markdown相关教程 本博文为笔者关于优达学城无人驾驶工程师课程中计算机视觉基础部分的学习笔记 该部分为实现车道线图像识别功能的基础课程 关于本课程的详细说明请参考优达学城官网 优达学城为学员提供了一个简短的Github教
  • C++编程入门--矩阵类重载运算符

    题目 定义3 3矩阵类Matrix 在其中重载运算符 实现矩阵的基本运算 首先 我们先确定这个矩阵类的基本功能 我们来声明其成员函数的功能 列出来如下 include
  • SQLi LABS Less-21

    第21关使用POST请求提交参数 对用户名和密码中的特殊字符进行了转译 难度较大 21关的突破口在cookie 用户登录成功后 将用户名进行base64加密后 保存在cookie中 点击提交按钮的时候 会从cookie中获取保存的用户名 使
  • 矩阵 矩阵的基本运算规则 行列式 逆矩阵

    矩阵 本质 矩阵是个数表 从线性变换的视角看 矩阵是记录线性变换这一过程的描述信息 记为 A m n A m times n Am n 或 A a i j A a ij A aij 或 A a i j m n A a ij m times
  • RSA加密长度限制问题解决 BadPaddingException

    Exception in thread main javax crypto BadPaddingException Decryption error at sun security rsa RSAPadding unpadV15 RSAPa
  • python爬取数据存入excel_将爬取的数据保存到Excel表格

    第一步 导入模块 import xlwt 导入写入excel需要的包 第二步 定义函数 将爬取好的数据保存到excel文件中 下面以保存python的关键词为例 介绍详细流程 def write to excel filename lst
  • 蓝牙-基础篇-蓝牙简介

    文章目录 蓝牙特点 蓝牙功能 蓝牙的两种技术 蓝牙特点 低功耗 短距离 跨设备 蓝牙功能 跨设备传输流式音频 跨设备传输数据 广播信息 蓝牙的两种技术 传统蓝牙技术 蓝牙版本2 0 2 1 即Basic Rate Enhanced Data
  • 【小沐学C#】C#逆向反编译工具:JetBrains dotPeek

    论道篇 一天 戈戈来到江边静坐凝思 一手放着风筝 一手钓着鱼 微风徐徐 水面粼粼 柳枝招摇 戈戈 论语 读了许多天可有心得 狄狄 错误要么是 过了 要么是 不及 重要的就是把握住度 戈戈 程朱理学常说格物致知 那些红绿线平时可格出了些什么
  • C语言程序设计 程序设计与C语言

    1 计算机与程序 程序设计语言 机器语言又称低级语言 意思是贴近计算机硬件的语言 是一个型号机器语言的指令的集合 是紧密依赖于计算机的硬件 高级语言用于程序设计 编译系统的软件事先把高级语言编写的程序翻译成机器语言程序 2 C语言的出现和发
  • three.js 内置的几何体Geometry

    案例效果 所有案例效果地址 前言 前面我们了解了 一个three js三大基础renderer camera scene和响应式three js 现在我们来学习一下three js内置的geometry three js提供了很多的几何体给
  • 【PTA】二维数组转置

    写一个程序 使给定的一个二维数组 n n 转置 即行列互换 输入格式 输入n表示n行n列 再输入一个nxn的矩阵的整数 输出格式 转置的结果 输入样例 3 1 2 3 4 5 6 7 8 9 输出样例 1 4 7 2 5 8 3 6 9
  • 1007 素数对猜想

    让我们定义dn为 dn pn 1 pn 其中p是第i个素数 显然有d1 1 且对于n gt 1有dn 是偶数 素数对猜想 认为 存在无穷多对相邻且差为2的素数 现给定任意正整数N lt 10 5 请计算不超过N的满足猜想的素数对的个数 输入
  • 嵌入式的七种接口

    我们将简要介绍七个串行接口 SIO UART SSP SPI I2C CAN USB和EtherMAC 虽然每个接口都有几个不同的操作模式 但我们只介绍一个典型的模式 因此 本文的解释不适用于其它操作模式 摘自东芝 SIO 串行输入输出 最