基于CH375A控制芯片实现USB双模式接口的设计

网友投稿 349 2022-11-01

基于CH375A控制芯片实现USB双模式接口的设计

1 设计背景

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所示。

在传统的数据通信应用中由于设备功能单一,固定地将接口设定为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所示。

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

3.2软件设计

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

CheckExist(); //测试CH375A工作状态;

SetUSBMode(USB MODE5); //设置CH375A工作于Host模式;

GetUSBStatus(); //初始化中断状态;

USB_DISK_INIT(); //初始化USB设备;

USB_DISK_INQUIRY() //查询USB存储设备的特性

GetUSBDiskSize(); //获取设备容量;

。..

WriteUSBData(int8 x); //向设备写入数据;

。..

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

USB_Reset_ALL(): //设备复位;

CheckExist(); 测试CH375A工作状态;

SetUSBMode(USB_MODE2); //设置CH375A工作于内部固件Device模式;

GetUSBStatus(); //初始化中断状态:

USB Open Device(); //通信之前必须先打开设备:

USB_GetFirmwareInfo(); //获取调试固件程序版本,并取消未完成的上传数据块

。..

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

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

SetUSBMode(USB_MODE0); //设置CH375A为未启用设备模式;

Delay(1000): //延时

SetUSBMode(USB_MODEn);//设置CH375A为目标模式;

。..。

4 结束语

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【云原生 | Devops篇】深入Devops(一)
下一篇:Java+Swing实现中国象棋游戏
相关文章

 发表评论

暂时没有评论,来抢沙发吧~