车辆传感器网络车载节点设计

来源:网络管理员 发布时间:2021-05-05 点击:

毕业论文(设计) 题目 车辆传感器网络车载节点设计 学生姓名 学号 指导教师 系部名称 信息科学与工程系 专业班级 电子科学与技术班 完成时间 2013年X月  XX学院教务处制 本科毕业论文(设计) 车辆传感器网络车载节点设计 学生姓名:
系部名称:
信息科学与工程系 专业名称:
电子科学与技术 指导教师:
摘 要 随着我国经济的不断发展,车辆在我们日常生活中不断普及。而通信技术、嵌入式技术以及传感器技术的发展,为无线传感器网络运用于汽车中奠定了一定的基础。车辆传感器网络(Vehicular Sensor Networks, VSN)作为新一代的网络技术受到越来越多的关注。在汽车内安装传感器设备,汽车能够感知其每个部件的工作状况及行驶途中的各种信息,大量的车辆传感器节点通过无线通信的方式相互连接,为能够及时减少交通事故缓解交通压力起到了决定性作用。

在对 CAN 总线协议和 ZigBee 协议分析的基础上,设计了双 MCU 结构的 CAN/ZigBee 网关硬件电路,即无线通信模块和有线通信模块。其中无线通信模块主要由CC2430实现无线收发,而有线通信则由CAN总线来实现,其中编写了网关相关应用程序。通过试验验证,CAN / ZigBee 网关可以很好地实现 CAN 总线与ZigBee 无线网络之间的数据交换,为 CAN 总线在特殊场合的无线拓展提供了一种解决方案。网关没有针对具体的应用层协议开发,可依照具体应用进行修改,具有通用性和可推广性。

关键词:网络节点;
CAN总线;
ZigBee技术;
C8051F060;
CC2430;
CAN收发器 ABSTRACT With the continuous development of China's economy, the growing popularity of vehicles in our daily lives. And the development of communication technology, embedded technology and sensor technology used in cars has laid a foundation for wireless sensor networks. The vehicle sensor networks (Vehicular Sensor Networks, VSN) is receiving more and more attention as the next generation of network technology. Sensor devices installed in the car, the car can perceive the working conditions of each of its components and with the way a variety of information, a large number of vehicle sensor nodes connected to each other through wireless communication, timely reduce traffic to ease traffic pressure played a decisive effect. On the basis of the analysis on the CAN bus protocol and ZigBee protocol, designed dual MCU structure of CAN / ZigBee gateway hardware circuit, wireless communication module and wired communication module. Wireless communication module CC2430 wireless transceiver wired communication by CAN bus, which prepared a gateway application. Verified by experiment, CAN / ZigBee gateway can achieve data exchange between CAN Bus and ZigBee wireless network, to provide a solution for wireless expansion of the CAN bus on special occasions. The gateway is not for a specific application layer protocol development, in accordance with the specific application to be modified, with the versatility and replicability. Key words:Network nodes;CAN bus; ZigBee technology; C8051F060; CC2430; CAN transceiver 目 录 摘 要 I Abstract II 第一章 绪 论 - 1 - 1.1课题研究背景及意义 - 1 - 1.1.1 课题背景 - 1 - 1.1.2 课题意义 - 1 - 1.2 无线传感器网络节点概述 - 1 - 1.3 本文研究内容及目标 - 2 - 1.3.1 课题研究的主要内容 - 2 - 1.3.2 研究目标 - 3 - 1.4 论文结构 - 3 - 第二章 车载网络节点总体结构设计 - 4 - 2.1 CAN总线简介 - 4 - 2.2 ZigBee简介 - 4 - 2.3 节点总体设计 - 5 - 第三章 车载网络节点硬件电路设计 - 7 - 3.1 硬件电路设计 - 7 - 3.1.1 C8051F060简介 - 8 - 3.1.2 PCA82C250简介 - 8 - 3.1.3 CC2430简介 - 10 - 3.2 电源模块设计 - 10 - 3.3 抗干扰电路 - 11 - 第四章 车载网络节点软件设计 - 12 - 4.1 CAN节点模块的软件设计 - 12 - 4.1.1 系统初始化 - 13 - 4.1.2 发送程序 - 15 - 4.1.3 接收程序 - 16 - 4.2 无线通信软件设计 - 18 - 4.2.1无线通信数据帧格式 - 18 - 4.2.2 无线通信程序设计实现 - 18 - 参考文献 - 24 - 第一章 绪 论 1.1课题研究背景及意义 1.1.1 课题背景 当人们的生活水平不断提高时,汽车逐渐成为了日常生活中非常重要的一部分。大量车辆传感器的节点通过无线通信的方式相互连接,组成了无线车辆传感器网络[1]。近年来,随着无线通信、集成电路、传感器和微机电系统等技术的飞速发展,使得低成本、低功耗、多功能的微型无线传感器的大量生产成为可能,这些微型无线传感器具有无线通信、数据采集和处理、协同合作等功能,因此,传感器网络的应用前景非常广泛。无线传感器网络就是由这些传感器节点协同组织起来的,传感器网络的节点可以随机或者特定地布置于目标环境中,它们之间通过特定的协议自组织起来,能够获取周围环境的信息并且相互协同工作完成特定任务。车辆传感器网络涵盖了无线传感网络和自组织网络,国内学者和许多企业在感知节点状况,信息采集和存储,数据处理和无线通信等方面都掀起了一股研究和应用的热潮。但是,在对整个网络的有效监控和对突发事件的处理,以及整个对车辆传感网络安全性的保证仍是留在众多研究者身上的难题。现如今,由于节点的电量和存储计算能力有限,如何使它们协同工作已经成为设计的难点。

