1 引言
随着移动存储业的发展及数码产品的普及,数据采集系统、工控行业和嵌入式用户对移动存储的需求越来越大,也对数据移动存储盘提出了更高的应用要求,包括到地矿数据采集行业用户、水文系统数据采集行业用户、仪器仪表制造行业用户、铁路、长途汽运等交通系统数据采集用户、油田数据采集系统用户、单板系统的软件升级用户、纺织系统数据采集用户、银行等。但由于之前多数数据采集设备、工控机及嵌入式系统不具备usb数据输入输出标准接口,所以在usb数据存储方面一直得不到很好的普及。业界和用户的需求使得嵌入式usb主机的研究成为usb研究领域的一个新的方向。
本文介绍了一种基于ttl串口的usb主机系统,通过ttl串口(或并口)转接出usb接口,系统原理图如图1所示。嵌入式设备需要通过ttl串口,按照usb主机系统的串口通信协议与usb主机系统进行数据传输和通信,主机系统负责优盘的检测和数据的存储。本文详细介绍了该系统的设计思路,并给出了硬件设计和usb 主机的底层驱动软件的设计方法。
2 usb主机工作原理
对于我们设计嵌入式usb主机,可以参照pc上的usb主机。对于pc上的usb主机,其硬件方面由一个usb主机接口芯片控制,这个接口芯片在通过pci总线与pc机通讯,其余还有电源管理部分;软件方面主要有三部分:usb接口驱动程序,负责cpu与usb主机接口芯片的通讯,负责底层usb包的接收和发送;usb协议栈驱动程序,负责解析设备驱动程序对usb的各种操作命令,并在解码后发给底层驱动程序;设备驱动程序,也就是上层的应用程序,包括操作系统提供给用户的api,以及用户自定义的对usb设备的操作,比如发送设备特有的usb命令请求。pc上的usb主机端软件结构图如图2所示。
3 系统结构
整个系统的核心芯片选用motorola公司的dsp56f803和tdi公司的usb host控制器uhc124。整个系统由dsp56f803模块、uhc124模块、uart串口模块。
3.1 dsp56f803模块
系统的核心控制器,包括基本硬件和编写的固件。实现的功能包括:实现与uhc124的物理连接和通讯,并且配置uhc124的控制寄存器;配置usb外设,实现usb通信,实现usb host要求的各项配置和数据传输的要求,接受usb host的命令来管理usb外设;实现fat16文件系统。
3.2 uhc124模块
usb host控制器的硬件部分。实现usb host的接口,配置下行usb设备,管理usb总线电源。实现的功能包括:实现各种usb host动作,协调内容各项功能,与外围主控制器通讯;存放传输的usb数据,设置usb传输特性;与作为主控制器的dsp56f803接口连接;管理usb电源,连接下行usb设备,总共带有4个下行usb设备端口。
3.3 uart串口模块
与用户通过串口进行协议通讯的固件部分。实现自定义的串口通讯协议,即根据自定义的串口通讯协议,解析串口通讯数据包,调用相应的文件操作接口函数,实现客户的文件操作命令。
4 硬件设计
4.1 硬件架构
硬件主要模块包括usb host、主控芯片、外部sram、译码指示和电源部分。主控芯片和usb host芯片连接,控制usb host芯片与移动存储盘通讯。考虑到需要给用户预留数据buffer,所以外扩sram。因为芯片工作电源不同,所以要提供两组直流电源,译码指示电路采用3个led指示灯,一个电源指示,一个指示移动存储盘的接入,另一个指示了工控机与移动存储盘通讯工作中。
4.2 usb主控芯片的选型
对于主控芯片的选型应该会有多种选择,只要带有uart接口,程序存储空间足够,程序的执行效率可以满足系统的功能需求即可。对于usb主控芯片,目前市面上出现的主要有3种:sypress公司的sl811、philips公司的isp1161和tdi公司的uhc124。其中,sl811较为常见,笔者也曾用过此芯片进行过第一代产品的开发,综合各方面的选型因素考虑,第二代产品选用了uhc124。
uhc124与其他两款芯片的主优势在于:支持包传送,最多可一次性传送16个usb 协议交互数据,而不会向cpu产生中断,而sl811是每次都会产生中断,大大占用了cpu的资源;支持所有的usb传输类型,包括控制传输、榇?洹⒅卸洗?浜屯?酱?洌?沂?莅?畲罂纱锏?023字节;具有2k的数据存储区。
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);
uchar 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主机为核心的数据采集系统,可以在工业和民用两个领域得到广泛的应用,可以带来可观的经济效益和市场前景。
SSI组合逻辑电路的实验分析
N32G430测评报告作品集锦
飞蝶VR王总对VR教育市场的看法
手机Windows mobile系列操作系统
都是用加速度传感器检测倾斜角,双轴比单轴器件强在哪儿?
基于DSP56f803和UHC124芯片实现嵌入式USB主机的应用方案
吉利旗下首款MPV车型,真是美到没“朋友”
度小满杨青:业界在探索大模型应用时存在一定误区
欧瑞博柔光智控无主灯上市,次世代家居照明之选
什么是跨链项目Cosmos
DEI ARINC 429线路驱动器应用领域
聚焦主动营销场景更像人的智能电销机器人长什么样
仪表放大器和普通放大器的区别
荣耀小K2儿童手表高清图赏
SEC主席表示将会通过加密货币和区块链投资来提高股票市值公司的监管
二次回路标号
【新专利介绍】一种单法兰电容式液位变送器
共青团移动通信集团召开大会,鼓励员工,坚持理想、创新、苦干、奋斗
变频器的谐波危害及解决措施
电子芯闻早报:传大基金有意收购Siltronic 小米5c短暂现身