《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 基于凌阳单片机的CAN总线智能节点的开发

基于凌阳单片机的CAN总线智能节点的开发

2009-06-05
作者:吴 杰, 詹习生, 刘金华,

  摘 要: 以凌阳SPCE061A处理器和CAN总线控制器SJA1000为核心,设计了一种通用的CAN总线智能节点。给出了CAN总线智能节点的整体结构,重点阐述了它的软硬件设计、实现与注意事项。试验表明:该系统结构简单、可靠性高、应用灵活,且易扩展,具有广泛的应用前景
  关键词: 凌阳单片机; CAN总线; 智能节点; SJA1000

 

  随着计算机科学的发展,以其为核心的4C 技术(计算机技术、自动控制技术、通信技术、CRT 显示技术)越来越深入地应用到工业生产的各个环节,并引起了自动化系统结构的优化和变革, 逐步形成了以网络集成自动化为基础的控制系统。现场总线就是顺应这一趋势发展起来的。控制器局域网CAN(Controller Aera Network) 属于现场总线的范畴[1]。由于CAN总线具有较强的抗干扰能力、通信中没有地址的概念及节点数不受限制等优点,已经被广泛应用于汽车、仪器仪表、现场总线控制等领域。CAN总线的智能节点是由微处理器和可编程的CAN控制芯片组成,它们有合二为一的,如PHILIPS公司的P8XC592、MOTOROLA公司的68HC05X4等,也有由独立的通信控制芯片与单片机接口构成的。由于前者设计时需专用的开发工具,而且价格相对较高,而后者可以采用通用的单片机仿真器,在设计时更为灵活,变化也更多,因此,本文以凌阳SPCE061A处理器和CAN总线控制器SJA1000为核心,设计了一种通用的CAN总线智能节点。该智能节点利用凌阳公司的61板仿真器进行调试,能模拟实现通信功能,在此基础上构建CAN总线控制系统具有实际意义,同时针对不同的控制系统,只要在软件上作相应的改动,就可以满足控制系统的要求。该设计作为CAN总线节点的一个模块,能够和仪器仪表等设备相结合,使其具有网络通信的能力,有着广阔的应用前景。
1 CAN 智能节点的系统构成
  由于CAN 总线采用多自主方式工作, 可挂多达110个节点。控制系统的构成由计算机和智能节点组成。如图1所示,与DCS控制系统不一样的是它的拓扑结构。不是所有的下位机都以上位机为中心,而是所有的节点(包括上位计算机)都以“平等主体”的形式挂接在总线上。智能节点能够采集现场数据, 并根据接收到的命令或者主动将数据发送到CAN总线。可以通过事先设置验收码和验收屏蔽码控制智能节点从总线上接收哪些数据或命令。如果某些数据需要进一步复杂的处理,则上位计算机可以从总线上接收数据。当上位机需要对某个节点施加控制动作时, 可以采用点对点方式与该节点通信;而当它需要同时对所有节点施加控制动作时,可以采用广播方式将命令发送到总线。这样当系统正常运行时完全可以没有上位机的参与,大大减少了数据的传输量,同时提高了系统的实时性和可靠性。本文以开发设计CAN 总线智能节点为重点。

 