1.1.2 课题意义 通过在车辆上安装传感器设备,车辆节点能够感知两大类的信息:车辆内和车辆外的信息。车辆内的信息包括车辆运行的内在状态、汽车的位置、汽车的的速度等;
车辆外的信息主要是环境信息,包括温度、适度、大气指数,以及行驶路途中的信息包括交通流量、路面状况等。除了传感器设备外,驾驶员其实也是一种高智能的“传感器”,通过对所见所闻,能够感知复杂事件,如检测交通事故、行车危险等重要的时间。每个车辆传感器节点感知不同区域、不同时刻的数据,这些感知数据能为大量的应用提供宝贵的数据支持。通过对这些数据的分析与比较,可以加强对车辆各个节点的控制,有助于更好的掌握车辆内部情况,有效减少各类交通事故的发生,并及时向相关部门车辆所在的交通情况有这重要而积极的意义。

1.2 无线传感器网络节点概述 无线传感器网络由大量体积小、成本低、具有无线通信、传感、数据处理的传感器节点组成,无线传感器节点是网络的基本单元,节点的稳定运行是整个网络可靠性的基本保证。无线传感器节点负责传感和信息预处理,响应监控主机和指令发送数据,一般由数据采集模块(传感器、A/D转换器)、数据处理和控制模块(微处理器、存储器)、通信模块(无线收发器)和供电模块(电池、DC/DC能量转换器)等组成。在无线传感器网络中,每个节点的功能都是相同的,大量传感器节点被布置在整个被观测区域中,各个传感器节点将自己所探测到的有用信息通过初步的数据处理和信息融合后传送给用户,数据传送的过程是通过相邻节点的接力传送的方式传送回基站,然后通过基站以卫星信道或者有线网络连接的方式传送给最终用户。因此,节点在网络中可以充当数据采集者、数据中转站或类头节点(cluster-head node)的角色。作为数据采集者,数据采集模块收集周围环境的数据(如温度、湿度等),通过通信路由协议直接或间接将数据传输给远方基站或汇节点;
作为数据中转站,节点除了完成采集任务外,还要接收邻居节点的数据,将其转发给距离基站更近的邻居节点或者直接转发到基站或汇节点;
作为类头节点,节点负责收集该类内所有节点采集的数据,经数据融合后,发送到基站或汇节点。相对于传统无线网络,无线传感器网络具有一些明显的技术特点:
a)网络节点密度高,传感器节点数量众多,单位面积大,所拥有的网络节点数远大于传统的无线网络。

b)传感器节点由电池供电,节点能量有限,由干节点数量多,而且无线传感器网络往往应用于人们难以直接操作的地方,因此更换传感器节点电池是不现实的,这决定了传感器节点生命和网络寿命的有限性。

c)网络应具备容错能力,传感器节点所处的环境通常比较恶劣(如噪声、风吹雨淋等),导致节点易受干扰、易出错,这要求无线传感器网络应具有容错能力才会有应用前景。

1.3 本文研究内容及目标 1.3.1 课题研究的主要内容 本文所设计的车载节点主要有CAN总线通信和无线通信,前者用于车载节点与车辆内部各个节点的通信,后者用于与车辆与外部网络进行通信。硬件设计中采用电路模块法设计,将整个车载节点分为能量供应模块,通信模块,处理器模块,无线收发模块。采用模块化设计使得整个电路设计简单和便易,实现在设计每一模块电路时,着重研究电路芯片的选型,主要考虑芯片的价格、功能、功耗及可实现性。

1.3.2 研究目标 本次设计主要是完成网关节点的设计,此节点既可以进行数据采集处理,也能够进行无线和有线通信。整个设计留出两大类接口,一种是CAN有线接口,以方便与车辆内其他相关节点通信,另一种是无线接口,用来远程通信。实现采集现场信号,将采集回来的信号通过转换成电压和抗干扰处理后送到 A/D 转换器中转变成数字信号,再通过 CAN 总线接口电路将信号传送给总线上其他节点,从而实现对数据的传送。同时也可以通过无线收发芯片实现从其它节点上接收数据。

1.4 论文结构 本文在充分了解国际国内研究发展状况和查阅大量的文献资料的基础上,对无线传感器网络的几项关键技术进行了初步研究。探讨了无线传感器网络硬件平台的设计,给出了传感器节点的设计方案。作为节点上的一个应用,本文还探讨了在所设计的节点上进行无线传感器网络时间同步问题。本文的内容安排如下:
第1章为绪论,介绍了车辆传感器网络车载节点课题的研究背景及意义和本次设计主要达到的预期目标,并对无线传感器网络节点进行了概述。

