APP下载

一种无驱动RFID阅读器的USB固件程序设计

2012-06-25吴小龙张红雨

单片机与嵌入式系统应用 2012年7期
关键词:枚举描述符微控制器

吴小龙,张红雨

(电子科技大学 电子工程学院,成都 611731)

吴小龙(硕士研究生),主要研究方向为超高频RFID阅读器;张红雨(高级工程师),主要研究方向为射频自动识别、物联网和嵌入式技术。

引 言

市面上大多数RFID阅读器采用串口或PS2接口与PC通信,串口方式需要安装USB转串口驱动,PS2接口不支持热插拔。为了弥补以上两者的缺陷,本文提出了采用USB接口与PC通信的方式。HID类设备是应用最广泛的一类USB设备,Windows等操作系统内嵌的HID类驱动程序、键盘、鼠标等通用HID设备得到了广泛的应用。从Windows98操作系统开始,为HID类设备提供了通用的驱动程序,所以只要按照HID设备类的规范编写设备的固件程序,就能够让Windows系统自动识别设备,省去了复杂的驱动程序编写过程。

1 HID设备描述符

在USB中,USB HOST通过各种描述符来识别设备。HID设备描述符包含5个USB基本描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符)和3个HID设备类特定描述符(HID描述符、报告描述符、实体描述符),它们之间的关系如图1所示。

2 HID设备枚举

USB主机识别一个USB设备必须经过枚举过程,主机使用总线枚举来识别和管理设备状态的变化。总线枚举过程如下:

① 连接设备。USB设备接入USB总线。

② 设备上电。USB设备可使用USB总线供电,也可使用外部电源供电。

③ 主机检测到设备,发出复位。设备连接到总线后,主机通过检测设备在总线的上拉电阻,检测新的设备连接,并判断该设备是全速设备还是低速设备,然后向该端口发送一个复位信号。

④ 设备默认状态。设备要从总线上接收到一个复位信号后,才可以对总线的处理操作作出响应。设备接收到复位信号后,就使用默认地址(00H)来对其进行寻址。

图1 HID各种描述符之间的关系

⑤地址分配。当主机接收到有设备对默认地址(00H)响应的时候,就对设备分配一个空间地址,以后设备就只对该地址进行响应。

⑥ 依次读取HID设备的设备描述符、配置描述符、接口描述符、HID描述符、端点描述符、字符串描述符。

3 HID接口固件设计与实现

3.1 硬件连接

PDIUSBD12是一个纯粹的USB接口芯片,仅处理USB通信,自身不带微控制器,需要有一个微控制器对它进行控制。微控制器AT89S52与PDIUSBD12的连接如图2所示。ALE接低电平表示一个独立的地址和数据总线配置。PDIUSBD12的A0引脚控制PDIUSBD12的命令和数据状态。AT89S52的地址和数据总线可直接与PDIUSBD12的数据总线相连。

图2 AT89S52与PDIUSBD12硬件连接

3.2 程序设计

PDIUSBD12接收主机的建立包时产生一个中断,微控制器响应中断,然后通过读PDIUSBD12的中断寄存器决定数据包是发送到控制端点还是普通端点。如果数据包是送往控制端点,微控制器通过读PDIUSBD12最后处理状态寄存器,进一步确定数据包是否是一个建立包。然后进入到控制端点输入或输出服务子程序。具体程序流程如图3所示。其中,USB设备的枚举过程由控制端点来完成,传入主机显示的数据由普通端点完成。

图3 程序流程

由于程序中将设备枚举为HID键盘,所以传输时应满足HID键盘的要求,例如在HID键盘的端点描述符中声明,主机每10ms之内响应一次设备,所以每传输一个数据必须等待10ms才能传下一个,如果两次传输相同的数据,必须在其中插入一个空包(00,00,00,00,00,00,00,00),否则主机会认为只传输一个数据。键盘码详见HID Usage Tables,数据包由8个字节构成,前两个字节为0,后面为键值,每一个字节表示一个按键。理论上一次可以传输6个按键,但是实验过程中丢失键值经常发生,所以只采用第3个字节传输,其余字节为0。

3.3 程序运行结果

设备枚举为HID键盘如图4所示,成功将设备枚举成HID键盘。

图4 设备枚举为HID键盘

图5 数据传输

首先利用RFID阅读器的桌面DEMO程序给标签的USER区写入验证的数据,然后利用阅读器将写入的数据读取,经过HID方式传送到记事本上,数据传输如图5所示。

结 语

本设计满足了RFID阅读器传输数据量不大,速度要求不高,但必须在短时间内作出响应的要求。设备无须编写驱动程序,连接PC后就能工作,缩短了开发的时间。

[1]刘荣.圈圈教你玩USB[M].北京:北京航空航天大学出版社,2009.

[2]周立功.PDIUSBD12USB固件编程与驱动程序[M].北京:北京航空航天大学出版社,2003.

[3]Philips Semiconductors.PDIUSBD12USB interface device with parallel bus[EB/OL].[2012-03].http://www.gaw.ru/pdf/Philips/usb/PDIUSBD12.pdf.

[4]Universal Serial Bus Specification[EB/OL].[2012-03].http://polimage.polito.it/~lavagno/esd/usb_20.pdf.

[5]Universal Serial Bus HID Usage Tables[EB/OL].[2012-03].http://www.usb.org/developers/devclass_docs/Hut1_12v2.pdf.

猜你喜欢

枚举描述符微控制器
基于理解性教学的信息技术教学案例研究
基于结构信息的异源遥感图像局部特征描述符研究
一种高效的概率图上Top-K极大团枚举算法
基于AKAZE的BOLD掩码描述符的匹配算法的研究
Linux单线程并发服务器探索
物联网技术在微控制器实验教学中的应用
利用CNN的无人机遥感影像特征描述符学习
基于太阳影子定位枚举法模型的研究
Atmel针对新一代物联网应用发布全新32位微控制器
最新STM32设计工具增加对混合信号微控制器的支持