查看: 16128
回复: 13
USB单片机CH559模拟U盘应用实例
WCHCN
37
主题
241
回复
发表于2017-05-05 09:18:18 | 只看该作者
1# 电梯直达


一、摘要

根据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盘等。

七、源码

CH558CH559模拟USB1.1 全速U盘的源码(C语言):

CH559模拟U盘.rar 

CH563模拟USB2.0高速U盘的源码(C语言):

CH563模拟U盘.rar 


①低功耗、高性价比蓝牙M0单片机CH577 ②超高性价比USB单片机CH552 ③免编程,串口扩展以太网芯片CH9120 ④免编程,串口转蓝牙芯片CH9141
WCHCN
37
主题
241
回复
发表于2017-05-05 09:23:01   |  只看该作者
2#
有什么问题大家可以一起交流
①低功耗、高性价比蓝牙M0单片机CH577 ②超高性价比USB单片机CH552 ③免编程,串口扩展以太网芯片CH9120 ④免编程,串口转蓝牙芯片CH9141
chaplin
1
主题
33
回复
发表于2017-05-05 11:26:25   |  只看该作者
3#
ch559t 价格太高了!100的量也得7块多。不如上st的arm 也带usb,调试仿真更方便!
USB接口专家
3
主题
26
回复
发表于2017-05-05 15:58:13   |  只看该作者
4#
chaplin 发表于2017-05-05 11:26:25  3# ch559t价格太高了!100的量也得7块多。不如上st的arm也带usb,调试仿真更方便!
我买的CH559T的价格6.5元,批量5元。
WCHCN
37
主题
241
回复
发表于2017-05-05 16:07:37   |  只看该作者
5#
chaplin 发表于2017-05-05 11:26:25  3# ch559t价格太高了!100的量也得7块多。不如上st的arm也带usb,调试仿真更方便!

主要还是看应用需求,带USB HOST的沁恒除了CH559之外还有CH554,

CH554带USB HOST/DEVICE,Touchkey,批量含税价格才2.4左右CH554DS1.PDF 

USB DEVICE的CH552,批量含税价格才1.4左右CH552DS1.PDF 

 

①低功耗、高性价比蓝牙M0单片机CH577 ②超高性价比USB单片机CH552 ③免编程,串口扩展以太网芯片CH9120 ④免编程,串口转蓝牙芯片CH9141
chaplin
1
主题
33
回复
发表于2017-05-06 12:46:58   |  只看该作者
6#
WCHCN 发表于2017-05-05 16:07:37  5# 主要还是看应用需求,带USBHOST的沁恒除了CH559之外还有CH554,CH554带USBHOST/DEVICE,T...
不错,CH552T 20脚的不错批量什么价啊。
WCHCN
37
主题
241
回复
发表于2017-08-03 09:59:08   |  只看该作者
8#
chaplin 发表于2017-05-06 12:46:58  6# 不错,CH552T20脚的不错批量什么价啊。

价格在这里

http://www.szlcsc.com/so/search/global.html&global_search_keyword=CH552&global_current_catalog=&search_type=

①低功耗、高性价比蓝牙M0单片机CH577 ②超高性价比USB单片机CH552 ③免编程,串口扩展以太网芯片CH9120 ④免编程,串口转蓝牙芯片CH9141
王羊习习
1
主题
9
回复
发表于2018-04-25 23:16:46   |  只看该作者
9#
想问下这个代码在ch554上可以用么
WCHCN
37
主题
241
回复
发表于2018-04-26 08:33:54   |  只看该作者
10#
王羊习习 发表于2018-04-25 23:16:46  9# 想问下这个代码在ch554上可以用么
CH559的代码在CH554上不能直接使用,需要修改一些东西,移植比较方便
①低功耗、高性价比蓝牙M0单片机CH577 ②超高性价比USB单片机CH552 ③免编程,串口扩展以太网芯片CH9120 ④免编程,串口转蓝牙芯片CH9141
JacksonQiu
0
主题
2
回复
发表于2018-05-09 16:59:06   |  只看该作者
11#
WCH官方做些方案验证板在嘉立创卖。
一个相当小兵的小兵~
WCHCN
37
主题
241
回复
发表于2018-05-09 17:35:10   |  只看该作者
12#
JacksonQiu 发表于2018-05-09 16:59:06  11# WCH官方做些方案验证板在嘉立创卖。
谢谢!可以考虑。
①低功耗、高性价比蓝牙M0单片机CH577 ②超高性价比USB单片机CH552 ③免编程,串口扩展以太网芯片CH9120 ④免编程,串口转蓝牙芯片CH9141
我芯永恒
8
主题
18
回复
发表于2019-08-27 15:44:56   |  只看该作者
13#
怎么早没看到,请问有CH559操作键鼠的例程嘛,想学习折腾下
WCHCN
37
主题
241
回复
发表于2019-08-27 16:10:17   |  只看该作者
14#

如果需要其他USB实用例程参考代码的可以移步例程贴,地址:http://club.szlcsc.com/article/details_9799_1.html

 

①低功耗、高性价比蓝牙M0单片机CH577 ②超高性价比USB单片机CH552 ③免编程,串口扩展以太网芯片CH9120 ④免编程,串口转蓝牙芯片CH9141

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部