第2章介绍了车辆传感器网络节点的总体框架设计,着重介绍了两种典型的通信技术,CAN总线通信和ZigBee技术。

第3章详细介绍了无线传感器网络车载节点的硬件电路设计,主要是针对微处理器以及收发芯片的介绍,进行比较后选取合适的芯片。

第4章重点是程序设计,包括CAN节点软件设计和无线通信软件设计。

第二章 车载网络节点总体结构设计 2.1 CAN总线简介 控制器局域网CAN (Controller Area Net-work)总线作为一种可靠性高、价格低廉、技术成熟的现场总线,在国内外得到了广泛的应用。在汽车行业,CAN总线更是以其优异的性能成为汽车局域网的发展趋势。控制器局域网络( CAN)是德国Robert Bosch公司在20世纪80年代初为解决现代汽车中众多控制单元和测试仪器之间的实时数据交换而开发的一种串行数据通信总线,具有高的保密性,是一种能有效支持分布式控制或实时控制的串行通信网络。CAN具有如下特点[2]:
1.CAN 为多主方式工作,也就是说网络上的任何一节点均可在任意时刻主动地向网络上其他节点发送信息,而不分主从,通信方式比较灵活,而不用站点地址等节点信息。

2.CAN 网络上的节点信息分成不同的优先级,可满足不同的实时要求,高优先级的数据最多可在 134us 内得到传输。

3.CAN 总线采用非破坏性总线仲裁技术。当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁的时间。

4.CAN 总线只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。

5.CAN 的直接通信距离最远可达 10km(速率 5kbps 以下);
通信速率最高可达 1 Mbps (此时通信距离最长为 40m)。

6.CAN 上的节点主要取决于总线驱动电路,目前可达 110 个;
报文标识符可达 2032 种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制。

7.CAN 总线采用短帧结构,传输时间短,受干扰概率小,具有极好的检错效果。

8.CAN 的每帧信息都有 CRC 检验及其他检错措施,保证了数据出错率极低。

9.CAN 通信介质可为双绞线、同轴电缆或光纤,选择灵活。

总之,CAN总线具有实时性强、可靠性高、通信速率快、结构简单、互操作性好、总线协议具有完善的错误处理机制、灵活性高和价格低廉等特点。

2.2 ZigBee简介 CAN 总线作为一种成熟的现场总线技术,因其可靠性高、实时性好及成本低等特点,广泛应用于汽车电子、工业控制以及楼宇自动化等各个领域[3]。但是在一些特殊场所,并不适于通过布线实现网络的连接,此时用无线网络接入就能解决这一问题。ZigBee 是一种新兴的短距离无线通信技术,其特点是低成本、低功耗、低速率且在免执照频段工作,可广泛应用于工业控制、环境监测、商 业 监 控、汽 车 电 子及家庭自动化等领域。实现CAN与ZigBee 的互联将会使现场总线与无线网络优势互补,满足特殊的应用需求。

ZigBee是一种无线连接,可工作在2.14GHz(全球流行)、868MHz(欧洲流行)和915 MHz(美国流行)3个频段上,分别具有最高250kbit/s、20kbit/s和40kbit/s的传输速率,它的传输距离在10-75m的范围内,但可以继续增加。作为一种无线通信技术,ZigBee具有如下特点: (1) 低功耗: 由于ZigBee的传输速率低,发射功率仅为1mW,而且采用了休眠模式,功耗低,因此ZigBee设备非常省电。据估算,ZigBee设备仅靠两节5号电池就可以维持长达6个月到2年左右的使用时间,这是其它无线设备望尘莫及的。

(2) 成本低: ZigBee模块的初始成本在6美元左右,估计很快就能降到1.5—2.5美元,并且ZigBee协议是免专利费的。低成本对于ZigBee也是一个关键的因素。

  (3) 时延短: 通信时延和从休眠状态激活的时延都非常短,典型的搜索设备时延30ms,休眠激活的时延是15ms, 活动设备信道接入的时延为15ms。因此ZigBee技术适用于对时延要求苛刻的无线控制(如工业控制场合等)应用。

(4) 网络容量大: 一个星型结构的Zigbee网络最多可以容纳254个从设备和一个主设备,一个区域内可以同时存在最多100个ZigBee网络,而且网络组成灵活。

   (5) 可靠: 采取了碰撞避免策略,同时为需要固定带宽的通信业务预留了专用时隙,避开了发送数据的竞争和冲突。MAC层采用了完全确认的数据传输模式, 每个发送的数据包都必须等待接收方的确认信息。

(6) 安全: ZigBee提供了基于循环冗余校验(CRC)的数据包完整性检查功能,支持鉴权和认证,采用了AES-128的加密算法,各个应用可以灵活确定其安全性。

2.3 节点总体设计 本设计主要由CAN节点总体装备和无线收发装备组成,其中CAN系统主要由 CAN 总线、CAN控制器、CAN收发器和微处理器构成。系统框图如图2-1所示。节点是网络上信息的接收和发送站, CAN 总线上的网络节点可多达 110 个。CAN 总线上的节点一方面担负着与总线上其他智能设备的通信联络, 同时还要完成连接到本节点上仪器设备的数据采集与控制, 所以该节点应是带有微处理器的智能节点。

