CAN详解

一、CAN

        CAN是控制器局域网络(Controller Area Network)的简称,是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进行了标准化,在欧洲已是汽车网络的标准协议。
        CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

二、硬件连接

        CAN总线只有2根线与外部相连,并且内部集成了错误探测和管理模块,是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率最高可达1Mbps(40m以内),最长传递距离达10km(速率为5kbps以下)。网络节点目前可达110个,报文标志符2032种(CAN2.0A),扩展标准(CAN2.0B)中报文标志符几乎不受限制。
        CAN网络可以理解为多台CAN设备连接在同一条CAN总线上组合成的网络,其中的CAN设备我们称之为节点。CAN网络拓扑结构如下图:
在这里插入图片描述
        一个CAN节点主要包含三类:

  • MCU应用程序,根据程序分层可分为三部分:
    (1)业务逻辑代码:是根据项目需求而定,也很好理解。比如我读取一个传感器数据,并对其做出相应逻辑处理。
    (2)协议层代码:比如后续要讲述的CANOpen。
    (3)底层驱动代码:配置CAN总线相应参数、控制收发的代码
  • CAN控制器。内部结构还是挺复杂的,一般现在CAN控制器都是与处理器集成在一起。包含一些控制、状态、配置等寄存器。比如有些STM32芯片带有CAN,也就是说CAN控制器已经集成在STM32芯片中了,我们只需要编程操作其中的寄存器即可。
  • CAN收发器。将CAN收发引脚(CAN_TX和CAN_RX)的TTL信号转换成CAN总线的电平信号。

        可以把CAN总线通信认为是UART通过RS485进行通信:CAN控制器就如UART的控制器,而CAN收发器就如RS485转换芯片。

三、通信协议

        一般比较常见的CAN通信协议主要有三种:J1939、CANopen、devicenet。这些CAN通信协议的最大特点就是废除了传统的站地址编码,而代之以对通信数据块进行编码。
        CAN协议是通过以下5种类型的帧进行的:

  • 数据帧,用于发送单元向接收单元传送数据的帧。
  • 远程帧,用于接收单元向具有相同ID的发送单元请求数据的帧。
  • 错误帧,用于当检测出错误时向其它单元通知错误的帧。
  • 过载帧,用于接收单元通知其尚未做好接收准备的帧。
  • 间隔帧,用于将数据帧及遥控帧与前面的帧分离开来的帧。

        数据帧和遥控帧有标准格式扩展格式两种格式。标准格式有11个位的标识符(ID),扩展格式有29个位的ID。

四、数据帧

        数据帧结构上由7个段构成,其中根据仲裁段ID码长度的不同,分为标准帧(CAN2.0A)和扩展帧(CAN2.0B)。
在这里插入图片描述

  • 帧起始帧结束
    在这里插入图片描述
  • 仲裁段
    在这里插入图片描述
  • 控制段
    在这里插入图片描述
  • 数据段
    在这里插入图片描述
  • CRC段
    在这里插入图片描述
  • ACK段
    在这里插入图片描述

五、远程帧

在这里插入图片描述
        数据帧与远程帧的区别:
在这里插入图片描述

六、错误帧

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、过载帧

在这里插入图片描述

八、帧间隔

在这里插入图片描述

九、CAN数据处理流程

在这里插入图片描述

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值