首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
ARM
» 基于AT90CAN128的CAN总线设计
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于AT90CAN128的CAN总线设计
发短消息
加为好友
苹果也疯狂
当前离线
UID
852722
帖子
10369
精华
0
积分
5185
阅读权限
90
在线时间
277 小时
注册时间
2011-8-30
最后登录
2016-7-18
论坛元老
UID
852722
1
#
打印
字体大小:
t
T
苹果也疯狂
发表于 2015-6-30 16:52
|
只看该作者
基于AT90CAN128的CAN总线设计
博世公司
,
控制系统
,
安全性
,
可靠性
,
汽车
1 前 言
现场总线是当前工业总线领域中最活跃的一个领域, CAN 总线是工业数据总线领域重要的现场总线之一。CAN 是Contro ller Area N etw ork的缩写, 是国际标准化的串行通信协议。在当今的汽车产业中, 出于对安全性、舒适性、方便性、低公害、低成本的要求, 各种各样的电子控制系统被开发出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同, 由多条总线构成的情况很多, 线束的数量也随之增加。为减少线束的数量、通过多个LAN进行大量数据的高速通信, 1986年德国电气商博世公司开发出面向汽车的CAN 通信协议。而今CAN 在欧洲已是汽车网络的标准协议。CAN 的初衷是为了解决汽车里多种复杂数据的通信, 后来证实在很多工业领域也能应用自如。
2 CAN 总线特性及当今状况
CAN 总线与其他通讯网络的不同之处在于: 报文传送中不包括目标地址, 以全网广播为基础, 各接收站根据报文中反映数据性质的标识符过滤报文;强化了对数据安全性的关注, 满足控制系统较高的数据需求。它具有如下显着特征: 极高的总线利用率、低成本、高速的数据传输速率、远距离传输、可靠的错误处理和检错机制、可根据报文的ID决定接收或屏蔽该报文, 节点在错误严重的情况下具有自动退出总线的功能等等。
CAN 总线所需完善的通信协议可由CAN 控制器芯片和接口芯片实现, 大大降低了系统的开发难度、组成成本、缩短了开发周期, 其高性能高可靠性以及灵活的设计受到人们的重视, 应用也越来越广泛。目前比较流行的控制器芯片是飞利浦公司的SJA1000和收发器芯片TJA1050。
由于近几年来CAN 总线技术逐步在我国推广开来, CAN 总线技术的独特特点 传输数据的可靠性和实时性, 已获得国际自动化控制领域的认可,其应用前景十分光明。国内推动CAN 总线技术进步的应用事例不断扩展, 积极促进了我国自动化技术的进步。由于CAN 总线本身的特点, 其应用范围己经扩展到过程工业、机械工业、数控机床、医疗机械、家用电器及传感器等领域, 而在电梯控制系统中, 主板需要接收不同楼层呼梯、轿厢里呼梯、调整电梯运行参数等多路信号, 因此CAN 总线的优势明显。如图1所示。
图1 CAN总线应用拓扑结构
3 集成CAN 控制器的ARM 微处理器
CAN 总线基于一组严格的协议, 一般来说在主CPU 外接一个专用CAN 控制器以实现。由于近年来微处理器的迅速发展, 出现了很多功能强大的集成CAN 控制器的CPU, 使得在CAN 总线应用上又简便了一些。而在价格上, 集成CAN 总线的微处理器和一般处理器加上专用CAN 控制器芯片的价格相当, 所以, 集成CAN 总线的微处理器必然成为今后CAN 总线应用的趋势。NXP 公司生产的ARM结构LPC2294就是其中一款流行的带CAN 总线控制器的CPU。它是基于一个支持实时仿真和跟踪的32位ARM7TDM I- S CPU 的微控制器, 并带有256k字节嵌入的高速Flash 存储器。极低的功耗、多个32位定时器、8路10位ADC、4路CAN以及多达9个外部中断使它们特别适用于工业控制, 因此,LPC2294也可作为电梯控制系统的主控制器。
4 集成CAN 控制器的高端8位AVR
上文提到, 电梯控制系统需要处理多路信息, 而且它们可能是具有不同传输速率的, 因此需要使用不同通道的CAN 总线控制器。对于控制系统, 必须具有可操作性, 考虑到要减轻主CPU 的负担, 因此,设计一个简单的操作系统对主系统进行操作, 而数据的交换方式就是采用CAN 总线传输, 此文中称这个操作系统为副系统。副系统相对比较简单, 其功能主要包括: ! 和主板进行信息交换; ? 具有按键供输入; # 具有显示信息的显示器。针对功能的需要和程序的体积, 选用了ATMEL公司近年力推的8位AVR控制器at90can128。
a t90can128是一种基于AVR 增强型R ISC结构的低功耗CMOS 8位单片机。通过执行一个单时钟周期的高效指令, AT90CAN128每MH z能达1M IPS,这就可让系统设计人员将功率损耗与处理速度优化。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 控制器的8位AVR 也会受到越来越多人的青睐。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议