图2-1 CAN系统组成框图 本次设计主要由电源模块、CAN有线通信模块、无线通信模块和微处理器模块四大模块组成系统,总体框图如图2-2所示。其中采用了 C8051F040作为核心处理器,其内嵌了CAN控制器,通过CAN收发器PCA82C250进行有线通信,选用CC2430作为无线通信设备,以实现远距离通信。

图2-2 系统总体框图 第三章 车载网络节点硬件电路设计 3.1 硬件电路设计 单片机固件程序主要完成的任务是:系统初始化程序所谓智能节点是由微控制器与可编程的CAN控制器组成,目前市面上有两类 CAN总线器件可供选择: 一类是兼有微控制器和CAN功能的器件, 如P8XC591/2、87C196CA/CB、MC68376、PowerPC555等,使用这种集成器件电路更紧凑,方便用户制作印制板;
另一类是独立的CAN控制器, 如Philips公司的SJA1000、Intel 公司82526以及MCP2510等。本次设计采用了兼有微控制器和CAN功能的芯片C8051F060,由于C8051F060内部集成了CAN总线控制器,所以只需外加总线驱动器并加上适当的隔离就可以了, 电路上显得非常简洁。为缩短开发周期并提高性能,系统采用的是双MCU 结构,按功能可分为两部分:CAN 总线接口模块和 ZigBee 网络接口模块。

CAN总线信号CANTX和CANRX从C8051F060出来后先分别经过高速光耦6N137进行电气隔离,避免总线上的瞬时干扰。再经过CAN总线收发器接口芯片PCA82C250,然后接到CAN数据线上。ZigBee网络接口模块选用无线单片机CC2430 作为核心处理芯片。节点硬件组成框图如图3-1所示。

图3-1 节点硬件组成框图 在 CC2430 和 C8051F060 两个单片机之间采用 SPI 接口进行通信,以实现 CAN 总线与 ZigBee网络的物理连接。由于 CC2430 的 SPI 接口不支持多主机工作方式,此处采用以 C8051F060 作为主机、CC2430 作为从机的单主机工作方式,同时,用 CC2430 的 IO 口控制 C8051F060 的外部中断INT0,通过中断启动C8051F060 的 SPI 接口进行数据传输,这样就可以保证 CAN 网络与 ZigBee无线网络之间的数据交互。

3.1.1 C8051F060简介 C8051F060单片机是Silicon Laboratories公司推出的完全集成的混合信号片上系统型MCU,具有以下的特点[4]:高速、流水线结构的8051兼容的CIP-51内核(可达25MIPS);
两个16位、1 Msps的ADC,带DMA控制器;
控制器局域网(CAN2.0B)控制器,具有32个消息对象,每个消息对象有其自己的标识掩码;
全速、非侵入式的在系统调试接口(片内);
10位、200 ksps的ADC,带8通道模拟多路开关;
两个12位DAC,具有可编程数据更新方式;
64 KB可在系统编程的FLASH存储器;
4 352(4 K+256)字节的片内RAM;
可寻址64 KB地址空间的外部数据存储器接口;
硬件实现的SPI,SMBus/I2C和两个UART串行接口;
5个通用的16位定时器;
具有6个捕捉/比较模块的可编程计数器/定时器阵列;
片内看门狗定时器、VDD监视器和温度传感器。

由于C8051F060单片机内部集成CAN控制器,符合Bosch规范2.0A(基本CAN)和2.0B(全功能CAN),方便了CAN网络通信设计。CAN通讯网络具有高速度、高可靠性、强抗干扰能力等优点,并且具有很强大的扩展能力。由于C8051F060的高集成度,因而只需少量外围测量电路便可组成集数据采集、控制和通信功能于一体的单片系统,同时可提高系统的整体可靠性。另外,C8051F060内核和普通51系列兼容,且指令简单易学,因此,可缩短系统研发周期。

3.1.2 PCA82C250简介 PAC82C250 是 CAN 协议控制器和物理总线间的接口,它主要是为汽车中高速通讯(高达 1Mbps)应用而设计。该器件对总线提供差动发送能力,对 CAN控制器提供差动接收能力,完全符合“ISO11898”标准。PAC82C250 的主要特性有[5]:
1.完全符合“ISO11898”标准。

2.高速率(最高达 1Mbps)。

3.具有抗汽车环境中的瞬间干扰,保护总线能力。

4.斜率控制,降低射频干扰(RFI)。

5.差分接收器,抗宽范围的共模干扰,抗电磁干扰(EMI)。

6.热保护。7.防止电池和地之间的发生短路。

8.低电流待机模式。

9.未上电的节点对总线无影响。

10.可连接110个节点。

11.具有限流保护。

本设计使用了常规的电路设计方案,使用PCA82C250作为CAN收发器。PAC82C250主要功能有:首先P82C250驱动电路内部具有限流电路,可以防止输出级对电源、地或负载短路,虽然在这种故障条件出现时功耗增加,但不致使输出级破坏。其次,P82C250采用双线差动驱动,有助于抑制恶劣环境下的瞬变干扰。其引脚图如图3-2所示。

