![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 基于TMS320F2812内嵌eCAN模块的CAN总线通信 | |||||
作者:吴俊 文章来源:本站原创 点击数: 更新时间:2005-7-20 ![]() |
|||||
|
重庆大学电气工程学院TI实验室 吴俊 刘和平 引言 当前有许多微处理器将CAN控制器嵌入到系统之中,成为片上的微处理器,TI公司新推出的TMS320 F2812就是其中之一。这种结构成本低廉、运行稳定、功能完备,是一种很有前途的CAN通信系统组成方案。 eCAN模块是TMS320F2812 DSP片上的增强型CAN控制器。其性能较之已有的DSP内嵌CAN控制器有较大的提高,在进行CAN总线通信时,数据传输更加灵活方便,数据量更大、可靠性更高、功能更加完备。随着TMS320F2812的大量推广使用,基于eCAN的CAN总线通信方式将得到广泛的应用。 TMS320F2812 eCAN模块的增强特性 eCAN模块是TI公司新一代32位高级CAN控制器,性能相当于TI公司TMS470系列微控制器使用的高端CAN控制器(HECC,High-end CAN Controller)。它完全兼容CAN2.0B协议,可以在有干扰的环境里使用上述协议与其他控制器串行通信。eCAN模块具有32个可以完全控制的邮箱和时间标识特性,提供了一个通用可靠的串行通信接口。除具有一般DSP内嵌CAN控制器的所有功能外,与TMS320LF 240x系列DSP的CAN模块相比,它主要具有如下的一些增强特性: 1.增加了邮箱数量,并且所有邮箱都具有独立的接收屏蔽寄存器。原来的TMS320LF240x系列(以TMS320LF2407为例),仅有6个邮箱: 2个接收邮箱、 2个发送邮箱和2个可配置为接收或者发送邮箱。而TMS320F2812有多达32个的邮箱,占用512字节RAM,都可以配置为发送或接收邮箱,且都有一个可编程的接收屏蔽寄存器。这样就使数据传输更加方便灵活、信息量大大增加。 2.eCAN是一个32位的高级CAN控制器。其控制寄存器的状态寄存器必须以32位方式访问;接收屏蔽、时间标识寄存器、超时寄存器和邮箱所在的RAM范围可以以8位、16位和32位方式访问。 3.时间标识。eCAN模块应用了一个全速运行的32位定时器(LNT)来获得接收或者发送一个信息(有效的CAN数据帧)的时间。当一个接收信息被保存或被发送的时候,定时器的内容写入到相应邮箱的时间标识寄存器(MOTS)里。这样就可获得接收或发送一个信息的时间。 当邮箱16成功发送或接收一个信息时,LNT寄存器被清除。所以可以通过使用邮箱16来实现网络的全局时间同步。 4.超时功能:为了确定所有的信息都在预定的时间里送出或接收,每个邮箱都有它自己的超时寄存器(MOTO)。如果一个信息没有在超时寄存器设定的时间完成发送或接收,一个标志位将在超时状态寄存器里被设置,据此可以判断出是否超时。 以上这些增强特性使得 TMS320F2812进行CAN通信时,传输更加方便灵活、数据量更大、功能更完备,这也正是eCAN的增强特性所在。 eCAN通信程序设计的基本流程 下面介绍TMS320F2812的eCAN模块与CAN卡之间的通信实例。本文主要讨论的是下位机程序。eCAN的邮箱0配置为发送方式,邮箱16配置为接收方式,都采用标准信息帧格式。发送用查询方式、接收用中断方式。接收到数据后,用接收到的数据更新邮箱0的数据。对接收到的数据进行确认,使用一个全局变量来记录接收错误发生的次数。这个程序的实现分为以下几个重要步骤。 eCAN模块初始化 信息的发送 信息的接收 eCAN通信主程序流程 程序设计注意事项 本程序使用C语言编写,在程序设计中要注意以下几点: 1.原来我们对某个寄存器的位操作多是采用间接的方式,例如要置位为1是通过把整个寄存器和一个特定的“或操作”实现的。而现在我们可以利用高级语言的特性,在头文件中用结构体把寄存器的各个位封装起来,然后用成员运算符(.)直接对某个位进行置位或清零的操作(例如ECAN Shadow.CAN TA.bit.TA0=1).这样大大方便了位操作,还确保了其正确性,减少了人为失误。 2.eCAN的控制寄存器要求以32位方式访问。如果直接对控制寄存器的个别位进行操作,编译器会把这种访问变为16位的访问方式,而16位的访问方式可能会破坏控制寄存器的内容,尤其是对高16位中的位进行写操作的时候。解决的办法是:使用一个32位的临时寄存器,先把欲操作的整个寄存器的内容读入到临时寄存器中,这个操作是32位的访问方式。在临时寄存器中对某些位进行操作,然后把值以32位写的方式赋给eCAN控制寄存器。以此来强制实现32位访问方式,达到了目的,这种设计技巧在整个程序中大量使用。 结语
|
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|