DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 694|回复: 0
打印 上一主题 下一主题

[接口电路] 基于DSP的CAN总线系统设计与实现

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-17 23:17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘要:介绍了基于DSP的CAN控制器的设计及应用方法,利用该方法可以在波特率高达lMb/s的条件下稳定、可靠地传输数据,而且延迟时间很少。实验证明,利用TMS320F2812内嵌的CAN模块来构成的硬件电路和软件设计十分简单实用。关键字:CAN总线;串行通信;分布式控制;DSP;TMS320F28120 引言    eCAN模块是一种片上增强型控制器,其性能较之已有的DSP内嵌CAN控制器有较大的提高,而且数据传输更加灵活方便,数据量更大、可靠性更高、功能更加完备。随着TMS320F2812的大量推广使用,基于DSP的CAN总线通信方式将得到广泛的应用。1 eCAN模块的增强特性    eCAN模块是TI公司的新一代32位高级CAN控制器,它完全兼容CAN2.0B协议,可以在有干扰的环境里使用上述协议与其它控制器串行通信。该模块除具有一般DSP内嵌CAN控制器的所有功能外,与TMS320F2812系列DSP的CAN模块相比,它还主要具有如下一些增强特性:    (1)增加了邮箱数量,并且所有邮箱都具有独立的接收屏蔽寄存器。TMS320F2812有多达32个邮箱,其所占用的512字节RAM都可以配置为发送或接收邮箱,且都有一个可编程的接收屏蔽寄存器。因而其数据传输更加方便灵活、信息量大大增加;    (2)eCAN是一个32位的高级CAN控制器。其控制寄存器的状态寄存器必须以32位方式访问,而接收屏蔽、时间标识寄存器、超时寄存器和邮箱所在的CAN范围则可以以8位、16位和32位方式访问;    (3)时间标识。eCAN模块应用一个全速运行的32位定时器(LNT)来获得接收或者发送一个信息(有效的CAN数据帧)的时间。当一个接收信息被保存或被发送时,定时器的内容将写入到相应邮箱的时间标识寄存器(MOTS)里。这样就可获得接收或发送一个信息的时间。当邮箱成功发送或接收一个信息时,LNT寄存器被清除。所以可以通过使用邮箱来实现网络的全局时间同步;    (4)超时功能。为了确定所有的信息都能在预定的时间里送出或接收,每个邮箱都有它自己的超时寄存器(MOTS)。如果一个信息没有在超时寄存器设定的时间内完成发送或接收,其超时状态寄存器里将设置一个标志位,并据此判断是否超时。    以上这些增强特性使得TMS320F2812在进行CAN通信时,其数据传输更加方便灵活、数据量更大、功能更完备。2 应用设计    针对TI公司的TMS320F2812内嵌的eCAN模块的方便性和实用性,可用TMS320F2812微控制器组成一个CAN总线网络来进行实时数据收发。其中CAN驱动器使用TI公司的SN65HVD230D。此方案可扩展性强,功能强大。若要增加节点个数,只需要在CAN总线上挂接带有CAN模块的控制器即可。
                          
                       
                          
                                    在TM320F2812的eCAN模块与USB-CAN模块之间进行通信时,上位机可选用派恩公司的USB-CAN模块,其调试界面为PCANView。这里将eCAN的邮箱0配置成发送邮箱,邮箱5配置成发送邮箱,并采用扩展信息帧格式。发送采用查询方式,接收用中断方式,同时可采用DsP将接收的数据转发回上位机,并对接收和发送的数据进行错误计数。图1所示为采用上位机设置端口、波特率等参数,并通过USB-CAN模块与下位机通信的调试界面图,它可用来检验TM320F2812的CAN总线通信是否正常。

3 硬件设计    本设计的硬件系统分为两层:第一层是CAN总线与TMS320F12812接口层,用来实现CAN总线和TMS320F12812的物理接口;第二层为DSP与外围器件的信息处理层,其中TMS320F2812是针对控制领域应用而设计的一款新型工控芯片,它集成了数字IO、事件管理器、A/D模数转换、SPI串行外设接口、SCI异步串行通信接口、CAN控制器等控制资源。其CAN总线通信接口电路如图2所示。

4 软件设计    在使用CAN控制器之前,首先必须对它的内部寄存器进行初始化设置,包括相关IO口设置以及邮箱的相关配置。这里着重介绍如何进行初始化设置和发送与接收的配置。图3所示是本系统的主程序流程图,其CAN配置流程如图4所示。


                          
                       
                          
                                    在软件设计时,首先应进行IO口配置。由于CAN通讯所用到的两个引脚CANTX和CANRX均为复用IO口,因此,首先要配置寄存器CANTIOC的TXFUNC和RXFUNC位为l;再就是要初始化位时序,即对位时序配置寄存器CANBCR进行配置,包括CAN控制器的通讯波特率、同步跳转宽度、采样次数等参数。    当完成以上CAN配置之后,还需按照图5所示的流程图来完成数据的发送与接收配置,同时初始化邮箱。邮箱初始化主要是设置邮箱的标识符和控制域(即发送的是远程帧还是数据帧),以及对相应的邮箱赋初值。

    数据接收时,所接收到的信息的标识符必须与相应的接收邮箱的标识符相同,否则该信息将被滤除。这里,数据的发送与接收请求均采用标志位查询方式。    按照以上步骤设置好后,接着就是对数据的发送与接收请求进行配置。数据接收可采用中断方式,中断配置可在主程序流程中进行配置。正确配置中断入口地址及中断函数,并开放CAN接收中断后,还要分别配置不同的数据帧,包括标准帧和扩展帧,以及数据帧和远程请求帧。    图6表示为上位机接收数据的调试界面。可以看到,CAN通信和下位机间的数据通信,可以写数据并发送给下位机,同时也可接收下位机的数据来验证电路及软件的正确性。5 结束语    利用TMS320F2812内嵌的eCAN模块可使得硬件电路设计更为简单而可靠,而且性能也较已有的DSP内嵌的CAN控制器有较大的提高。同时,采用C语言编程,则可使得程序的设计难度降低,提高程序的可维护性并缩短开发时间。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-4-29 01:20 , 耗时 0.088367 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表