通讯总线总结

2021/5/11 18:29:17

本文主要是介绍通讯总线总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

通信总线协议总结

【学习笔记】

一、UART总线

简介

UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发器

特点

串行、异步通信、两条数据线、全双工发送和接收、点对点通信。

应用场合

在嵌入式系统中常用于主机与辅助设备之间的通信(嵌入式领域应用广泛)

UART帧格式

image

1、起始位:发送1位逻辑0(低电平),开始传输数据。
2、数据位:可以是5~8位的数据,先发低位,再发高位,一般常见的就是8位(1个字节),其他的如7位的ASCII码。
3、校验位:奇偶校验,将数据位加上校验位,1的位数为偶数(偶校验),1的位数4为奇数(奇校验),【校验位可有可无,根据需求选择】
4、停止位:停止位是数据传输结束的标志,可以是1/1.5/2位的逻辑1(高电平)。
5、空闲位:空闲时数据线为高电平状态,代表无数据传输。

发送的波特率和接受的波特率要保持一致,且为了避免累计误差,不能连续发送多个字节,这就是数据最多发送8位的原因。

比特率的概念

UART传输速率的概念——比特率。

比特率的单位是bps,全称是bit per second,意为每秒钟传输的bit数量。

比特率9600bps,代表每秒钟传输bit的数量为9600,那么传输1bit数据的时间就是1/9600=104us,比特率115200bps,代表传输1bit数据的时间是8us。

硬件连接

交叉连接

image

设置引脚功能的本质:就是将引脚与相应的功能相连接,如连接到GPIO,或连接到UART

UART寄存器配置

(1)设置发送引脚和接收引脚

(2)设置UART帧格式

(3)设置UART发送发送和接收模式

(4)设置UART的波特率

发送数据

(1)等待发送寄存器为空

(2)将发送的数据写入发送寄存器

接收数据

(1)判断接收寄存器是否接收到了数据

(2)如果接收到,则读取到寄存器

一般在开发中很少直接用串口进行编程,因为它存在很多问题,在实际应用中,通常用优化的UART:RS232、RS485

UART存在的问题

1、电气接口不统一

UART只是对信号的时序进行了定义,而未定义接口的电气特性

(1)UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接很不方便

(2)UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连。

2、抗干扰能力差

一般直接使用TTL(+5V等价于逻辑“1”,0V等价于逻辑“0”)信号表示0和1,但是TTL信号抗干扰能力较差,数据在传输过程中很容易出错。

3、通信距离极短

由于TTL信号的抗干扰能力差,所以其通信举例也很短,一般只能用于一个电路板上的两个不同芯片之间的通信。

二、RS232、RS485总线

简介:这两个协议只是单纯的电气层面的协议,是依赖于串口UART的。

1、RS232协议

RS232协议是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家、计算机终端生产厂家共同制定的用于串行通讯的标准。起初为25根线,后来被IBM简化为9根线,但是现代工业控制的RS-232接口一般只使用RXD、TXD、GND三条线。

改标准规定采用一个标准的连接器,标准中对连接器的每一个引脚的作用加以规定,还对信号的电平加以规定。

该标准的信号规定

逻辑“1”:电平为-5V到-15V

逻辑“0”:电平为+5V到+15V

选用该电气标准的目的在于提高抗干扰能力,增大通信距离,其传送距离一般可达15m。

电平转换MAX232:可以把TTL信号和232信号相互转化,以延长通信距离(15m)。

RS232存在的问题

(1)接口信号电平值较高,容易损坏接口电路的芯片,又因为与TTL电平不兼容,所以需要使用电平转换芯片才能与TTL电路连接。

(2)通信速度较低

(3)易产生共模干扰,抗噪声干扰性弱

(4)传输距离较短(15m)

2、RS485协议

特点:

(1)也是对串口在电气层面的改良,相比于RS232,RS485提高了抗干扰能力,并且极大增强了通信的距离(1500m)

(2)具有多站能力,这样可以利用单一的RS485接口方便的建立起一个设备网络。不在是点对点的通信,而是类似于IIC一样可以挂很多芯片设备,从而组成一个网络。

采用双绞线,用两根线的差分电压值高低表示逻辑电平,并消除共模干扰。

由于两根线传输差分信号,所以发送和接收不能同时进行,故只能采用半双工的方式工作。

