1、DSP的CAN总线小论文DSP56F807内部CAN模块的数据收发 摘要本实验基于飞思卡尔公司的DSP56807,考察使用其内部MSCAN、定时器、SCI等模块的使用,用定时器进行1S定时,当定时到以后进行MSCAN数据发送,并使用过滤机制,实现互发互收。将接收到的数据通过串口同步显示。关键词:串行输入输出接口,CAN总线,定时器,DSPAbstractBased on freescale DSP56807 ,we study the modules of internal MSCAN,TIMER,SCI and so on. Setting a 1s delay ,then send the
2、 data through the internal MSCAN. And utilizing the filter mechanism to realize the co-sending . At the same time,display the data through the SCI .Key words :SCI ;MSCAN;Timer;DSP一、 DSP应用的概述数字信号处理器(DSP)是一种适合完成数字信号处理运算的处理器。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为
3、广泛的应用。数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。可以说,数字信号处理是
4、把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。DSP主要应用在数字信号处理中,目的是为了能够满足实时信号处理的要求,因此需要将数字信号处理中的常用运算执行的尽可能快,这就决定了DSP的特点和关键技术。适合数字信号处理的关键技术:DSP包含乘法器、累加器、特殊地址产生器、领开销循环等;提高处理速度的关键技术:流水线技术、并行处理技术、超常指令(VLIW)、超标量技术、DMA等。从广义上讲,DSP、微处理器和微控制器(单片机)等都属于处理器,可以说DSP是一种CPU。DSP和一般的CPU又不同,最大的区别在于:CPU是冯.诺伊曼结构的;DSP是数据和地址空间分开
5、的哈佛结构。二、CAN的简介CAN(Controller Area Network)即控制器局域网,是德国Bosch公司在20世纪80年代初为解决现代汽车中众多的控制与检测仪器之间的数据交换而开发的一种串行数据通讯协议。CAN适合工业过程监控设备的互联,因此受到了工业界的重视,其应用于工业控制、汽车电子、机械工业、楼宇自动化和信息家电等非常广泛的场合,成为最有前途的现场总线之一。CAN总线的通信距离可以达到10km(此时通信传输率在5Kb/s以下)通信速度可以达到1Mb/s(距离40m以内),CAN总线的节点数取决于总线驱动电路,目前可以支持110个节点。CAN具有以下工作特性:多主工作方式。
6、每一个节点都可以主动向网络发起数据传输,不分主从;无破坏性的、基于优先级的仲裁。两个竞争的发送节点通过总线的电平竞争,在发送的同时完成优先级的仲裁:优先级高的取得总线控制权继续完成发送过程,优先级低的失去总线电平控制权推出发送流程,等待总线空闲。借助接收滤波的多地址帧传送:点对点、一点对多点、全局广播CAN总线的节点数决定于总线驱动电路,目前可支持110个节点 CAN采用短帧结构,传输时间短,受干扰概率小,可靠性高,有利于数据的实时传输帧信息包括CRC校验和其他检错信息,极大地降低数据出错率CAN节点可以识别暂时性错误和永久性故障CAN的通行介质可以是双绞线、同轴电缆、光纤或其他各种介质,其驱
7、动电路可以根据具体要求加以设计。 三、本实验的应用Freescale公司56800系列数字信号处理器一个很重要的特点就是具有很丰富的I/O 口和多种外围配置。这一点是继承了Motorola公司在控制器领域业已形成的强大优势。它们在单一的DSP芯片上集成了通用的I/O 模块GPIO、异步串行通信模块SCI、同步串行外设模块SPI、同步串行通信模块SSI、控制器局域网模块CAN 2.0 A/B、多路A/D变换模块、用于各类电机控制的多路脉冲宽度调制PWM模块、定时器模块Timer等多路外设模块,实现了完全的单片化。因此,作为Motorola 公司16位DSP中的低端产品的DSP56800,更像是单
8、片机,除了在数字信号的算法处理上有强大功能之外,DSP56800可广泛应用于各类工业控制领域。本实验中,主要涉及到串行输入输出(SCI)模块,MSCAN模块,定时器等的初始化以及使用。这次综合实验的目标是要求用定时器实现1S钟定时,当定时到时MSCAN发送一组数据,另一块实验板能够对这个实验板MSCAN发送的数据进行接收。同时能够通过串口将接收到的数据显示在串口调试助手上。两块实验板要做到MSCAN的相互发送接收不干扰,能够各自发送和接收。并且MSCAN的屏蔽ID要用上。在实验调试的程序中首先要进行MSCAN、LED灯端口、SCI端口、定时器A0的设置和初始化。由于定时器的最大计数时间为0.2
9、09S。(DSP的总线频率是40MHZ,计数器是16位,最大计数值为65535,而分频因子最大为128。)tmax=65535128/(40106)=0.209 (1)而本实验要求定时器进行1S定时中断。因此采用的是128分频,给定时器初值设为31250,这样定时器中断时间为0.1S。另外设置一个counter数对定时器的溢出次数进行计数。当定时器溢出10次时产生一次中断。控制MSCAN的数据发送和LED灯的闪烁。以下为定时器初始化函数:void Timer0Init(void) /* timer 0 compare 1/2, load, counter */ asm (move #$7A12
10、,X:TMRA0_CMP1); /31250 asm (move #$0000,X:TMRA0_CMP2); asm (move #$0000,X:TMRA0_LOAD); asm (move #$0000,X:TMRA0_CNTR); /* enable timer0 compare interrupt */ asm (move #$4000,X:TMRA0_SCR); /* timer0 primary source on bus / 128 加计数 */ asm (move #$3e20,X:TMRA0_CTRL); 主程序的开始是MSCAN、SCI端口、定时器A0的设置和初始化。主程序
11、及初始化程序流程图如下。图(1)为主程序,图(2)为CAN初始化程序,图(3)定时器中断程序,图(4)为CAN发送中断程序,图(5)为CAN接收中断,图(6)为for死循环程序。 图(1) 图(2) 图(4) 图(3) 图(5) 图(6)调试结果:定时器每隔1S产生一次中断,LED灯交替闪烁一次,同时MSCAN发送一次数组TransBuff 8中的数据,并将数据打印出来,同时另外一块实验板产生MSCAN接收中断,将接收的数据放入数组RecieBuff 8中,并将接收的数据打印出来,同时将接收到的数据通过SCI口送到串口调试助手中显示出来。而另一块实验板也发送数据,这块实验板进行接收显示。两块实
12、验板的发送接受互不干扰。在调试时两块实验板发送的数据不能一样,否则无法区分是不是对方发送的数据。将#define CAN_Self_Check添加到宏定义中就可以进行自发自收,调试时先进行自发自收调试,如果能接收到自己发送的数据的话再进行互发互收调试。由于CAN总线最多可以连接110个节点,因此为了对接收到的总线上的数据进行区分,在MSCAN模块中加入了标志符ID。在发送数据时添加标志符ID,当接收单元接收到CAN总线上的数据后对ID标志符进行过滤判断,如果符合接收条件就将数据写入到接收缓冲区。这里主要涉及到三个标志位:接收符ID、过滤比较码和过滤屏蔽码。他们的关系为:如果接收符ID异或比较码
13、的结果和屏蔽码的反的与结果为零,接收符ID比较成功,该数据帧被接收。实验中需要注意的问题:(1)中断中如果放入函数的话运行程序很可能出错,因为中断运行运行时间都很短,而放入的函数很可能还没有运算完成就已经退出中断函数了。因此在中断中设置一个标志位,并在产生中断时置1,而这个函数放在主程序中用条件判断语句来执行,同时将这个标志位置0。(2)程序中设置的中断函数一定要在DSP56F807 support的对应路径中声明,否则中断照样不能产生。参考文献:1 Motorola 56F807 Evaluation Module Hardware Users Manual,Inc. 2003. 2 邵贝贝,薛涛等.Motorola DSP型16位单片机原理与实践. 北京:北京航空航天大学出版社,2003.
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2