APP下载

面向车联网的IEEE802.15.4协议兼容射频芯片的驱动设计

2012-11-28欧阳朝兵刘宏宗云鹏

湖北汽车工业学院学报 2012年1期
关键词:物理层管脚寄存器

欧阳朝兵,刘宏,宗云鹏

(湖北汽车工业学院 电气与信息工程学院,湖北十堰442002)

VANET(Vehicular Ad-hoc Network)是一种由在道路上行驶的车辆组成的临时性的开放式无线自组织网络,具有自组织、无中心、多跳传输以及节点高速移动等特点。VANET的主要应用方向为交通安全类应用和交通状况告知类应用。VANET的作用主要是实现将交通安全信息或交通状况信息快速发送至一定区域内尽量多的节点。在VANET体系中车辆间(Vehicle-to-Vehicle)通信占有重要地位,但是至今,支持IEEE 802.11p协议的硬件系统还较少,不利于此类车载系统的应用及普及。本系统应用IEEE 802.15.4协议作为车辆间通信标准,对射频芯片的驱动进行了分析和设计,此驱动在基于广播多跳路由算法中得以应用,实现了车辆间紧急的信息告知与共享。

1 IEEE802.15.4协议简介

LR-WPAN(Low-rate Wireless Personal Area Network)网络是一种结构简单、成本低廉的无线通信网络,它使得在低电能和低吞吐量的应用环境中使用无线连接成为可能。与WLAN相比,LRWPAN网络需要的基础设施少,有些情况甚至不需要基础设施。IEEE802.15.4标准为LR-WPAN网络制定了物理层和MAC子层协议[1]。

IEEE802.15.4协议提供2种物理层的选择(868/915MHz和2.4GHz),物理层与MAC层的协作扩大了网络应用的范畴。这2种物理层都采用直接序列扩频(DSSS)技术,降低了数字集成电路的成本,并且都使用相同的包结构,以便低作业周期、低功耗地运作。2.4 G物理层的数据传输率为250 kb·s-1,868/915 MHz物理层的数据传输率分别是20 kb·s-1、40 kb·s-1[2]。

IEEE802.15.4MAC层的特征是:联合,分离,确认帧传递,通道访问机制,帧确认,保证时隙管理,和信令管理。MAC子层提供2个服务与高层联系,即通过2个服务访问点(SAP)访问高层。通过MAC通用部分子层SAP(MCPS-SAP)访问MAC数据服务,用MAC层管理实体SAP(MLME-SAP)访问MAC管理服务。这2个服务为网络层和物理层提供了一个接口。

2 硬件连接

支持IEEE802.15.4协议的芯片较多,本协议选择ATMEL公司的AT86RF230。AT86RF230芯片是真正的SPI到天线的解决方案,通过SPI和GPIO与CPU连接,使用IRQ中断使CPU进行异步事件处理。

AT86RF230 通过 SPI接口(MISO、MOSI、SCLK和SEL)进行数据交换,同时通过GPIO接口(RST和SLP_TR)控制AT86RF230的工作状态,通过IRQ管脚将异步事件通知CPU。连接图[3]如图1所示。

图1 AT86RF230与CPU连接图

AT86RF230使用标准的双向同步串行总线SPI接口,CPU必须配置为主机模式来读写AT86RF230的数据。

/RST是低电平有效的控制管脚,用于对AT86RF230芯片的复位,CPU必须把这个管脚配置为输出,当CPU输出为低时芯片复位。

SLP_TR是高电平有效的控制管脚,用于对AT86RF230芯片工作状态的改变,CPU必须把这个管脚配置为输出,当CPU输出为高时AT86RF230根据自己当前的状态进行状态转换。

/IRQ管脚是上升沿触发的中断输入口,当AT86RF230有异步事件发生时,将产生一个上升沿。CPU必须配置该管脚为高电平输入状态。

3 驱动的设计与实现

3.1 AT86RF230驱动的体系结构

根据IEEE 802.15.4协议和AT86RF230操作方式,将整个驱动框架的实现分为读写驱动和MAC操作2个部分。读写驱动主要包括对SPI的初始化和GPIO初始化,并根据AT86RF230寄存器操作模式,完成对8bit寄存器和子寄存器的读写功能。MAC操作主要包括通过对AT86RF230寄存器的操作完成IEEE802.15.4协议的数据帧的发送和接收。其框架结构如图2所示。