电平转换:

由于处理器产生的信号一般都是TTL信号并不是符合RS485标准的信号,所以一般还需要再处理器外部去添加电路将TTL信号转换成差分信号。

RS485的优势

(1)接口信号电平值较低,不易损坏接口电路的芯片,且与TTL电平兼容,可方便地与TTL电路连接。

(2)通信速度快

(3)抗噪声干扰强

(4)传输距离较远(1500m)

(5)可实现多节点组网

三、IIC总线

简介

IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线。由飞利浦公司推出。

特点

串行、半双工、硬件结构简单、成本低、应用广泛、非点对点通信。

应用场合

近距离、低速芯片之间的通信(抗干扰差,不能用于长距离)

数据线SDA:用于收发数据

时钟线SCL:用于通信双方的时钟同步

接线

把芯片的SCL接到总线SCL上,把芯片的SDA接到总线SDA上。

IIC总线是一种多主机总线,连接在总线的器件分为主机和从机,主机有权发起和结束一次通信,而从机智能被呼叫。

当由多个主机同时启用总线时,IIC也具有冲突检测和仲裁的功能来防止错误的产生。

每个器件都可以作为主机或者从机,但是同一时刻只能由一个主机。总线上增加和删除器件,不影响其他器件正常工作。

每一个连接到IIC总线上的器件都有一个唯一的地址(7bit)。

一个器件,当它接收数据的时候是作为接收器,发送数据的时候作为发送器。

通信过程

(1)主机发送起始信号启用总线【其他主机接收到信号,知道总线被占用,则待机,从机接收到信号,准备好接收信号】

(2)主机发送第一个字节数据指明从机地址和后续字节的传送方向【高7bit指明从机地址,而最后第零位,用于确定是主机给从机发送数据(0表示主机到从机)还是从机给主机发送数据(1表示从机到主机)】

image

(3)被寻址的从机发送应答信号回应主机【其他从机闭嘴了】

(4)发送器发送一个字节的数据【发送器是谁,要看最后一位是0还是1】

(5)接收器发送应答信号回应发送器

(...)循环步骤4、5【这两步和2、3两步本质上一样】【这两步的前提是主从机都已经确定好了,即通信过程中改变不了方向】

(n)通信完成后主机发送停止信号释放总线

第一个数据必须是主机给从机发,用于确定地址和方向,后续的方向由字节的第一位决定。通信过程中可以连续发送无数个字节的数据,方向不允许改变。

整个过程就包含了四种信号:起始信号、发送一个字节、应答信号...、停止信号

起始信号:SCL为高电平时,SDA由高变低表示起始信号

停止信号:SCL为高电平时,SDA由低变高表示停止信号

起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态,停止信号产生后总线处于空闲状态。

在起始信号和停止信号之间,用于已经做好应答的主从机之间的通信,其他主机是不能启用总线的。

字节传输与应答

IIC总线通信时每个字节为8位长度,数据传输时先发高位、再发低位。

发送器每发完一个字节数据,接收器必须发送1位应答位来回应发送器,即一帧共有9位。

IIC总线协议:

image

四、CAN总线

来自CAN总线报文浅析

简介

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。

优点

传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制器价格越来越低。

(1)低成本:ECUs通过单个CAN接口进行通信,布线成本低。

(2)高集成:CAN总线系统允许在所有ECUs上进行集中错误诊断和配置。

(3)可靠性:该系统对子系统的故障和电磁干扰具有很强的鲁棒性,是汽车控制系统的理想选择。

(4)高效率:可以通过id对消息进行优先级排序,以便最高优先级的id不被中断。

(5 )灵活性:每个ECU包含一个用于CAN总线收发芯片,随意添加CAN总线节点。

应用范围

CAN的高性能和可靠性已被认同,并被广泛的应用与工业自动化、船舶、医疗设备、工业设备等方面。

CAN总线网络结构

image

CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。

CAN收发器

CAN收发器作用是负责逻辑电平和信号电平之间的转换

image

TXD:发送数据输入

RXD:接收数据输入

CANL:低电平CAN总线

CANH:高电平CAN总线

S:选择进入高速模式还是静音模式

CAN总线信号表示

CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,分别是显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。

image

显性与隐性电平的解释:

