您的位置:控制工程论坛网论坛 » 现场总线 » TMS320LF2407 DSP&PCL-841 CAN总线通信的一种设计方法

jshfq

jshfq   |   当前状态:在线

总积分:17995  2024年可用积分:0

注册时间: 2007-08-06

最后登录时间: 2013-11-04

空间 发短消息加为好友

TMS320LF2407 DSP&PCL-841 CAN总线通信的一种设计方法

jshfq  发表于 2007/12/6 13:33:16      1688 查看 0 回复  [上一主题]  [下一主题]

手机阅读









TMS320LF2407 DSP&PCL-841 CAN总线通信的一种设计方法

 
摘要:本文介绍了TMS320LF2407 DSP与Advantech公司的PCL-841数据采集卡CAN总线通信的软硬件设计以及其实验结果,讨论了设计中遇到的问题及问题解决的方法。 


关键词:CAN总线    DSP    PCL-841


1 引言
    控制器局域网CAN 是由ISO 定义的串行通讯总线。它最初出现在80 年代末的汽车工业里,它的基本设计规范要求有高的位速率、高抗电磁干扰性、而且能够检测出产生的任何错误。由于CAN 串行通讯总线具有这些特性,它很自然地在汽车制造业及航空工业中受到广泛应用。过去我们用独立的单片机和SJA1000组网。随着科技的发展,各大芯片制造商纷纷研究更新的技术,将若干独立的芯片集成化、模块化,这使得芯片性能更强,芯片面积更小,芯片功耗更低。TI公司的微处理器芯片TMS320LF2407 DSP(简称DSP2407),集成CAN控制器的功能,在与外电路连接时,不再需要使用CAN控制器SJA1000,大大缩减了研发周期。本文结合DSP2407的特点和CAN2.0A协议,介绍DSP2407与Advantech公司PCL-841数据采集卡之间CAN通信的一种设计方法。


2 系统设计及其实验结果
    2.1 DSP2407 CAN通信系统硬件原理图及原理说明




图1 DSP2407 CAN模块外接电路
    
    如图1所示DSP2407 CAN模块外接电路原理图。CANJP1为CAN_H、CAN_L输入端。CAN总线驱动器PCA82C250驱动电路内部,具有限流作用,可防止发送输出级对电源、地或负载短路。若结温超过大约160摄氏度,则芯片内部两个发送器输出端极限电流将减小,由于发送器是功耗的主要部分,因而限制了芯片的温升。器件的所有其他部分将继续工作。PCA82C250采用双线差分驱动,有助于抑制瞬变干扰。PCA82C250的Rs脚上接有一个斜率电阻,它的大小可根据总线通信速度适当调整,一般在16~140K欧姆之间。因为PCA82C250电源电压5V,DSP2407电源电压3.3V,故PCA82C250的输出脚RXD不可以直接与DSP2407的CANRX直接连接,故使用了分压电阻R10、R11。R6为终端电阻。
    2.2系统软件设计
    为完成DSP2407与PCL-841之间的CAN通信,使用CCS2.2开发平台。系统工作流程图如下图所示:


图2 系统工作流程图

    图2中PCL-841完成接收DSP2407数据并上传该数据给上位微机,或者上位微机通过PCL-841发送数据给DSP2407。
    PCL-841启动时,CAN口基地址处于DA00:0000H和DA00:0200H开始的地址处,可选择任意一个CAN口作为上位微机的控制接收端口。波特率Baudrate根据DSP2407的设定值进行选择。其值算法如(1)、(2)所示:
Baudrate=ICLK/(BRP+1)*Bit Time                               (1)
Bit Time=(TSEG1+1)+(TSEG2+1)+1                             (2)
    其中ICLK为DSP的CPU频率,这里为40MHz;BRP=1;TSEG1=15;TSEG2=2。故CAN总线Baudrate=1MHZ。
DSP2407的CAN模块初始化程序如下:
       *MDER=0x0000;
        *CAN_IMR=0x0000;
        *ESR=0xFFFF;
        *MCR=0x1400;
        while(*GSR&0x10==0) continue;
        *BCR2=0x0001;
        *BCR1=0x00FA;
        *MCR=0x0000;
        while(*GSR&0x10!=0) continue;
        *CAN_IMR=0x0200;
        *MDER=0x003F;
        *CAN_IFR=0xFFFF;
    程序可通过判断修改寄存器TCR、RCR来接收发送数据,完成DSP2407与PCL-841的CAN总线通信。
    2.3 实验结果
    当程序执行时,首先DSP2407 CAN模块的邮箱5发送数据3344 1122 7788 5566到PCL-841;使用中断方式,PCL-841发送数据1111 1111 1111 1111到DSP的邮箱1;等待PCL-841发送远程贞到DSP的邮箱2和邮箱3,DSP自动回复数据0101 0101 0101 0101和0202 0202 0202 0202到PCL-841,完成实验操作。其实验结果如图3、图4所示。


图3 PCL-841实验界面



图4 CCS2.2实验界面

从图可以看出,试验结果完全符合预期要求,软硬件设计正确。 


3 设计中的问题以及解决方法
3.1 硬件电路
    (1)从选片来说,一定要选择市场常用芯片。一般来说,常用的芯片价格都相对便宜,而且技术支持也相对较多。
    (2)随着科技水平的提高,芯片的功耗越来越低,芯片的电源电压也随之降低,从原先的5V降至现在的3.3V、1.8V。所以不同芯片之间的电平转换也是设计中的一个关键问题。比如图1、2中就在DSP与驱动电路之间用到了电平转换电路。从PCA82C250的RXD脚出来的电压高于DSP的输入电压,故接了分压电阻R10、R11,但R10、R11的电阻取值也需要注意,不能过大,否则会使电流过小。
    (3)画PCB电路板时需要考虑电磁兼容问题,以及元器件摆放问题。设计不仅需要符合电磁兼容要求,又要考虑器件布局需要满足好焊接,好使用,好维修的要求,并使布局尽量美观。电路板制作后,在焊接元件前一定要检查电源、地等关键部位,看是否存在短路情况,避免不必要的损失。
3.2 软件编程
    (1)使用CCS2.2时需要注意的一些问题。当载入.out文件时出错,系统会提示:“A section of your program falls into a memory region that is not wriable. check your linker configuration and/or memory map.” 一般情况下都是.cmd文件配置错误;如果出现系统提示:“AN IDENTIFIER IN THE EXPRESSION IS INVALID”,很有可能是.h文件中寄存器的定义和.c文件中的寄存器定义不否;在烧录芯片的时候如果提示格式不符,打开Build Options/Linker/Advanced/COFF Output Format,选择Default即可;如果使用汇编语言,Autoinit Nodel选项就需要选择No Autoinitialization。
    (2)一些资料上编写的程序流程图不一定完全合理,需要结合硬件电路调试。


4 结束语
    CAN总线以其高速、高可靠性和高灵活性,在工业自动控制中得到越来越多的应用。取代原先单一功能、无集成CAN控制器模块的单片机来说,目前使用的集成CAN模块的DSP2407,是科技的发展带动芯片模块化、集成化的发展。本文介绍DSP2407与PCL-841CAN通信的实现方法,为CAN总线技术向更高层次发展奠定基础。

1楼 0 0 回复