4.3主控芯片与USB HOST相连的接口电路 UHC124支持两种存储器访问模式,取决于MODE引脚的电平高低。如果主控芯片没有外部总线,需
采用模式0;如果主控芯片有独立或复用的数据地址总线,采用模式1。本方案所选的主控芯片DSP56f803
具有独立的地址数据总线,因此采用UHC124的工作模式1。接口电路如下图4所示:
5.软件设计
USB 主机软件的设计我们可以参照PC的USB 主机来设计。本方案的简要软件流程图如图5所示。
5.1 USB接口驱动程序
主要实现主控芯片DSP56f803与USB主机接口芯片UHC124的通讯,以及底层USB包的接收和发送,
是实现整个USB体系的基础。包括如下几个函数:
void ReadLengthFromHost(UCHAR ucaddr,UCHAR uclength,UCHAR *pucdata);
void WriteLengthToHost(UCHAR *pucdata,UCHAR uclength,UCHAR ucaddr);
UCHAR OutBulkData(ULONG ullength,UCHAR *pucptr);
UCH
AR InBulkData(ULONG ullength,UCHAR *pucptr);
5.2 USB协议栈驱动程序
主要实现USB协议定义的标准命令请求,主要包括:
ClearFeature(),GetConfiguration(),GetDescriptor(),GetInmterface(),GetStatus(),SetAddress(),SetConfiguration(),SetDescriptor(),SetFeature(),SetInterface()。
具体的标准设备请求的含义请参考USB 标准协议。USB 主机要在检测到有USB设备插入时,完成对USB设备的枚举,之后USB主机和USB设备才可以进入正常的数据包通讯状态。
5.3 USB设备类驱动程序
移动存储盘属于USB协议所定义的设备类中的Mass storage类,USB 组织定义了海量存储设备类(Mass Storage Class)的规范,这个类规范包括四个独立的子类规范,即:
1. USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport
2. USBMass Storage Class Bulk-Only Transport
3. USB MassStorage Class ATA Command Block
4.USB Mass Storage Class UFI Command Specification。
前两个子规范定义了数据/命令/状态在USB 上的传输方法。Bulk- Only 传输规范仅仅使用Bulk 端点传送数据/命令/状态,CBI 传输规范则使用Control/Bulk/Interrupt三种类型的端点进行数据/命令/状态传送。后两个子规范则定义了存储介质的操作命令。ATA 命令规范用于硬盘,UFI 命令规范是针对USB 移动存储。因此USB主机需要遵循Mass Storage 协议来组织数据和发送命令,即可实现与移动存储盘交换数据。
6.结束语
嵌入式USB主机的开发,目前在国外也处于刚刚起步的阶段,可以提供的USB HOST接口芯片的并不多。作为USB总线研究的另一热点,嵌入式USB HOST的研究具有一定的先进性和前瞻性。以嵌入式USB 主机为核心的数据采集系统,可以在工业和民用两个领域得到广泛的应用,可以带来可观的经济效益和市场前景。