CAN的数据总线有两条,一条是黄色的CAN_High,一条是绿色的CAN_Low。当没有数据发送时,两条线的电平一样都为2.5V,称为静电平,也就是隐性电平。当有信号发送时,CAN_High的电平升高1V,即3.5V,CAN_Low的电平降低1V,即1.5V。

显性和隐性定义

CAN_H-CAN_L < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1"- 高电平。

CAN_H-CAN_L > 0.9V 时候为显性的,逻辑信号表现为"逻辑0"- 低电平。

CAN总线信号传输

发送过程: CAN控制器将CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。CAN发射器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。

image

接收过程: CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。

image

CAN数据传输

CAN总线传输的是CAN帧,CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧和帧间隔。

其中数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B)

以下是数据帧的两种帧格式:

image

数据帧格式

帧起始

由一个显性(低电平)组成

帧结束

由七个隐形位(高电平)组成

image

仲裁段

只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。但是CAN使用了标识符的逐位仲裁方法可以解决这个问题。

CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。

image

帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

image

控制段

控制段共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成

image

数据段

一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合

image

数据量小,发送和接收时间短,实时性高,被干扰的概率小,抗干扰能力强。

CRC段

CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。 CRC校验段由15位CRC值和1位CRC界定符构成

image

ACK段

当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平

image

远程帧格式

与数据帧相比,远程帧结构上无数据段,由6个段组成,同理分为标准格式和扩展格式,且RTR位为1(隐性电平)

image

如下图所示由于数据帧的RTR位为显性电平,远程帧的RTR位为隐性电平。

所以帧格式和帧ID都相同情况下,数据帧的优先级比远程帧优先级高

image

数据帧与远程帧的区别

image

错误帧

尽管CAN-bus是可靠性很高的总线,但依然可能出现错误;CAN-bus的错误类型共有5种

image

当出现5种错误类型之一时,发送或接收节点将发送错误帧。错误帧的结构如下,其中错误标识分为主动错误标识和被动错误标识

image

为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,干扰其他节点通信,CAN-bus规定了节点的3种状态及其行为

image

(注:这些错误处理的机制是由硬件自主完成的这样做的目的就是只要CAN在收到数据肯定是正确的数据)。

过载帧

当某个接收节点没有做好接收下一帧数据的准备时,将发送过载帧以通知发送节点;过载帧由过载标志和过载帧界定符组成

image

由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个位的现象

image

帧间隔

帧间隔用于将数据帧或远程帧和他们之前的帧分离开,但过载帧和错误帧前面不会插入帧间隔。

image

帧间隔过后,如果无节点发送帧,则总线进入空闲。

image

帧间隔过后,如果被动错误节点要发送帧,则先发送8个隐性电平的传输延迟,再发送帧。

image

CAN总线发送总流程

CAN-bus整个链路层处理数据的流程

image

五、SPI总线

来自SPI通信协议

简介

SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一
种同步串行接口技术,是一种高速的,全双工,同步的通信总线。

特点

高速、同步、串行、全双工、非差分、总线式、主从机通信模式、通信简单、数据传输率快。

缺点

没有应答机制确定是否收到数据,可靠性较IIC差。

接口

(1)SDO/MOSI:主设备数据输出,从设备数据输入

(2)SDI/MISO:主设备数据输入,从设备数据输出

(3)SCLK:时钟信号,由主设备产生

(4)CS/SS:从设备使能信号,由主设备控制

当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。

SPI总线结构

image

SPI四种模式

SPI通信有4种不同的模式,不同的从设备可能在出厂是就是配
置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们
可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来

控制我们主设备的通信模式,具体如下:
image

时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA
是用来配置数据采样是在第几个边沿:
CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿
CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿

例如:
CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是
SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。

CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是
SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。

CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是
SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。

CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是
SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。

六、USART协议

简介

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行接收/发送器。USART通信线路简单,可胜任较长距离的可靠通信(RS-232为例,最大通信距离可达15米)。被广发应用于工业控制、医疗设备、POS系统等。

同步和异步通信的区别

USART的同步通信帧格式

image

所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符于字符之间、字符内部的位与位之间都同步。

同步串行通信特点

(1)以数据块位单位传送信息

(2)在一个数据块(信息帧)内,字符与字符间无间隔

(3)接收时钟与发送时钟严格同步

简言之:由时钟同步

USART异步通信帧格式

image

