最近的工作是对接硬件工程师把测试给搞定,但人家一上来说测试I2C、测试QSPI,有点招架不住。后来了解到是一些test的一部分。包括初始化,CAN bus 等等。
因为不太了解,导致现在在牛客恶补一些通讯协议。
续(一)的40
在CAN总线通信中,错误的种类正确分类为:
位错误:比较输出电平和总线电平(不含填充位),当两电平不一样时所检测到的错误。
填充错误:在需要位填充的段内,连续检测到 6位相同的电平时所检测到的错误。
CRC 错误:从接收到的数据计算出的 CRC 结果与接收到的CRC 顺序不同时所检测到的错误。
格式错误:检测出与固定格式的位段相反的格式时所检测到的错误。
ACK 错误:发送单元在ACK槽(ACK Slot)中检测出隐性电平时所检测到的错误(ACK没被传送过来时所检测到的错误)
RS-485能够进行远距离传输主要得益于使用差分信号进行传输,当有噪声干扰时仍可以使用线路上两者差值进行判断,使传输数据不受噪声干扰。
RS-485总线上的驱动器和接收器最大数量取决于它们的负载特性。驱动器和接收器的负载都是相对单位负载而衡量的。485标准规定一根传输总线上最多可以挂接32个单位负载。
为避免信号反射,当线缆长度很长时数据传输线必须有终点,并且分支长度尽可能的短。正确的终端需要终端电阻RT匹配,其值为传输线的特性阻抗。
使用高数据速率时,只能使用较短线缆。使用低数据速率时,可以使用较长的线缆。对应低速率应用,电缆的直流电阻通过在电缆压降增加了噪声裕量,限制了电缆长度。使用高速率应用时,电缆的交流效应限制了信号质量,限制电缆长度。
错误恢复事项属于LLC层功能,其他均属于MAC功能,LLC层主要包括:接收消息的过滤,过载通知,错误恢复功能。
当设备连接到主机时,按照以下顺序进行枚举:
关于QSPI的间接模式,我们需要了解:
在间接模式下,通过写入 QUADSPI 寄存器来触发命令;并通过读写数据寄存器来传输数据,就如同对待其他通信外设那样。
若 FMODE = 00,则 QUADSPI 处于间接写入模式,字节在数据阶段中发送到 Flash。
若 FMODE = 01,则 QUADSPI 处于间接读取模式,在数据阶段中从 Flash 接收字节。
在间接写入模式下,固件写入数据 时,将在 FIFO 中增加数据。
在间接读出模式下,固件写入数据 时,将在 FIFO 中移除数据。
USB 采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个 USB 体系内仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的数据
包。USB 采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去向或者来源的设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌包作出响应。握手包表示了传输的成功与否。管道是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式的流管道(Stream Pipe)和有格式的信息管道(Message Pipe)。任何USB 设备一旦上电就存在一个信息管道,即默认的控制管道,USB 主机通过该管道来获取设备的描述、配置、状态,并对设备进行配置。USB 设备连接到 HOST 时,HOST 必须通过默认的控制管道对其进行枚举,完成获得其设备描述、进行地址分配、获得其配置描述、进行配置等操作方可正常使用。USB 设备的即插即用特性即依赖于此。
CMD5和CMD41是用来初始化设备的CMD,CMD52和CMD53是用来读取数据的,但是CMD52一次只能读一个字节,CMD53可以一次读取多个字节或者多个块。
USB协议使用PID 表征了数据包的类型,分为令牌(Token)、数据(Data)、握手(Handshacke)以及特殊包4 大类,共16 种类型的PID。
CAN通信是通过以下5种类型的帧进行的:
数据帧,遥控帧,错误帧,过载帧,帧间隔
所有PCI设备必须支持基本的配置空间地址范围为0x00-0x3f,共64个字节。
CAN总线电气特性规定:
显性电平表示逻辑“0”,此时CAN_H 电平比CAN_L 高。隐形电平表示,逻辑“1”,此时CAN_H 和CAN_L 电位差为0。CAN 总线上没有节点传输数据的时候一直处于隐性状态。
总线上只要有1个节点驱动为显性,则总线表现为显性位电平,逻辑解析为“0”。只有总线上的各节点都不将总线驱动成显性电平,总线才表现为隐形位对应的电平,逻辑解析为“1”
主动错误状态是可以正常参加总线通信的状态。
处于被动错误状态是可以正常参加总线通信的状态。处于被动错误状态的单元即使检测出错误,而其它处于主动错误状态的单元如果没发现错误,整个总线也被认为是没有错误的。
总线关闭态是不可以参加总线上通信的状态。信息的接收和发送均被禁止。
PCIe总线采用了串行连接方式,并使用数据包(Packet)进行数据传输,采用这种结构有效去除了在PCI总线中存在的一些边带信号,如INTx和PME#等信号。在PCIe总线中,数据报文在接收和发送过程中,需要通过多个层次,包括事务层、数据链路层和物理层。
硬件同步和再同步遵从如下规则
(1) 1 个位中只进行一次同步调整。
(2) 只有当上次采样点的总线值和边沿后的总线值不同时,该边沿才能用于调整同步。
(3) 在总线空闲且存在隐性电平到显性电平的边沿时,则一定要进行硬件同步。
(4) 在总线非空闲时检测到的隐性电平到显性电平的边沿如果满足条件(1)和(2),将进行再同步。但还要满足下面条件。
(5) 发送单元观测到自身输出的显性电平有延迟时不进行再同步。
(6) 发送单元在帧起始到仲裁段有多个单元同时发送的情况下,对延迟边沿不进行再同步。
数据帧是can通信实际应用中最多的帧,数据帧的每段作用如下:
帧起始:标准、扩展格式相同,表示帧开始的段。1 个位的显性位。
仲裁段:表示数据的优先级的段。标准格式和扩展格式在此的构成有所不同。
控制段:控制段由 6 个位构成,表示数据段的字节数。标准格式和扩展格式的构成有所不同。
数据段:标准、扩展格式相同,数据段可包含 0~8 个字节的数据。从MSB(最高位)开始输出。
CRC 段:标准/扩展格式相同,CRC 段是检查帧传输错误的帧。由15 个位的CRC 顺序*1 和1 个位的CRC 界定符(用于分隔的位)构成。
ACK 段:ACK 段用来确认是否正常接收。由ACK 槽(ACK Slot)和ACK 界定符2 个位构成。
帧结束:帧结束是表示该该帧的结束的段。由 7 个位的隐性位构成。
SDIO总线的几根线:
1. CLK信号:HOST给DEVICE的时钟信号.2. CMD信号:双向的信号,用于传送命令和反应。3. DAT0-DAT3 信号:四条用于传送的数据线。4. VDD信号:电源信号。5. VSS1,VSS2:电源地信号。
在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线
PID 表征了数据包的类型,分为令牌(Token)、数据(Data)、握手(Handshacke)以及特殊包4 大类,共16 种类型的PID。
对于令牌包来说,PID 之后是7 位的地址和4 位的端点号。令牌包没有数据域,以5 位的CRC 校验和结束。SOF 是一类特殊的令牌包,PID 后跟的是11 位的帧编号。
对于数据包来说,PID 之后直接跟数据域,数据域的长度为N 字节,数据域后以16 位的CRC 校验和结束。
握手包仅有PID 域,没有数据也没有校验和。
特殊的包一般用于分离传输中。
PMCR寄存器用来获取连接设备的物理属性,PMCSR寄存器完成电源状态迁移,Link Status寄存器查看PCIE链路状态,Link Capability寄存器描述PCIE链路的属性。
RS485需要 2个终端匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般为 120Ω)。没有特性阻抗的话,当所有的设备都静止或者没有能量的时候就会产生噪 声,而且线移需要双端的电压差。没有终接电阻的话,会使得较快速的发送端产生多个数据信号的边缘,导致数据传输出错。接口电平是物理电气特性,和匹配电阻没关系,扩展节点数和芯片能力相关,和匹配电阻无关
考察IIC协议对接口电平时序的理解,开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。在IIC通信中,起始信号是必须的,结束信号和应答信号都不是必需的。
遥控帧和数据帧是不同的。
遥控帧由 6 个段组成。遥控帧没有数据帧的数据段。没有数据段的数据帧和遥控帧是有区别的,遥控帧的RTR 位为隐性位,没有数据段, 没有数据段的数据帧和遥控帧可通过RTR 位区别开来。遥控帧的数据长度码以所请求数据帧的数据长度码表示。没有数据段的数据帧可用于各单元的定期连接确认/应答、或仲裁段本身带有实质性信息的情况下。
在汽车行业开发中,各大汽车厂商遵循以下标准:
Class A:通信速度10kbps,主要应用于车身系统,包括灯光类、电动窗、门锁、电动椅、遥控门锁等,属于低速CAN。
Class B:通信速度10-125kbps,主要用于状态信息系统,包括电子仪表、驾驶信息、自动空调、故障诊断等,属于高速CAN。
Class B:通信速度125kbps-1Mbps,主要用于实时控制系统,包括发动机控制、变速器控制、刹车控制、悬挂控制、ABS等,属于高速CAN。
Class D:通信速度5Mbps以上,主要用于 多媒体。属于高速CAN。
这段配置空间shi PCIE 总线非常重要的一段配置空间,主要存放MSI中断机制和电源管理相关的Capability结构.
关于位错误,需要注意:
位错误由向总线上输出数据帧、遥控帧、错误帧、过载帧的单元和输出ACK 的单元、输出错误的单元来检测。
在仲裁段输出隐性电平,但检测出显性电平时,将被视为仲裁失利,而不是位错误。
在仲裁段作为填充位输出隐性电平时,但检测出显性电平时,将不视为位错误,而是填充错误。
发送单元在ACK 段输出隐性电平,但检测到显性电平时,将被判断为其它单元的ACK 应答,而非位错误。
输出被动错误标志(6 个位隐性位)但检测出显性电平时,将遵从错误标志的结束条件,等待检测出连续相同6 个位的值(显性或隐性),并不视为位错误。
关于错误帧,基本概念如下:
错误标志包括主动错误标志和被动错误标志两种, 主动错误标志由6 个位的显性位构成。
错误标志包括主动错误标志和被动错误标志两种, 被动错误标志由6 个位的隐性位构成。
错误界定符由 8 个位的隐性位构成。
处于主动错误状态的单元检测出错误时输出主错误标志,处于被动错误状态的单元检测出错误时输出被动错误标志
QSPI接口协议规定该接口可以在以下三种模式下工作:
① 间接模式:使用 QSPI 寄存器执行全部操作;
② 状态轮询模式:周期性读取外部 Flash 状态寄存器,而且标志位置 1 时会产生中断(如擦除或烧写完成,会产生中断);
③ 内存映射模式:外部 Flash 映射到微控制器地址空间,从而系统将其视作内部存储器;
PCIE总线上的峰值带宽计算公式为总线频率 * 数据位宽 * 2,所以总线带宽为2.5322=160 GT/s
关于USB,USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA 的电流。USB 体系包括“主机”、“设备”以及“物理连接”三个部分,一个USB 系统中仅有一个USB 主机。USB 体系采用分层的星型拓扑来连接所有USB 设备。
过载帧的主要特性如下:
过载标志由6 个位的显性位构成。过载标志的构成与主动错误标志的构成相同。
过载界定符由8 个位的隐性位构成。过载界定符的构成与错误界定符的构成相同。
同步段:多个连接在总线上的单元通过此段实现时序调整,同步进行接收和发送的工作。由隐性电平到显性电平的边沿或由显性电平到隐性电平边沿最好出现在此段中。
传播时间段:用于吸收网络上的物理延迟的段。所谓的网络的物理延迟指发送单元的输出延迟、总线上信号的传播延迟、接收单元的输入延迟。这个段的时间为以上各延迟时间的和的两倍。
相位缓冲段1和相位缓冲段2作用是一样的:当信号边沿不能被包含于SS 段中时,可在此段进行补偿。由于各单元以各自独立的时钟工作,细微的时钟误差会累积起来,该段可用于吸收误差。因时钟频率偏差、传送延迟等,各单元有同步误差。再同步补偿宽度 为补偿此误差的最大值。
下一篇:单链表-----重置版