1、1. C_CAN 用户手册 1术语和缩写Terms and AbbreviationsThis document uses the following terms and abbreviations.这个文档使用到以下的术语和缩写。Term MeaningCAN Controller Area Network控制器局域网BSP Bit Stream Processor位流处理器BTL Bit Timing Logic位时间机制CRC Cyclic Redundancy Check Register循环冗余码校验冗余DLC Data Length Code数据长度编码EML Error Mana
2、gement Logic错误管理机制FSM Finite State Machine有限动作状态TTCAN Time Triggered CAN 时间触发通讯的控制器局域网 2. C_CAN 用户手册 2Functional Description 功能简介C_CAN 是可以作为单独或集成 ASIC 一部分的 CAN 总线模块。用硬件描述语言描述 C_CAN 综合到逻辑器件。它包含 CAN 内核、消息 RAM、消息处理状态机、控制寄存器和模块接口。CAN 内核通信符合 CAN 协议规范 2.0A 和 2.0B。在使用中位速率可以编程达到 1M/S。硬件连接物理层需在接收发射器。在 CAN 网络
3、中通信,每个消息目标需要设定,接收的消息目标和识别符掩码存储到消息 RAM 中。所有关于消息处理是在消息处理状态器中完成。这些功能包括消息过滤、CAN 内核与消息 RAM 之间的通信和消息发送中断请求并产生中断模块。C_CAN 中的寄存器组可以通过接口模块被外器 CPU 访问。这些寄存器用于控制或配置 CAN 内核和消息处理状态机,并存储到消息 RAM。在 C_CAN 模块中的接口模块可以定制成适合于用户使用的模块接口。C_CAN 具有以下的功能特性:支持 CAN 协议怎版本 2.0A 和版本 2.0B位速度达到 1M/S32 个消息目标(在消息 RAM 中有 32 个可以自定义接收或发送的消
4、息目标)每个消息目标有自己的识别符掩码可编程的 FIFO 模式(消息目标在 FIFO 中连续存放)可屏蔽中断对于时间触发的 CAN 应用可以取消自动重传模式在自己测试操作可以设计成循环模式(重复发关这一个消息)兼容摩托罗拉公司 HC08 的 8 位单处理模块接口对 ARM 内核有 2 个 16 位的接口模式给 AMBA ABB 总路线3. C_CAN 用户手册 3模式结构 Block DiagramCAN CoreCAN 内核CAN 协议控制器和接收与发送移位寄存器完成消息的并行或串行转换Message RAM消息 RAN存储消息目标和识别符掩码Registers寄存器所有寄存器用于控制和配置
5、 C_CAN 模块Message Handler消息状态处理机控制数据在 CAN 内核接收与发送移位寄存器与消息 RAM之间的传送,也在控制和配置寄存器中产生中断Module Interface 模块接口到目前为止,C_CAN 模块被分成种不同的接口。一种是对于摩托罗拉HC08 控制器的位接口,和二种来自 ARM 的 AMBA APB 总线的 16 位接口4. C_CAN 用户手册 4操作模式 Operating Modes、初始化程序 Software Initialization初始化程序开始前必须置 CAN 控制器中的控制寄存器中的 Init 位,或者由软件或硬件复位还是总线关闭。当 I
6、nit 被置位,所有与 CAN 传送的消息被停止。 CAN 总线的 CAN_TX状态为隐性(HIGH),错误处理寄存器状态不变,Init 置位不会改变任何配置寄存器。初始化 CAN 控制器时,处理器(CPU)必须设置位定时寄存器和每个消息对象。如何一个消息对象不需要,设置此消息的 MsgVal 没有效(0)即可。否则初始化全部消息对象。当 CAN 控制寄存器中的 Init 和 CCE 两者都置位时,配置位定时的位定时寄存器和位扩展定时寄存器才被激活。仅由处理器(CPU)复位 Init 才完成软件初始化。然后,在得到使用总线权和发送消息之前等待总线空闲时(产生 11 个连续隐性位),位流处理器(
7、BSP)同步传数据。初始化消息对象时不需要将 Init 置位,可以在 CAN 控制器不工作的时候进行。在位流处理器(BSP)开始消息传输之前,所有消息对像需要初始化一个单独的识别符或初始消息无效。在正常工作期间改变消息对象的配置时,处理器(CPU)修改配置前先设置消息对象的 MsgVal 无效(0) 。修改配置完成,MsgVal 由处理器(CPU)l 置位,消息才有效。2、CAN 报文传送 CAN Message Transfer一旦初始化 C_CAN 和 Init 复位(设置为 0),C_CAN 的 CAN 内核同时自我检测总线和在总线上开始传送消息。如果接收到的消息符合本节点过虑的要求(通
8、过消息状态处理机过滤),存储到相应的消息目标对象。整个消息包括仲裁识别位、数据长度(DLC)和 8 个字节数据都存储到消息目标对象。如果使用识别符(ID)掩码(屏蔽码),消息目标对象中的仲裁位可以被屏蔽(不仲裁相应被屏蔽的识别符位)。不管什么时候,处理器(CPU)可以通过 CAN 接口寄存器读或写每一条消息(报文)。在并发操作中,消息状态处理机保证数据可靠性。传送的消息(报文) 由处理器(CPU)更新。如果永久性的消息目标对象(仲裁位和控制位在初始化配置时被设定)存在消息(报文),仅数据位被处理器更新,然后将 TxRqst 和 NewDat 位置位,消息即开始传送。如几个 (个别)传送的消息配
9、置成相同的消息对象目标(消息对象的编码值无效),这些消息传送请求前必须以对全部消息进行初始化设置。很多消息对象目标传送可以在同一时间请求,消息对象对像的先后顺序由自身的优级确定,消息可以随时更新或设置为无效,甚于在发送请求还在等待时候。消息未发送而被更新则旧的数据将丢弃。依照消息对象的配置,传送消息被自动请求,由接收带匹配识别符的远程帧。3、取消自动重传 Disabled Automatic Retransmission依据 CAN 规范,在传送期间仲裁已经丢失或干拢错误时,C_CAN 提供了自动重传帧的机制。在帧传送成功之前,帧传送服务不能被使用都证实。传送失败意味自动重传机制使能。当 C_
10、CAN 工作在时间触发 CAN 环境时,自动重传机制也可以取消。编程 CAN 控制器中的 DAR 置位(1)取消自动重传机制。在这种操作模式中,程序必须考虑在消息缓冲控制寄存器中 TxRqst 和 NewDat 不同的情况。当每个消息报缓冲发送请求开始位(TxRqst)被复位 (0),,然而 NewDat 位依然置位(1).当传送成功后 NewDat 位复位,当传送失败 (仲裁丢失或传送错误 )NewDat依然不变( 置位 1),重新传送由处理器(CPU)置位 TxRqst 为 1。4、测试模式 Test Mode由处理器(CPU)设置 CAN 控制寄存器中的 Test 位置 1,进入测试模式
11、。在测试模式中,测试寄存器中的 Tx1、Tx0、Lback、Silent 和 Basic 需在写。Rx监听 CAN_RX 引能脚的状态,并且仅读。当测试模式位 TEST 复位为 0,所有测试寄存器中的功能全部取消。5、无负载模式/只听模式 Silent ModeCAN 内核可以通过编程设置测试寄存器中的 Silent 置 1,运行于无负载模式。在无负载模式中,C_CAN 能接收有效数帧和有远程帧,但它仅发送确定接收位在 CAN 总线上,以及它不能发送。如 CAB 内核需要发送一个显性位(ACK 应答位,超载标志,激活错误标志),此位在内部自动更改以至 CAN 内核监听这个显性位(0), 尽管
12、CAN 总是出现在隐性状态。无负载模式可以用于分析 CAN 总线运行情况,在没有使用总线时通过传送一个显性位(应答位、错误帧)。在 ISO 11898-1,无负载模式被叫做总线监听模式。只听模式成功接收到消息也不会作应答,错误计数器停止,不传送消息,所以可以作位定时波特率软件自区配设置。6、循环模式/自检测模式 Loop Back Mode由编程测试寄存器位 Lback 置位(1),CAN 内核进入测试循环模式(控制寄存器中的 TEST=1)。在循环模式中, CAN 内核自我协商传送消息同时接收消息和存储通过过虑的消息到接收缓冲区。此模式提供了自我测试的功能,不受外部干拢影响。在循环模式中,C
13、AN内核忽略应答信号错误(接收位采样在数据帧或远程帧应答场内)。在这个模式中,CAN 内核从自己的 Tx 输出执行一个反馈信号到 Rx 输入。实际上 CAN 内核把 CAN_RX 输入引脚断开。传送消息时监听 CAN_TX 引脚。自检测模式检测所有节点,没有任何活动的节点使用自接收命令,即使没有应答,CAN 也可会成功发送。7、循环结合无负载模式 Loop Back combined with Silent Mode编程 Lback 和 Silent 同时置位 (1),CAN 运行在在循环无负载模式。这种模式使用于自我测试(Hot Selftes),意味着 C_CAN 能在没有正常的 CAN 系统连接到 CAN_Tx 和 CAN_Rx 引脚上时,自测试运。在这个模式中, CAN_RX引脚被断开和 CAN_TX 引脚输出隐性(1)。