图3-2 PCA82C250引脚图 引脚Rs可用于选择三种不同的工作方式:高速、斜率控制和待机。在高速工作方式下,发送器输出晶体管以尽可能快的速度启闭。在这种方式下,不采用任何措施限制上升和下降斜率,此时,建议使用屏蔽电缆以避免射频干扰问题。通过将引脚RS接地可选择高速方式。对于较低速度或较短总线长度,总线可以使用平行线或双绞线。物理总线两端的终端电阻Rt要匹配,否则CAN总线数据通信的抗干扰能力和可靠性都会降低很多,主要表现在通信线路处在空闲方式时,整个网络数据混乱[18]。为降低射频干扰,应限制上升和下降斜率,上升和下降斜率可通过由引脚8至地连接的电阻进行控制。斜率正比于引脚8上的电流输出。若脚8接高电平,则电路进入低电平待机方式,在这种方式下,发送器被关闭,而接收器转至低电流。若检测到显畦位,RXD将转至低电平,微控制器应通过引脚8将发送器变为正常方式作为对此条件作出的反应。由于在待机方式下,接收器是慢速的,因此第一个报文将被丢失。对于CAN控制器及带有CAN总线接口的器件,P82C250并不是必须使用的器件,因为多数CAN控制器均具有配置灵活的收发器件,并允许总线故障,只是驱动能力只允许2030个节点连接在一条总线上。而P82C250支持多达 110 个节点,并能以1Mbps的速率工作于恶劣电气环境下。利用82C250还可方便地在CAN控制器与收发器之间建立光电隔离,以实现总线上各个节点之间的电气隔离。

3.1.3 CC2430简介 CC2430是一颗真正的系统芯片(SoC)CMOS解决方案。这种解决方案能够提高性能并满足以ZigBee为基础的2.4GHz ISM波段应用。它结合一个高性能2.4GHz DSSS(直接序列扩频)射频收发器核心和一颗工业级小巧高效的8051控制器。它集成了射频收发模块,拥有独立的射频输入输出端口,不需要外部TX/RX开关,芯片至天线之间电路的构架可由平衡/非平衡器与少量电容与电感所组成。同时它片上资源丰富,具有128KB可编程内存和8KB的RAM,包含8个8—14位模拟数字转换器、4个定时器、AS128协处理器、看门狗定时器、32.768KHZ晶振的休眠模式定时器以及21个可编程I/O引脚。并且其功耗非常低,待机时电流消耗仅0.2uA,在32.768KHZ晶振时钟下运行,电流消耗小于1uA。因此,具有较高的性价比。

3.2 电源模块设计 由于C8051F060的工作电压为2.7V~3.6V,CC2430的工作电压是2.0V~3.6V,故需要设计一个电源转换电路,保证芯片的正常工作,系统选用了LM1117作为电源转换芯片,其最大输入电压为20V,输出电压为3.3V。电压转换电路图如图3-3所示。

图3-3 电压转换电路 3.3 抗干扰电路 为了增强 CAN 节点的抗干扰能力,C8051F060的TX0和RX0并不是直接与P82C250 的 TXD 和 RXD 相连,而是通过高速光耦 6N137 与 P8X250 相连,这样就很好的实现了总线上各 CAN 节点间的电气隔离。P82C250 与 CAN 总线的接口部分也采用了一定的安全和抗干扰措施。P82C250 的 CANH 和 CANL 引脚各自通过一个 5 欧姆的电阻与 CAN 总线相连,电阻可起到一定的限流作用,保护 P8X250 免收过流的冲击。CANH 和 CANL 与地之间并联了两个 3μF的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的作用。CANH 与 CANL 之间加一个 120 欧姆的终端电阻,来匹配总线阻抗,提高总线的抗干扰能力。电路图如图3-3所示。

图3-3 CAN收发器抗干扰电路 第四章 车载网络节点软件设计 车载网络节点的软件设计主要包括两个方面:CAN通信和ZigBee无线通信。而CAM通信主要由三部分组成:CAN初始化、CAN发送数据、CAN接收数据。

4.1 CAN节点模块的软件设计 单片机固件程序主要完成的任务是:系统初始化程序、发送程序、接收程序等。系统主程序流程图为4-1所示。本系统软件采用结构化程序设计方案,使其具有较好的模块性和可移植性,对于不同的系统功能或不同的应用环境,可以方便地进行编程重组。CAN节点通讯协议包括各种通讯帧的组织和发送,均由CAN控制器完成。应用层软件的核心部分是CPU与CAN控制器之间的数据接收和发送程序,即CPU 把待发送的数据发送给CAN控制器,再由CAN控制器发到总线上;
当CAN总线上接收到数据后,CPU 把数据从接收缓冲区取走并处理。

