0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CAN总线的特点、帧类型及应用中的注意事项

电子设计 来源:电子设计 作者:电子设计 2020-12-24 13:54 次阅读

1980年,Bosch工程师开始研究汽车上高速串行通信的问题,并在1986年发布了CAN(Controller Area Network)总线。CAN以其多主,高速(最高1Mbps),抗干扰的特性被广泛应用汽车及各种工业环境。在此我们主要介绍一下CAN总线的特点,帧类型,以及应用中的注意事项。

1.CAN总线特点

1.1多主控制

跟我们常用的RS485只有一个主机,从机只能等待主机的轮询不同,在CAN总线中,当任意一个节点监测到总线空闲时,就可以立即启动信息的发送,也就是每一个节点都可以当主机。当然,这马上会引起我们的担心。如同一个家庭每个人都当家做主,那还不乱了套吗?不急,我们来看一下。这个问题是如何被巧妙地解决的。

物理层,CAN采用差分总线。单片机引脚的逻辑电平0,被CAN收发器(PHY)转换为显性电平(Dominant),逻辑电平1被转换为隐性电平(Reccesive)。总线上执行的是“线与”逻辑,只要有一个节点输出显性电平,那么总线上就是显性电平。

仲裁(Arbitration),CAN的发送总是以SOF(Start Of Frame)起始,紧跟器后是ID。在发送ID的同时,节点监听总线上的显隐状态,当监听到的状态与自己发送的不一致时,此节点将停止发送,进入只收模式。如下图所示,每一帧消息所具有的ID决定了此消息的优先级,发送最高优先级消息的节点获得总线最后的控制权,得以最终完整的发送自己的消息。

接收滤波(Filter)。一个挂在总线上的节点可以监听到所有的消息(Message),但通常我们只对其中某些消息感兴趣,这时怎么办呢?CAN模块一般会提供接收滤波功能(Filter)。通过设置滤波寄存器,我们可以达到接收消息时,比对ID所有位,也可以只比对ID某些位,从而达到只接收ID与自己完全相同的消息,或接收ID与自己部分相同的消息的目的。利用这种机制可以给节点编组,给组成员群发消息。

1.2速度快,距离远

CAN总线可以达到1Mbps的速率。总线速度随着传输距离增加而下降,下面是一些典型速率。在一个数据帧内可以传送8个字节的数据。

1000kbps 40m

500kbps 130m

100kbps 620m

50kbps 1300m

5kbps 10000m

2012年,Bosch又发布了CANFD(CAN with Flexible Data-rate),最高速率可以达到10Mbps,在一个数据帧内可以传送64字节的数据。2015 年 ,国际标准化组织(ISO)正式发布支持CAN FD的11898-1协议。

2.帧类型

CAN协议很简洁,只包含4种帧类型。

数据帧(Data Frame),用来把数据从发送节点传送至接收节点。

远程帧(Remote Frame),一个节点用来请求其它节点发送数据。一个节点发送远程帧时会把Arbitration Filed最后一位RTR(置1),具有相同ID的节点会把数据发送到总线上。

错误帧(Error Frame),当一个节点检测到错误时会向总线发出错误帧,以通知其它节点。

过载帧(Overload Frame),用来在数据帧或远程帧之间插入延时。

帧间隔(Interframe Space),不是一种帧类型。它是帧之间的间隙,由多个连续的隐性电平构成。

编程时我们直接用到的就是数据帧和远程帧。软件编程比较简单,需要注意的是一般需要设置寄存器中的初始化请求位(Initialization request),使模块进入初始化状态,才能开始进行CAN模块的各种配置,初始化完成后退出初始化状态,进入运行状态。

3.CAN总线应用注意事项

3.1终端匹配电阻

在CAN总线的两端要用120欧的电阻端接进行阻抗匹配,因为CAN总线长度一般会比较长,传输的信号速度快,特别是信号的边沿跳变部分频率很高。

传输线效应 平常我们总是认为电信号从一个引脚发出,通过导线,瞬间就会到达接收引脚,导线上的电压处处是相等的。但是当信号的频率很高,或者导线特别长,总之导线的长度接近传导信号波长的1/10后,我们就需要转变一下我们的观念,此时信号的传输主要受电缆特性阻抗的影响。

电缆特性阻抗 = 信号电场强度(伏特/米) / 磁场强度(安培/米)

电缆的特性阻抗与电缆的材质,粗细,线缆之间的距离有关,而与电缆的长度无关。电缆的特性阻抗还和信号的频率有关,但是当频率增加到一定数值时,特性阻抗不再变化。常用的带屏蔽双绞线的特性阻抗是120欧。

信号在阻抗不连续处会产生反射,所以要保持电缆阻抗的连续性,而且线缆终点需要用等于电缆特性阻抗的电阻进行端接,以消耗掉传输至端点的信号,否则信号会反射回去和后续发出的信号产生叠加,引起错误。

频率与波长对应关系

150K 2000m

500K 600m

1M 300m

10M 30m

端接电阻的另一个作用是可以使CAN总线从显性状态快速回到隐性状态。因为在显性状态下,两条线缆CAN_H, CAN_L之间的寄生电容会被充电,如果没有一个放电回路,总线不能快速回到隐性状态。

3.2EMC防护

CAN常常工作在强干扰的工业环境中,采用屏蔽双绞线会极大的提升EMC防护性能。同时如果数字电路部分和CAN收发器之间用高速光耦隔离开,并且对两部分采用完全隔离的电源供电,那么可以把总线上的干扰最大限度地隔离在外部。

