设计干货精选:AVR单片机工业控制方案合集
处理速度优化。AVR内核具有丰富的指令集并带有32个通用目的工作寄存器。32 个寄存器全都直接连到运算逻辑单元( ALU ) , 允许两个独立的寄存器在一个时钟周期执行单个指令的方式访问。其结果就是, 采用这种结构的速度比常规的R ISC单片机快10倍的同时代码效率更高。它除了拥有一般AVR 处理器的AD 模块, SPI模块外, 还集成CAN 控制器, 为搭建基于CAN 通信的系统提供了便利。控制结构如图2所示。
图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通信
CAN 初始化:
CANGCON | = 0X01;
for( i= 0; i< 15; i+ + )
{
CANPAGE = i< < 4; / /将15个MOB 都初始化一次
CANCDMOB = 0;
CANSTMOB= 0;
CAN IDT1= 0;
CAN IDT2= 0;
……
for( j= 0; j< 8; j+ + )
CANMSG= 0;
CANBT1= 0X1E; / /设置CAN 传输波特率, 16分频
CANBT2= 0X40;
CANBT3= 0X49;
CANPAGE = ( 0< < 4) ; / /选择MOB0作为接收MOB, 并设定标识码
CAN IDT1= 0X00;
CAN IDM1= 0X00;
……
CANPAGE = ( 1< < 4); / /选择MOB1作为发送MOB, 并设定标识码
CAN IDT1= 0X00;
……
}
发送模块代码:
CANPAGE = ( 1< < 4); / /选定MOB1
If( ( CANGSTA& 0X10) = = 0) / /查询CAN 状态寄存器的TXBSY 位, 为0, 则可以发送
for( i= 0; i< 8; i+ + )
{
CANMSG= my _dada[ i] ; / /将要发送的数据装入数据寄存器中, 共8 by te
CANCDMOB | = 0X48; / /发送
}
接收模块代码是类似的, 设计思路都是在判断发送允许标志之后, 如果允许, 就将数据装入到指定的MOB中, 而每个MOB 一个发送周期一共可以发送8byte的数据。而CAN 总线的另一端是NXP公司LPC2294的CAN总线外围, 其结构和原理都差不多。
当然, 在寄存器设置中会有一点差别, 但只要两个CPU 约定好数据帧的标识符编号是什么, 传输速率相同, 就可以进行数据交换了。由于篇幅有限,LPC2294的CAN接口设置在此就不作介绍了。
最后给出了CAN 总线应用CPU 外部的硬件原理参考图, 如图4所示。
5 CAN 总线收发器TJA1050硬件连接图
图中CAN 收发器为NXP公司的TJA1050, TXD和RXD分别连接到CPU 的CAN接口, CANL和CANH 则为与另一个CPU 连接的总线, CANL 和CANH 之间电阻值约为120欧姆, 开关S可以作为CAN 总线的硬件启用开关。另外, 如果在抗干扰要求高的场合, 可以对TXD 和RXD使用光电隔离。
图4 CPU 外围收发器的硬件原理图。
6 结束语
基于at90can128的CAN 总线模块设计的电梯系统调试器, 经过长时间的检验, 使用良好, 通信正常无误。在众多的现场总线当中, CAN 总线凭借其优秀的特性已经为越来越多的工程人员认同和偏爱, 而随着越来越多的高端CPU 对CAN 控制器的集成和综合成本的下降, CAN 总线的使用必定会越来越普遍, 其中集成CAN 控制
- 下一代Flash存储器在工业控制领域技术与应用(02-05)
- 应对电机设计,安森美有何发展趋势及创新方案?(03-26)
- 以太网标准与驱动系统设计(04-20)
- 飞思卡尔最新工业机器人解决方案特点及优点分析(07-22)
- MCP8063三相正弦无传感器无刷电机工业控制驱动方案(07-04)
- 多种工业触摸屏的原理及特性解析(07-18)