打印
[USB编程]

USB单片机CH559模拟U盘应用源码

[复制链接]
2446|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WCHCN|  楼主 | 2017-5-5 09:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 WCHCN 于 2017-5-5 09:42 编辑


一、摘要

根据Mass Storage Class(大容量/海量存储器,以下简称MSC)协议,使用CH558、CH559和CH563分别实现模拟全速和高速U盘的功能,外部存储介质和U盘容量支持自由调整,用以解决数据转存或者定制U盘等功能。关键在于CH5XX USB设备控制器操作、Bulk-Only传输协议、SCSI命令支持和存储介质读写这几个部分。
二、总体概述
模拟U盘关键功能部件包括以下几点:

(1)、USB Mass Storage Framework
(2)、以U盘为例,下图是PC和U盘的内部抽象逻辑框图
CH558、CH559和CH563内置USB设备控制器和PHY,对于实现U盘控制器的应用,只需要配置USB设备模式和读写外部存储介质。
(3)、USB MSC CBI/BBB Transport
USB MSC Control/Bulk/Interrupt Transport 只能用于Full-speed的软盘(Floppy drive),这里不赘述,有兴趣可以自己百度。
Bulk-only传输类控制、批量都是通过批量端点,即用Bulk端点来传送命令块,数据,状态,因此,才类似于Control/Bulk/Interrupt被简称为CBI一样,而Bulk/Bulk/Bulk被简称为BBB。

(4)、USB MSC Protocol relation
传输通讯:Host和Device之间的数据通讯根据存储介质(Floppy或Flash)分别使用UFI和SCSI协议,更深入的设备特性配置参考More Feature。
(5)、U盘配置描述符Class,Subclass和Protocol对应关系
对应的,了解USB的都知道,每个设备的描述符中,都有对应下面这几个域:

bInterfaceClass 、 bInterfaceSubClass 、 bInterfaceProtocol
分别对应着USB的Class,Subclass,Protocol。
而对于我们此处的U盘:

bInterfaceClass=0x08=Mass Storage,Class就是USB Mass Storage Class,

bInterfaceSubClass=0x06=SCSI Transparent,Subclass,所支持的列表如下:
SubClass Codes Mapped to Command Block Specifications
bInterfaceProtocol=0x50=Bulk Only Transport,Protocol,所支持的列表如下:
Mass Storage Transport Protocol
(6)、MSC使用的SCSI命令集


0x00        TestUnitReady               0x03        RequestSense

0x12        Inquiry                     0x1A        ModeSense6
0x1B        StartStop                   0x1E        MediumRemoval

0x23        ReadFormatCapacity          0x25        ReadCapacity

0x28        Read(10)                    0x2A        Write(10)

0x2F        Verify                      0x5A        ModeSense10
SCSI命令使用各位可以阅读代码,或者去USB-IF搜索SCSI协议,实际上U盘所使用的所有SCSI命令集都可以参考UFI文档,它比SCSI标准文档更简洁明了。
(7)、Bulk-Only传输协议
详细的规范请阅读《Universal Serial BusMass Storage ClassBulk-Only Transport》)

设备插入到USB 后,USB 即对设备进行搜索,并要求设备提供相应的描述符。在USBHost 得到上述描述符后,即完成了设备的配置,识别出为Bulk-Only 的Mass Storage 设备, 然后即进入Bulk-Only 传输方式。在此方式下,USB 与设备间的所有数据均通过Bulk-In和Bulk-Out 来进行传输,不再通过控制端点传输任何数据。
在这种传输方式下,有三种类型的数据在USB 和设备之间传送,CBW、CSW 和普通数据。
CBW(Command Block Wrapper,即命令块包)是从USB Host 发送到设备的命令,命令格式遵从接口中的bInterfaceSubClass 所指定的命令块,这里为SCSI 传输命令集。USB设备需要将SCSI 命令从CBW 中提取出来,执行相应的命令,完成以后,向Host 发出反映 当前命令执行状态的CSW(Command Status Wrapper),Host 根据CSW 来决定是否继续发 送下一个CBW 或是数据。Host 要求USB 设备执行的命令可能为发送数据,则此时需要将 特定数据传送出去,完毕后发出CSW,以使Host 进行下一步的操作。USB 设备所执行的操作可用下图描述
CBW和CSW命令包格式在程序里面有或者参看Bulk-Only协议。
三、硬件设计
        CH558、CH559模拟U盘使用的SPI接口的串行Flash,硬件如下图:
