如何轻松解决单片机读写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,需加延时)
|