需要注意的是屏蔽层只能在一点接入大地。如果在多个点接地,那么通过大地会形成电流环路,反而会引入噪声。

3.3时钟容差(Oscillator Tolerance)

总线的速度越高,需要的时钟精度越高。一般在低于125kpbs时可以用低成本的陶瓷震荡器(ceramic resonators),更高的速度下建议使用晶体振荡器(Quartz,or Crystal Oscilators)。

3.4CAN模块死机现象

CAN模块内部有监控电路,总线上的异常,如短路等,会引起错误计数器增长。TEC(Transmit Error Counter), REC(Receive Error Counter)。当发送错误TEC计数超过255后,CAN模块进入BUS-OFF模式,此节点不能发送也不能接收。这样做的好处是可以避免由个别模块的问题引起整个总线不能工作。

芯片一般会提供两种恢复机制:自动和手动模式。比如在STM32单片机中,如果ABOM位设置为1,CAN模块将不断尝试自动恢复。如果ABOM=0,则需要程序进入CAN初始化模式,重新配置后,再退出初始化进入正常工作模式。

由于CAN总线非常可靠,不易出错,所以在测试阶段建议人为制造一些总线错误,比如短路,断路,强干扰之类,看程序是否能从异常状态下恢复。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6030

    文章

    44482

    浏览量

    631749
  • CAN总线
    +关注

    关注

    145

    文章

    1911

    浏览量

    130551
收藏 人收藏

    评论

    相关推荐

    can标准和扩展能否共存

    CAN(Controller Area Network)是一种用于汽车和工业自动化领域的现场总线通信协议。CAN协议具有多种格式,包括标准
    的头像 发表于 07-24 15:24 1417次阅读

    can网络数据特点

    特点,在分布式系统得到了广泛应用。 数据的重要性 :数据CAN网络中用于数据传输的基本单元,其结构设计和特性直接关系到整个网络的通信
    的头像 发表于 07-24 15:18 281次阅读

    现场总线的使用方法与注意事项

    的稳定可靠运行,正确的使用方法和注意事项至关重要。本文将详细介绍现场总线的使用方法和注意事项,以供读者参考。
    的头像 发表于 06-06 11:49 626次阅读

    FMD LINK 使用注意事项

    电子发烧友网站提供《FMD LINK 使用注意事项.pdf》资料免费下载
    发表于 05-06 10:11 0次下载

    CAN总线系统故障诊断的步骤、方法、注意事项

    CAN总线系统故障诊断的步骤、方法、注意事项  CAN总线系统故障诊断是指对CAN
    的头像 发表于 02-03 11:31 4293次阅读

    高速CAN总线和低速CAN总线的特性

    高速CAN总线和低速CAN总线的特性 高速CAN总线和低速C
    的头像 发表于 01-31 14:09 2450次阅读

    请问用CAN存储器存储的CAN总线数据格式有哪些呢?

    请问用CAN存储器存储的CAN总线数据格式有哪些呢? CAN总线是一种常用于汽车、工业控制和其
    的头像 发表于 01-31 13:46 1152次阅读

    can总线的数据数据长度码和数据字节数的关系?

    can总线的数据数据长度码和数据字节数的关系? CAN总线是一种常用于数据通信的协议,它使用
    的头像 发表于 01-31 11:31 2006次阅读

    CAN总线的标准和扩展有什么区别呢?分别适用于什么工况?

    CAN总线的标准和扩展CAN协议的两种
    的头像 发表于 01-30 09:41 5419次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>的标准<b class='flag-5'>帧</b>和扩展<b class='flag-5'>帧</b>有什么区别呢?分别适用于什么工况?

    CAN通信协议中有哪几种类型CAN通信中格式的作用

    CAN通信协议中有四种类型,分别是数据、远程、错误和过载
    的头像 发表于 01-30 09:18 4856次阅读

    CAN总线共模电感选型

    CAN总线共模电感是应用于CAN总线通信中的一种电子元件,用于解决CAN总线通信中的共模干扰问题
    的头像 发表于 01-05 13:42 3690次阅读

    霍尔元件使用的注意事项

    霍尔元件使用的注意事项  霍尔元件是一种常见的电子元件,主要用于测量和检测磁场的变化。它具有灵敏度高、响应速度快、耐磁场干扰等优点,在各种应用得到广泛使用。然而,为了确保霍尔元件的正常工作和延长其
    的头像 发表于 12-18 14:56 1155次阅读

    如何用示波器排查CAN的各种错误呢?

    ,在CAN通信中,错误可能会导致设备故障和通信中断,因此排查CAN错误非常重要。本文将详细介绍如何使用示波器排查CAN的各种错误
    的头像 发表于 12-07 11:09 1060次阅读

    javaequals()方法的注意事项

    会有不同的注意事项。在本文中,我们将详细讨论equals()方法的注意事项,并解释如何正确使用它来比较两个对象。 首先,我们来看一下equals()方法的基本定义: public boolean
    的头像 发表于 11-17 16:59 756次阅读

    电源的电容作用及注意事项

    电子发烧友网站提供《电源的电容作用及注意事项.pdf》资料免费下载
    发表于 11-13 09:21 0次下载
    电源<b class='flag-5'>中</b>的电容作用及<b class='flag-5'>注意事项</b>