10436|0

1305

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

【新版CH554评测】--5.1、USB host例程学习及验证--枚举 [复制链接]

本帖最后由 yang_alex 于 2018-5-18 23:00 编辑

       CH554的功能太强了!除了可以做USBDEVICE之外,还可以做USB HOST!所以评估板上有一个标准USB母座了,通过这个USB HOST,可以接入一些简单的USB DEVICE 设备,比如USB键盘、USB鼠标、USB游戏手柄。U盘就算了吧,如果非要用U盘,还是上CH559吧,CH554的小身板扛不起U盘的应用。
      前面说过,在从设备插入主设备(这里主要是PC)时,主从设备之间是有个交互的,主要内容是从设备告诉主设备:我是谁、我需要什么、我能干什么。
      但是不是说从设备一插入主设备就开讲:我是谁、我需要什么、我能干什么。(你以为你是美国啊?)
      我们还是要讲礼貌的:

从设备插入主设备,举手:嗨!打扰一下。
主设备看到了:哦,告诉我你是谁。
从设备:我是XXX。
主设备:哦,这里太吵了,我们换个地方聊,地方在AAA。
主设备来到AAA。
从设备来到AAA。
主设备:这里安静多了,重新介绍一下你自己把()。
从设备:。。。。
主设备:。。。。
。。。。。。

      这个过程我们叫枚举。枚举的详细过程如下:

1)主设备的HUB检测到新的从设备插入
   主设备的HUB监视着每个USB端口的信号电压,当有新的从设备插入时主设备的HUB就可以检测到。(主设备的HUB端口的两根信号线的每一根都有15kΩ的下拉电阻,而每一个从设备在D+都有一个1.5kΩ的上拉电阻。当新的从设备插入主设备或用USB线将主设备和从设备接通后,从设备的上拉电阻使信号线的电位升高,因此被主设备的HUB检测到。)

(2)主设备知道了有新的从设备插入后
   主设备的HUB用中断传输来报告在HUB上的事件。当主设备知道了这个事件,它给HUB发送一个Get_Status请求来了解更多的消息。返回的消息告诉主设备一个新的从设备是什么时候连接的。

(3)主设备的HUB重新设置这个新的从设备
   当主设备知道有一个新的从设备插入时,主设备给HUB发送一个Set_Feature请求,请求HUB来重新设置端口。HUB使得从设备的USB数据线处于重启(RESET)状态至少10ms。

(4)主设备的HUB在从设备和主设备之间建立一个信号通路
   主设备发送一个Get_Status请求来验证从设备是否激起重启状态。返回的数据有一位表示从设备仍然处于重启状态。当HUB释放了重启状态,从设备就处于默认状态了,即从设备已经准备好通过Endpoint 0 的默认流程响应控制传输。即从设备现在使用默认地址0x0与主设备通信。

(5)主设备的HUB检测从设备速度
   主设备的HUB通过测定那根信号线(D+或D-)在空闲时有更高的电压来检测从设备是低速设备还是全速设备。(全速和高速设备D+有上拉电阻,低速设备D-有上拉电阻)。

再接下来,就需要从设备的软件参与了
(6)获取最大数据包长度
   主设备向地址0发送USB协议规定的Get_Device_Descriptor命令,以取得缺省控制管道所支持的最大数据包长度,并在有限的时间内等待从设备的响应,该长度包含在设备描述符的bMaxPacketSize0字段中,其地址偏移量为7,所以这时主设备只需读取该描述符的前8个字节。注意,主设备一次只能枚举一个从设备,所以同一时刻只能有一个从设备使用缺省地址0。
  以下操作雷同,只是不同操作系统设定时延是不一样的。如果从设备没有反应,主设备就再发送一次命令,重复三次。

(7)主设备分配一个新的地址给从设备
    主设备通过发送一个Set_Address请求来分配一个唯一的地址给设备。从设备读取这个请求,返回一个确认,并保存新的地址。从此开始所有通信都使用这个新地址。

(8)主设备向新地址重新发送Get_Device_Descriptor命令
    此次读取从设备的设备描述符的全部字段,以了解该从设备的总体信息,如VID,PID。

(9)主设备向从设备循环发送Get_Device_Configuration命令,要求从设备回答,以读取全部配置信息。

(10)主设备发送Get_Device_String命令,获得从设备的字符集描述(unicode),比如产商、产品描述、型号等等。

(11)根据从设备的Device_Descriptor和Device_Configuration应答,主设备加载从设备的驱动,主设备发送Set_Configuration(x)命令请求为该从设备选择一个合适的配置(x代表非0的配置值)。如果配置成功,从设备进入“配置”状态,并可以和主设备软件进行数据传输。

至此,主从设备之间完成了必须进行的配置和连接工作。后面就可以相互通讯了。


注意(6)(7)(8)步骤,主机先通过地址0获取部分从设备的设备描述符,获取最大数据包长度 ,然后复位总线,通知从设备切换通讯地址,接下来使用新地址获取从设备的完整的设备描述符。





此内容由EEWORLD论坛网友yang_alex原创,如需转载或用于商业用途需征得作者同意并注明出处


此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表