所谓异步通信,是指数据传送以字符位单位,字符与字符之间的传送是完全异步的,位于位之间的传送基本上是同步的。

异步串行通信的特点

(1)以字符为单位传送信息

(2)相邻两个字符间的间隔是任意长

(3)接收时钟和发送时钟只要相近就可以

异步方式特点简单说就是:字符间异步,字符内部各位同步

由于异步通信不需要同步时钟,使用简单,因此一般传统通信都采用异步模式。

一帧数据由4个部分组成

(1)1位起始位,规定位低电平0

(2)5~8位为数据位,即要传送的有效信息

(3)1位奇偶校验位

(4)1~2位停止位,规定高电平1

七、USB协议

来自USB协议详解

简介

一个transfer(传输)由一个或多个transaction(事务)构成,一个transaction(事务)由一个或多个packet(包)构成,一个packet(包)由一个或多个sync(域)构成。

1.传输数据通信

USB的数据通讯首先是基于传输(transfer)的,传输的类型有:中断传输、批量传输、同步传输、控制传输。

2.事务数据通讯

一次传输由一个或多个事务(transaction)构成,事务可以分为:in事务、out事务、setup事务。

3.包数据通讯

一个事务由一个或多个包(packet)构成,包可分为:令牌包(setup)、数据包(data)、握手包(ack)、特殊包。

4.域数据通讯

一个包由多个域构成,域可分为:同步域(sync)、标识域(pid)、地址域(addr)、端点域(endp)、帧号域(fram)、数据域(data)、校验域(crc)。

传输

传输分为四种类型:批量传输、等时(同步)传输、中断传输、控制传输。

1、批量(大容量数据)传输(Bulk Transfers): 非周期性,突发

大容量数据的通信,数据可以占用任意带宽,并容忍延迟 。如USB打印机、扫描仪、大容量储存设备等。

批量输出事务:
(1)主机先发出一个OUT令牌包(包含设备地址,端点号)。
(2)然后再发送一个DATA包,这时地址和端点匹配的设备就会收下这个数据包,主机切换到接收模式,等待设备返回握手包。
(3)设备解码令牌包,数据包都准确无误,并且有足够的缓冲区来保存数据后就会使用ACK/NYET握手包来应答主机(只有高速模式才有NYET握手包,他表示本次数据成功接收,但是没有能力接收下一次传输),如果没有足够的缓冲区来保存数据,就返回NAC,告诉主机目前没有缓冲区可用,主机会在稍后时间重新该批量传输事务。如果设备检查到数据正确,但端点处于挂起状态,返回STALL。如果检测到有错误(如校验错误,位填充错误),则不做任何响应,让主机等待超时。
批量输入事务:
(1)主机首先发送一个IN令牌包(包含设备地址,端点号)。
(2)主机切换到接收数据状态等待设备返回数据。如果设备检测到错误,不做任何响应,主机等待超时。如果此时有地址和端点匹配的设备,并且没有检测到错误,则该设备作出反应:设备有数据需要返回,就将一个数据包放在总线上;如果没有数据需要返回,设备返回NAK响应主机;如果该端点处于挂起状态,设备返回STALL。如果主机收到设备发送的数据包并解码正确后,使用ACK握手包应答设备。如果主机检测到错误,则不做任何响应,设备会检测到超时。注意:USB协议规定,不允许主机使用NAK来拒绝接收数据包。主机收到NAK,知道设备暂时没有数据返回,主机会在稍后时间重新该批量输入事务。

image

image

2、中断传输(Interrupt Transfers): 周期性,低频率。

允许有限延迟的通信 如人机接口设备(HID)中的鼠标、键盘、轨迹球等。
中断传输是一种保证查询频率的传输。中断端点在端点描述符中要报告它的查询间隔,主机会保证在小于这个时间间隔的范围内安排一次传输。

image

3、等时(同步)传输(Isochronous Transfers): 周期性 。

持续性的传输,用于传输与时效相关的信息,并且在数据中保存时间戳的信息 ,如音频视频设备。

等时(同步)传输用在数据量大、对实时性要求高的场合,如音频设备,视频设备等,这些设备对数据的延迟很敏感。对于音频或视频设备数据的100%正确性要求不高,少量的数据错误是可以容忍的,主要是保证数据不能停顿,所以等时传输是不保证数据100%正确的。当数据错误时,不再重传操作。因此等时传输没有应答包,数据是否正确,由数据的CRC校验来确认。

