嵌入式系统中双模式复用USB接口设计

发布时间:2010-3-22 15:58    发布者:李宽
关键词: USB接口 , 复用 , 模式 , 嵌入式 , 系统
1 设计背景
随着嵌入式处理器设计功耗的降低,越来越多的设备朝着小型化和集成化发展,而外形的精简和功能的增加对外围接口功能的兼容性和通用性提出了新的要求,如何在有限的空间内通过最少的外围接口实现最多的功能是嵌入式系统设计面临的新课题之一。与研发新的通信协议相比,充分利用现有接U的多种通信模式更具有现实意义。本文提出一种针对USB接口工作模式复用的设计思路和实现方法。

2 双模式接口的设计原理

通用串行总线(USB)接LJ是当前应用领域最为广泛的接口之一,主要优点是速度快、功耗低,支持热插拔和具有良好的兼容性。根据USB通信协议的设计,USB接口支持双向通信,但只能有一个主控端对通信过程进行控制,因此USB设备存在两种工作模式:USB.Host模式和USB.Device模式。

工作于USB—Host模式的设备包含USB主控器,并且能够控制完成主机和USB设备之间的数据传输,USB系统的数据和命令的传输都是由USB—Host设备来启动的,常见的有计算机以及其他具有USB主控芯片的设备。而工作于USB-Device模式的设备则可分为USB集线器和USB功能设备两种。常见的u盘、MP3和移动硬盘都是USB功能设备。每个USB功能设备内部都包含有描述其功能和资源需求的配置信息,USB.Host设备必须在使用前对其进行配置。两种模式的通信交互模式如图1所示。

1.gif

在传统的数据通信应用中由于设备功能单一,固定地将接口设定为Host或者Device能够满足实际需求,但在嵌入式系统的应用中往往会出现既需要访问USB设备,又需要和计算机进行通信的情况,这就需要在同一个接口上实现Host和Device两种工作模式。

3 双工作模式的设计实现

3.1硬件设计

设计选用同时支持USB.Host和USB.Device模式的CH375A作为接口控制芯片,该芯片具有8位双向数据总线和完整的读写、片选控制信号,具有全速USB—Host主机接口,支持动态切换主机与设备方式,兼容USB2.0协议。

在USB.HostI作模式下,CH375A提供了串行通信方式,通过串行输入、输出和中断输出与嵌入式主控芯片相连;在USB.DeviceT作模式下,CH375A内置了USB通信中的底层协议,可以采用方便的内置固件模式,也可以采用灵活的外置固件模式,完全满足设计需求。

由于物理接口是复用的,连接时采用并行数据接口与主控芯片通信。两种模式不能同时工作,而接口不能自动识别接入设备的工作模式,因此主从设备识别需要由嵌入式主控芯片根据外部输入来识别。硬件连接图如图2所示。

2.gif

一图中输入输出接口符号均为CH375A与主控芯片互连的信号,为增强USB信号强度,设计电路时对差分信号采用等长走线,并串接共模电感以减小串扰。

3.2软件设计

设备上电时默认处于”未启用的USB设备”方式,需要主控芯片根据外部输入指定新的工作模式。当设备工作于USB.Host模式时,需要主动地对接入的设备进行检测和初始化,具体流程如图3所示。

3.gif

程序采用查询方式检测设备接入,检测到设备的存在后首先获取设备中断状态并清空中断请求,初始化设备并查询该设备的存储特性,最后获取设备容量信息并对设备进行读写操作。部分功能函数代码如下:

CheckExist(); //测试CH375A工作状态;
SetUSBMode(USB MODE5); //设置CH375A工作于Host模式;
GetUSBStatus(); //初始化中断状态;
USB_DISK_INIT(); //初始化USB设备;
USB_DISK_INQUIRY()  //查询USB存储设备的特性
GetUSBDiskSize(); //获取设备容量;
...
WriteUSBCmd(int8 x);  //向设备写入命令;
WriteUSBData(int8 x);  //向设备写入数据;
...

当设备工作于USB.Device模式时,设备本身就成为一个需要主机控制的USB设备,在接入上位机后流程如图4所示。

4.gif

此时设备与上位机的通信方式采用请求加应答方式,由上位机主动请求数据,设备被动地应答上传数据。部分功能函数代码如下:

USB_Reset_ALL(): //设备复位;
CheckExist(); 测试CH375A工作状态;
SetUSBMode(USB_MODE2); //设置CH375A工作于内部固件Device模式;
GetUSBStatus(); //初始化中断状态:
USB Open Device(); //通信之前必须先打开设备:
USB_GetFirmwareInfo();  //获取调试固件程序版本,并取消未完成的上传数据块
...

当设备需要在Host模式和Device模式中进行切换时,由主控芯片接受外部输入的模式切换信号,然后向CH375A发送模式转换命令,流程如图5所示。

5.gif

在不同模式之间切换,首先要切换至“未启用的USB设备”模式,即上电复位后的默认模式。在经过一定的延时之后,再切换到所需的工作模式,如考虑进一步确保系统的稳定性还可在延时之前加入复位命令。具体功能函数如下:

SetUSBMode(USB_MODE0); //设置CH375A为未启用设备模式;
Delay(1000): //延时
SetUSBMode(USB_MODEn);//设置CH375A为目标模式;
....

4 结束语

实践证明,按照程序所规定的流程对USB接口进行配置在调试板上工作正常,在两个模式切换的过程中没有产生任何错误。由于芯片限制,此系统目前只能工作在USB1.1模式下,如何进一步提高两种工作模式下的数据传输速率将是下一步研究的重点。

参考文献

[1]南京沁恒电子有限公司.USB总线接口芯片CH375中文手册 2005[EB/0L].http://www.winchiphead.eom/download/CH375/
CH375DS1.pdf
[2]薛园园.USB应用开发技术大全[M].北京:人民邮电出版社,2007.
[3]张蕾,杨洁,许力.基于ARM的CH375读写u盘的接口设计与实现[J].电工技术,2008(8):44-45,50.
[4]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.
[5]王殊,程卓.基于CH375的嵌入式I JS:B文件加密系统的设计[J].电子技术应用,2007,33(8):163—166.

作者简介:
熊雪晖(1984-),男,61938部队,助理工程师,研究方向:嵌入式系统设计与数据安全。联系地址:北京市海淀区半壁街南路2号,中国人民解放军61938部队数据备份室(100089)

来源:电子技术2009,36(11)
本文地址:https://www.eechina.com/thread-9714-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表