首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于CAN总线的悬浮控制器监控终端的设计
来源:本站整理  作者:佚名  2010-01-25 11:09:10



3  软件设计
  在图1所示的CAN网络结构图中,数据流向大致可以分为二类:各悬浮节点之间的通信和悬浮节点与监控节点之间的通信。由于悬浮节点之间的通信与监控终端没有直接关系,可以不予考虑。需要考虑的是各悬浮节点与监控终端的通信,这就要求在组成CAN网络时就必须制定一个悬浮节点和监控终端间的通信协议。在实现时,具体协议如下:
  (1)CAN监控终端的接收标识符为0,其他悬浮控制节点的标识符均不得与之冲突;全部节点使用统一的波特率(50Kbps或500Kbps);数据包的长度统一为8B。
  (2)CAN监控终端向悬浮节点的数据传送由监控终端的拨码开关指定数据包的标识符,各悬浮节点通过数据包的标识符和自身的本地标识符比较以确定是否接收该数据包。
  (3)CAN监控终端的监听是开放的,并不需要接收的数据包的标识符与自身的标识符一致。但数据包内第1个字节指明了发送该数据包的悬浮控制器的标号。如果该标号与拨码开关指定的标号一致,则继续处理其他字节的内容;否则,丢弃该包。数据包内第2字节表示参数的类型,其余字节是浮点形式的参数数据。
  (4)在系统开始运行时,各悬浮节点并不向CAN监控终端发送数据,只有在CAN监控终端向某个节点发出“发送允许”命令之后,该节点才定时地向CAN监控终端发送上传数据。如果CAN监控终端要监听其他节点的数据,则需先禁止当前节点的数据发送,再向其他节点发出“发送允许”命令。这样可以有效减小CAN总线上的数据流量。
  上述协议可以有效地维持CAN网络中的数据通信秩序。
  从实际出发,要求软件尽量简单,界面尽量友好,便于操作。在实现时,为充分利用LCD的显示能力,这里采用菜单的方式提示用户操作。完成后的软件界面如图3所示。

  程序采用分层的程序结构。最底层是一些硬件驱动程序,如键盘扫描、LCD状态读取和LCD数据写入等。在这些底层驱动程序的基础上再组织一些上层子程序供主程序调用。在编程语言的选择上,考虑到程序的结构相对比较复杂,程序主体采用C语言编程,只有少部分涉及到DSP一些底层操作的部分才使用汇编语言。软件的主体流程图如图4所示。

  初始化包括对CAN控制寄存器的初始化以及屏幕初始化,并在这之后读取拨码开关的状态,确定波特率及通信对象,向被监控节点发出“发送允许”命令等。
  程序主体是一个大循环。在初始化之后便不断扫描键盘。首先判断是否有键按下,如果用户没有操作,则检查CAN模块是否接收到数据。如果没有接收到数据,则继续扫描键盘。如果接收到了数据(即相应的CAN接收中断标志位置位),则将接收到的数据包按上述协议进行分析、整合处理,然后在屏幕上显示出接收到的数值;同时,在曲线的对应位置上描点,完成曲线的绘制。如果在键盘扫描过程中发现有按键按下,则分析按键的类别,然后转相应的子程序处理。处理完毕再返回主程序。
  这里数据接收并不采用中断驱动方式,因为LCD的响应速度较慢。当LCD的响应速度低于CAN接收数据的速度时,会形成中断嵌套,时间长了就会出现堆栈溢出。此外,采用中断方式在数据量大时会出现DSP无暇顾及用户键盘输入的现象。实践表明,采用查询的方式可以很好地发挥DSP和LCD的固有能力,而且整体响应速度也比中断方式快。
  LCD显示涉及的子程序比较多,分层也很多。在编写程序时首先在DSP的Flash ROM里定义一个段,将LCD显示过程中可能涉及的字符、汉字等点阵数据做成一个库,放入段内,在使用时再通过ROM访问指令读取。
  曲线的绘制过程如下:首先确定坐标的原点位置、X方向和Y方向的最大坐标以及输入数值的范围,然后在内存中开辟一个同X坐标点数一样大小的缓冲区BUFF,用于记忆已经绘制的各点的坐标;同时设定一个X指针,用于存储当前的X坐标。当接收到新的数据,确定好Y方向的坐标后,首先查找BUFF,得到原来显示在该X位置的点的Y坐标,将这个位置上的点清除,然后在新的Y坐标上描点,最后在BUFF的相应X位置上记录下新描点的Y坐标值,此时便完成了一个点的绘制。后面还要调整屏幕上的指针以标明当前显示的X坐标。当绘制到X方向的最大位置时,再返回X=0的位置继续绘图。
  屏幕下方有关菜单的操作也是采用树结构实现的,这里不再详述。
  CAN监控终端向悬浮节点发送数据的过程一般是伴随在相应的菜单操作并按下ENTER键生效后进行的。在每次数据发送之前,程序都需要读入拨码开关的状态,以确定通信的波特率和通信对象的标识符。在实现上,拨码开关的最高位控制着波特率,后面7位则决定了通信的发送标识符。
4  结束语
  使用表明,这种基于TMS320LF2407A DSP的CAN总线监控终端在多悬浮控制器组成的网络中可以发挥很好的监控和调试作用,其结构小巧、界面友好,使用相当方便。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:253,671.90000 毫秒