1
CAN总线简介
CAN(Controller AreaNetwork)总线最早由BOSCH博世公司开发,控制器局域网(CAN)为串行通讯协议,最早知识应用在汽车电子领域,但随着技术的发展,应用的需要,由于其高性能、高可靠性、及独特的设计,CAN越来越受到人们的重视。 CAN 的应用已经拓展到很多领域,像传动控制,变频器,楼宇控制,农业机械,船舶等等,范围很广,从高速的网络到低价位的多路接线都可以使用 CAN。在汽车电子行业里,使用 CAN 连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达 1 Mbit/s。我们曾经介绍过的SAE J1939协议就是基于CAN总线的一种高层协议,被应用在重卡,农机,船舶等对安全要求较高的领域。下图就是一个简单的CAN网络。
2
CAN-Bus发展
1993年CAN 成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。CAN的规范从CAN 1.2 规范(标准格式)发展为兼容CAN 1.2 规范的CAN2.0规范(CAN2.0A为标准格式,CAN2.0B为扩展格式),目前应用的CAN器件大多符合CAN2.0规范。CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
3
CAN总线特性
报文的优先权
保证延迟时间
设置灵活
时间同步的多点接收
多主机
完善的错误检测处理机制
CAN总线的特性远不止这些,关于更多CAN总线基础的一些要求以及参数请参考BOSCH官方文档,建议大家阅读英文原版的官方文档,这里就不在赘述,简单几句话也讲不完,具体开发时候,对着示波器抓几个波形,在对着文档阅读记忆会比较深刻,后面的课程我们会以飞思卡尔kv4x系列32位MCU来带领大家学习CAN-bus。
4
飞思卡尔FlexCAN模块
飞思卡尔kv4x系列MCU包含一个称为FlexCAN的模块,这个模块完全实现遵守ISO11898-1和CAN2.0B的标准。下图为该模块的框图。
虚线框内为片内,虚线框外为片外,应用的时候,外部电路要接收发器,最好用隔离收发器。片内主要包含协议引擎,消息缓冲RAM块,外设总线接口,发送仲裁,接收匹配,总线接口单元等。支持标准帧和扩展帧。FlexCAN模块有很多特点:
支持CAN2.0B的全功能
兼容ISO11898-1 标准
灵活的消息邮箱数据长度(0~8字节)
支持FIFO和DMA功能
可编程的时钟源(外设时钟源或者晶振时钟源,对应的波特率配置不太一样, 应用时候要注意)
支持回环模式和只听模式
可编程的传输优先级机制
可屏蔽中断
低功耗模式
强大的FIFO功能
5
工作模式
正常模式 (用户或者管理)
在正常模式下,模块可以收发消息帧,错误处理,所有CAN一些功能都被使能。用户和管理模式的不同在与对一些控制寄存器的权限不同。
冻结模式:
在这种模式下,不能收发数据,并且会丢失同步到can总线
回环模式:
在这种模式下,可以实现自发自收,常用于测试。发送器的数据位流会返回接收器
只听模式:
在这种模式下,发送被禁止,所有的错误计数会被冻结
低功耗模式:
低功耗模式下又分为:禁止模式,打盹模式和停止模式
6
信号描述;
Rx:CAN 接收,0代表显性,1代表隐性,在协议的描述内容里,常常会看到显性隐性的术语,其实就是0和1.
Tx; CAN发送,0代表显性,1代表隐性。
CAN的寄存器比较多,设置也较复杂,后面的课程会专门来介绍。
7
功能概述
在应用中有消息邮箱和FIFO 两种应用方案配置,但都会涉及以下过程。
主要分为:
发送过程
发送仲裁过程接收过程
接收过程
接收匹配过程
8
中断
发送接收中断
错误中断
唤醒中断
发送警告中断
接收警告中断
9
协议时序
下图是CAN模块时钟源配置的一个简图,关于如何根据这个图的描述来配置波特率,会在后面的专题里详细讲解,现在大概了解下有两种选择方案,一种是晶振,一种是外设时钟。
这两种配置都已经成功调试和应用,并在250kbps和1Mbps下测试通过。据数据手册所言,晶振源模式比外设时钟模式精度高。
10
帧类型
报文传输由以下4 个不同的帧类型所表示和控制: 数据帧:数据帧将数据从发送器传输到接收器。 远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。 错误帧:任何单元检测到总线错误就发出错误帧。 过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。 数据帧和远程帧可以使用标准帧及扩展帧两种格式。它们用一个帧间空间与前面的帧分隔。
标准帧格式:
扩展帧格式:
今天先讲到这里,简单介绍了下CAN-bus的内容,希望对大家有所帮助。