原创 USB Mass Storage 学习笔记(2)

2008-6-26 23:38 9960 9 9 分类: 通信

本文PDF文档下载


了解了USB Mass Storage BOT的规范。接下来学习一下Microchip 单片机实现USB Mass Storage设备的经典Application Notes。


MICROCHIP AN1003 USB Mass storage Device Using a PIC MCU


pdf


本文描述了使用SD卡来设计实现USB Mass storage设备(MSD)。本文对USB Mass storage方案的开发人员会有很大的帮助。这个应用可以作为独立的MSD或一个SD卡读写器。


本设计有下列组件构成:


<!--[if !supportLists]-->     <!--[endif]-->PIC<?xml:namespace prefix = st1 />18F4550 MCU


<!--[if !supportLists]-->     <!--[endif]-->PICDEM FS USB Demo


<!--[if !supportLists]-->     <!--[endif]-->PICtail 板(SDMMC卡)


<!--[if !supportLists]-->     <!--[endif]-->Windows操作系统


<?xml:namespace prefix = o />

 


枚举过程


下面总结了USB设备的枚举步骤而且说明了在枚举过程中设备如何从PoweredDefaultAddressConfigured状态。


<!--[if !supportLists]-->1.       <!--[endif]-->用户将USB设备插入USB口。Hub给端口供电,设备处于Powered状态。


<!--[if !supportLists]-->2.       <!--[endif]-->Hub识别设备。


<!--[if !supportLists]-->3.       <!--[endif]-->Hub通过一个终端PIPE去向Host报告event


<!--[if !supportLists]-->4.       <!--[endif]-->Host 发送 Get_Port_Status 请求获得关于设备更详细的信息。


<!--[if !supportLists]-->5.       <!--[endif]-->Hub识别设备是LowSpeedFullSpeed。并且将Get_Port_Status的响应信息发送给主机。


<!--[if !supportLists]-->6.       <!--[endif]-->主机发送Set_Port_Feature请求,要求Hub去复位端口port


<!--[if !supportLists]-->7.       <!--[endif]-->Hub复位设备。


<!--[if !supportLists]-->8.       <!--[endif]-->主机获悉Full-Speed 设备是否支持High-Speed操作(使用Chirp K信号)。


<!--[if !supportLists]-->9.       <!--[endif]-->主机利用Get_Port_Status判断设备是否已经推出Reset状态。


<!--[if !supportLists]-->10.   <!--[endif]-->此时,设备处于Default状态(设备已经准备好通过缺省PipeEndpoint0响应控制传输,缺省地址是00h。而且设备可以从总线获得最大100mA)。


<!--[if !supportLists]-->11.   <!--[endif]-->主机发送Get_Descriptor 来获得最大封包大小(注意:设备描述符的第八个字节是bMaxPacketSize


<!--[if !supportLists]-->12.   <!--[endif]-->主机通过发送Set_Address 请求为设备分配地址。设备现在处于Address状态。


<!--[if !supportLists]-->13.   <!--[endif]-->主机发送Get_Descriptor来获得设备的更多的信息。


<!--[if !supportLists]-->14.   <!--[endif]-->主机分配并调用一个设备驱动。


<!--[if !supportLists]-->15.   <!--[endif]-->主机的设备驱动通过发送一个Set_Configuration请求来选择一个配置。现在设备处于Configured状态。


<!--[if !supportLists]-->16.   <!--[endif]-->主机为复合设备的接口分配驱动。


<!--[if !supportLists]-->17.   <!--[endif]-->如果hub检测到过流状态,或主机响应hub关闭电源。设备将从USB总线上下电。这时,设备和主机不能通讯而且设备处于Attached状态。


<!--[if !supportLists]-->18.   <!--[endif]-->如果设备在总线上有3ms没有动作。它将进入Suspend状态。此时,设备消耗总线上最小的功耗。


 注:这篇AN里,这部分枚举过程的描述比较经典呀!




控制传输


控制传输允许主机和设备交换关于设备配置和其它控制消息的信息。控制传输是由Setup Stage,可选的Data StageStatus Stage组成。


Standard USB Device Requests”总共有11USB 标志控制传输请求。所有的USB设备都必须响应这些请求(即使仅响应了STALL)。处理标志的请求,每个USB类也会定义本类的设备请求。例如:Mass Storage设备要实现Get_Max_LUN请求来使主机能够知道设备支持的逻辑单元数。


 


Mass Storage


Mass Storage类支持两个传输协议:


<!--[if !supportLists]-->     <!--[endif]-->Bulk-Only 传输(BOT


<!--[if !supportLists]-->     <!--[endif]-->Control/Bulk/Interrupt传输(CBI


Mass Storage类规范定义了两个类规定的请求:Get_Max_LUNMass Storage Reset,所有的Mass Storage类设备都必须支持这两个请求。


Bulk-Only Mass Storage ResetbmRequestType=00100001b and bRequest= 11111111b)用来复位Mass Storage设备及其相关接口。


Get_Max_LUNbmRequestType= 10100001b and bRequest= 11111110b)用来确认设备支持的逻辑单元数。Max LUN的值必须是0~15。注意:LUN是从0开始的。主机不能向不存在的LUN发送CBW


 


支持BOT传输的Mass Storage设备接口描述符要求如下:


bInterfaceClass=08h,表示为Mass Storage设备;


bInterfaceSubClass=06h,表示设备支持SCSI Primary Command-2SPC-2);


bInterfaceProtocol50h,表示实现BOT传输。


 


支持BOT的设备必须支持最少3endpointControl, Bulk-InBulk-OutUSB2.0的规范定义了控制端点0Bulk-In端点用来从设备向主机传送数据。Bulk-Out端点用来从主机向设备传送数据。


 