本设计CAN节点通信软件分为3部分:CAN初始化、数据发送、数据接收。CAN初始化主要是设置CAN的通信参数。发送数据程序把数据存储区中待发送的数据取出,组成信息帧,并将主机的ID地址填入帧头,然后将信息帧发送到CAN控制器的发送缓冲区,信息从CAN控制器发送到总线是由CAN控制器自动完成的。数据接收程序只需从接收缓冲区读取信息,并将其存储在数据存储区,信息从CAN总线到CAN控制器接收缓冲区也是由CAN控制器自动完成的。

图4-1 CAN系统主流程图 4.1.1 系统初始化 初始化程序主要完成对所有的报文对象进行初始化(一般将所有值置零),对 CAN 控制寄存器、位定时寄存器进行设置,还要对发送报文对象和接收报文对象分别进行初始化。系统初始化流程图如图4-2所示。其中,位定时寄存器的设置较为复杂,这里我们使用外部晶振为 22.1184 MHz,CAN 通信速率为1Mb/s,得到BITREG的初始值为0x5EC0。下面为CAN 启动程序:
void start_can(void) { SFRPAGE = CAN0_PAGE; CAN0CN |= 0x41; //使能 CEE 和 INIT 位 CAN0ADR=BITREG; //指向位定时寄存器 CAN0DAT=0x5EC0; //给位定时器赋值 CAN0ADR=IF1CMDMSK; //指向命令掩码寄存器 1 CAN0DAT=0x0087; CAN0ADR=IF2CMDMSK; //指向命令掩码寄存器 2 CAN0DATL=0x1F; //设置接收:读 CANRAM、读数据字节 CAN0CN |= 0x26; //全局初始化 IE 和 SIE CAN0CN &= ~0x41; //清除 CEE 和 INIT 位 } 图4-2 系统初始化流程图 4.1.2 发送程序 CAN 报文发送是由 CAN 控制器自动完成的,用户只需根据接收到的远程帧的识别符,将对应的数据转移到发送缓冲寄存器,然后将此报文对象的编码写入命令请求寄存器启动发送即可,而发送由硬件来完成。这里,我们使用定时更新发送报文对象中的数据,数据的发送有控制器自动完成,当其收到一个数据帧时,就将具有相同识别符的数据帧发送出去。发送流程图如图4-3所示。其发送子程序结构如下:
void transmit(unsigned char MsgNum) { xdata char TRdata[8]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,}; char num; SFRPAGE=CAN0_PAGE; //IF1 already set up for TX CAN0ADR=IF1CMDMSK; //指向命令掩码寄存器 1 CAN0DAT=0x0087; CAN0ADR=IF1DATA1; //指向数据场的第一位 for(num=0;num<8;num++) //发送 8 个字节 { CAN0DATH=TRdata[num]; num++; CAN0DATL=TRdata[num]; } CAN0ADR=IF1CMDRQST; //指向命令请求寄存器 CAN0DATL=MsgNum; //传输新数据给指定的消息对象 } 图4-3 发送程序流程图 4.1.3 接收程序 CAN报文的接收与发送一样,是由CAN控制器自动完成的,接收程序只需从接收缓存器中读取接收的数据,再进行相应的处理即可。接收流程图为4-4所示。其基本方法与发送程序一致。

void receive_data(unsigned char MsgNum) { int j; xdata char REdata[8]; char SFRPAGE_SAVE=SFRPAGE; //保存 SFR 页 SFRPAGE=CAN0_PAGE; // IF1 already set up for RX CAN0ADR=IF2CMDRQST; //指向命令掩码寄存器 CAN0DATL=MsgNum; //接收来自消息对象的新数据 CAN0ADR=IF2DATA1; //指向数据域的第一位 for(j=0;j<8;j++) //接收八个字节 { REdata[j]=CAN0DATH; j++; REdata[j]=CAN0DATL; } SFRPAGE=SFRPAGE_SAVE; } 图4-4 接收程序流程图 4.2 无线通信软件设计 4.2.1无线通信数据帧格式 CC2430符合IEEE802.15.4标准,硬件支持一部分IEEE802.15.4MAC帧。同步头包括前导码和帧起始分隔符(SFD),在CC2420中,前导码和帧起始分隔符是可以配置的,默认值4B和IB是符合IEEE802.15.4的标准。当MODEMCTRIJO.AUZTOCRC 控制位置位时,自动产生ZB的帧校验序列,并由CC2420硬件自动插入。CC2420无线 通信发送数据帧格式和接收确认帧格式分别如表4-1、4-2所示。

表4-1 CC2430无线通信数据帧格式 PHY帧 MAC协议数据单元(MPDU)
前导码 帧起始分隔符(SFD)
帧长度 帧控制字段 序列号 PAN标识符 目标地址 源地址 有效载荷 帧校验序列 4B 1B 1B 2B 1B 地址信息共6B nB 2B 表4-2 CC2430无线通信确认帧格式 PHY帧 MAC协议数据单元(MPDU 前导码 帧起始分隔符(SFD)
帧长度 帧控制字段 序列号 帧校验序列 4B 1B 1B 2B 1B 2B 4.2.2 无线通信程序设计实现 CAN总线与ZigBee技术的通信协议和体系结构完全不同,但是都符合 OSI( Open System In-terconnection) 网络模型[10],所以网关的软件设计只需在所规定的相应层级上进行。CAN/ZigBee网关的软件设计是在应用层编写CAN节点和ZigBee节点的数据接收提取和转发程序,以及地址映射表的建立和管理程序。

1) 地址映射表的建立和管理 CAN协议的一大特点是不采用传统的节点地址编码,而是对通信的数据块进行编码[11]。C8051F040单片机内部有32个消息对象,初始化时每个消息对象写入一个消息ID,以后写入消息对象的数据将以固定的ID发送。与CAN总线技术不同,ZigBee 技术采用对节点地址编码进行消息的收发。在ZigBee通信协议中规定了两种地址: 唯一的64位IEEE地址和16位的短地址。ZigBee协议栈通信时使用的是16位的短地址。由于ZigBee短地址在网络建立时是动态分配的,为了使CAN节点可以向指定的ZigBee节点发送数据,每个ZigBee节点分配一个节点代码。在协议转换中建立如表4-3 所列的地址映射。

表4-3 地址映射 网关接收CAN消息ID 64为长地址 SADDR 节点代码 0x0001 0x00000000000A 0x1699 0x0001 0x00000000000C 0x169A 0x0002 … … … 网关有固定的ZigBee短地址0x0000,同时接收ID为0x0001的CAN报文并将其转发到Zig-Bee网络。在地址映射表中,节点代码是固定的,ZigBee的路由节点启动后,一旦有节点加入到该网络,协调器即为该节点分配一个在局域网内唯一的短地址。如果是第一次组建ZigBee网络,则认为是地址映射表的建立过程,这时网关将新加入网络节点的长地址和短地址写入地址映射表,与节点代码构成一一对应。如果是ZigBee网络失败后的重建过程,则查询地址映射表,将新加入节点的短地址写到地址映射表中其长地址对应的位置。这样 ZigBee网络一经建立,节点的长地址、短地址和节点代码就保持对应关系。CAN节点通过网关向ZigBee节点发送消息时,利用节点代码即可查得当前ZigBee短地址。当ZigBee节点向CAN节点发送数据时,在ZigBee消息中应包含目标节点的CAN报文ID,网关根据CAN报文ID将数据转发到CAN总线。

2) 协议转换的实现 协议转换在网关的两个网络接口模块编程实现。在完成各自网络内数据收发的基础上编写SPI接口程序,使两个模块之间能进行数据交互。由于ZigBee的传输速率小于CAN总线,所以在ZigBee的网络接口模块设计一个缓冲区接收来自CAN总线的数据。SPI通信对数据包作如图4-5所示定义。

图4-5 SPI数据包定义 数据包由目标地址( ADDR) 、数据长度(DLC)和数据载荷(DATA)3部分组成。ZigBee向CAN发送的SPI数据包长度为 10 字节。其中ADDR 为 CAN 的消息号,占用 1 字节,DLC占用1字节,DATA 长度固定为8字节,其有效字节数由DLC确定。CAN向ZigBee发送的SPI数据包长度为9字节。在CAN报文采用的短帧中,每一帧中最多传送8字节数据。此处定义两字节传输ZigBee的节点代码,6字节作为数据载荷,封装SPI数据包时以1字节的DLC表示数据包中的有效载荷长度。

CAN接口模块程序按功能分为3部分: 初始化程序、CAN消息的转发程序和 SPI 数据包的转发程序。初始化程序中完成IO口的交叉配置、SPI设置以及CAN寄存器的初始化。SPI设置时应保证时钟相位和时钟极性与CC2430一致,以确保两个单片机能正确通信。CAN 初始化时将1个消息对象用于接收ID为0x0001的报文,其余31个消息对象按CAN网络的应用层协议初始化,用于发送报文。网关以中断方式接收ID为0x0001的CAN报文,根据DLC值提取有效载荷,并调用SPI发送子程序将其发送到ZigBee网络接口模块。SPI的数据接收在INT0中断处理程序中完成,主要流程如图4-6 所示。CAN 接口模块每次将 SPI 接收到的数据存储于 RxBUFF 缓冲区,当接收到一个完整的数据包后,调用 CAN 报文发送子程序将 RxBUFF 中的数据发送到 CAN 总线上。

图 4-6 SPI 数据包接收和转发程序流程 ZigBee 接口模块程序在协议栈的基础上开发。ZigBee 协议栈采用有限状态机结构,由物理层( PHY) 、媒体访问控制层 ( MAC) 、网 络 层( NWK) 和应用层( APL) 组成[12]。协议栈的每一层都有自己的状态机( FSM) 用来追踪要进行的操作,开发时在应用层编写相关应用程序。在主应用程序中应最早调用顶层状态机,并且周期的调用状态机函数以维持协议栈运行。ZigBee 接口模块程序实现 ZigBee 消息的转发、SPI 数据包转发及地址映射表的建立和维护功能,主流程如图4-7所示。初始化过程完成对协议栈、SPI 接口及硬件电路的设置,再调用aplFormNetwork( )函数组建网络。网络组建后程序开始循环执行。在循环中顶层状态机函数首先被调用,然后检查CAN 接收缓冲区是否有数据,如果缓冲区不为空,则从缓冲区中的数据块提取 ZigBee 节点代码及数据载荷,利用节点代码查地址映射表获得节点的短地址,调用 ZigBee 发送函数将数据打包发送至ZigBee节点。在顶层的状态机中会调用apsRxFSM( )检查是否接收到 ZigBee 消息,当接收到消息时调用 ZigBee 接收子程序。ZigBee 接收子程序提取消息中的有效载荷,并调用 SPI 发送子程序将其发送至CAN网络接口模块。有节点加入网络时,状态机将调用 usrJoinNotifyCall-back( LADDR * ptr) 子程序建立和维护地址映射表。ZigBee 接口模块的SPI接口以中断方式接收来自CAN网络接口模块的数据,接收到一个完整的SPI数据包后,将其存入CAN接收缓冲区等待发送。

图 4-7 ZigBee 接口模块主程序流程 3)
缓冲区的管理 ZigBee接口模块的CAN接收缓冲区的结构为一个单输入单输出的循环消息队列。缓冲区为一个结构体数组,每个数组元素存储一个SPI数据包,数组长度即为缓冲区的大小。定义读数据指针变量(R_Point)和写数据指针变量(W_Point)对缓冲区进行操作,使缓冲区的读和写可以并发执行。R_Point和W_Point在初始化时指向缓冲区第一个数据块。网关的 ZigBee 接口模块接收到 SPI 数据包后,将数据包写入W_Point指向的缓冲区,再将W_Point指向相邻的下一数据块。当对最后一个数据块执行写操作后,W_Point将指向缓冲区的第一个数据块。从缓冲区中读数据用指针变量R_Point完成。读缓冲区之前,首先比较R_Point和W_Point的值,如果R_Point和W_Point值相同,则认为缓冲区为空,不能进行读操作。否则认为缓冲区中有数据等待发送,读取R_Point当前指向的数据块,再将R_Point指向相邻的下一数据块。当对缓冲区的最后一个数据块进行读操作后,同样使其指向缓冲区的第一个数据块。这样,便完成了对缓冲区的循环读写操作,保证先收到数据能最先发送。缓冲区的数据块结构定义如下: typedef struct BUFF_UNION{ UINT16 Node_Code; UINT8 Data_Len; UINT8 RxData[6]; } CAN_Z_Buff_UNION 其中,Node_Code 存储 ZigBee 节点代码;

