如何轻松解决单片机读写U盘模块的选型
关键词:USB读写模块 U盘  SPI  UART
       最近项目中,使用的数据存储设备:USB118AD模块。主要功能是将数据通过单片机直接存储于U盘上,使数据随身携带。
看到有网友关于此款模块的讨论,我也想就我的经历说点什么。
在网上查找搜索此方面的模块,发现西安达泰电子的U盘读写模块USB118AD颇受青睐;同时也有别的厂家的模块价格相对较低。基于成本和性能的考虑,同时购买两公司产品进行比较。下列出笔者的测试结果供大家参考。
表1 USB118AD与另一款产品性能比较
| 
             比较项目 
             | 
            
             USB118AD 
             | 
            
             另一款 
             | 
        
| 
             使用单片机 
             | 
            
             ARM7系列的LPC2468 
             | 
            
             自产芯片 
             | 
        
| 
             PCB板厚 
             | 
            
             1.2mm 
             | 
            
             1.0mm 
             | 
        
| 
             尺寸 
             | 
            
             51.6mm*43mm 
             | 
            
             31mm*36mm 
             | 
        
| 
             等级 
             | 
            
             工业 
             | 
            
             民用 
             | 
        
| 
             元器件 
             | 
            
             双面布件 
             | 
            
             单面布件 
             | 
        
| 
             技术资料 
             | 
            
             提供完整的测试例程 
            (ASM和C) 
             | 
            
             单功能测试程序 
            (C) 
             | 
        
| 
             UART波特率 
             | 
            
             9600/57600/115200bps 
             | 
            
             2400/4800/9600 
             | 
        
| 
             SPI速度 
             | 
            
             最大150kB/s(2Mbps) 
             | 
            
             最大10KB/s 
             | 
        
| 
             单次读写数据长度 
             | 
            
             4KB 
             | 
            
             254B(第一个数据无效) 
             | 
        
| 
             指令长度 
             | 
            
             定长 
             | 
            
             变长 
             | 
        
从外观上看:
USB118AD的PCB板制作比较精良,采用的是1.2mm的镀锡PCB板;板子尺寸51.6mm*43mm;单片机采用的是NXP公司生产的LPC2468;同时有4个状态指示灯;提供UART、SPI口及5V供电接口。
另一款产品则采用的是1.0的裸铜PCB板。板子尺寸31mm*36mm;采用资产的芯片,提供UART、SPI口及5V供电接口。虽说PCB板质量稍显差点,但应该也是基于成本考虑,况此公司主要以出售芯片为主,不能算其不足。
其次从串口(UART)进行比较:
USB118AD的串行端口通过跳线选择波特率以及通信模式(UART/SPI):9600/57600/115200/SPI。
另一款产品的串行端口通过外接管脚选择波特率:2400/4800/9600;同时通过另一管脚选择通信模式(UART/SPI)。
USB118AD的串行速度比另一款产品高出许多,同时数据读写几乎不需要延时;而另一款产品每个指令都需要较长的延时,这使笔者程序的时序控制很被动。由于笔者需要的是较快速度的数据读写,故转向SPI的使用,对此也未再做过多的测试,观点如有不足,请指正。
从SPI口进行比较(此结果为笔者实测): 
USB118AD的SPI口可以做到150kB/s,SPI时钟可达2MHz,不同指令间延时不超过1ms;指令数据间不需延时。单次读写数据量可达4kB,
另一款产品的SPI速度可以做到10kB/s,SPI时钟可达100kHz,但指令数据间需要延时,否则会出现数据错误。时钟80kHz时不需延时;不同指令间会产生几十ms的延时。单次读写数据量可达254B。
最后从功能上进行分析:
USB118AD可创建各种文件和文件夹,文件名格式符合DOS规范(8位文件名和3位扩展名)。命令为66字节,应答码为64字节(read和list指令除外)。虽然USB118AD指令和应答码比较长,但指令格式比较统一,方便编程。因读写数据经常会以中断形式出现,较长的指令周期可使系统可靠性增强。同时为产品升级留下空间,能更好的向下兼容。
     另一款产品可创建各种文件,但不能创建文件夹,文件名格式符合DOS规范。命令长度可变,应答码为2字节(read和list指令除外),比较简单。但写数据时,第一个数据无效。
表2 SPI读写速度对照表
| 
             对比项目 
             | 
            
             USB118AD耗时 
             | 
            
             另一款产品耗时 
             | 
        
| 
             存储64kB的文件 
             | 
            
             7.7S(80kbps) 
             | 
            
             10.2S(80kbps) 
             | 
        
| 
             存储64kB的文件(最高速度) 
             | 
            
             840mS(2Mbps) 
             | 
            
             10S(100kbps,需加延时) 
             | 
        