image

4、控制传输(Control Transfers): 非周期性,突发。

用于命令和状态的传输

控制传输可分为三个过程:(1)建立过程 (2)数据过程(可选) (3)状态过程
特性:
每个USB设备都必须有控制端点,支持控制传输来进行命令和状态的传输。USB主机驱动将通过控制传输与USB设备的控制端点通信,完成USB设备的枚举和配置 。
方向:
控制传输是双向的传输,必须有IN和OUT两个方向上的特定端点号的控制端点来完成两个方向上的控制传输 。

USB事物

image

USB包

包的组成:

image

包的内容:

image

1、PID:

image

这里只用(PID04),PID47是PID0~4的取反,用来校验PID
PID1~0:01 令牌包、11 数据包、10 握手包、00 特殊包

image

2、地址:

image

3、帧号:

image

4、数据:

image

5、CRC:

image

Packet分四大类:

命令 (Token) 、Packet 帧首 (Start of Frame) 、Packet 数据 (Data) 、Packet 握手 (Handshake) Packet

不同类型包,以上的组成部件有所不同

1、四种Packet类型之令牌包(Token Packet):

令牌包用来启动一次USB传输。
输出(OUT)令牌包:用来通知设备将要输出一个数据包
输入(IN)令牌包:用来通知设备返回一个数据包
建立(SETUP)令牌包:只用在控制传输中,和输出令牌包作用一样,也是通知设备将要输出一个数据包,两者区别在于:
SETUP令牌包后只使用DATA0数据包,且只能发送到设备的控制端点,并且设备必须要接收,而OUT令牌包没有这些限制
image
例子:

image

2、四种Packet类型之SOF Packet

帧起始包:在每帧(或微帧)开始时发送,以广播的形式发送,所有USB全速设备和高速设备都可以接收到SOF包。

image

例子:

image

0xA5:1010 0101:对应上面PID表可知是帧起始包

3、四种Packet类型之Data Packet

image

例子:

image

4、四种Packet类型之Handshake Packet

image

例子:

image

USB 设备枚举及描述符介绍

当一个USB设备插入主机后,会有以下活动:
image

在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。设备通常有一个或多个配置,配置通常有一个或多个接口,接口通常有零个或多个端点。 ![img]image

image

image

image

image

例程分析

我们插上鼠标后后出现如下的信息,我们先来分析第一个传输:

image

我们看到第一个是控制传输,它包含了4个事物,分别是:1个setup事务,3个in事务,1个out事务,我们先打开setup事务:

image

我们看到这个事务里包含了3个包

第一个包是令牌包,它由主控制器发送给目标设备的0号端口,用于设置目标设备的地址和端口号,我们看到后面两个包都缺省了地址与端口号。在usb系统中,所有的通信都是由主机发出相应的令牌所引起的。

第二个是数据包,由主控器发送给目标设备,其中数据的内容表示:

80:表示要求设备向主机发送信息

06:表示GET_DESCRIPTOR,即设备向主机发送设备描述符

00与01:Word-sized field that varies according to request

00与40:Word-sized field that varies according to request; typically used to pass an index or offset

00:Number of bytes to transfer if there is a:Data stage

总结一下第二个包就是向默认地址0 发送GET_DESCRIPTOR 指令包,请求设备发送设备描述符

第三个是应答包:设备接收到主机发送的数据后会给出应答

接着我们看第一个in事务

image

我们看到这个事务里也有三个包

第一个是in包:由主机发送给设备,表示要设备向主机发送上面请求的设备描述符

第二个是数据包:由设备发送给主机,当然是发送设备描述符,我们来分析一下:

12:表示接下来要求主机向设备发送信息

01:CLEAR_FEATURE、

第三个是应答包,由主机发送给设备

接着我们来看第二个in事务

image

这个事务里依旧是3个包

第一个是in包:由主机发送给设备,表示需要输入

第二个是数据包:由设备发送给主机,我们来解析一下:

6D:表示要求主机发给设备数据

04:Reserved for future use

第三个是主机给设备的应答包

最后来看out事务

image

第一个是out包:由主机发给设备

第二个是数据包:由主机发给设备,无数据

第三个包是设备给主机的应答包



这篇关于通讯总线总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程