打印
[USB编程]

基于USB单片机CH559模拟U盘的源代码分享

[复制链接]
1986|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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)







相关帖子

沙发
骑猪看夕阳| | 2017-2-27 14:42 | 只看该作者
存说明书、驱动等还是挺方便的

使用特权

评论回复
板凳
WCHCN| | 2017-3-7 11:00 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

102

帖子

1

粉丝