新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于AT90CAN128的CAN总线设计

基于AT90CAN128的CAN总线设计

作者:时间:2013-03-01来源:网络收藏

4 集成 控制器的高端8位AVR

上文提到, 电梯控制系统需要处理多路信息, 而且它们可能是具有不同传输速率的, 因此需要使用不同通道的 控制器。对于控制系统, 必须具有可操作性, 考虑到要减轻主CPU 的负担, 因此,一个简单的操作系统对主系统进行操作, 而数据的交换方式就是采用 传输, 此文中称这个操作系统为副系统。副系统相对比较简单, 其功能主要包括: ! 和主板进行信息交换; ? 具有按键供输入; # 具有显示信息的显示器。针对功能的需要和程序的体积, 选用了ATMEL公司近年力推的8位AVR控制器at90can128。

a t90can128是一种AVR 增强型R ISC结构的低功耗CMOS 8位单片机。通过执行一个单时钟周期的高效指令, 每MH z能达1M IPS,这就可让系统人员将功率损耗与处理速度优化。AVR内核具有丰富的指令集并带有32个通用目的工作寄存器。32 个寄存器全都直接连到运算逻辑单元( ALU ) , 允许两个独立的寄存器在一个时钟周期执行单个指令的方式访问。其结果就是, 采用这种结构的速度比常规的R ISC单片机快10倍的同时代码效率更高。它除了拥有一般AVR 处理器的AD 模块, SPI模块外, 还集成CAN 控制器, 为搭建CAN 通信的系统提供了便利。控制结构如图2所示。

基于AT90CAN128的CAN总线设计

图2 at90can128的CAN控制结构。

对于复杂的CAN 通信协议, 在此不详述, 以下就at90can128的CAN控制器使用作介绍。

a t90can128的CAN 控制器提供了所有有利于消息管理的硬件, 对于每个要发送或接收的信息都是通过一个叫做消息对象( message ob ject) 的东西来封装起来的。在对模块初始化的时候, 程序会指定哪些消息要发送, 哪些消息要接收, 只有那些约定好标识符的消息才能被正确无误地交换。另外, 对于接收到的远程帧, 控制器会进行相应的自动回复。

所以在这种方式下, 相对于最原始的CAN 控制方式, CPU 的负担大大减小了。用户可以根据自身要求, 通过对相关寄存器进行配置达到自己的要求。

而在发送消息之前, 必须初始化几个字段:

其中IDT 是标识符字段, IDE 是标识符扩展使能选择, RTRTAG是远程传输请求, DLC 是数据长度代码, RBnTAG 是保留字段( n = 0, 1) , MSG 是指向相应MOB的CAN 数据。当MOB 的发送指令执行后, MOB 就会准备发送一个数据或者是一个远程帧。接着, CAN 通道就会扫描各个MOB, 寻找到优先级最高的MOB, 将其发送出去。当传送成功后,MOB 状态寄存器CANSTMOB 中的TXOK 位就会置位。而最重要的是, 对于每一次新的数据传输都必须重新对相关寄存器初始化, 否则无法正常工作。

接收消息之前所要做的初始化步骤基本相同,只是多了IDMSK 和IDEMSK 标识符掩码的设置。

以下就给出AVR at90can128CAN 接口初始化以及发送、接收功能模块的关键代码及注解(见图3)。

图3 电梯系统主板与调试器之间的CAN通信。



评论


相关推荐

技术专区

关闭