2 智能节点的硬件设计
  本文CAN 总线智能节点采用凌阳公司的SPCE061A单片机作为CAN 智能节点的微处理器。SPCE061A是凌阳公司推出的一款16位单片机,内嵌32 KB Flash,其核心具有较高的处理速度,能够更容易、更快速地处理复杂的数字信号[2]。CAN 控制器采用PHILIPS公司生产的SJA1000,它是集成的独立CAN 控制器(与PHILIPS早期的CAN控制器PCA82C200完全兼容),负责完成CAN 总线通信协议的物理层和数据链路层的功能[3]。CAN驱动器采用的是TJA1040,它提供了CAN控制器与物理总线之间的接口以及对CAN总线的差动发送和接收功能,可以向下兼容PCA82C250/251,并可以在很多已有的PCA82C250/251应用中使用,而对硬件和软件不需要做任何修改。
  CAN智能节点的电路原理图如图2所示。虽然整个电路比较简单,但结合本文设计、现场调试的体会,给出下面几点说明:
  (1)SJA1000的片选、读、写、复位、中断、锁存引脚由SPCE061A的IOA2~IOA7口来控制,因为SPCE061A的IOA0~IOA7用做输入口时具有唤醒功能(即输入电平变化引起CPU中断),能降低功耗。
  (2)SJA1000并没有和单片机共用复位电路,而是通过SPCE061A的IOA2口来控制,这样,SJA1000的复位就可以方便地由单片机通过软件来控制。
  (3)SJA1000的地址/数据端和单片机的P0口相连时,不需要再加锁存器,因为它内部已经有地址/锁存功能[4]
  (4)SJA1000的TX1脚悬空,RX1引脚的电位必须维持在约0.5 V以上,否则将不能形成CAN协议所要求的逻辑电平。
  (5)总线上电阻R1、R2一定不能省略,它们对匹配总线阻抗起着相当重要的作用,如果去掉它们[5],系统通信的可靠性和抗干扰能力就会大大降低,甚至不能正常工作。

 

3 CAN智能节点的软件设计
  CAN 智能节点的软件设计大体可以分为两部分:一部分为初始化,其中包括单片机SPCE061A的初始化和CAN 控制器SJA1000的初始化; 另一部分为节点实际要完成的数据采集和对执行机构的控制功能, 初始化以后,节点就可以工作。但要完成实际的任务,还要设计出应用层软件。对于基于SPCE061A单片机的CAN总线系统,初始化的流程基本是一致的,下面给出了SPCE061A单片机初始化程序。
  由于SPCE061A没有专用的片选、读、写、复位、中断、锁存引脚,因此须用SPCE061A编写出实现SPCE061A对SJA1000的读写操作功能的函数程序,分别记做read( )write( )。
  _SP_InitRead SJA1000:    .PROC
  F_SP_InitRead: (SPCE061A对SJA1000 PUSH R1 TO [SP]读时,IOA8~IOA15
  R1=OX00FF       接地址线,设置为带下拉电阻的输入
   [P_IOA_Dir]=R1  
   [P_IOA_Attrib]=R1       IOA2~IOA7接SJA1000
   [P_IOA_Data]=R1         的控制线设置为同相高POP  

    R1 FROM [SP]            电平输出)
          RETF
         .ENDP                
    _SP_InitWrite SJA1000:      .PROC
    F_SP_InitWrite:              (SPCE061A对PUSH R1     
    TO [SP]  SJA1000          写时,接地址IOA8-IOA15线,设置为同相高电平输出,
    R1=OXFFFF  IOA2-IOA7      接SJA1000的控制线设
    [P_IOA_Dir]=R1            为同相高电平输出)
    [P_IOA_Attrib]=R1  
    [P_IOA_Data]=R1 
    POP R1 FROM [SP]
         RETF
         ENDP
    CAN具有较强的纠错能力,适用于高噪声环境,并具有较远的传输距离[6],现已广泛应用于许多领域,该智能节点利用凌阳公司的61板仿真器进行调试,能模拟实现通信功能。在此基础上构建CAN总线控制系统具有实际意义,但针对不同的控制系统,在硬件和软件上需作相应的改动。该设计作为CAN总线节点的一个模块,能够与仪器仪表等设备相结合,使其具有网络通信的能力,有着广阔的应用前景。

参考文献
[1] 阳宪惠. 现场总线技术及其应用.北京:清华大学出版社,1998.
[2] 罗亚非.凌阳16位单片机应用基础.北京:北京航空航天大学出版社,2003.
[3] 饶运涛.现场总线CAN原理和应用技术.北京:北京航空航天大学出版社,2002.
[4] 刘光,梁涛.CAN总线智能节点的设计和实现[J].微计算机信息,2006,22(6-2):102-104.
[5] 谢立,纪荣.基于C8051F023和CAN总线的数据采集通信系统设计[J].测控技术,2006,25(5):71-74.
[6] 张云洲,吴成东.基于CAN总线的分布式消防报警系统[J].控制工程,2007,14(3):307-309.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。