找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于CAN总线的DSP芯片程序受控加载设计实现

[复制链接]
admin 发表于 2013-3-22 09:55:30 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
  CAN总线概念

      CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。   现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。
      该技术使对DSP芯片程序的加载可以脱离仿真器而直接受控于列车的主控机。该技术可靠性高,使用灵活方便,具有很强的实用性。
      磁悬浮列车上有很多基于DSP芯片的模块和系统。目前, DSP芯片程序的加载与运行都主要依赖于仿真器,而DSP仿真器价格高、体积大,这使得磁悬浮列车系统的调试很不灵活方便;且这些基于DSP芯片的系统一旦脱离仿真器就只能运行事前载入的单一的程序,也使系统的灵活性受到了很大的限制。 本文研究了DSP芯片程序加载的基本原理,并根据这些原理,基于CAN总线,实现了DSP芯片程序的受控加载,使得DSP芯片程序的加载与启动可直接受控于上位主控机。由于主控机的灵活性很大,磁悬浮列车系统在调试时就可根据需要对其上各个控制模块的主控DSP芯片加载不同的程序,控制它的启动运行,非常方便灵活。   
      2 CAN总线的特点及工作原理
      CAN Control Area Network,即控制器局域网 总线是一种有效支持分布式控制或定时控制的串行通讯网络它以半双工的方式工作?一个节点发送信息 多个节点接收信息 实现了全分布式多机系统?提高了数据在网络中传输的可靠性?其结构形式如图1所示?CAN总线的信息存取利用了广播式的存取工作方式 信息可以在任何时候由任何节点发送到空闲的总线上每个节点的CAN总线接口必须接收总线上出现的所有信息?因此各节点都设置有一个接收寄存器 该寄存器接收信息 然后根据信息标文符决定是否读取信息包中的数据以判断是否使用这一信息? CAN总线的特点是以通信数据块编码代替传统的地址编码 CAN总线面向的是数据而不是节点这种方式的优点是可使网络内的节点个数在理论上不受限制 加入或减少设备不影响整个系统的工作?基于CAN总线的各种系统可以根据用户需要任意改变节点数量?CAN总线收发数据的长度最多为8个字节因而不存在占线时间问题 可以保证通信的实时性?通信速率最高可达1Mb/s距离为40m 最远可达10km速率为5kb/s ?对通信介质的要求较低可以是光纤或同轴电缆甚至双绞线?      20121107051910064124671.jpg
    3 CAN总线优势

   

    CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS-485基于R线构建的分布式控制系统而言, 基于CAN总线的分布式控制系统在以下方面具有明显的优越性:

   

    3.1 网络各节点之间的数据通信实时性强

   

    首先,CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;

   

    3.2 缩短了开发周期

   

    CAN总线通过CAN收发器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会在出现在RS-485网络中的现象,即当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是仅有电气协议的RS-485所无法比拟的。

   

    3.3 已形成国际标准的现场总线

   

    另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前 CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。

      4 DSP芯片的程序加载与运行原理
      在本项技术中,DSP的程序加载与启动运行是通过对其HPI 8位并行口的操作实现的?下面先简单介绍一下DSP的HPI 8位并行口以及如何对它进行读写操作,然后介绍本文研究的这种DSP程序加载技术?
      4.1 DSP芯片的并口(HPI)简介
      HPI并行口的读写操作主要由DSP的三个16位寄存器控制,它们分别是:HPIC HPI Control Register,控制寄存器 ?HPID HPI Data Register,数据寄存器 ?HPIA HPI Adress Register,地址寄存器 ?写HPIC寄存器控制HPI并口的读写方式以及数据高低字节的读写顺序等;写HPIA寄存器控制写入或读出数据的具体地址(自增模式下2 为数据写入/读出时的初始地址);从HPID直接写入/读出数据?
      HPI有两种读写方式:普通模式下的读写按照HPIA的地址将HPID的数据写入内存或将该地址的数据读入HPID;自增模式下HPIA则是首地址,每次读或写操作后它都会自动指向下一个待读写的地址?    20121107051910126624672.jpg
      4.2 DSP芯片的程序加载与启动
      由CCS编译器生成的DSP可执行文件是一种.out文件?本方法中首先调用TI公司提供的hex500.exe程序,将其转换为.hex文件3,这种.hex文件的组织结构具体如下: 它由一个一个的块(block)组成,每一个块的第一个字节表示当前块包含的待加载的有效数据的长度,第二?第三个字节表示这些有效数据写入DSP内存时的首地址,从第五个字节开始是待写入DSP内存的有效数据(第四个字节通常为0x00,是无效数据),超出当前有效数据长度的数据不需要处理?需要注意的是,文件的结尾(也就是最后一个块)的第一个字节的数据是0,表示当前块为文件的结尾,其后的任何数据都是无效数据? 知道这种.hex文件的组织结构后,就可以分离出其中的有效数据,然后就可将这些有效数据写入DSP的内存?本技术是通过DSP的HPI口来完成写操作的?具体如下: 首先对DSP复位,清除原来的数据;然后在单片机的控制下从.hex文件读出每次写入的初始地址,从这些初始地址开始不断地将有效数据写入DSP的内存;写操作完成后,向DSP的内存地址0x007f写数据0x8000,程序即启动,开始执行?      20121107051910173494673.jpg
      5 系统的组成
      系统组成框图如图2所示? ISA插卡通过ISA插槽与PC机(即相当于磁悬浮系统上的主控机)连接,受PC机的控制,接收来自PC机的数据,向PC机转发收到的数据?插卡上有SJA1000芯片,通过它与PCB板上的SJA1000实现数据交换?
      CB板上的SJA1000的数据/地址信号线与单片机的P0并口相连,同时P0并口也与DSP的HPI并口数据线HD0~7相连?在单片机的控制下,SJA1000接收来自PC机的数据,并将其通过P0并口发送给单片机,然后单片机再将这些数据通过HPI发送给DSP?
          20121107051910220364674.jpg
    6 系统的实现

   

    6.1 硬件实现

   

    根据系统组成框图,各个具体模块的硬件实现如图3?图4?图5所示? 图3为单片机的接口电路,并口P0与SJA1000的并行数据口D0~D7(如图4所示)及DSP的HPI口(如图5所示)相连,实现数据交换:SJA1000接收来自CAN总线的数据,通过并行数据口D0~D7及P0口发送给单片机,单片机接收到数据并经过处理后又通过P0口和HPI口转发给DSP? HBIL?HCT0?CHT1?HR/W为HPI口的控制信号?2?,故HPI的读写等操作都受控于单片机? CSCAN为SJA1000的选通信号,/RST为SJA1000与DSP的复位信号;RD?WR分别为读写控制信号?

   

    6.2 软件实现

   

    PC机程序负责对。hex文件的分析,并根据分析结果,通过SJA1000,将每一个块的“头部”和有效数据有区别地向CAN总线上发送,直到遇到文件结束符为止? 单片机控制程序负责接收从SJA1000上传的CAN总线上的数据,分析数据的性质(即该帧数据是“头部”还是有效数据),然后通过DSP芯片的HPI并行口将有效数据正确地写入相应的内存地址?

    本文研究的这项技术提供了一种简单易行?成本低廉的DSP程序加载方法?这项技术具有高度的可靠性?灵活性和实用性?此项技术用于磁悬浮列车这样一个复杂的DCS系统后,能够很好地控制列车上众多基于DSP芯片的系统的程序加载,并方便地对它们进行调试,使这些系统能根据不同的需要执行不同的程序,取得了很好的效果?目前上海引进的磁悬浮列车也采用了此项在线调试技术?
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 18:52 , Processed in 0.059226 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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