CH558,CH559是增强型51内核的全速(12Mbps)USB单片机,内置晶振,芯片外围也足够简洁。CH563是32位高速USB MCU,内置网络PHY和协议栈。
芯片资源如下图:



四、软件设计
软件主要包括以下方面:
(1)、USB设备模式初始化


(2)、存储芯片接口初始化

(3)Bulk_Only传输
CBW包:

CSW包:

五、可拓展功能
(1)、其他存储介质:除了以上提到的SPI接口的串行Flash,也可以替换成EEPROM或者Nand falsh等非掉电易失存储介质。
(2)、数据来源可以随意指定,比如串口数据流,并口数据流,甚至其他温湿度传感器设备等。
(3)、CH559+SPI串行Flash模拟U盘测试参数


测试系统,功能
复制
粘贴
创建
格式化
XP
WIN7
WIN10
安卓

六、应用场合
应用的典型场合,比如:
(1)、代替光盘为客户提供说明书,可以将说明资料直接放到板子的存储介质内。
(2)、U盘数据监控、截取和加密。
(3)、采集数据数据暂存,方便拷贝到主机。
(4)、定制U盘等。

七、源码
CH558、CH559模拟USB1.1 全速U盘的源码(C语言):
CH559模拟U盘.rar (158.24 KB)
CH563模拟USB2.0高速U盘的源码(C语言):
CH563模拟U盘.rar (345.07 KB)


相关帖子

沙发
阳光下的泡馍| | 2017-5-5 09:38 | 只看该作者
观摩一下大侠的风采

使用特权

评论回复
板凳
WCHCN|  楼主 | 2017-5-5 09:41 | 只看该作者

从word复制过来的,字体有点问题

使用特权

评论回复
地板
阳光下的泡馍| | 2017-5-5 09:42 | 只看该作者
可以可以,这近也在研究这个东西,想把SD卡移植到FPGA上面来

使用特权

评论回复
5
WCHCN|  楼主 | 2017-5-5 09:45 | 只看该作者
阳光下的泡馍 发表于 2017-5-5 09:42
可以可以,这近也在研究这个东西,想把SD卡移植到FPGA上面来

FPGA操作SD卡?怕麻烦的话还是用个如CH376这种芯片吧,省时省力,自己搞文件系统有点麻烦

使用特权

评论回复
6
阳光下的泡馍| | 2017-5-5 09:47 | 只看该作者
嗯嗯,现在就是用软核移植文件系统,有点凌乱

使用特权

评论回复
7
中环仪表| | 2017-5-5 10:07 | 只看该作者
  我可以借鉴 了~~~

使用特权

评论回复
8
lzm2008| | 2017-5-5 14:39 | 只看该作者
有上文件系統的例子么?

使用特权

评论回复
9
WCHCN|  楼主 | 2017-5-5 15:51 | 只看该作者
lzm2008 发表于 2017-5-5 14:39
有上文件系統的例子么?

上文件系统?  读写U盘和SD卡的时候都提供了文件系统,未提供文件系统源码

使用特权

评论回复
10
东撒撒| | 2017-5-6 09:20 | 只看该作者
赞一个

使用特权

评论回复
11
hangc| | 2017-5-31 16:53 | 只看该作者
我用CH554 demo 板开发的,U盘插上提示格式化,但无法完成格式化,求解答!

使用特权

评论回复
12
WCHCN|  楼主 | 2017-5-31 16:57 | 只看该作者
hangc 发表于 2017-5-31 16:53
我用CH554 demo 板开发的,U盘插上提示格式化,但无法完成格式化,求解答!

加QQ2542195643看一下问题

使用特权

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

本版积分规则

个人签名:WCH单价1.3元的USB和Touchkey单片机CH552G已全面供货,试样QQ:1258305301

22

主题

473

帖子

31

粉丝