Data_Len 的值表示数据块中有效载荷长度;
RxData 数组存储数据载荷。

参考文献 [1]朱艳明,李明禄,倪明选.车辆传感器网络研究[J].中兴通信技术,2009,15(5):28-32. [2]饶运涛,邹继军.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2003. [3]黄明,梁旭,岳洋. 基于 CAN 总线设计实现的数据采集监控系统[J]. 化工自动化及仪表,2010,37( 6):79 ~81. [4]周立功.iCAN现场总线原理与应用[M].北京:北京航空航天大学出版社,2007. [5] EISELE H. Application note PCA82C250/251 CAN transceiver[M], Philips se-miconductors, 1996:83-91. [6]张培仁,孙立.基于C语言C8051系列微控制器原理与应用[M].第1版.北京: 清华大学出版社,2007: 123 ~ 150. [7]Philips Semiconductor. PCA82C250 CAN Controller In-terface[DB / OL]. http: / / www.semiconductors.phil-ips.com,2000. [8] TI/Chipcon.CC2430 PRELIMINARY Data Sheet[DB/OL].http: / / www. chipcon. com,2006. [9]李旭.车辆传感器网络的应用及关键技术研究[D].上海:上海交通大学,2009:1-123. [10]Carlos S,Cunha J B,Morais R.A Networked Plat-form for Agricultural Management Systems [J].Computers and Electronics in Agriculture,2001,31( 1) : 75 ~ 90. [11]Gmbh R B.CAN Specification Version 2 Parts A andB[DB /OL]. http: / / www. zlgmcu. com,1991. [12]Pekhteryev,Sahinoglu G,Orlik Z. Image Transmis-sion Over IEEE 802. 15. 4 and ZigBee Networks[C].IEEE International Symposium on Circuits and Sys-tems. Kobe: IEEE Press,2005: 3539 ~ 3542. [13]张河新,王晓辉,黄晓东.基于STM32和CAN总线的智能数据采集节点设计[J].化工自动化及仪表,2012,39(01):78-80. [14]夏琳琳,谷利君,王建国,杨冰.CAN总线与ZigBee无线网络网关的设计[J].化工自动化及仪表,2012,39(01):63-67. [15]莫莉,张叶茂.基于CAN总线的嵌入式监控网络智能节点设计[J].广西轻工业,2012,35(4):82-83. [16]黄长喜.无线传感器网络节点设计的研究[D].合肥:合肥工业大学,2006:5-41. [17]唐军辉.基于ZigBee协议的无线传感器网络节点设计[D].沈阳:东北大学,2008:7-63. [18]赵家礼, 张庆达等. 变压器故障诊断与修理[M].北京:机械工业出版社, 1998.

推荐访问:
上一篇:2021年客服年终总结报告
下一篇:2021年客服试用期工作总结(二)

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有