nRF24L01模块在PCB布线时采用双面板,底层全部铺地,顶层放置元器件,所有电容电阻电感采用0402封装电容电感电阻尽量靠近芯片引脚,顶层也需大面积铺地,在顶层和底层放置大量的通孔。该模块供电电压为3.3V,SPI接口可以直接与5V的MCU的IO口相连接,无SPI接口的MCU可以用IO口模拟SPI时序,使用方便。
2.2 USB控制芯片PDIUSBDl2原理图
PDIUSBD12是一款性价高的USB控制芯片,它与MCU配合使用,这使得设计者可以灵活地选择MCU,它与MCU之间通过并行接口通信,还支持本地DMA传输。图5是PDIUSBD12与STC89C58RD+单片机连接的原理图。
上图未画出STC89C58RD+单片机,只给出了网点名称,如P00-P07、P27、ALE、INTl、WR、RD,STC89C58RD+与标准的80C51(如AT89S51)引脚完全兼容,PDIUSBD12与MCU的连接有2种方式:总线方式和分开的地址数据方式。采用总线方式时引脚10的ALE连接MCU的ALE,引脚28的A0接到高电平;采用分开的地址数据方式,则ALE连接低电平,A0连接任意的IO口,数据或地址(命令)由A0来区分。图5采用总线方式。另外该无线USB控制器直接使用USB接口供电,省去了电源,降低了成本。
3 系统的软件部分
3.1 USB的固件与PC端应用软件设计
当USB设备连接到主机后,主机要先进行一系列的枚举过程,枚举就是从USB设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。枚举过程使用控制传输,对于USB设备来说,固件所要处理的是必须对主机发来的标准设备请求进行相应的正确的响应,除此之外依据USB设备的类型还要响应主机发来的USB设备类请求。另外如果开发属于生产商自定义的USB设备类,则需要开发驱动程序。为了减少开发驱动程序的复杂性,可根据实际情况使用USB标准设备类,现有的设备类有以下几种:音频设备类、通信设备类、HID设备类、显示设备类、海量存储设备类、电源设备类、打印设备类、集线器设备类等,例如可选择做成assStorage类(海量存储设备类)或HID(人机接口)设备类,这样无需开发驱动程序,直接利用操作系统自带的驱动程序。本系统模拟成一个海量存储设备类,这样在枚举过程中固件除了要响应了标准的USB设备请求外,还需要响应2个类特殊请求:GetMaxLun和BulkOnlyMassStorageReset,正确枚举之后PC机通过发送SCSI命令来控制U盘设备,对于海量存储设备类要响应以下几个命令:INQUIRY、READCAPACITY、READ(10)、WRITE(10)、REQUEST SENSE、TEST UNIT READY等,除此外要自定义私有的SCSI命令,以实现控制无线USB设备。另外还要构造一个FAT文件系统的格式,要正确返回DBR和FAT文件分配表以及文件数据。