本帖最后由 946098169 于 2017-2-18 16:19 编辑
虽然现在成品U盘的成本已经非常低,但是单片机系统中模拟U盘还是有些场景会应用到,比如:①代替传统光盘,为用户提供说明书、驱动软件等(直接存储在产品中) ②U盘数据监控、截取和加密等(定制U盘) ③采集数据暂存,方便传输给主机
下文是根据masstorage和Bulk-Only传输协议,使用CH559实现模拟U盘的功能(容量大小由选择的外部存储芯片决定),用以实现数据转存或定制U盘功能。关键点在于USB设备模式初始化、扇区读写和外部存储芯片的操作。
一、总体概述
模拟U盘关键功能部件包括以下几点:
(1)、具有USB设备功能的MCU或接口芯片,此例中CH559有2个USB主机接口和1个USB设备接口。
(2)、根据实际需要或者接口选择合适的外部存储来作为U盘的存储空间,比如SPI的串行Flash、E2PROM,甚至是Nand Flash等。
以上准备完毕整体的操作流程如下所示:
二、硬件电路
CH559模拟U盘使用的SPI接口的串行Flash,硬件如下图:
CH559是增强型51内核的单片机,内置晶振,所以芯片外围也足够简洁。
芯片资源如下图:
三、软件编写
软件主要包括以下方面:
(1)、USB设备模式初始化
(2)、存储芯片接口初始化
(3)Bulk_Only传输
CBW包:
CSW包:
四、可拓展功能
(1)、其他存储介质:除了以上提到的SPI接口的串行Flash,也可以替换成E2PROM或者Nand falsh等。
(2)、数据来源可以随意指定,比如串口数据流,并口数据流,甚至其他温湿度传感器设备等。
(3)、CH559+SPI串行Flash模拟U盘测试参数
五、源码分享
CH559模拟U盘的源代码(C语言):
559模拟U盘源码.rar
(158.44 KB)
CH563模拟U盘的源代码(C语言):
CH563模拟U盘源码.rar
(345.66 KB)
|