分享

第一章主要硬件芯片介绍

 weikong66 2012-04-18
值(值中对固件有用的是最大包端点长度),然后为设备分配一个操作地址,地址范围可以根据实际情况而定,并且配置设备,最后列举设备端点,获取设备的每一个端点号(地址)。枚举的实质目的就是想获取设备的端点地址,靠它来完成数据包的收发。获取设备属性、分配地址等枚举请求命令都有标准说明(见表1.3)。

SL811HS 芯片必须初始化、复位后才能对设备进行枚举操作,实践表明对SL811HS寄存器初始化的顺序和延迟时间非常关键,会影响到整个系统的稳定性和速度。经测试比较好的初始代码如下:

void S811Init(void)

{  SL811Write(cDATASet,0xe0); //设定SOF计数器低8

    SL811Write(cSOFcnt,0xae);  //设定主机工作模式

    SL811Write(CtrlReg,0x5);   //SOF

Delay(150);               //延时       

    SL811Write(EP0Counter,0);  

    SL811Write(IntEna,0x20);   // 写中断寄存器

    SL811Write(IntStatus,INT_CLEAR);   //清楚中断

}
1.3.2 USB批量传输和海量存储类协议的实现

   USB主机系统实现目的是使用USB移动存储,涉及到大量文件数据的传输,所以应该选择USB批量传输(BULK)。批量传输用BULK端点进行命令、数据和状态的传输[4],其流程结构见图1.8CBW是命令块封装包,CSW是命令状态封状包,都是一系列包的集合。


(1)CBW
CBW的长度为31字节,包含了海量存储类协议的磁盘操作命令,其结构见图1.9。



①dCBWSignature:是CBW的标志,固定值为0x43425355,所有CBW的值在USB总线上传输的时候都是按照LSB顺发送的,即最先发送低位,然后发送高位。
②dCBWTag:由主机产生的并发送给设备,设备会将此值填入CSW的dCSWTag,以此返回给主机。
③dCBWDataTransferLength:主机希望在批量端点上传输数据的大小。
④bmCBWFlag:一个字节的位图,D7=“0”时表示主机输出数据,反之主机接受数据,D6没有用到,D5-D0保留位。
⑤bCBWLUN:接受命令的设备逻辑单元号。
⑥bCBWCBLength:表示了CBWCB的长度,也就是磁盘操作命令的长度。
⑦CBWCB:填入磁盘操作命令。
CBW是以二进制位发送的,每个包必须是精确的31个字节,不满足的要补0。
(2) CSW
CSW的长度为13字节,其结构见图1.10。

①dCSWSignature:是CSW的标志,固定值为0x53425355,CSW的值也都是按LSB顺序发送。
②dCSWTag:命令状态标签,该值与CBW中的dCBWTag值相同。
③dCSWDataResidue:该字段表示dCBWDataTransferLength字段中主机希望的
数据长度与实际发送的数据长度之间的差额。
④bCSWStatus:表示命令执行情况,见表1.4


(3)UFI
UFI是Mass Storage 类的子类,支持海量存储类的USB主机应该实现这些子类命令。UFI子类命令是基于SFF-8070I和SCSI-2的,每个命令块的长度均为12字节,UFI的各种命令及操作码如表3.5。对USB移动存储的所有操作都是经过这

些命令来完成的,UFI命令封装于CBW中的CBWCB块中,CBW传输出去,命令结果的状态保存于CSW,通过读CSW相关结构中的数值,就可以了解命令的最终执行情况。UFI命令是标准的12字节,命令结构见图1.11


其中操作码与表1.5中每一种命令相对应。Lgical Unit NumberLUN),每一个设备上可能有很多个逻辑单元共享着该设备功能特性,设备上的逻辑单元都被连续从0X0-0XFF 进行编号;Logical Block Address (LBA) LBA的值从逻辑块0连续递增到最后一个逻辑块,系统中LBA代表的就是移动存储介质的绝对扇区。注意LUNLBA的字节发送顺序都是MSB,在8位单片机里保持正常顺序即可,CBW结构定义如下:

typedef struct _COMMAND_BLOCK_WRAPPER{

       DWORD  dCBW_Signature;

       DWORD  dCBW_Tag;

       DWORD  dCBW_DataXferLen;

       BYTE   bCBW_Flag;

       BYTE   bCBW_LUN;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多