新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ARM和WinCE6.0下nRF24L01的驱动设计

ARM和WinCE6.0下nRF24L01的驱动设计

作者:时间:2012-05-23来源:网络收藏

摘要:随着嵌入式WinCE系统的发展和近距离无线通信的广泛使用,有必要为近距离无线通信芯片编写。由于在WinCE系统下的缺乏,使得WinCE与芯片之间的直接通信成为困难。本文的正好解决了这一难题。

本文引用地址:http://www.eepw.com.cn/article/171420.htm

关键词:WinCE;;驱动程序

引言

nRF24L01是一款工作在2.4~2.5 GHz世界通用ISM频段的单片无线收发器芯片。它在无线数据通讯、无线门禁、遥感勘测、工业传感器和玩具中都有应用。

随着测控技术的发展,nRF24L01与单片机组成的系统进行无线测控的实例已经有很多,如基于nRF24L01的无线温度监测系统、基于nRF24 L01的近距离无线数据传输系统等等。近年来,随着和嵌入式WinCE系统的迅速发展,由于在WinCE系统下nRF24L01和的通信缺乏驱动,致使两者之间不能直接通信,一般的解决方法是借助于第三方单片机的串行口来进行两者的通信。这种方式的不足之处在于,由于要借助于第三方单片机,使得成本增加且通信速度下降。nRF24L01驱动的与实现正好添补了这一空白,使WinCE系统和nRF24L01可以直接通信进行无线数据收发。

1 WinCE流式驱动模型

在WinCE系统中有4种驱动模型,其中流式接口设备驱动模型和本地设备驱动模型是可以由用户来开发的。nRF24L01可以看作是一种流式接口设备,所以选用流式接口设备驱动模型来编写驱动较为合适。

1.1 流式接口驱动程序的体系结构

如图1所示,流式接口驱动程序的体系结构由5部分组成,分别是应用程序、FileSys.exe、设备管理器、流式接口驱动程序和硬件。

a.JPG

图1中阴影部分是由用户编写程序来完成,白色部分是由WinCE系统自身提供,用户不能修改。在应用程序使用文件API对设备进行访问时,文件API调用被操作系统转发到FileSys.exe进程中;若发现是对设备的访问,则FileSys.exe就会把操作交给设备管理器;然后,设备管理器根据具体操作调用不同流式接口驱动中提供的接口;最后,由流式接口驱动程序负责与硬件交互。

从体系结构中可知,流式接口驱动体系是把设备抽象作为文件进行操作的。所以编写流式接口驱动就是将文件操作应有的打开、关闭、读取、写入和移动文件指针的操作在驱动程序中以函数的形式实现,这些函数有其标准的定义形式,称之为流接口函数。但对于驱动程序而言除了和文件一样的标准操作外还需要驱动程序的加载、卸载等流接口函数。下面将介绍nRF24L01驱动中主要用到的流接口函数:

①XXX_Open()函数,功能是打开设备准备读写,对应的文件操作函数是CreatFile()。

②XXX_Close()函数,功能是关闭设备,对应文件操作函数是CloseHandle()。

③XXX_Init()函数,功能是初始化设备,在系统启动时由设备管理器渊用。

④XXX_Read()函数,功能是读取设备中的数据,对应文件操作函数为ReadFile()。

⑤XXX_Write()函数,功能是写入数据到设备中,对应文件操作函数为WriteFile()。

⑥XXX_IOControl()函数,功能是对设备发送控制命令,对应文件操作DeviceIOControl()。

其中XXX是驱动程序在注册表中注册的设备名称。

2 硬件

芯片选择三星公司生产的S3C2440,该芯片工作频率为400 MHz,最高可达533 MHz,可稳定运行WinCE 6.0操作系统。nRF24L01是通过SPI总线协议和单片机进行通信的,在WinCE 6.0中SPI通信的实现可以通过ARM的SPI接口,也可以通过GPIO端口软件模拟的方式实现。在本次设计中选用了GPIO端口软件模拟的方式。硬件连接如图2所示。

b.JPG

3 nRF24L01驱动的实现

3.1 主要实现的函数

(1)NRF_Init()设备初始化函数

在该函数中主要进行GPF端口的初始化,接收完成同步事件和接收线程的创建主要的核心代码如下:

c.JPG


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