Bulk-Only传输(BOT


像控制传输一样,BOT也是由Command阶段,可选的数据阶段和状态阶段组成。所有的command请求都可能有或没有Data阶段。下图说明了BOTCommand传输,Data-InData-Out传输及Status传输。

9a0cfb4c-1954-4d6b-b142-fab52a7d561c.JPG


CBW是由31个字节组成的短包。CBW和后续的数据以及CSW都是从新封包开始的。要注意的是所有CBW传输都是little-endian模式。


CBW中,dCBWSignature必须是“43425355h”,表示是CBW封包。dCBWTagCB标签,会通过对应的CSW的标签反馈回来。


 


SD


SD卡是便携设备中最常见的存储媒介。SD卡支持SD总线和SPI总线。PIC18F4550


支持SPI方式读写SD卡。除了电源和地,SPI总线有CSSDISDOSCLK信号组成。SD卡在时钟的上升沿采集输入数据,在时钟的下降沿发送输出数据。在上电后,SD卡缺省处于SD总线模式。因此,初试阶段应该将SD置于SPI模式。可以通过接收CMD0Reset命令)阶段将CS信号置低。不像SD总线模式,在SPI模式下,被选中的SD卡总是响应命令。

待续.......
PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户154709 2009-1-13 17:13

网上日赚200的创业项目招商 项目简介:本人一直在自己操作,纯日收入200元以上,到我写这篇文章为止,已 经有很多嘉宾日收入超过了200元,是纯网络项目,市场前景可观.项 目是可持续发展的,可以拓展,长期有效.公司當天可以结算. 项目难度:操作简单,上手快, 刚学会上网的人也可操作,一天只需操作2~4个小时 项目收益:平均日收入约100元人民币左右,投入时间越多,收入也会增加 . 项目犯圍:项目没有地域限制,只要能上网,在哪里做都一样. 项目声明:非传销,非挂QQ,非挂聊天室,是正规合法收入. 联系QQ:810834132 电话:13107888692 资料网:http://blog.sina.com.cn/gkiss

用户154709 2009-1-13 17:13

2009年小本创业项目,实现你月收入3000的梦想,图 工作介绍:合法公司,可上网查询仩业ICP备案,月薪3000以上,有收款图为证. 工作性质:电子商务,网络办公,销售公司网站按业绩提成. 职业要求: 1.有上网条件(在家里,办公室,网吧等地) 2.每天能有2-4小时上网时间. 3.有网络应用基础(会上论坛发贴子,发电子邮件,与客户QQ咨询等) 工资待遇: 3000元上每月,业绩积累,收入直线上升!做的好月薪上万元.绝对真实,可靠,稳 定,合法! 中创合法性说明:http://www.fjcredit.com (营业执照,税务登记,仩业信息备案,网上ICP备案,一切合法手续齐全) 客服咨询QQ:810834132 (全天在线,欢迎你前来咨询加盟!) 中创官方加盟主页:http://w018.cctvzc.com 中创详细介绍:http://blog.sina.com.cn/gkiss 中创团队学员基地:http://343847454.ys168.com

用户461174 2008-7-18 11:56

谢谢,我最近也在搞

zhaoliang_0801_926809075 2007-12-20 00:00

博主 看来 很忙啊,这也叫博客吗?

看了你的几个文章,都是草草了事,图片简单的文字,

大篇幅的文章都是转载的吧 !

相关推荐阅读
用户1316725 2010-11-18 08:35
轻松绑定工控主板的隐盾系列DOM电子盘
       经过2年多的研发,我公司正式推出隐盾系列DOM电子盘,并成功取得专利。隐盾系列DOM盘,除了支持从128MB~8G的容量外。它的最大特点是能够使DOM盘与工控主板1对1的绑定。目前,很多...
用户1316725 2010-07-01 07:39
《电子技术专业基础与实务》中级 复习资料
职称考试资料不好找呀,共享给大家!个人经验,多看晶体管部分和传感器原理部分,惠更斯电桥,JK/RS触发器,卡诺图等。希望大家都能顺利通过,看资料通过了的XDJM可要记得把本贴顶起来呀! 《电子技术专业...
用户1316725 2009-12-17 11:21
民间统计S3C2410/S3C2440出货情况 强贴大家顶起来吧。
p>今天在测试中发现,LPC2300的RTC时钟断电后,再重新加电,时间不走。网上有很多评论,也有类似的问题。不过,我把程序改了一下就可以了。程序如下(错误的程序):void RTC_Init(...
用户1316725 2009-12-14 09:09
SDIO卡初始化不过的调试笔记
前一段时间去了趟上海. 说是在客户平台上SDIO接口不正常,卡初始化不过.到了现场,先用示波器对各路电源和复位时序进行了检查.都没啥问题.然后,单步跟到发送SD CMD0(Reset)命令,发现卡的状...
用户1316725 2009-10-11 16:43
STM32上应用uCOSII学习笔记(2)
STM32上应用uCOSII学习笔记(2) 本文全文下载 2009.10.814611.pdf STM32F103xx用户手册学习STM32F103xx系列芯片能够做到Pin to Pin,软件和特性...
用户1316725 2009-10-07 09:56
LM3S3748的评估及开发过程之感触
LM3S3748的评估及开发过程之感触 注:本文仅代表本人的评估观点!类似“无责任书评”吧。本文全文下载 最近,有几个设计项目需求都是要求在嵌入式项目中实现USB Device或USB Host功能的...
EE直播间
更多
我要评论
3
9
关闭 站长推荐上一条 /3 下一条