can总线资料分析文档

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

41 Controller Area Network(CAN)

41.1 描述

CAN 控制器可以处理多种类型的帧:数据帧(Data)、远程帧(Remote)、错误帧(Error)、过载帧(Overload);处理速率可以达到1Mbit每秒。

CAN控制器的访问可以通过配置多个寄存器来访问。有8个邮箱(mailbox)可以被使用。

任何邮箱可以被编程为接收邮箱、发送邮箱。如果接收邮箱已经接收到一个报文,那么CAN控制器会加锁直到应用取出这个报文;否则已经接收的这个报文会被新接收的那个报文覆盖。发送邮箱必须同时激活。每个发送邮箱都被分配一个优先级。

CAN控制器有一个16位的定时器,可以用于接收和发送报文的计数。此定时器在CAN 控制器有效后开始计数。在时间触发模式下,此计数器可以在接收完最后一帧后自动复位或由应用程序复位。

CAN控制器提供了优化的功能来支持Time Triggered Communication(TTC) 协议。41.2 嵌入式功能

1)充分兼容CAN 2.0 Part A 和2.0 Part B;

2)速率可以达到1Mbit/s;

3)8个具有以下功能的面向对象的邮箱:

(1)每个消息的CAN 规格 2.0 Part A 和CAN 规格 2.0 Part B的可编程性;

(2)在接收和发送模式下的可配置性;

(3)每个消息有独立的29位识别码和定义的掩码;

(4)每一个邮箱数据对象有对应两个32位的可访问的数据寄存器;

(5)在发送和接收消息时有一个16位的定时器来计数;

(6)通过ID屏蔽的位域的硬件关联来加速家族ID处理。

4)16位的内部定时器可用于计数和网络同步;

5)可编程的接收缓存,长度可以达到8个邮箱对象;

6)自动波特率和监听模式;

7)(Low Power Mode)低功耗模式和在总线活动过程中的唤醒模式,或通过应用进入这些模式;

8)可以处理数据帧(Data)、远程帧(Remote)、错误帧(Error)、过载帧(Overload)。41.7 CAN控制器特征

41.7.1 CAN控制器概要

CAN是一个多主串口通讯协议,可以高效的支持实时性、安全性要求比较高的实时控制应用场景,速率可以达到1Mbit/s。

数据帧:发送节点发送数据帧给解决节点。最长的标准数据帧是108bit;最长的扩展数据帧128bit。

远程帧:目的节点请求数据通过发送一个带有标识符远程帧给源节点。然后源节点发送一个数据帧作为回复给请求数据的节点。

错误帧:任何节点检测到总线错误产生的帧。

过载帧:为前一个报文和后一个报文之间或远程帧提供一个延迟的帧。

Atmel CAN 控制器为CPU提供充分兼容the CAN protocol V2.0 Part A and V2.0 Part B

的功能。最小化CPU的通信负载。CAN控制器自动处理数据链路层和物理层。

CPU读写数据或报文通过CAN控制器邮箱。每个邮箱有一个标识符。CAN控制器封装、解码要发送的报文或解析总线上收到的数据帧。远程帧、错误帧、过载帧在软件的监控下自动处理。

41.7.2 邮箱架构

CAN模块有8个邮箱。每一个邮箱有个对应于CAN标志符的标志符。消息可以匹配标准帧标识符或扩展帧标识符。标志符在CAN初始化的时候被定义,后续可以动态改变,所以可以处理新的消息家族。多个邮箱可以被配置为相同的ID。

每个邮箱可以被配置为发送或接收模式。邮箱类型在CAN_MMRx 寄存器的MOT域中定义。

41.7.2.1 消息接收过程

如果CAN_MIDx寄存器的MIDE域为1,则此邮箱可以处理扩展帧,否则可以处理标准帧。当接收到一个新的报文后,此报文ID被CAN_MAMx的值屏蔽,然后和CAN_MIDx值比较。如果相等,则把此消息ID拷贝到CAN_MIDx寄存器。

如果一个邮箱要处理不同的报文(具有不同的ID),则CAN_MAMx寄存器屏蔽位将屏蔽ID家族中变化的位。当接收到一个报文后,应用必须解析CAN_MIDx寄存器中屏蔽的位。为了加速解码,CAN_MFIDx中变化的位都设置为0。

41.7.2.2 接收邮箱

当CAN模块接收到一个报文后,CAN控制器查询优先级最高的邮箱,并比对ID。如果相等,则保存在此邮箱的数据寄存器中。根据配置,如果消息没有被应用识别,或一个带有相同ID新的消息接收到,此邮箱将会覆盖先前的一帧。

也可以配置邮箱为消费者模式。此模式下,当接收到一个发送请求后,一个远程帧会被自动发送。接收的第一个答复被存放在对应的邮箱数据寄存器。

多个邮箱可以组成链状结构来接收一个缓冲。这些邮箱必须配置为相同的ID,并为接收器模式,出来最后一个邮箱,应该被配置为写重复模式。最后一个邮箱要检测缓冲溢出。

41.7.2.3 发送邮箱

当发送一个消息时,消息长度和数据写入到带有正确标识符的邮箱中。每一个发送邮箱都会被分配一个优先级。CAN控制器会自动发送优先级高的邮箱中的数据。优先级保存在CAN_MMRx寄存器的PRIOR域中。

也可以配置为生产者模式。此模式下,当接收到一个远程帧后,邮箱数据将会被自动发送。使能这种模式后,一个生产者可以用一个邮箱代替两个邮箱:一个检测远程帧,一个发送回复。

41.7.3 时间管理单元

CAN控制器集成了一个自动运行16位的的内部定时器。此定时器被CAN总线行的位时钟来驱动。在CAN_MR寄存器的CANEN域初始化CAN时初始化此计数器。在下面情况下会被清零:

1)复位;

2)低功耗模式有效的时候;

3)在时间触发模式,当最后一个邮箱接收到结束帧时。

应用也可以通过设置CAN_TCR寄存器的TIMST域来复位内部定时器。内部定时器的当前值可以通过读CAN_TIM寄存器来获取。

当计数器从FFFFH轮转为0000H时,CAN_SR寄存器的TOVF(Time Overflow)域置位。此域通过读取CAN_SP寄存器被消除。根据CAN_IMR寄存器设置的中断,当TOVF有效时,将产生一个中断。

相关文档
最新文档