图2 驱动框架结构

在驱动框架设计中加入了对嵌入式实时操作系统(RTOS)的支持。嵌入式实时操作系统的主要功能就是通过特定算法对任务进行调度,同时操作系统提供信号量、邮箱、队列和事件标志组等功能完成任务间的通信与同步。应用操作系统可以将整个软件系统划分为多个任务,每个单独任务处理固定的事件,任务间使用系统服务进行通信。

该驱动通过配置为无操作系统方式和支持操作系统方式。无操作系统方式中使用的延时和信息监测一般通过软件延时和标志位监测实现。支持操作系统方式使用到由操作系统提供的服务,在延时中采用操作系统提供的延时服务,中断判断和中断处理中使用操作系统提供的信号量和邮箱进行各个服务功能的同步与通信。

3.2 AT86RF230硬件驱动的设计和实现

3.2.1 寄存器的读写方式

寄存器的操作包括2种:一种是8 bit宽度寄存器;另一种是只需要操作8 bit宽度寄存器中某几位数据的子寄存器。写操作大体过程如下:对地址进行mask操作,关闭系统中断、SPI使能,通过SPI传送寄存器地址,SPI传送给寄存器所要赋值内容,SPI使能关闭,开启系统中断,寄存器的读取操作与写寄存器基本类似,从子寄存器读取回来的数据进行mask和移位等操作。

3.2.2 AT86RF230状态转换

AT86RF230具有2种状态模式:基本运行模式(Basic Operating Mode)和扩展运行模式(Extended Operating Mode)[4]。

AT86RF230 如下状态:SLEEP、TRX_OFF、PLL_ON、RX_ON、BUSY_RX、BUSY_TX、BUSY_RX_AACK、RX_AACK_ON、TX_ARET_ON、BUSY_TX_ARET等状态,状态之间可以通过设置寄存器TRX_STATE和设置管脚SLP_TR来转换。

通过读取AT86RF230状态寄存器可以获得其工作状态,AT86RF230有2组工作状态:一组包括简单的收发状态,可以直接通过对工作状态寄存器的写入或者通过SLP_TR管脚的状态改变而改变;另一组包括所有在AT86RF230进行数据收发或者上电时的临时状态。

3.2.3 AT86RF230初始化

初始化流程图(图3)需要初始化CPU的SPI外设、GPIO配置为输出和上升沿中断使能。AT86RF230上电后进入P_ON模式,通过CPU对AT86RF230初始化进入收发关闭(TRX_OFF)模式。

上电后 CPU 需要等待 510 μs[4]使得AT86RF230的PLL工作稳定,然后对/RST和SLP_TR管脚进行置低,延时6 μs后释放/RST管脚。这时AT86RF 230进入工作状态,输出AT86RF230的器件编号和版本号。为了防止意外的中断发生,在芯片工作之前关闭芯片所有的中断,并通过读取中断状态寄存器(IRQ_STATUS)进行检验,然后使芯片进入TRX_OFF状态,完成了芯片的初始化。具体流程图如图3所示。

3.2.4 AT86RF230中断处理

AT86RF230有6种中断分别为PLL锁定中断、PLL失锁中断、开始接收中断、发送结束中断、缓冲超载中断和低压报警中断,中断使能可以通过往中断控制寄存器中写入控制字完成。

图3 AT86RF230初始化流程图

系统使用EINT3_IRQHandler中断入口程序来处理各个中断,当有中断发生时AT86RF230IRQ管脚产生一个上升沿,CPU的中断处理模块响应中断并进入EINT3_IRQHandler中断处理程序。在中断处理程序中,首先读取出中断寄存器的值以判断中断源而进行响应的处理,处理完毕一个中断后还要判断有没有其他中断需要处理,直到所有中断都处理完毕。

为了实现对AT86RF230多中断源的处理,在中断处理程序中使用了循环查询方法,其流程图如图4所示。

图4 多中断源处理流程图

3.3 AT86RF230驱动MAC层操作的设计和实现

3.3.1 数据帧的接收与发送

