你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

应用STM32F205 USB host 遇到的疑问(大神请进)

[复制链接]
whwshiyuan 提问时间:2014-10-28 18:44 /
请大神们点化!!!

本人自定义一个HID从设备(端点描述符中指出:中断传输查询间隔为1ms,IN端点最大包大小为0x40,此设备既不是鼠标键盘也不是摇杆,是自定义的),此从设备插上PC后,bushound能够抓到PC每1ms读一次,并能正确读到HID从设备回的数据。
现在我不用PC与此HID从设备相连,想用STM32F205中的OTG_HS中的HOST与之相连,STM32F205配置以及与从设备的连接结果如下:
配置:
1.STM32F205固件采用ST官网上的“STM32_USB-Host-Device_Lib_V2.1.0”固件库,选取其中的USB_Host_Examples中的HID工程。
2.宏定义了USE_USB_OTG_HS与USE_EMBEDDED_PHY,即采用支持高速的OTG core以及内部的PHY。
3.内部DMA使能,配置如库函数配置一样。
4.OTG_HS设置为强制HOST模式,OTG_HS_DP与OTG_HS_DM复用给OTG_HS用,而OTG_HS_ID与OTG_HS_VBUS作为GPIO。
结果:
1.枚举过程全部完成。
2.HID类请求过程完成,即库中USBH_HID_ClassRequest函数所举出的状态机处理完成(这里的HID_REQ_SET_IDLE与HID_REQ_SET_IDLE状态处理过程被我屏蔽,这里的两个状态过程屏蔽与否对本次测试结果没有影响)。
3.处理类数据传输,即处理USBH_HID_Handle函数时出现问题,在执行USBH_InterruptReceiveData函数后,HOST一次都没有读到数据。
4.仿真分析,USBH_InterruptReceiveData函数->HCD_SubmitRequest函数->USB_OTG_HC_StartXfer函数中的如下语句
  hcchar.d32 = USB_OTG_READ_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR);
  hcchar.b.oddfrm = USB_OTG_IsEvenFrame(pdev);       
  /* Set host channel enable */
  hcchar.b.chen = 1;
  hcchar.b.chdis = 0;
  USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR, hcchar.d32);(这些语句本应该是使能主机通道,开始IN token的)
   A: 在执行上面代码之前OTG_HS_HCCHAR2=0x204c8840(打开通道时设置的), OTG_HS_HCTSIZ2=0x00080040, OTG_HS_HCDMA2=0x200008cc      (为我定义的用于存储接受数据的指针),这里定义的是主机通道2用于接受HID从设备数据。
   B: 单步执行上面代码之后,OTG_HS_HCCHAR2=0xe04c8840, OTG_HS_HCTSIZ2=0x80080040, OTG_HS_HCDMA2=0x200008cc,由此可见                      OTG_HS_HCCHAR2中的CHDIS也是为1的(应该由硬件 强制置1的,因为后面任何时候我通过调试窗口来让此位清0,都是无效的),之后继续走,          这三个寄存器的值一直不变。
   C:在控制通道中,在设置OTG_HS_HCCHAR中CHENA位时,CHDIS位并没有置1(由硬件),所以枚举过程能顺利完成。
   D:用逻辑分析仪抓DP与DM上的波形,发现再执行完上面语句后,HOST并没有发IN token(一次都没发),而只是在发SOF包(通过分析抓捕数据得          知)。
5.断电再上电,多次重复后,有时能正确接HID从设备数据,几率大概1/20。

根据上面的结果,本人有如下疑问:
1.为什么本实例中应用IN端点的主机通道,在置OTG_HS_HCCHAR中CHENA位时,会导致硬件置CHDIS位?所以HOST不发IN token。
2.为什么又会偶尔成功呢?

主要是第一个问题,请大神帮忙解释下,不胜感激!!!!!!!!!!!!!


收藏 评论0 发布时间:2014-10-28 18:44

举报

0个回答

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版