精华内容
下载资源
问答
  • 通信方式、通信接口、通信总线、通信协议的关系
    千次阅读
    2021-05-10 09:45:42

    通信方式


    通信方式是指通信双方之间的工作方式或信号传输方式。

    终端与其他设备(例如其他终端、计算机和外部设备)通过数据传输进行通信,根据数据的传输方式,有串行通信和并行通信。

    串行通信又称为点对点通信,对于点对点之间的通信,
    根据数据的同步方式,又分为异步传送和同步传送两种方式。
    根据数据的传输方向与时间关系,又可分为单工通信、半双工通信及全双工通信三种方式。
    在这里插入图片描述


    通信接口


    接口指的是输入输出的硬件接口,实现通信的接口就是通信接口。

    根据数据的传输方式有串行通信和并行通信两种通信方式。实现串行通信的接口就是串行接口,即串口。实现并行通信的接口就是并行接口,即并口。


    通信总线


    总线(Bus)是一组传输通道,是各种逻辑器件构成的传输数据的通道,一般由数据线、地址线、控制线等构成。

    从广义上说,计算机通信方式按传输特点可以分为并行通信和串行通信,相应的通信总线被称为并行总线和串行总线。


    总线的分类:
    按功能分,总线可分为内部总线、系统总线和I/O总线。
    按时序控制方式分,总线可分为同步总线和异步总线。
    按传送的数据格式分,总线可分为串行总线和并行总线。


    接口和总线都有相互连接的含义,但前者强调的是两个部件之间的连接,而后者更注重于多个部件的互连;前者强调信号和数据形式的转换,后者更注重可扩展性、灵活性、规范化,许多总线都有相应的规范和标准。接口与总线有时也不加区分,合称为总线接口或接口总线等。


    通信协议


    协议就是传输数据的规则。 协议即总体框架,定义接口设备、器件及信号、总线及通道之间需要满足的关系,即要实现信号的传输,所有这些组成成员必须通力合作,各自满足协议要求的各种必要条件。



    接口、总线、协议之间的关系


    接口 - 规定硬件接口和电平标准
    总线 - 规定信号线、功能以及工作工程
    协议 - 规定接口、总线、和传输规则

    在这里插入图片描述

    总线是一组传输通道,是各种逻辑器件构成的传输数据的通道,一般由由数据线、地址线、控制线等构成。接口是一种连接标准,又常常被称之为物理接口。
    协议就是传输数据的规则。协议即总体框架,定义接口设备、器件及信号、总线及通道之间需要满足的关系,即要实现信号的传输,所有这些组成成员必须通力合作,各自满足协议要求的各种必要条件。

    在这里插入图片描述

    微机系统采用总线结构。系统中主要部件通过系统总线互相连接、实现数据传输,并使危机系统具有组态灵活、易于扩展等诸多有点。
    广泛应用的总线都实现了标准化,便于互连各个部件时遵循共同的总线规范。接口的任一方只需要根据总线标准的要求来实现和完成接口的功能,而不需要了解对方的接口方式。总线接口也是一种通用的接口技术。


    通信总线往往指的是硬件。而通信协议则是跑在硬件上的软件。通信总线和通信协议通常是对应的,通信总线需要跟通信协议相匹配才能通信。

    每种总线能支持的最大速率(波特率)和抗干扰性等特点都是不一样的,所以在应用中首先要需要根据实际的环境来选择合适的通信总线,如CAN,SPI,SCI,I2C等,当选择完总线类型后就需要根据所要传输的数据大小或类型来定义相应的协议。所以不同的总线类型要搭配不同的协议,但是协议里数据的格式可以一样,只是外面的框架要按相应的总线类型来匹配。

    可以这么理解:总线是通过标准规定的,实际应用需要按照总线的相关标准去使用,而协议可以是我们自己定义的,协议里的内容可以根据需要自行定义,但是协议制定的前提是要符合所需要使用的总线规范。





    声明:[笔记整理] 内容整理自网络,如有错误欢迎指正,版权归原作者所有,若有侵权请联系删除。

    更多相关内容
  • 基于STM32的航空通信总线切换器设计.pdf
  • 当前配电自动化系统中普遍采用的通信总线方式,总线末端和输配电设备二 次控制电缆往往混合敷设,由于施工接线错误或者系统干扰,容易在通信总线上感应产生较 高的过电压,使通信总线受到干扰甚至损坏,本文介绍一...
  • 总线通信中,总线设备中的MCU需要连接一个总线收发器接入到总线网络中,如果MCU的供电电压与收发器电压不匹配时,会出现什么情况?本文将以CAN总线为例从接口电平的角度为你解析电平匹配的重要性。  CMOS电平 ...
  • 当前配电自动化系统中普遍采用的通信总线方式,总线末端和输配电设备二次控制电缆往往混合敷设,由于施工接线错误或者系统干扰,容易在通信总线上感应产生较高的过电压,使通信总线受到干扰甚至损坏,本文介绍一种CPD总线...
  • 在介绍C8051F串行通信总线SMBus的特点及功能的基础上,重点介绍了其协议、总线仲裁、寄存器以及C8051F02x与多个EEPROM串行通信的实现,并给出了部分应用程序。
  • 电信设备-一种串行数据通信总线的检错方法和串行数据通信总线.zip
  • 通信总线-现场总线-CAN

    千次阅读 2019-09-25 10:48:10
    摘要:博主在网上搜寻了大量关于CAN总线的博客,发现没有一篇能像这篇博客一样层次分明、脉络清晰,而且知识点面面俱到。这里向JawSoW表示感谢,感谢他花费大量时间心血写下本文。JawSoW这种博客写作的态度值得我们...

    摘要:博主在网上搜寻了大量关于CAN总线的博客,发现没有一篇能像这篇博客一样层次分明、脉络清晰,而且知识点面面俱到。这里向JawSoW表示感谢,感谢他花费大量时间心血写下本文。JawSoW这种博客写作的态度值得我们学习,唯一遗憾的是每一篇都花费巨大时间。

    该文章对FD-CAN的描述不是很多,我会在文章最后进行补充。

    原文转载链接:https://blog.csdn.net/cheatscat/article/details/82886889

     

    概述


     

    CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而广泛应用于工业自动化、船舶、医疗等其它领域。相比于其它网络类型,如局域网(LAN, Local Area Network)、广域网(WAN, Wide Area Network)和个人网(PAN, Personal Area Network)等,CAN 更加适合应用于现场控制领域,因此得名。

    CAN总线是一种多主控(Multi-Master)的总线系统,它不同于USB或以太网等传统总线系统是在总线控制器的协调下,实现A节点到B节点大量数据的传输,CAN网络的消息是广播式的,亦即在同一时刻网络上所有节点侦测的数据是一致的,因此比较适合传输诸如控制、温度、转速等短消息。

    CAN起初由BOSCH提出,后经ISO组织确认为国际标准,根据特性差异又分不同子标准。CAN国际标准只涉及到 OSI(开放式通信系统参考模型 )的物理层数据链路层。上层协议是在CAN标准基础上定义的应用层,市场上有不同的应用层标准。

     

    发展历史


     

    • 1983年,BOSCH开始着手开发CAN总线;
    • 1986年,在SAE会议上,CAN总线正式发布;
    • 1987年,Intel和Philips推出第一款CAN控制器芯片;
    • 1991年,奔驰 500E 是世界上第一款基于CAN总线系统的量产车型;
    • 1991年,Bosch发布CAN 2.0标准,分 CAN 2.0A (11位标识符)和 CAN 2.0B (29位标识符);
    • 1993年,ISO发布CAN总线标准(ISO 11898),随后该标准主要有三部分:

                          ISO 11898-1:数据链路层协议
                          ISO 11898-2:高速CAN总线物理层协议
                          ISO 11898-3:低速CAN总线物理层协议

    注意:ISO 11898-2和ISO 11898-3物理层协议不属于 BOSCH CAN 2.0标准。

    • 2012年,BOSCH发布 CAN FD 1.0 标准(CAN with Flexible Data-Rate),CAN FD定义了在仲裁后确使用不同的数据帧结构,从而达到最高 12Mbps 数据传输速率。CAN FD与CAN 2.0协议兼容,可以与传统的CAN 2.0设备共存于同样的网络

     

    标准化


     

    CAN标准分为底层标准(物理层和数据链路层)和上层标准(应用层)两大类。CAN底层标准主要是 ISO 11898 系列的国际标准,也就是说不同厂商在CAN总线的物理层和数据链路层定义基本相同;而上层标准,涉及到例如流控制、设备寻址和大数据块传输控制等,不同应用领域或制造商会有不同的做法,没有统一的国际标准。

     

    底层标准

    CAN底层标准涵盖OSI模型中的物理层和数据链路层,底层标准包括:

    • ISO 11898-1: 2015 定义CAN总线的数据链路层(DLL)和电气信号标准,描述CAN总线的基本架构,定义不同CAN总线设备在数据链路层通信方式,详细说明逻辑链接控制(LLC)和介质访问控制(MAC)子层部分;
    • ISO 11898-2: 2003 定义高速CAN总线(HS-CAN)物理层标准,最高数据传输速率 1Mbps ,应用为两线平衡式信号(CAN_H, CAN_L),HS CAN是汽车动力和工业控制网络中应用最为广泛的物理层协议;
    • ISO 11898-3: 2006 定义低速CAN总线(LS-CAN, Fault-Tolerant CAN)物理层标准,数据传输速率在 40Kbps ~ 125Kbps 。Fault-Tolerant是指总线上一根传输信号失效时,依靠另外的单根信号也可以通信,LS CAN主要应用于汽车车身电控单元之间通信;
    • ISO 11898-4: 2004 定义CAN总线中的时间触发机制(Time-Triggered CAN, TTCAN),定义与ISO 11898-1 配合的帧同步实体,实现汽车ECU之间基于时间触发的通信方式。注意,ISO 11898-1 是基于事件驱动(Event-Driven)的通信,它对于高负荷总线上,尤其是低优先级的消息会造成较大的延迟,而基于时间触发的ISO 11898-4 标准的初衷也正是为解决该问题,确保CAN总线上可靠的消息传输;
    • ISO 11898-5: 2007 对ISO 11898-2高速CAN总线的补充,并参照ISO 8802-2,定义在总线闲置时的节电特性;
    • ISO 11898-6: 2013 对ISO 11898-2 和 ISO 11898-5 的补充,并参照ISO 8802-2,定义使用可配置的帧实现选择性唤醒总线的机制;
    • ISO 16845-1: 2004 定义测试符合ISO 11898-1标准CAN应用的方法和条件;
    • ISO 16845-2: 2014 定义包括特定功能下可以选择性唤醒总线的CAN收发器的测试实例和测试要求,也称为CAN总线的一致性测试

    CAN总线底层标准与ISO/OSI模型的对应关系,如图1所示。对于媒体专用接口(Medium Dependent Interface, MDI),没有统一的国际标准。CiA DS-102 (CiA: CAN in Automation )仅定义使用专用连接器(DB9),并对PIN定义作出一定规范。

    图1. CAN总线标准

     

    上层标准

    虽然底层标准相同,不同应用领域和组织会制定不同的上层标准。有的厂商开发并推广其应用层标准,在某些领域得以广泛应用。对于汽车行业来说,几乎每家厂商都有自己的CAN上层标准。比较流行的有工业自动化领域 CiA 的 CANopen ,Rockwell 的 DeviceNet;嵌入式控制领域 Kvaser 的 CAN Kingdom;智能设备控制 Honeywell 的 SDS;汽车诊断 ISO 14229 定义的 UDS,和中重型汽车CAN总线标准 SAE J1939 。如表1示。

    表1. CAN上层标准举例

     

    总线特点


     

    • 符合OSI开放式通信系统参考模型;
    • 两线式总线结构,电气信号为差分式;
    • 多主控制。在总线空闲时,所有的单元都可开始发送消息,最先访问总线的单元可获得发送权;多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权;
    • 消息报文不包含源地址或者目标地址,仅通过标识符表明消息功能和优先级;
    • 基于固定消息格式的广播式总线系统,短帧结构;
    • 事件触发型。只有当有消息要发送时,节点才向总线上广播消息;
    • 可以通过发送远程帧请求其它节点发送数据;
    • 消息数据长度 0~8 Byte;
    • 错误检测功能。所有节点均可检测错误,检测处错误的单元会立即通知其它所有单元;
    • 发送消息出错后,节点会自动重发;
    • 故障限制。节点控制器可以判断错误是暂时的数据错误还是持续性错误,当总线上发生持续数据错误时,控制器可将节点从总线上隔离;
    • 通信介质可采用双绞线、同轴电缆和光导纤维,一般使用最便宜的双绞线;
    • 理论上,CAN总线用单根信号线就可以通信,但还是配备了第二根导线,第二根导线与第一根导线信号为差分关系,可以有效抑制电磁干扰;
    • 在40米线缆条件下,最高数据传输速率 1Mbps;
    • 总线上可同时连接多个节点,可连接节点总数理论上是没有限制的,但实际可连接节点数受总线上时间延迟及电气负载的限制;
    • 未定义标准连接器,但经常用9脚 DSUB

     

    应用


     

    在当今汽车应用领域,车内电控单元(Electrical Control Unit, ECU)可能多达 70 个,除了引擎控制单元(Engine Control Unit, ECU )外,还存在传动控制、安全气囊、ABS、巡航控制、EPS、音响系统、门窗控制和电池管理等模块,虽然某些模块是单一的子系统,但是模块之间的互连依然非常重要。例如,有的子系统需要控制执行器和接收传感器反馈,CAN总线可以满足这些子系统数据传输的需求。汽车内子模块的总线互连架构使得软件可以更轻易地实现安全、经济和便利等新特性,相比传统汽车网络架构中模块单元直接连接更加经济。 CAN总线实现汽车内互连系统由传统的点对点互连向总线式系统的进化,大大降低汽车内电子系统布线的复杂度,如图2所示。

    背景:随着电气化和智能化,汽车上的电子单元越来越多,电控单元组网需求也日渐迫切!

    福特Fusion汽车 @2013

    -70个ECU单元
    -75个传感器
    -150个激励器

    自动驾驶汽车 @2030 -Prediction

    -120个ECU单元
    -100个传感器
    -200个激励器

    图2. 传统网络结构 VS 总线式结构

     

    在 VW 的定义(SSP 269)中,根据应用范围将车内CAN总线分为三类:

    • Convenience CAN /舒适CAN网络,主要控制车门窗、空调等设备,最高传输速度100 kbps
    • Powertrain CAN /动力CAN网络,主要控制动力相关设备,如发动机、制动、ABS等,最高传输速度500 kbps
    • Infotainment CAN /信息娱乐CAN网络,主要控制收音机、电话和导航等设备,最高传输速度100 kbps

    根据数据传输速度不同CAN总线分两类:高速CAN(ISO 11898-2)和低速CAN(ISO 11898-3)。

    高速CAN(按BOSCH说法,也叫CAN-C),数据速率在 125kbps ~ 1Mbps,应用在实时性要求高的节点,如引擎管理单元、电子传动控制、ESP和仪表盘等;低速CAN(CAN-B),数据速率在 5kbps ~ 125kbps,应用在实时性要求低的节点,主要在舒适和娱乐领域,如空调控制、座椅调节、灯光、视镜调整等,这些节点对实时性要求不高,而且分布较为分散,线缆较易收到损坏,低速CAN的传输速度即可满足要求,而且单根线缆也可以工作,很好地适应了以上需求。不同速度类型的CAN总线设备不能直接连在同一路总线上,它们之间需要通过网关隔离。

    CAN总线在汽车诊断领域的应用也非常广泛,ECU直接挂载在总线上,可以很快地获取诊断所需的信息。传统的汽车诊断接口(如KWP2000)应用逐渐减少。

    图2a示意了汽车内总线系统及电子设备的逻辑分布,总线系统包括 CAN、LIN、FlexRay 和 MOST 。注意,车载以太网在图中未列出,但它的应用日渐广泛。以上不同类型和速度的总线,通过网关 Gateway 模块相互通信。(图片来源:链接

    图2a. 汽车内总线系统举例

     

    局限性


     

    • 由于CAN总线仲裁的特点,即使往总线上周期性发送消息,也不能保证节点可以确定(周期) 地收到消息,CAN不适合对时间特别敏感的应用;
    • 最高传输速率只有 1Mbps ,对于汽车自动驾驶应用的数据传输,或者视频音频传输带宽不足。为解决这方面的需求,CAN FD 速度有所上升,另外还有 MOSTLVDS 和以太网等;
    • 对于简单的应用,高成本的CAN总线虽然可靠性很高,但有点浪费。LIN 总线相比CAN具有成本优势,更适合应用于车窗座椅空调等设备
       

     

    电路基础


     

    硬件拓扑

    连接在CAN总线上的设备叫做节点设备(CAN Node),CAN网络的拓扑一般为线型。线束最常用为非屏蔽双绞线(UTP),线上传输为对称的电平信号(差分)。图3示为CAN总线网络示意图,节点主要包括Host控制器收发器三部分。Host常集成有CAN控制器,CAN控制器负责处理协议相关功能,以减轻Host的负担。CAN收发器将控制器连接到传输媒介。通常控制器和总线收发器通过光耦或磁耦隔离,这样即使总线上过压,损坏收发器,控制器和Host设备也可以得到保护。

    图3. CAN总线节点示意图


    高速CAN总线最高信号传输速率为1Mbps,支持最长距离 40mISO 11898-2 规定要求在高速CAN总线的两端安装端接电阻(RL)以消除反射,而低速CAN最高速度只有 125Kbps,因此 ISO 11898-3 没有要求端接。ISO 11898 规定的CAN总线上最多 32 个节点。实际应用中要考虑到CAN总线收发器的性能,以及工作的CAN网络是高速CAN还是低速CAN。在传输距离方面,由于距离越大,信号时延也越大,为确保消息的正确采样,总线上的信号速率相应也得下降,表2列出推荐的信号速率与距离的关系。

    表2. CAN总线长度与信号速率关系(推荐)

     

    收发器

    CAN收发器包括 CANH 和 CANL 两根信号,CANH和CANL信号采用差分电平,这样可以取得更好的电磁兼容效果。CAN总线物理传输媒介只需要两根线。

    前面的标准部分有介绍,CAN总线分高速CAN和低速CAN,收发器因之也分为高速CAN收发器(1Mbps)和低速CAN收发器(125Kbps)。低速CAN也叫 Fault Tolerant CAN ,指的是即使总线上一根线失效,总线依然可以通信。图4示例高速CAN收发器的基本电路结构。当两个晶体管都关断时,CANH和CANL上电压相同,且都为 0.5*VCC ;而当两个晶体管都打开时,CANH 和 CANL 上即存在一定的压差,且压差与负载电阻值相关。ISO 11898-2 要求此时 CANH 和 CANL 压差在 2V 左右。

    CAN收发器的特性包括非常低的电磁辐射和很强的抗击共模噪声的能力。另外,CAN收发器可以提供高达 8KV 的ESD保护,在电路设计中可以在收发器附近增加共模电感以进一步降低电磁辐射(图5)。

    图4. CAN总线收发器(MCP2551)
    图5. 共模电感降低辐射

     

    信号电平

    高速CAN和低速CAN总线在物理层信号电平上定义有所不同。图6和图7表示高速和低速CAN总线上信号电平与总线逻辑的对应关系。

    高速CAN,定义 CANH 和 CANL 电压相同(CANH = CANL = 2.5V)时为逻辑“1”,CANH和CANL 电压相差 2V(CANH = 3.5V, CANL = 1.5V) 时为逻辑“0”。高速CAN收发器在共模电压范围内(-12V ~ 12V),将CANH和CANL电压相差大于 0.9V 解释为显性状态(Dominant),而将CANH和CANL电压相差小于 0.5V 解释为为隐性状态(Recessive)。收发器内部有迟滞电路可以降低干扰。

    低速CAN,定义CANH和CANL电压相差 5V (CANH = 0V, CANL = 5V)时为逻辑“1”,相差 2.2V (CANH = 3.6V, CANL = 1.4V)时为逻辑“0”。

    在CAN总线上,逻辑“0”和“1”之间显著的电压差是总线可靠通信的保证。参照上面的描述,CAN总线上两种电平状态分别为:

    • 显性(Dominant ): 0
    • 隐性(Recessive ): 1

    CAN总线的信号电平具有线与特性,即显性电平(0)总是会掩盖隐性电平(1)。如果不同节点同时发送显性和隐性电平,总线上表现出显性电平(0),只有在总线上所有节点发送的都是隐性电平(1)时,总线才表现为隐性。线与特性是CAN总线仲裁的电路基础。详细仲裁过程见下文“仲裁机制”部分。

    图6. 高速CAN信号电平( ISO 11898-2)

     

    图7. 低速CAN信号电平( ISO 11898-3)

     

    连接器

    在前文有提到,业界只规定了9 Pin D-Sub 类型的CAN总线连接器,其信号定义如图8所示。

    图8. CAN 9 Pin D-Sub引脚定义

     

     

    三种CAN标准物理层比较


     

    除了上文介绍的高速CAN和低速CAN外,还有标准定义另外一种CAN物理层结构,即 Single Wire CAN。单线CAN可以减少一根传输线,但是要求节点间有良好的共地特性(相当于第二根信号线)。单线CAN的信号抗干扰能力相对较弱,在设计中需要提高信号幅度以增加信噪比,如此又会让它自身的辐射能力增加,因此必须降低其信号传输速率以达到电磁兼容的要求。综上,单线CAN仅适合应用在低速的车身电子单元、舒适及娱乐控制领域。低速CAN总线由于信号速度不高,在一根信号线失灵的情况下,仍可工作于单线模式。

    三种CAN总线物理层的对比如表3列出。总线连接拓扑图如图9,对于端接,高速CAN端接是在总线两端,而低速CAN和单线CAN的端接都是在各节点位置。

    表3. 三种CAN物理层标准比较
    图9. 三种CAN总线物理层的比较

     

    通信原理


     

    Multi-Master

    安全敏感的应用,比如汽车动力,对通信系统的可靠性要求很高。将总线工作正常与否归结到单一节点是极其危险的,比较合理的方案是对总线接入的去中心化,亦即每个节点都有接入总线的能力。这也是CAN总线采用多主控(Multi-Master)线性拓扑结构的原因。在CAN总线上,每个节点都有往总线上发送消息的能力,而且消息的发送不必遵从任何预先设定的时序,通信是事件驱动的。只有当有新的信息传递时,CAN总线才处于忙的状态,这使得节点接入总线速度非常快。CAN总线理论最高数据传输速率为1Mbps,对于异步事件反应迅速,基本上对于毫秒级的实时应用没有任何问题。

     

    寻址机制

    不同于其它类型的总线,CAN总线不设定节点的地址,而是通过消息的标识符(Identifier)来区别消息。CAN总线消息是广播式的,也就是说在同一时刻所有节点都检测到同样的电平信号。接受节点通过识别消息中的标识符,与该节点预设的过滤规则对比,如果满足规则就接收这条消息,发送应答,否则就忽略这条消息,关于这部分介绍见下文“条件接收”部分。这种机制虽然会增加消息帧的复杂度(增加标识符),但是节点在此情况下可以无须了解其它节点的状况,而相互间独立工作,在总线上增加节点时仅须关注消息类型,而非系统上其它节点的状况。这种以消息标识符寻址的方式,让在总线上增加节点变得更加灵活。

     

    CSMA/CD+AMP

    CAN总线通信原理可简单描述为多路载波侦听+基于消息优先级的冲突检测和仲裁机制(CSMA/CD+AMP),CSMA(Carrier Sense Multiple Access )指的所有节点必须都等到总线处于空闲状态时才能往总线上发送消息;CD+AMP(Collision Detection + Arbitration on Message Priority)指的是如果多个节点往总线上发送消息时,具备最高优先级(标识符最小)的消息获得总线占有权。

     

    帧分类


     

    CAN总线定义四种帧类型,分别为数据帧远程帧错误帧过载帧。数据帧就是总线上传输用户数据的帧,其最高有效载荷是 8 Byte,除了有效载荷外,数据帧还包括必要的帧头帧位部分以执行CAN标准通信,比如消息标识符(Identifier)、数据长度代码、校验信息等。远程帧是用来向总线上其它节点请求数据的帧,它的帧结构与数据帧相似,只不过没有有效载荷部分;错误帧是表示通信出错的帧。数据帧和远程帧有标准格式和扩展格式两种格式。标准格式有 11 位的标识符 , 扩展格式有 29 位标识符。

    各种帧的用途分别为:

    • 数据帧:用于发送单元向接收单元传送数据的帧;
    • 远程帧:用于接收单元向具有相同标识符的发送单元请求数据的帧;
    • 错误帧:用于当检测出错误时向其它单元通知错误的帧;
    • 过载帧:用于接收单元通知其尚未做好接收准备的帧

     

    数据帧

    数据帧的帧结构如图10所示,图中示例标准数据帧(Standard)和扩展数据帧(Extended)两种格式。各字段定义及长度分别为:

    • SOF:表示数据帧开始;(1 bit)
    • Identifier:标准格式11 bit,扩展格式29 bit包括Base Identifier(11 bit)和Extended Identifier(18 bit),该区段标识数据帧的优先级,数值越小,优先级越高;
    • RTR:远程传输请求位,0时表示为数据帧,1表示为远程帧,也就是说RTR=1时,消息帧的Data Field为空;(1 bit)
    • IDE: 标识符扩展位,0时表示为标准格式,1表示为扩展格式;(1 bit)
    • DLC:数据长度代码,0~8表示数据长度为0~8 Byte;(4 bit)
    • Data Field:数据域;(0~8 Byte)
    • CRC Sequence:校验域,校验算法G(x) = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1;(15 bit)
    • DEL:校验域和应答域的隐性界定符;(1 bit)
    • ACK:应答,确认数据是否正常接收,所谓正常接收是指不含填充错误、格式错误、 CRC 错误。发送节点将此位为1,接收节点正常接收数据后将此位置为0;(1 bit)
    • SRR:替代远程请求位,在扩展格式中占位用,必须为1;(1 bit)
    • EOF:连续7个隐性位(1)表示帧结束;(7 bit)
    • ITM:帧间空间,Intermission (ITM),又称Interframe Space (IFS),连续3个隐性位,但它不属于数据帧。帧间空间是用于将数据帧和远程帧与前面的帧分离开来的帧。数据帧和远程帧可通过插入帧间空间将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间空间。
    图10. CAN标准格式和扩展格式的数据帧/远程帧格式

     

    远程帧

    一般地,数据是由发送单元主动向总线上发送的,但也存在接收单元主动向发送单元请求数据的情况。远程帧的作用就在于此,它是接收单元向发送单元请求发送数据的帧。远程帧与数据帧的帧结构类似,如上图10所示。远程帧与数据帧的帧结构区别有两点:

    • 数据帧的 RTR 值为“0”,远程帧的 RTR 值为“1
    • 远程帧没有数据块

    远程帧的 DLC 块表示请求发送单元发送的数据长度(Byte)。当总线上具有相同标识符的数据帧和远程帧同时发送时,由于数据帧的 RTR 位是显性的,数据帧将在仲裁中赢得总线控制权。

     

    错误帧

    用于在接收和发送消息时检测出错误时,通知错误的帧。错误帧由错误标志和错误界定符构成。错误帧的帧结构如图11示。

    • 错误标志:6-12 个显性/隐性重叠位

                   主动错误标志(6个显性位): 处于主动错误状态的单元检测出错误时输出的错误标志
                   被动错误标志(6个隐性位): 处于被动错误状态的单元检测出错误时输出的错误标志

    • 错误界定符:8 个隐性位
    图11. 错误帧的帧结构

     

    过载帧

    过载帧是用于接收单元通知发送单元它尚未完成接收准备的帧。在两种情况下,节点会发送过载帧:

    • 接收单元条件的制约,要求发送节点延缓下一个数据帧或远程帧的传输;
    • 帧间空间(Intermission)的 3 bit 内检测到显性位

    每个节点最多连续发送两条过载帧。过载帧由过载标志和过载界定符(8 个隐性位)构成。数据帧的帧结构如图12所示。

    图12. 过载帧的帧结构

     

    仲裁机制


     

    如果多个节点同时往总线上发送消息,总线的使用权是通过消息帧标识符的逐位仲裁机制决定的,在仲裁过程中消息是不会丢失的。这里的不会丢失的意思是指仲裁完成后,获得总线控制权的消息内容没有被仲裁过程篡改,将继续在总线上发送没有传输完的消息。
    在CAN总线上,标识符值越小,消息的优先级越高。标识符全零的消息,由于它将总线电平保持在显性的时间最长,因此优先级最高。CAN总线的仲裁机制如图13所示,几点说明:

    • Wire-AND Bus Logic:只有节点发送的全是隐性,总线电平才表现为隐性;
    • Arbitration Logic:所有发送节点在发送数据的同时,也检测总线上的电平状态。如果总线电平状态与它发送的电平状态一致,则继续发送(Next);如果发送为显性,总线电平状态为隐性,则传输出现故障(Fault);如果发送为隐性,总线电平状态为显性,则该节点退出对总线占用权的竞争(Stop);
    • 节点A和节点C同时向总线上发送数据,在仲裁阶段,逐位对比总线上电平与自身发送的电平,在标识符的第四位(ID7),节点C检测到总线上电平与其自身发送电平不一致,它自动退出对总线的竞争,节点A则继续发送数据
    图13. CAN总线仲裁机制

     

    如上介绍,CAN总线上的逐位仲裁机制与 I2C 总线的仲裁都应用到线与逻辑的电路基础,不同的是I2C的仲裁只是在主机间进行,而CAN总线没有主从机的概念。另外I2C的消息本身是不分优先级的;CAN消息则是带优先级,有的消息出身高贵(标识符值越小),在仲裁中总会取胜。

    为消息划分优先级比较适合于实时控制系统,这样可以确保重要的信息优先发送,相对次要的消息延迟发送,系统设计师应该根据应用的特点为不同消息确定不同的优先级(标识符),在类似 DeviceNet 这些规范组织的定义中,对于同样类型的消息,比如温度传感器,即使它们可能来自不同的供应商,但消息标识符是一致的。

    对于车身控制CAN网络(舒适+信息娱乐),其特点是消息标识符种类多,而且消息发送没有固定频率或规律,在此类应用的CAN控制器,例如 Freescale 的 MSCAN(Motorola Scalable Controller Area Network)的设计中,控制器内部包括 FIFO 寄存器,它将具有相同标识符的消息按顺序保存,从而避免接收缓冲器溢出。而对于动力系统控制的CAN网络,总线上的消息特点是速度快,但是存在一定规律,此类应用的CAN控制器,例如 Freescale 的 FlexCAN(CAN 2.0B-Compliant),它包括 16 ~ 64 个称为“mailbox”的接收缓冲器,运行时根据特定的过滤规则,将不同标识符的消息送到各自对应的 mailbox 。

     

    条件接收


     

    前面有提到消息在CAN总线上是广播式的,但并不是所有节点都会对总线上所有消息感兴趣。节点通过控制器中过滤码(Filter Code )和掩码(Mask Code),再检验总线上消息的标识符,来判断是否接收该消息(Message Filtering)。

    对于掩码,“1”表示该位与本节点相关,“0”表示该位与本节点不相关。举例如下:

    例1:仅接收消息标识符为00001567(十六进制)的帧

    • 设置过滤码为00001567
    • 设置掩码为1FFFFFFF

    节点检测消息的标识符的所有位(29位),如果标识符为00001567接收,否则舍弃。

    例2:接收消息标识符为00001567 到 0000156F 的帧

    • 设置过滤码为00001560
    • 设置掩码为1FFFFFF0

    节点检测消息的标识符的高25位,最低的4位则不care。如果标识符最高25位相同则接收,否则舍弃。

    例3:接收消息标识符为00001560 到 00001567 的帧

    • 设置过滤码为00001560
    • 设置掩码为1FFFFFF8

    节点检测消息的标识符的高26位,最低的3位则不care。如果标识符最高26位相同则接收,否则舍弃。

    例4:接收所有消息帧帧

    • 设置过滤码为0
    • 设置掩码为0

    节点接收总线上所有消息。

     

    应答机制


     

    应答位(ACK)用来表示节点已经收到有效的帧。任何节点如果准确无误地接收到帧,则要向总线上发送显性位,该显性位将掩盖发送节点输出的隐性位,使总线上表现为显性。如果发送节点检测应答位为隐性,那么说明没有节点收到有效帧。接收节点可能在应答位输出隐性表示它没有收到有效帧,但另外有收到有效帧的节点也可能输出显性表示它收到有效帧,这样总线上总体上表现为显性,发送节点也无从得知是否总线上所有节点都收到有效的帧。

     

    位填充


     

    CAN总线使用到的是非归零编码(NRZ),NRZ编码的优点是效率高,但却不易区分哪里是bit开始,哪里是bit结束。因此为确保在同步通信过程中有足够的电平跳变,规范中应用到位填充机制,即在每连续 5 个相同电平后插入 1个反相电平,接收节点在收到消息后自动将填充位删除。在帧内除了CRC界定符、ACK域和EOF外,其余部分均应用到位填充机制。在应用到位填充的域,检测到连续 6 个显性位或隐性位均视为报错。检测到错误后,节点将发出主动错误标志。注意如前文述,主动错误标志为连续6个显性位,它是不符合位填充规则的,因此检测到该电平的所有节点都会报错。
    位填充意味着实际传输的数据帧长度可能更长,图14示例位填充前后的数据帧的变化,紫色位是位填充增加的位,接收节点收到消息后会自动删除这些位。

    图14. 数据帧在位填充前后的比较

     

    错误检验


     

    完善的错误校验机制是CAN总线高可靠性的有效保证。CAN总线包括 5 种错误校验机制,其中 3 种在消息层面(Message Level),2 种在比特层面(Bit Level) 。如果消息出现五种错误中的任何一种,接收节点将不接收消息,并且产生错误帧通知发送节点重新发送消息,直到接收节点正确地收到消息。如果失效的节点持续不断地报错,导致总线挂死,那么在报错次数达到设定的上限时,它将被控制器从总线上移除(详见“故障限制”部分)。
    消息层面的错误校验机制体现在数据帧(图10)中的 CRC 校验域和 ACK 域。CRC校验域包括传输数据的 15 bit Checksum值和 1 bit 界定符。ACK域包括 1 bit ACK位和 1 bit 界定符。消息层面的校验还包括格式错误校验,格式错误校验会检查消息帧中必须为隐性的位,如果这些位表现为显性,那么节点将报格式错误。格式错误检查的隐性位包括SOF、EOF、ACK界定符和CRC界定符。
    在比特层面,发送节点在发送消息的同时会检测总线电平,如果检测到总线的状态和它发送的状态不符,则发送节点将报错。该过程的两处例外是消息帧处于标识符仲裁阶段和消息应答阶段。
    最后一种错误校验机制源于CAN总线的位填充机制。除了错误标志和EOF,如果节点检测到连续 6 个相同电平,它即报填充错误。主动错误标志包括连续6个显性位,总线上所有检测到主动错误标志的节点都会报错,而产生各自的错误帧,这意味着总线上的错误帧可能由原先的 6 bit 到反馈叠加至 12 bit 不等。错误帧后面紧接着8个隐性位界定符(如图10)。在总线空闲时,消息通过竞争仲裁获得总线占用权后将重新传送。

    综上,CAN总线的错误类型包括以下五种:

    • CRC错误(CRC Error)

    在发送消息时,发送节点会根据特定的多项式计算出由数据帧SOF位到数据域最末位的Checksum值,并将该值放在数据帧的CRC域,随着数据帧广播到总线上。接收节点在收到数据后,应用同样的多项式计算Checksum值,并与收到的Checksum值对比。如果两者一致,正常接收;如果不一致,则舍弃该消息,并发送错误帧请求发送节点重传消息。CRC校验过程如图15所示。

    CAN 2.0 规范定义CRC校验应用的多项式为:

    g_{can}\left ( x \right )=x^{15}+x^{14}+x^{10}+x^{8}+x^{7}+x^{4}+x^{3}+1=1100 0101 1001 1001_{2}

    图15. CRC校验机制

     

    • 应答错误(ACK Error)

    发送单元在ACK位中检测到隐性电平时所检测到的错误(ACK没被传送过来时所检测到的错误)。

    • 格式错误(Form Error)

    检测出与固定格式的位段相反的格式时所检测到的错误。

    • 位错误(Bit Error)

    比较输出电平和总线电平(不含填充位),当两电平不一样时所检测到的错误。

    • 填充错误(Stuff Error)

    在需要位填充的段内,连续检测到 6 位相同的电平时所检测到的错误。

     

    故障限制

    CAN总线上的每个节点控制器都会检测消息是否出错,如果节点发现消息出错,它将发送错误标志,从而打断总线上正常的数据传输。总线上其它没有发现原始消息错误的节点,在收到错误标志后将采取必要的措施,比如舍弃当前总线上的消息。CAN节点内部有两种错误状态计数器 TEC 和 REC 。节点通过特定的规则管理这两个计数器的值,其中:

    • TEC /Transmit Error Counter,发送错误状态计数器,出现一次错误该计数器值 +8
    • REC /Receive Error Counter,接收错误状态计数器,出现一次错误该计数器值 +1
    • 消息成功发送或接收一次,对应的 TEC 或 REC 值相应 -1

    TEC 增加的速度快于 REC 增加的速度,这是因为有很大概率地是发送节点,而不是接受节点出错!基于 TEC 和 REC数值的变化,CAN规范定义了节点的 3 种基本错误状态:

    • Error Active:正常状态,在此状态下,节点可以发送所有类型的帧,包括错误帧;
    • Error Passive:节点可以发送除错误帧以外的所有帧;
    • Bus Off:节点被控制器从总线上隔离

    节点的三种错误状态切换关系如图16所示。

    图16. CAN总线节点错误状态切换图

     

    波形举例


     

    图17示例CAN通信过程信号波形。在 1 时刻,节点A向总线上发送消息;在 2 时刻,节点B和C收到消息,发送响应应答;在 3 时刻,节点B和C同时向总线上发送消息,竞争仲裁后节点C获得总线占用权,在 时刻继续发送未传输完毕的数据;节点A和B在 5 时刻响应C发送的消息;在总线空闲的 6 时刻,B发送消息到总线上;在 时刻节点A和B响应节点B发送的消息;在 时刻,节点A向空闲总线上发送消息。

    图17. CAN通信过程举例

     

    编后记


     

    一直以来,对CAN总线的认识仅限于收发器、电平端接以及高低速的区分。作为“业内人士”,对汽车电子行业内最为基础的通信协议却不甚了了,颇有些“平生不识陈近南”的遗憾,因此很早军规就萌生撰写一篇CAN总线文章的念头。然而手头资料太多,不知从何下手,终于好不容易鼓起勇气,在印象笔记内敲下“CAN总线协议”的标题,也是整整一年前的事了(2016/05/31)。

    拖延症如此严重,\Database\Portocol\CAN 文件夹中囤积的资料越来越多。军规悲观地发现,这些文档虽然保存在本地,但99%以上的文档,既然在下载的时候都没有认真地阅读和消化,又如何指望在未来的某一天与它再次重逢?

    于是,自上月末起,军规每日下班后抽出 1-2 小时,如此持续将近两周,将先前搜集有关CAN总线的资料罗列、拼凑到这个地方,试图将该命题下所有的知识点收服在自己的知识框架下。每写完一个知识点,就删掉本地几篇讲解同样内容的文档。如同妖怪吸干人体之精华,吐掉无用的躯壳,大呼过瘾!

    当然,本文还是很原始的版本,其中不免有许多错误,而且还有不少知识点,比如同步、加密等,都没有涉及到。鉴于此,军规会在后续不断地修正和完善它。(2017/05/06)

     

    参考资料


    1. CAN Bus -Wikipedia 
    2. CAN 入门书 -Renesas
    3. Learning Module CAN -Vector
    4. CAN -CANAUTO
    5. Can Bus Id Filter And Mask -De Montfort University
    6. Data Communication in the Automobile: CAN -Vector
    7. CAN Protocol Tutorial -Kvaser
    8. SSP269: Data Transfer on CAN Data Bus II -VW
    9. Introduction to the Controller Area Network -TI

     

    补充:CAN FD


     

    CAN-FD继承了CAN 总线的主要特性,提高了CAN 总线的网络通信带宽,改善了错误帧漏检率,同时可以保持网络系统大部分软硬件特别是物理层不变。这种相似性使ECU 供应商不需要对ECU 的软件部分做大规模修改即可升级汽车通信网络。

     

    CAN-FD做出的改进

    CAN-FD采用了两种方式来提高通信的效率:一种方式为缩短位时间提高位速率;另一种方式为加长数据场长度减少报文数量降低总线负载率。在CRC 校验段采用了三种多项式来保证高速通讯下的数据可靠性。

    • 可变速率(CAN with Flexible Data-Rate)

    从控制场中的BRS 位到ACK 场之前(含CRC 分界符)为可变速率,其余部分为原CAN总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同。

    图18. CAN-FD帧
    • 新的数据场长度

    CAN FD 对数据场的长度作了很大的扩充,DLC 最大支持64 个字节,在DLC 小于等于8时与原CAN 总线是一样的,大于8 时则有一个非线性的增长,最大的数据场长度可达64 字节。如下所示为DLC 数值与字节数的非线性对应关系。

    图19.CAN和CAN-FD数据长度码
    • CRC 校验场

    在CANFD 协议标准化的过程中,通信的可靠性也得到了提高。由于DLCs 的长度不同,在DLC 大于8 个字节时,CAN FD 选择了两种新的BCH 型CRC 多项式。

    图20.CAN-FD数据CRC校验公式

     

    CAN-FD 帧结构分析

    • CAN-FD 数据帧在帧起始(SOF)和仲裁段(Arbitration Field)
    图21.标准帧和扩展帧标志位

    与传统CAN 相比,CAN-FD 取消了对远程帧的支持,用RRS 位替换了RTR 位,为常显性。IDE 位仍为标准帧和扩展帧标志位,若标准帧与扩展帧具有相同的前 11 位 ID,那么标准帧将会由于 IDE 位为 0,优先获得总线。

                   RRS(remote request substitution)远程请求替换位:即传统CAN 中的RTR 位;
                   SRR (substitute remote request)代替远程帧请求位:SRR 位为保留位,无影响;
                   IDE(Identifier Extension) 扩展帧标志:显性(0)=11 位ID,隐性(1)=29 位 ID。

    • CAN-FD 在控制段中新添加了三个位FDF 位、BRS 位、ESI 位
    图22.FDF、BRS、ESI

    FDF 位(Flexible Data Rate Format):原CAN 数据帧中的保留位r。FDF 位常为隐性(1),表示CAN FD 报文;
    BRS 位( Bit Rate Switch):位速率转换开关,当BRS 为显性位(0)时数据段的位速率与仲裁段的位速率一致,当BRS 为隐性位(1)时数据段的位速率高于仲裁段的位速率;
    ESI 位(Error State Indicator):,错误状态指示,主动错误时发送显性位(0),被动错误时发送隐性位(1)。

    • DLCs 的值与数据场和CRC 校验场有关,在上文中已经说明。
    • CAN-FD 的确认场,帧结尾及间歇场与传统CAN 一样,就不再赘述。
    图23.其他标志位

     

    如何从传统的CAN 升级到 CAN FD

    尽管 CANFD 继承了绝大部分传统 CAN 的特性,但是从传统 CAN 到 CANFD 的升级,我们仍需要做很多的工作。

    • 在硬件和工具方面,要使用 CANFD,首先要选取支持 CANFD 的 CAN 控制器和收发器,还要选取新的网络调试和监测工具。
    • 在网络兼容性方面,对于传统 CAN 网段的部分节点需要升级到 CANFD 的情况要特别注意,由于帧格式不一致的原因,CANFD 节点可以正常收发传统 CAN 节点报文,但是传统 CAN 节点不能正常收发 CANFD 节点的报文。
       

    参考资料


    1. http://news.21dianyuan.com/detail/34859.html
    2. 《三分钟了解最新CAN-FD协议》-广州致远
    展开全文
  • 第五章 多单片机集钪与通信总线 单中科技大将 8宝感的容 概述 二多单片机集统的结构与通信 三智能仪表的对外通信与标准总线 现场总线与智能仪表 五TCP/P协议与智能仪表上网 单中科技大将 四现场总线与智能仪表 1....
  • 音视频-编解码-微机监测通信技术及通信总线分析系.pdf
  • 电信设备-通信总线与包含该总线的电气面板.zip
  • 几种通信总线详尽总结.doc
  • 电信设备-通信总线线路隔离器.zip
  • 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。 并行接口是指数据的各位同时进行传送;而串行接口是指数据一位位地顺序传送。并行接口的传输速度快,不适用于远距离通信;而...

    1、UART

    UART、通用异步收发传输器。是一种通用串行数据总线,用于异步通信。该总线双向通信,具有两个数据线,可以实现全双工传输和接收。

    并行接口是指数据的各位同时进行传送;而串行接口是指数据一位位地顺序传送。并行接口的传输速度快,不适用于远距离通信;而串行接口特别适用于远距离通信,但传送速度较慢。

    异步通信同步通信的主要区别:异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的;同步通信的通信双方必须先建立同步。

    单工:简单的说就是一方只能发信息,另一方则只能收信息,通信是单向的。
    半双工:比单工先进一点,就是双方都能发信息,但同一时间则只能一方发信息。
    全双工:比半双工再先进一点,就是双方不仅都能发信息,而且能够同时发送。

    波特率(Baud Rate) 单位 bps – 每秒传送的bit数量
    在这里插入图片描述
    起始位 :发送1位逻辑0(低电平),开始传输数据。
    数据位 :可以是5~8位的数据,先发低位,再发高位,一般常见的就是8位(1个字节,防止累计误差的出现),其他的如7位的ASCII码。异步通信两者时钟有误差,时钟不同步。
    校验位 :奇偶校验,将数据位加上校验位,1的位数为偶数(偶校验),1的位数为奇数(奇校验)。
    停止位 :停止位是数据传输结束的标志,可以是1/1.5/2位的逻辑1(高电平)。
    空闲位 :空闲时数据线为高电平状态,代表无数据传输。
    想要发送0x55(01010101)数据,低位先发,后发高位。数据位为10101010
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2、RS232、RS485(增强了电气特性)

    RS-232标准接口(又称EIA RS-232)是常用的串行通信接口标准之一

    IBM的PC机将RS232简化成了DB-9连接器,从而成为事实标准。而工业控制的RS-232口一般只使用RXD、TXD、GND三条线

    规定逻辑“1”的电平为**-5V~-15 V**,逻辑“0”的电平为**+5 V~+15 V**。选用该电气标准的目的在于提高抗干扰能力,增大通信距离最大15m。
    在这里插入图片描述
    在这里插入图片描述
    缺点:
    1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。
    (2)传输速率较低,在异步传输时,波特率为20Kbps;因此在CPLD开发板中,综合程序波特率只能采用19200,也是这个原因。
    (3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱
    (4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在15米左右。

    RS485、使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。RS-485使得连接本地网络以及多支路通信链路的配置成为可能。
    该标准允许连接多个收发器,即具有多站能力,这样可以利用单一的RS485接口方便地建立起一个设备网络

    RS485标准规定采用差分信号进行数据传输两线间的电压差为+2v到+6v表示逻辑“1”两线间的电压差为-2v到-6v表示逻辑“0”。使用差分信号能有效的减少噪音信号的干扰延长通信距离,RS485的通信距离可以达到1500m,RS485接口信号的电平比RS232降低了,所以不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便地与TTL电路连接。

    RS485采用两线制,这种接线方式为总线式拓扑结构,在同一总线上,可以同时存在多个节点,
    因为采用两线制,数据的发送和接收都要用到这对差分信号线,发送和接收不能同时进行,所以只能采用半双工的方式工作

    3、IIC总线

    iic总线是一种串行半双工总线,同步通信、主要用于近距离、低速的芯片之间的通信。

    I2C串行总线一般有两根信号线,一根是双向的数据线SDA收发数据,另一根是时钟线SCL双方时钟同步。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    红色部分表示主机发送,蓝色部分表示从机发送。A表示应答,NA表示非应答(高电平)。S表示起始信号,P表示终止信号。以实例说明。
    主机向从机写入数据
    在这里插入图片描述
    主机向从机读取数据
    在这里插入图片描述
    主机先向丛机发送数据,然后丛机在向主机发送数据
    在这里插入图片描述
    中间并没有停止信号,是因为一旦发送停止信号,主机可能被其他主机抢走。

    4、SPI总线

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

    它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。
    (1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
    (2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
    (3)SCLK – Serial Clock,时钟信号,由主设备产生;
    (4)CS – Chip Select,从设备使能信号,由主设备控制。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    图示为SPI模式1
    图示为SPI模式1

    在这里插入图片描述
    学习连接:https://www.bilibili.com/video/BV1SK4y1X7jp?p=15

    展开全文
  • 通信总线协议学习整理

    万次阅读 2018-07-28 17:41:44
    UART是一个大家族,其包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范。它们的主要区别在于其各自的电平范围不相同。 嵌入式设备中常常使用到的是TTL、TTL转RS232的这种方式。常用的就三根...

    一、UART

    UART是一个大家族,其包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范。它们的主要区别在于其各自的电平范围不相同。

    嵌入式设备中常常使用到的是TTL、TTL转RS232的这种方式。常用的就三根引线:发送线TX、接收线RX、电平参考地线GND。

     1.1    电路示意图

     

    1.2    通信协议

    将传输数据的每个字符一位接一位地传输。

     

    起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

    数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。

    奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。

    停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。

    空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

    波特率:数据传输的速率。有以下几个档位:300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200.当然也可以自定义。在数据传输和接收双方,需要预先统一波特率,以便正确的传输数据。

     

    二、IIC 总线

    I²C (Inter-Integrated Circuit)。其拥有一根数据线SDA和一根时钟线SCL。其总线通过上拉电阻与电源相连接。每个接到I2C总线上的器件都有唯一的地址。其中,主动发起操作的一方为主机,另外一方为从机。

    1.1   电路示意图

     

    1.2 数据传输

    当没有数据传输的时候,两根总线都为高电平;当采集IIC上的数据时,其时钟线SCL必须是高电平且SDA的数据必须保持稳定不变---将SDA的电平与SCL的高电平进行“与”操作后,以便确定SDA上是1还是0;在SCL为低电平的时候,SDA上的数据可以进行跳变。

    数据传输开始时,需要发送一个起始信号;数据传输结束后,需要发送一个终止信号;每8bit数据传输结束,都需要一个ACK。起止信号都有Master发出,而ACK则可能由Master或者SLAVE来发出。数据的传输采用大端传输。

    开始信号:SCL为高电平,SDA的电平由高跳到低表示开始信号。

    终止信号:SCL为高电平,SDA的电平由低跳到高表示终止信号。

                      

     

    1.3 数据协议

            

     

    1.4   I2C读写流程

     

    参考:

    http://dpinglee.blog.163.com/blog/static/14409775320112239374615

    https://en.wikipedia.org/wiki/I%C2%B2C

    http://wenku.baidu.com/view/7c310976f46527d3240ce0e5

    http://wenku.baidu.com/view/bdb46aa60029bd64783e2c6f

     

    三、SPI总线

    SPI(Serial Peripheral Interface)是一种串行串行同步通讯协议,由一个主设备和一个或多个从设备组成。其拥有四根(类)硬脚引线,分别为 SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(片选)。因为一个主设备可以挂多个从设备,则通过片选引脚对从设备进行选择。从设备的工作时钟则是来自于主设备的SCK线。

    1.1    电路示意图

     

     

    1.2    数据的传输

    SPI在数据传输的时候,需要确定两件事情:其一,数据是在时钟的上升沿采集还是下降沿采集;其二,时钟的初始(空闲)状态是为高电平还是低电平。而I2C的空闲状态,时钟线为高电平;数据采集的时候,时钟线也为高电平。但SPI给出了更自由的方式。

    CPOL:时钟极性, 表示 SPI 在空闲时, 时钟信号是高电平还是低电平。

    CPHA:时钟相位, 表示 SPI 设备是在 SCK 管脚上的时钟信号变为上升沿时触发数据采样, 还是在时钟信号变为下降沿时触发数据采样。

    那么,SPI CPOL有两种可能,CPHA有两种可能,则SPI数据传输就有四种可能---按照标准的说法,SPI数据传输就有四种模式。

     

    1.3    SPI读写

    SPI在硬件设计上采用的双数据线制,根据设计,在SPI通信过程中,主从设备之间会形成一个数据环形链路---也即是,主设备向从设备写一次数据,从设备就会回一次数据(至于该从设备回复的数据是否有效,则另当别论---如果有效,主设备就把它读入;如果无效,则丢弃即可)。

     

    展开全文
  • RS-232接口符合电子工业联盟(EIA)建立的串行数据通信接口标准。原始编号是EIA-RS-232(简称232,RS232)。它广泛用于计算机串行接口外设连接。连接电缆以及机械、电气、信号和传输过程。 RS-232-C标准规定的数据...
  • 通信和电子设计制作中各种串行总线的分析比较,比较有用,希望对大家有帮助
  • UART通信总线

    千次阅读 2022-03-05 00:00:05
    目录 UART 并行和串行 单工和双工 波特率 UART帧格式 硬件连接 同步通信和异步通信 UART控制器 UART Universal Asynchronous Receiver Transmitter 即通用异步收发器,是一种通用的串行、异步通信总线。...
  • 通信总线协议总结

    千次阅读 2021-05-11 17:53:44
    通信总线协议总结 【学习笔记】 一、UART总线 简介 UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发器 特点 串行、异步通信、两条数据线、全双工发送和接收、点对点通信。 应用场合 在嵌入式...
  • FlexRay汽车通信总线介绍及测试环境

    千次阅读 2020-03-31 12:06:56
    FlexRay汽车通信总线介绍及测试环境 综述 FlexRay通信总线是由多个汽车制造商和领先的供应商共同开发的确定性、容错和高速总线系统。 FlexRay满足了线控应用(即线控驱动、线控转向、线控制动等)的容错性和时间...
  • 通信总线传输速率计算

    千次阅读 2020-06-12 16:57:03
    通信总线传输速率计算 1. uart 、can 通信速率比较 baud 1/baud(s/bit) 传输1byte数据 10bit 传输时间 数量级 吞吐量 115200 0.00868ms 10bit 0.09 0.1ms 115k 9600 0.10417 10bit 1.04 1ms 9.6k 500k 0...
  • STM32F的几种串行通信总线总结

    千次阅读 2016-08-20 17:45:57
    USART支持同步单向通信和半双工单线通信,也支持LIN(局部互联网)、智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。 USART双向通信至少需要两个引脚:接收数据输入(RX)和发送...
  • IIC通信总线

    2013-04-05 14:11:30
    IIC通信总线
  • 1. 常见汽车电子串行通信总线类型概述 1.1 不同总线的总线信号对比 1.2 不同总线类型的差异 1.3 不同总线通信速率对比 2. 总线的物理层(Physical Layer) 2.1 收发器(Transeceiver)的作用 2.2 物理层举例 2.3...
  • 细说汽车电子通信总线之LIN总线协议详解

    万次阅读 多人点赞 2019-11-24 00:51:51
    1. LIN总线概述 1.1 LIN总线特点及发展历史 1.2 LIN 总线协议的物理层(收发器) 2. LIN总线报文帧结构(Message Frame Structure)详解 2.1 LIN 总线报文帧的字节场与字节间隔 2.2 LIN 总线报文帧之间隔场(Break ...
  • 正点原子Mini开发板 CAN总线通信实验移植CAN总线通信实验的代码。 正点原子Mini开发板 CAN总线通信实验移植。 正点原子Mini开发板 CAN总线通信实验的代码。这段代码是从战舰开发板的程序中移植过来的。硬件上需要另...
  • 本文创新点:CAN总线以其卓越的特性、极高的可靠性和独特的设计,在工业过程监控设备的互联方面得到广泛的应用,受到工业界的广泛重视,并被公认为是最有前途的现场总线之一。作为通用、有效、可靠及经济的平台,CA ...
  • 它是由德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线。由于其通信速率高、工作可靠、调试方便、使用灵活和性价比高等优点,己经在汽车业、航空业、工业控制、安全防护等领域中得到了广泛应用,被...
  • 计算机通信串行通信总线技术,微型计算机中使用的通信总线主要包括并行通信总线和串行通行总线两大类。
  • 引言 1. CAN总线发展历史与ISO规范 ...4.1 CAN2.0总线通信报文帧格式(Message Frame Format) 4.2 CAN2.0总线通信报文帧类型(Message Frame Type) 4.3 CAN2.0总线通信报文之标准/扩展数据帧 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 140,921
精华内容 56,368
关键字:

通信总线