精华内容
下载资源
问答
  • 1. 什么是LIN总线?LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信,而这...

    cfaf8e20e63abd1e05e9867b40895d14.png

    1. 什么是LIN总线?

    LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信,而这正是CAN总线的带宽和功能所不要求的部分。f171e6f0ee7de47ebc0e09b17b2fa952.png

    2. CAN/LIN总线区别

    由于LIN网络在汽车中一般不独立存在,通常会与上层CAN网络相连,形成CAN-LIN网关节点。bb278ead47eb77960816694a1e030fd2.png

    2.1.LIN总线的主从关系

    LIN总线采用的是单线传输形式,应用了单主机多从机(有无主动上报的支持?)的概念,总线电平一般为12V,传输速率最高限制为20kbps。由于物理层的限制,一个LIN网络最多可以连接16个节点。f0e5392300eaf35306fdb8ec096d665d.png总线任务负责:
    1. 调度总线上帧的传输次序

    2. 监测数据,处理错误

    3. 作为标准时钟参考(不是异步通信?)

    4. 接收从机节点发出的总线唤醒命令

    从机任务不能直接向总线发送数据,需要接受到主节点发送的帧头后,根据帧头所包含的信息来判断:
    1. 发送应答

    2. 接收应答

    3. 既不接收也不应答

    LIN的特点
    1. 网络由一个主节点与若干个从节点构成

    2. 使用LIN总线可以大幅度削减成本(CAN和Lin都需要收发器,但是Lin属于单线制在线束上节省)

    3. 传输具有确定性,传播时间可以提前计算

    4. LIN具有可预测的EMC(电磁兼容性)性能,为了限制EMC的强度,LIN协议规定最大传输速率为20kbps

    5. LIN总线提供信号的配置、处理、识别和诊断功能(这些都是UART不具备的,可LIN是怎么实现的呢?)

    3.LIN报文帧结构

    LIN报文帧包括帧头(hearder)与应答(response)两部分。主机负责发送至帧头;从机负责接收帧头并作出解析,然后决定是发送应答,还是接收应答或不回复。1ee0b4098ad385a88be9accdcf8c57b7.png
    (主机)帧头结构包括同步间隔段、同步段、PID段(受保护ID)段,应答部分包括数据段与效验和段。其中值“0”为显性电平、“1”为隐性电平,这点与CAN总线相类似玩转嵌入式micropoint8。在总线上实行“线-与”:当总线有至少一个节点发送显性电平时,总线呈现显性电平;所有节点均发送隐性电平或者不发送信息时,总线呈隐性电平,即显性电平起着主导作用。
    850e2969268f763413856a5f7d01d392.png
    3.1.1.同步间隔段
    同步间隔段至少是由13位的显性电平组成,由于帧中的所有间隙或者总线空闲时总线均保持隐性电平状态。所以同步间隔段可以标志一个帧的开始。其中同步间隔段的间隔符至少为1位隐性电平。f37919f60448bc1e665aa34a3acce32d.png
    3.1.2.同步段
    LIN同步以下降沿为判断标志,采用字节0x55(01010101b)进行同步。在从机节点上可以不采用高精度的时钟,由此带来的偏差,需要通过同步段来进行调整。80986fbf9c1e581703bcf8f3fe456d27.png
    3.1.3.PID段

    受保护的ID的前6位叫做帧ID,加上两个奇偶效验码后称作受保护的ID。帧ID的取值范围为0x00~0x3f总共64个,帧ID标识了帧的类别和目的地。从机任务会根据帧头ID作出反应(接收/发送/忽略应答)。其中P0与P1效验如下:
    2d178fb777d79362a0519cea7e1fb3df.png
    LIN总线根据帧ID号的不同,把报文分为信号携带帧、诊断帧、保留帧。
    acf8464f42df94089d6b269160f15203.png
    PS:从机应答帧是一个完整的帧,与(主节点)帧结构中的“应答”不同!
    3.1.4.数据段
    数据段可以包含1-8个字节,其中包含有两种数据类型,信号(singal)和诊断消息(diagnostic messages)。信号由信号携带帧传递,诊断消息由诊断帧传递。2f076e6e48aa1f32c12e3c7fe4d2a254.png
    协议中并没有规定哪一部分显示数据长度码的信息(这点与CAN总线不同),数据的内容与长度均是由系统设计者根据帧ID事先约定好的。
    总线上的数据是以广播形式发出,任何节点均可以收到,但并非对每个节点有用(与CAN相同)。具体到发布与接听是由哪个节点进行完成这个取决于应用层的软件配置,一般情况下,对于一个帧中的应答,总线上只存在一个发布节点,否则就会出现错误。事件触发帧例外,可能出现0,1,多个发布节点。
    3.1.5.效验和段
    49b09af3d4f220de60810941e6c2de2c.png
    效验和段是为了对帧传输内容进行效验。效验分为标准型效验与增强型效验。采用标准型还是增强型是由主机节点管理,发布节点和收听节点根据帧ID来判断采用哪种效验和。
    d92e9b8141eac6d3926d9b52ab0b1fc7.png

    4.LIN总线波形

    e219f7484a141839279b8148965ccdee.png

    5.LIN总线的通讯

    上图展示的是LIN总线的通讯方式,可以看出无论什么时候帧头总是由主机节点发布,当主机节点想发布数据时,整个帧全部由主机节点发送。当从机节点想发布数据时,帧头部分由主机节点发布,应答部分由从机节点发布(主机怎么知道从机节点想发布数据,那肯定是主机节点无数据可发,故只发了帧头?),这样其余节点都能收到一个完整的报文帧。可以很直接的观察到,LIN总线的通讯都是由主机节点发起的玩转嵌入式micropoint8,只要合理的规定要每个节点的配置,这样就不会存在总线冲突的情况(事件触发帧冲突时采用采用冲突解决进度表)。

    5.1.无条件帧


    无条件帧是具有单一发布节点的,无论信号是否发生变化,帧头均会被无条件应答的帧。
    31021eba3b65c5ee197bb7d02e82e4c6.png
    如上图中帧ID=0x30应答部分的发布节点为从机节点1,收听节点为主机节点,应用在从机节点向主机节点报告自身状态;帧ID=0x31中,应答部分为主机节点,收听部分为从机节点,应用在主机节点向从机节点发送消息;帧ID=0x32中应答部分的发送节点为从机节点2,收听节点为从机节点1,应用与从机节点之间的通信。

    5.2.事件触发帧


    事件触发帧是主机节点在一个帧间隙中查询各从机节点的信号是否发生变化时使用的帧。当存在多个发布节点时,通过冲突解决进度表来解决冲突。
    当从机节点信号发生变化的频率较低的时候,主机任务一次次地查询各个节点信息会占用一定的带宽。为了减小带宽的占用,引入了事件触发帧的概念。其主要原理就是:当从机节点信息状态没有发生变化的时候,从机节点可以不应答主机发出的帧头;当有多个节点信息同时发生变化的时候,同时应答事件触发帧头会造成总线的冲突。当主机节点检测到冲突时,便会查询冲突解决进度表来依次向各个节点发送无条件帧(无条件帧只有能1个节点应答)来确定从机节点的信息状态。2460a1bf60bba7321415c4aa413b8f01.png
    与事件触发帧关联的多个无条件帧需要满足以下5个条件:
    数据段所包含的数据字节数等长 使用相同的效验与类型数据段的第一个字节为该无条件帧的受保护ID,这样才能够知道应答是哪个关联的无条件帧发送出来的 由不同的从机节点发布不能与时间触发帧处于同一个进度表中。
    5.2.1.偶发帧
    偶发帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过预先设定的的优先级来仲裁。与事件触发帧类似,偶发帧也定义了一组无条件帧。规定偶发帧只有由主机节点发布。偶发帧的传输可能出现三种情况:
    1. 当关联的无条件帧没有信号发生变化,这是主机连帧头也不需要发送。

    2. 当关联的一个无条件帧信号发生变化则发送该帧。

    3. 当有多个无条件帧发生信号变化时,则按照事先规定要的优先级依次发送。

    59b57302a99658694f2fec9e885d94c6.png
    5.2.2.诊断帧
    诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断。主机请求帧ID=0x3c,应答部分的发布节点为主机节点;从机应答帧ID=0x3d,应答部分的发布节点为从机节点。数据段规定为8个字节,一律采用标准效验和。
    5.2.3.保留帧
    保留帧的ID=0x3e与0x3f,为将来扩张需求用。

    5.3.进度表

    进度表是帧的调度表,规定了总线上帧的传输次序以及传输时间。进度表位于主机节点,主机任务根据应用程需要进行调度。进度表可以有多个,一般情况下,轮到某个进度表执行的时候,从该进度表的入口处开始执行,到进度表的最后一个帧时,如果没有新的进度表启动则返回到当前进度表的第一个帧开始执行玩转嵌入式micropoint8,也有可能在执行到某个进度表时发生中断,跳到另一个进度表后再返回,如事件触发帧就是一个典型的例子。45d5f528c7312407203f7d0c63cd9923.png

    6.状态机的实现

    6.1.主机状态机

    cc2ff2ef815b350da697314a638d3d4c.png

    6.2.从机状态机

    从机任务负责发布或者接听帧的应答状态,包括连两个状态机:同步间隔段与同步段检查器、帧处理器。f0e9c93a94f7505ad0186319027f42ac.png

    6.3.从机任务状态机

    27d1e992ab5130d2cb0ea24813b42d03.png

    ↓↓ 扫码参加,高性能被动元器件发展论坛 ↓↓

    45935dccf43017cfbe1e5188a21dcb57.png

    展开全文
  • 嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也...概述CAN(Controller Area Network)即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。想到CAN就要想到德国的Bosch公司,因...

    嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也广泛使用CAN,随着国家对海防的越来越重视,对CAN的需求也会越来越大。这个暑假,通过参加苏州社会实践,去某船舶电气公司实习几周,也借此机会,学习了一下CAN总线。

    概述

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

    想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel)

    CAN有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。

    近些年来,CAN控制器价格越来越低,很多MCU也集成了CAN控制器。现在每一辆汽车上都装有CAN总线。

    一个典型的CAN应用场景:

    CAN总线标准

    CAN总线标准只规定了物理层和数据链路层,需要用户自定义应用层。不同的CAN标准仅物理层不同。

    CAN收发器负责逻辑电平和物理信号之间的转换。

    将逻辑信号转换成物理信号(差分电平),或者将物理信号转换成逻辑电平。

    CAN标准有两个,即IOS11898和IOS11519,两者差分电平特性不同。

    高低电平幅度低,对应的传输速度快;

    *双绞线共模消除干扰,是因为电平同时变化,电压差不变。

    物理层

    CAN有三种接口器件

    多个节点连接,只要有一个为低电平,总线就为低电平,只有所有节点输出高电平时,才为高电平。所谓"线与"。

    CAN总线有5个连续相同位后,就插入一个相反位,产生跳变沿,用于同步。从而消除累积误差。

    和485、232一样,CAN的传输速度与距离成反比。

    CAN总线,终端电阻的接法:

    为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线

    数据链路层

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

    数据帧用来节点之间收发数据,是使用最多的帧类型;远程帧用来接收节点向发送节点接收数据;错误帧是某节点发现帧错误时用来向其他节点通知的帧;过载帧是接收节点用来向发送节点告知自身接收能力的帧;用于将数据帧、远程帧与前面帧隔离的帧。

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

    帧起始

    帧起始由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;

    帧结束由7个隐形位(高电平)组成。

    仲裁段

    CAN总线是如何解决多点竞争的问题?

    由仲裁段给出答案。

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

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

    控制段

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

    数据段

    为0-8字节,短帧结构,实时性好,适合汽车和工控领域;

    CRC段

    CRC校验段由15位CRC值和CRC界定符组成。

    ACK段

    当接收节点接收到的帧起始到CRC段都没错误时,它将在ACK段发送一个显性电平,发送节点发送隐性电平,线与结果为显性电平。

    远程帧

    远程帧分为6个段,也分为标准帧和扩展帧,且RTR位为1(隐性电平)

    CAN是可靠性很高的总线,但是它也有五种错误。

    CRC错误:发送与接收的CRC值不同发生该错误;

    格式错误:帧格式不合法发生该错误;

    应答错误:发送节点在ACK阶段没有收到应答信息发生该错误;

    位发送错误:发送节点在发送信息时发现总线电平与发送电平不符发生该错误;

    位填充错误:通信线缆上违反通信规则时发生该错误。

    当发生这五种错误之一时,发送节点或接受节点将发送错误帧

    为防止某些节点自身出错而一直发送错误帧,干扰其他节点通信,CAN协议规定了节点的3种状态及行为

    过载帧

    当某节点没有做好接收的"准备"时,将发送过载帧,以通知发送节点。

    帧间隔

    用来隔离数据帧、远程帧与他们前面的帧,错误帧和过载帧前面不加帧间隔。

    //好好理解1.6最后一张ppt

    构建CAN节点

    构建节点,实现相应控制,由底向上分为四个部分:CAN节点电路、CAN控制器驱动、CAN应用层协议、CAN节点应用程序。

    虽然不同节点完成的功能不同,但是都有相同的硬件和软件结构。

    CAN收发器和控制器分别对应CAN的物理层和数据链路层,完成CAN报文的收发;功能电路,完成特定的功能,如信号采集或控制外设等;主控制器与应用软件按照CAN报文格式解析报文,完成相应控制。

    CAN硬件驱动是运行在主控制器(如P89V51)上的程序,它主要完成以下工作:基于寄存器的操作,初始化CAN控制器、发送CAN报文、接收CAN报文;

    如果直接使用CAN硬件驱动,当更换控制器时,需要修改上层应用程序,移植性差。在应用层和硬件驱动层加入虚拟驱动层,能够屏蔽不同CAN控制器的差异。

    一个CAN节点除了完成通信的功能,还包括一些特定的硬件功能电路,功能电路驱动向下直接控制功能电路,向上为应用层提供控制功能电路函数接口。特定功能包括信号采集、人机显示等。

    CAN收发器是实现CAN控制器逻辑电平与CAN总线上差分电平的互换。实现CAN收发器的方案有两种,一是使用CAN收发IC(需要加电源隔离和电气隔离),另一种是使用CAN隔离收发模块。推荐使用第二种。

    CAN控制器是CAN的核心元件,它实现了CAN协议中数据链路层的全部功能,能够自动完成CAN协议的解析。CAN控制器一般有两种,一种是控制器IC(SJA1000),另一种是集成CAN控制器的MCU(LPC11C00)。

    MCU负责实现对功能电路和CAN控制器的控制:在节点启动时,初始化CAN控制器参数;通过CAN控制器读取和发送CAN帧;在CAN控制器发生中断时,处理CAN控制器的中断异常;根据接收到的数据输出控制信号;

    接口管理逻辑:解释MCU指令,寻址CAN控制器中的各功能模块的寄存器单元,向主控制器提供中断信息和状态信息。

    发送缓冲区和接收缓冲区能够存储CAN总线网络上的完整信息。

    验收滤波是将存储的验证码与CAN报文识别码进行比较,跟验证码匹配的CAN帧才会存储到接收缓冲区。

    CAN内核实现了数据链路的全部协议。

    CAN协议应用层概述

    CAN总线只提供可靠的传输服务,所以节点接收报文时,要通过应用层协议来判断是谁发来的数据、数据代表了什么含义。常见的CAN应用层协议有: CANOpen、DeviceNet、J1939、iCAN等。

    CAN应用层协议驱动是运行在主控制器(如P89V51)上的程序,它按照应用层协议来对CAN报文进行定义、完成CAN报文的解析与拼装。例如,我们将帧ID用来表示节点地址,当接收到的帧ID与自身节点ID不通过时,就直接丢弃,否则交给上层处理;发送时,将帧ID设置为接收节点的地址。

    CAN收发器

    SJA1000的输出模式有很多,使用最多的是正常输出模式,输入模式通常不选择比较器模式,可以增大通信距离,并且减少休眠下的电流。

    收发器按照通信速度分为高速CAN收发器和容错CAN收发器。

    同一网络中要使用相同的CAN收发器。

    CAN连接线上会有很多干扰信号,需要在硬件上添加滤波器和抗干扰电路

    也可以使用CAN隔离收发器(集成滤波器和抗干扰电路)。

    CAN控制器与MCU的连接方式

    SJA1000可被视为外扩RAM,地址宽度8位,最多支持256个寄存器

    #define REG_BASE_ADDR 0xA000 // 寄存器基址

    unsigned char *SJA_CS_Point = (unsigned char *) REG_BASE_ADDR ;

    // 写SJA1000寄存器

    void WriteSJAReg(unsigned char RegAddr, unsigned char Value) {

    *(SJA_CS_Point + RegAddr) = Value;

    return;

    }

    // 读SJA1000寄存器

    unsigned char ReadSJAReg(unsigned char RegAddr) {

    return (*(SJA_CS_Point + RegAddr));

    }

    将缓存区的数据连续写入寄存器

    …… for (i=0;i

    将连续多个寄存器连续读入缓存区

    …… for (i=0;i

    头文件包含方案:

    每个程序包含用到的头文件

    每个程序包含一个公用头文件,公用头文件包含所有其他头文件

    #ifndef __CONFIG_H__ // 防止头文件被重复包含

    #define __CONFIG_H__

    #include <8051.h> // 包含80C51寄存器定义头文件

    #include "SJA1000REG.h" // 包含SJA1000寄存器定义头文件

    // 定义取字节运算

    #define LOW_BYTE(x) (unsigned char)(x)

    #define HIGH_BYTE(x) (unsigned char)((unsigned int)(x) >> 8)

    // 定义振荡器时钟和处理器时钟频率(用户可以根据实际情况作出调整)

    #define OSCCLK 11059200UL

    // 宏定义MCU的时钟频率

    #define CPUCLK (OSCCLK / 12)

    #endif // __CONFIG_H__

    SJA1000上电后处于复位状态,必须初始化后才能工作。

    (1)置位模式寄存器Bit0位进入复位模式;

    (2)设置时钟分频寄存器选择时钟频率、CAN模式;

    (3)设置验收滤波,设定验证码和屏蔽码;

    (4)设置总线定时器寄存器0、1设定CAN波特率;

    (5)设置输出模式;

    (6)清零模式寄存器Bit0位退出复位模式;

    模式寄存器

    只检测模式:SJA1000发送CAN帧时不检查应答位;

    只听模式:此模式下SJA1000不会发送错误帧,用于自动检测波特率;SJA1000以不同的波特率接收CAN帧,当收到CAN帧时,表明当前波特率与总线波特率相同。

    波特率设置

    CAN总线无时钟,使用异步串行传输;波特率是1秒发送的数据位;

    CAN帧发送:

    发送CAN帧的步骤:1.检测状态寄存器,等待发送缓冲区可用;

    2.填充报文到发送缓冲区;

    3.启动发送。

    SJA1000具有一个12字节的缓冲区,要发送的报文可以通过寄存器16-28写入,也可通过寄存器96-108写入或读出

    设置发送模式

    char SetSJASendCmd(unsigned char cmd) {

    unsigned char ret;

    switch (cmd) {

    default:

    case 0:

    ret = SetBitMask(REG_CAN_CMR, TR_BIT); //正常发送

    break;

    case 1:

    ret = SetBitMask(REG_CAN_CMR, TR_BIT|AT_BIT); //单次发送

    break;

    case 2:

    ret = SetBitMask(REG_CAN_CMR, TR_BIT|SRR_BIT);//自收自发

    break;

    case 0xff:

    ret = SetBitMask(REG_CAN_CMR, AT_BIT);//终止发送

    break;

    }

    return ret;

    }

    发送函数

    unsigned char SJA_CAN_Filter[8] = { // 定义验收滤波器的参数,接收所有帧

    0x00, 0x00, 0x00, 0x00,

    // ACR0~ACR3

    0xff, 0xff, 0xff, 0xff

    // AMR0~AMR3

    };

    unsigned char STD_SEND_BUFFER[11] = { // CAN 发送报文缓冲区

    0x08, // 帧信息,标准数据帧,数据长度 = 8

    0xEA, 0x60, // 帧ID = 0x753

    0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa // 帧数据

    };

    void main(void) // 主函数,程序入口

    {

    timerInit();// 初始化

    D1 = 0;

    SJA1000_RST = 1; // 硬件复位SJA1000

    timerDelay(50); // 延时500ms

    SJA1000_RST = 0;

    SJA1000_Init(0x00, 0x14, SJA_CAN_Filter); // 初始化SJA1000,设置波特率为1Mbps

    // 无限循环,main()函数不允许返回

    for(;;) {

    SJASendData(STD_SEND_BUFFER, 0x0);

    timerDelay(100); // 延时1000ms

    }

    }

    为什么帧ID是0x753,这与CAN帧在缓冲区的存储格式有关。

    终端电阻非常重要,当波特率较高而且没加终端电阻时,信号过冲非常严重。

    SJA1000有64个字节的接收缓冲区(FIFO),这可以降低对MCU的要求。MCU可以通过查询或中断的方式确定SJA1000接收到报文后读取报文。

    参考资料:《项目驱动-CAN-bus现场总线基础教程》 广州周立功单片机科技有限公司

    展开全文
  • 什么是CAN总线?

    千次阅读 2006-12-04 14:48:00
    我们在了解汽车结构时常常接触到CAN总线这个名词,在工程实际中CAN总线是对汽车中标准的串行数据传输系统的习惯叫法。CAN的英文全称是:Controller Area Network,意思是区域网络控制器,最早是用于智能化住宅小区的...

    我们在了解汽车结构时常常接触到CAN总线这个名词,在工程实际中CAN总线是对汽车中标准的串行数据传输系统的习惯叫法。CAN的英文全称是:Controller Area Network,意思是区域网络控制器,最早是用于智能化住宅小区的信息传输,总线则源自计算机,因为其功能和计算机中的“BUS”类似。

       现代汽车中所使用的电子控制系统和通讯系统越来越多,如发动机电控系统、 自动变速器控制系统、防抱死制动系统(ABS)、自动巡航系统(ACC)和车载多媒体系统等,这些系统之间。系统和汽车的显示仪表之间,系统和汽车故障诊断系统之间均需要进行数据交换,如此巨大的数据交换量,如仍然采用传统数据交换的方法,即用导线进行点对点的连接的传输方式将是难以想象的,据统计,如采用普通线索,一个中级轿车就需要线索插头300个左右,插针总数将达到2000个左右,线索总长超过1. 6Km,不但装配复杂而且故障率会很高。因此,用串行数据传输系统取而代之就成为必然的选择。

      数据在串联总线上可以一个接一个的传送,所有参加CAN总线的分系统都可以通过其控制单元上的CAN总线接口进行数据的发送和接收,CAN总线是一个多路传输系统,当某一单元出现故障时不会影响其他单元的工作,CAN总线对不同数据的传输速率不一样,对发动机电控系统和ABS等实时控制用数据实施高速传输,速率为1 25K波特--–1M波特,对车身调节系统(如空调)的数据实施低速传输,传输速率在1 0—1 25K波特,其他如多媒体系统和诊断系统则为中速传输,速率在两者之间,这样的区分提高了总线的传输效率。

      数据总线如何能实现多路传输的呢?原来数据总线有三部分组成:1)数据传输线,2)地址传输线,3)发送单元和接收单元之间的传送控制线。数据按CPU的指令以一定的模式传输到指定的地址,而传输模式是由软件控制的。

      现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN(Controller Area Network)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS-485基于R线构建的分布式控制系统而言, 基于CAN总线的分布式控制系统在以下方面具有明显的优越性:

        首先,CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;

         其次,CAN总线通过CAN控制器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会出现象在RS-485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。

         而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS-485所无法比拟的。另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前 CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。

         CAN (Controller Area Network)即控制器局域网络,属于工业现场总线的范畴。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)、ROLLS-ROYCE(劳斯莱斯)和JAGUAR(美洲豹)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。其典型的应用协议有: SAE J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000等。
    展开全文
  • SPI最早是摩托罗拉公司开发的全双工同步串行总线,用于微控制器(MCU)连接外部设备之间的同步串行通信,主要应用于Flash、数模转换器、信号处理器、控制器、EEPROM存储器等外设中。SPI总线属于一主多从接口,和I2C不同...

    一、SPI简介

    SPI,即Serial Peripheral Interface的英文缩写。从字面意思看就是串行外部设备接口,是一种全双工、高速、同步的通信总线。

    SPI最早是摩托罗拉公司开发的全双工同步串行总线,用于微控制器(MCU)连接外部设备之间的同步串行通信,主要应用于Flash、数模转换器、信号处理器、控制器、EEPROM存储器等外设中。

    SPI总线属于一主多从接口,和I2C不同的是,SPI 采用CS片选来控制主机与从机通信。现在的单片机几乎都支持SPI总线,其已经成为一种高速、同步、双工的通用标准,在IoT产品中得到广泛应用。

    二、SPI有几根线?

    SPI通常有4根线(四线制),可实现全双工通信

    【SCK】: 串行时钟(Serial Clock)

    【MOSI】:主发从收信号(Master Output, Slave Input)

    【MISO】:主收从发信号(Master Input, Slave Output

    【CS/CS】:片选信号(Slave Select)

    5d48e03d26daab8e8104bb7c88126d1b.png

    SPI应用也有3根线(三线制),实现半双工通信。

    241992dea97c66ac2fda7c41fa730bd3.png

    三、SPI通信原理

    SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,通过CPHA(时钟相位)、CPOL(时钟极性)来控制设备的通信模式。

    da8531d504a2e125edc7ac378ae2ebf5.png

    时钟极性CPOL是用来配置SCK的电平在哪种状态时是有效状态或者空闲状态。时钟相位CPHA是用来配置数据采样是在哪个边沿:

    CPHA=0,数据采样是在第1个边沿,数据发送在第2个边沿

    CPHA=1,数据采样是在第2个边沿,数据发送在第1个边沿

    CPOL=0,当SCLK=0时处于空闲态,有效状态就是SCLK处于高电平时

    CPOL=1,当SCLK=1时处于空闲态,有效状态就是SCLK处于低电平时

    53d080d8efe1073045edf8ac167e6162.png

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

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

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

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

    另外,分享个时序图识图方法。交叉线:数据允许发生改变,但不一定要变。平行线:数据不允许发生改变,必须稳定发送。

    ee9e90b6e16d04d61a99b2ff1e30ff8a.png

    再细说传输时序。SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。SPI接口没有指定的流控制,没有应答机制确认是否接收到数据。

    925765f0e537c75c4f1b7493f51b1940.png

    通过以上SPI总线常识的简单描述,我们大致可以了解到SPI具有高速、同步、全双工、总线结构、主从通信模式等优势,但也存在无指定流控制,也没有应答机制确认等短板。

    展开全文
  • MISO和MOSI是什么意思

    万次阅读 2012-11-28 20:24:06
    SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI...
  • PCIExpress是新一代的总线接口。2001年,英特尔公司就提出...它采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可...
  • I2C总线协议

    2018-02-25 13:29:58
    I2C总线是两线式的串行总线,分别为SDA(数据线),SCL(时钟线),I2C为同步串行通信。 I2C的接收方和发送方都已SCL这根时钟节拍为基准进行数据的收发。这个是什么意思呢?例如:51要向E2PROM发送一个数据(32),程序...
  • ehci、xhci是什么?它们有什么区别

    万次阅读 2017-06-15 10:24:46
    什么是ehci?ehci和xhci有什么区别?相信说到这个,不少朋友不知道是什么呢?是什么呢?...EHCI英文全称为Enhanced Host Controller Interface,是增强型主机控制器接口规范,描述了一个通用串行总线USB2
  • SPI最早是摩托罗拉公司开发的全双工同步串行总线,用于微控制器(MCU)连接外部设备之间的同步串行通信,主要应用于Flash、数模转换器、信号处理器、控制器、EEPROM存储器等外设中。SPI总线属于一主多从接口,和I2C...
  • USB

    千次阅读 2013-01-17 11:42:01
    第 1 章 USB的来龙去脉 目录 1.1. USB是什么1.2....1.1. USB是什么 ...那么与此USB相比,其他还有哪些非串行的总线,以及和此通用的串行总线来说,其他还有哪些相对“不通用”的串行总线呢?
  • 相信大家都会经常听到USB这个词,其实是英文Universal Serial Bus的缩写意思就是通用串行总线意思,千万不要以为是You S B的意思啊不过在USB后面通常会带有一些数字和字字母,像什么USB1.1,USB2.0,USB3.0 ,USB...
  • USB入门系列总结

    2017-11-09 20:15:35
    USB概述   USB是什么呢?一说USB是You SB的意思,即“你傻B”的意思。另一种说法是USB其实是美国的弟弟,因为美国叫USA,USB当然是他的弟弟了。  那么USB到底是什么呢?其实USB是通用串行总线(Universal Se
  • UMS(USB Mass Storage:大容量存储)是一个计算通信协议的设置 由USB实现者论坛定义,运行于串行总线。标准提供了各种存储设备的界面。 UMS和MTP不同 UMS模式下,PC操作存储设备的粒度是设备块(FAT block),而非...
  • USB 中MTP和UMS 模式

    千次阅读 2017-09-02 15:22:43
    UMS(USB Mass Storage:大容量存储)是一个计算通信协议的设置 由USB实现者论坛定义,运行于串行总线。标准提供了各种存储设备的界面。 UMS和MTP不同 UMS模式下,PC操作存储设备的粒度是设备块(FAT block),而非...
  • USB是什么呢?一说USB是You SB的意思,即“你...其实USB是通用串行总线(Universal Serial Bus)的简写,它已经有了10多年的历史了。USB协议出现过的版本有 USB1.0,USB1.1,USB2.0。由于USB是主从模式,设备与设备之间
  • USB是什么呢?...其实USB是通用串行总线(Universal Serial Bus)的简写,它已经有了10多年的历史了。USB协议出现过的版本有USB1.0,USB1.1,USB2.0。由于USB是主从模式,设备与设备之间、主机与主机
  • USB入门系列之一 —— USB概述2007-12-10 14:33USB是什么呢?一说USB是YouSB的意思,即“你傻B”的意思。...其实USB是通用串行总线(Universal SerialBus)的简写,它已经有了10多年的历史了。USB协议
  • USB入门

    2010-01-14 14:06:00
    USB入门系列之一 —— USB概述 USB是什么呢?一说USB是You SB的意思,即“你傻B”的意思...其实USB是通用串行总线(Universal Serial Bus)的简写,它已经有了10多年的历史了。USB协议出现过的版本有USB1.0,USB1.1,USB
  • SB入门系列(转)

    2009-11-12 10:20:00
    USB是什么呢?一说USB是You SB的意思,即“你傻B”的意思。...其实USB是通用串行总线(Universal Serial Bus)的简写,它已经有了10多年的历史了。USB协议出现过的版本有USB1.0,USB1.1,USB2.0。由于USB是主从模式,设备
  • USB概述

    2011-08-25 17:46:00
    其实USB是通用串行总线(Universal Serial Bus)的简写,它已经有了10多年的历史了。USB协议出现过的版本有USB1.0,USB1.1,USB2.0。由于USB是主从模式,设备与设备之间、主机与主机之间不能互连...
  • Gentoo Linux USB指南

    2009-06-12 11:10:17
    Gentoo Linux USB指南 ...USB的意思是通用串行总线(Universal Serial Bus),是一种扩展接口标准,主要用于不同计算机或其周边设备之间的通信。一些大众化的USB设备有键盘、鼠标、U盘、数码相机、CD和DVD外接...
  • USB 挂载配置

    千次阅读 2011-06-30 16:39:00
    USB的意思是通用串行总线(Universal Serial Bus),是一种扩展接口标准,主要用于不同计算机或其周边设备之间的通信。一些大众化的USB设备有键盘、鼠标、U盘、数码相机、CD和DVD外接读写器、打印机等。 目前USB标准有...
  • 如何查看USB设备

    2010-06-24 22:05:00
    USB的意思是通用串行总线(Universal Serial Bus),是一种扩展接口标准,主要用于不同计算机或其周边设备之间的通信。一些大众化的USB设备有键盘、鼠标、U盘、数码相机、CD和DVD外接读写器、打印机等。 目前USB标准...
  • SPI是单片机外设电路中...SPI总线的英文全称为S“Serial Periphral Interface”,意思串行外设接口,由于通讯距离比较短,适用于芯片级别的短距离通讯。SPI的通讯分为主机和从机,属于高速全双工的总线通讯方式,SPI
  • USB的意思是通用串行总线(Universal Serial Bus),是一种扩展接口标准,主要用于不同计算机或其周边设备之间的通信。一些大众化的USB设备有键盘、鼠标、U盘、数码相机、CD和DVD外接读写器、打印机等。 ...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

串行总线什么意思