当AT86RF230接收到帧同步字段后,由原来的RX_ON状态转换到BUSY_RX,然后产生接收开始中断,这时必须等待32 μs再去读取帧长度,使用帧长度来计算延时时间,延时后读取数据并产生接收完毕中断,在中断中读取缓冲区数据或者进行应答。AT86RF230将BUSY_RX状态转换到RX_ON。将保存在数据缓冲区的数据通过frame_read函数进行查询读取。

在AT86RF230芯片中定义了2种触发信息传送的方法[4]:写命令寄存器;SLP_TR管脚产生一个上升沿。在数据发送刚开始,必须保证SLP_TR管脚保持65ns的高电平,用于探测该管脚的上升沿。在发送数据前要读取AT86RF230寄存器是否处于BUSY_TX状态,如果是则等待160μs以后再次进行状态判断,否则进行数据发送。将数据发送的功能定义为frame_write函数向上层提供函数接口。

3.3.2 数据接收与发送

为了能使用该驱动进行大数据量的收发,在MAC层操作中定义了read和write函数[5]。

在write函数中,通过对数据的分包,使用frame_write函数对数据进行连续发送,实时检测发送状态记录错误事件返回错误事件类型。

read函数中使用frame_read函数查询保存在CPU缓冲区的数据,根据frame_read函数的返回结果进行数据有效性判断并进行相应的读取操作。

数据的接收与发送函数是本驱动向应用层提供的接口,应用层任务通过该接口实现对IEEE 802.15.4数据包的读写。

4 测试与总结

车辆间的通信方式是基于广播路由的一种多跳网络,无线多跳网络是一种无固定基础设施的自组织网络,其特点是无网络控制中心、多跳路由、网络自组性、动态拓扑等。网络中的每个节点都可以发送和接收信号,每个节点都可以与一个或者多个对等节点进行直接通信。由于无线信道的链路共享、衰落和干扰等特点,在无线多跳网络中的各协议层之间存在着相互影响。为了减少链路共享、衰落和干扰对通信的影响,在IEEE 802.15.4传输中使能了自动重传和应答等机制。

本驱动应用于多跳信息的传输,测试场景选择了总长度为415 m的道路上,节点1发送,节点2、3收到后转发,测试场景如图5所示。根据各个节点收到的信息进行解析和判断,测试系统运行情况,节点1发送信息后,节点4收到的信息如图6所示。

图5 测试场景图

图6 节点4收到的信息图

通过实验测试表明,该射频芯片硬件驱动具有较好的移植性和较好的程序接口。该驱动信息传输速率能够达到IEEE 802.15.4定义的250 Kb·s-1的最高速率,满足车辆间紧急信息告知与共享的应用。

[1]IEEE.IEEE Standard for Part 15.4∶Wireless Medium Access Control(MAC)and Physical Layer(PHY)Specifications for Low-Rate Wireless Personal Area Networks(WPANs),IEEE Std 802.15.4[K/OL].(2003-10-01)[2011-10-05].http∶//ieeexplore.ieee.org/ielD/4152702/4152703/04152704.pdf.

[2]李晓维.无线传感器网络技术[M].北京:北京理工大学出版社,2007.

[3]王思山,吴黎兵.基于IEEE 802.15.4的车辆间通信系统硬件设计[J].湖北汽车工业学院学报,2011,25(1):30-33.

[4]ATMEL.Atmel IEEE802.15.4 Transceiver AT86RF230 Datasheet[K/OL].(2007-12-03)[2011-10-05].http∶//www.atmel.com/dyn/resources/prod_documents/doc5131.pdf.

[5]ATMEL.AVR2009∶AT86RF230 – Software Programming Model[K/OL].(2005-08)[2011-10-05].http∶//www.atmel.com/dyn/resources/prod_documents/doc8099.pdf.

猜你喜欢

物理层管脚寄存器
基于K-ML-MPWFRFT的物理层安全传输技术
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
公路联网电子不停车收费系统路侧单元物理层自动测试软件研发
基于图像处理的异型电子元器件管脚偏移误差检测方法研究
CMOS数字IC管脚电容的估算与测量
多天线物理层安全传输系统性能分析
1Gbps电力线载波通信物理层算法设计
HC08芯片JVT测试方法的探究
高速数模转换器AD9779/AD9788的应用