打印
[STM32F4]

stm32F4 usb host CDC类调试

[复制链接]
5922|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
912293097|  楼主 | 2016-3-11 15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 912293097 于 2016-3-14 15:21 编辑

概述
在调试stm32F4的usbhost与华为me909进行通信,还没有找到stm32 与 华为通信模块通过USB通信的例子,本贴直播调试usb host的全过程,如果有搞过的请跟帖帮忙分析一下。
已经知道的东西

1.华为me909 usb属于usb device,是cdc类。
2.stm32F4具备usb host功能,可以使用官方提供的usb库进行设计,最新的usb库为2.2.0版本。

3.移植了usb hid的例子,stm32F4作为host 与鼠标进行通信,完成。使用的是PA11 和 PA12脚,FS(全速模式)。

4.华为me909为自供电usb设备,因此当usb出现故障的时候不能通过插拔usb接口对usb进行复位,好在me909有复位引脚,经测试,通过模块本身的复位引脚对模块进行复位后,usb可以重新与stm32建立连接,相当于重新插拔USB接头。对于后期调试准备了下下策。


正在进行的工作

移植了官方usb host CDC的例子,结合原子提供的hid的例程进行调试,未果,只能进行到“USBH_USR_DeviceAddressAssigned(从机分配地址成功)“这一步,后续还没进展。现在怎么突破枚举的问题正在开展,阅读源码是必要的。

##截止至2016/3/9/17:43
设备已经枚举成功,终于迈出了第一步,调试过程:跟踪调试,发现程序在 usbh_stdreq.c 第479行时if ( cfg_desc->bNumInterfaces <= USBH_MAX_NUM_INTERFACES) 解析描述信息后会检查接口数是否在设定的范围内,华为的接口数为6个大于在 usbh_conf.h设置的例程中的 2个接口,所以枚举失败。改为6后,并把最对endpoint(端点数) 设置为3(在华为的 USB Interface Descriptor Guide文件中说明)。枚举成功!
但是提示的是不支持的设备,正在进一步调试,趁热打铁!

##截止至2016/3/9/18:03
打印出各个接口的信息
bInterfaceClass: 00FFh,bInterfaceSubClass: 0006h,bInterfaceProtocol: 0010h
bInterfaceClass: 00FFh,bInterfaceSubClass: 0006h,bInterfaceProtocol: 0013h
bInterfaceClass: 00FFh,bInterfaceSubClass: 0006h,bInterfaceProtocol: 0012h
bInterfaceClass: 00FFh,bInterfaceSubClass: 0006h,bInterfaceProtocol: 0016h
bInterfaceClass: 00FFh,bInterfaceSubClass: 0006h,bInterfaceProtocol: 0006h
bInterfaceClass: 00FFh,bInterfaceSubClass: 0006h,bInterfaceProtocol: 001Bh

##截止至2016/3/11/12:03
将端点 按照华为模块手册说明进行设置。有时可以接收到数据,但是概率很低,调试时发现在
CDC_ProcessReception(USB_OTG_CORE_HANDLE *pdev, USBH_HOST *phost)  函数中
URB_STATE URB_StatusRx =   HCD_GetURB_State(pdev , CDC_Machine.CDC_DataItf.hc_num_in);时



URB_StatusRx  的值为 URB_ERROR


查找发生这个错误的原因 在一个中断处理函数中
    else if((pdev->host.HC_Status[num] == HC_XACTERR) ||
            (pdev->host.HC_Status[num] == HC_DATATGLERR))
    {
      pdev->host.ErrCnt[num] = 0;
      pdev->host.URB_State[num] = URB_ERROR;
    }

引用香水城的描述
同样查看XACTERR和DATAEGLERR的置位原因,找到对应的寄存器,即OTG_FS_HCINTx中的【TXERR】和【DTERR】位被硬件置位。
【TXERR】:Transaction error,可能是CRC校验错误、超时、比特填充错误、或者错误的EOP
【DTERR】:Data toggle error,表示收、发双方的数据同步位不再同步,可能是主机处理不当,也有可能是设备处理不当。最直观的方法是使用USB分析仪,看出错前的总线通信来判断是谁没有正确处理数据同步位的翻转。



##截止至2016/3/11 15:24
确定为XACTERR错误,等待进一步调试

##截止至2016/3/14
结帖:因为根据调试信息看是硬件问题,所以买了一个带usbhost接口的开发板进行调试。今天板子刚到。。。
烧程序,测试成功!果然是硬件问题!!! 问题解决。

说明
如果有感兴趣的朋友可以帮助我一下,或者帮我一起调试一下。我会把这个工程发到论坛上


问题

keil 在编译完出线这个警告,没有找到是什么问题,但是结果是 0错误 0警告。有知道什么问题的请回复下。

[fly][/fly]



沙发
捉虫天师| | 2016-3-11 20:40 | 只看该作者
以管理员方式运行keil再试试看,是不是因为权限不够没法去读那个文件呢?

使用特权

评论回复
板凳
Micachl| | 2016-3-12 21:01 | 只看该作者
有没有cdc+hid的复合设备的例子呢?

使用特权

评论回复
地板
luodewei| | 2016-3-13 12:46 | 只看该作者
太巧了,我也在调429 +USB +ME909的模块:lol
不过你进度比较快,我还在移植Host CDC例程中
看看谁先搞定吧:lol

使用特权

评论回复
5
Beckham_Owen| | 2016-3-13 22:19 | 只看该作者
这个keil也不是正版的吧,你这个是用到了这个文件但是没有包含进去

使用特权

评论回复
6
912293097|  楼主 | 2016-3-14 15:19 | 只看该作者
Beckham_Owen 发表于 2016-3-13 22:19
这个keil也不是正版的吧,你这个是用到了这个文件但是没有包含进去

包含了呀

使用特权

评论回复
7
912293097|  楼主 | 2016-3-14 15:19 | 只看该作者
luodewei 发表于 2016-3-13 12:46
太巧了,我也在调429 +USB +ME909的模块
不过你进度比较快,我还在移植Host CDC例程中
看看谁先搞定吧: ...

我搞定了,换了个板子就好使了,加个QQ交流下吧 我的 912293097

使用特权

评论回复
8
912293097|  楼主 | 2016-3-14 15:20 | 只看该作者
Micachl 发表于 2016-3-12 21:01
有没有cdc+hid的复合设备的例子呢?

这个可以有吧

使用特权

评论回复
9
912293097|  楼主 | 2016-3-14 15:21 | 只看该作者
捉虫天师 发表于 2016-3-11 20:40
以管理员方式运行keil再试试看,是不是因为权限不够没法去读那个文件呢?

不行

使用特权

评论回复
10
捉虫天师| | 2016-3-30 11:23 | 只看该作者
第一次见没有权限的,以管理员竟然还没有权限,重新安装,先卸载,清理干净。

使用特权

评论回复
11
suqianmcu| | 2017-10-11 10:56 | 只看该作者
luodewei 发表于 2016-3-13 12:46
太巧了,我也在调429 +USB +ME909的模块:lol
不过你进度比较快,我还在移植Host CDC例程中
看看谁先搞定吧: ...

429驱动ME909搞定了吗,我邮箱fireberg@163.com

使用特权

评论回复
12
GULANGGOGO| | 2019-4-13 08:08 | 只看该作者
luodewei 发表于 2016-3-13 12:46
太巧了,我也在调429 +USB +ME909的模块:lol
不过你进度比较快,我还在移植Host CDC例程中
看看谁先搞定吧: ...

大神你这调通了吗?我最近也在调 目前一直枚举不成功,求例程

使用特权

评论回复
13
GULANGGOGO| | 2019-4-30 17:37 | 只看该作者
楼主测试过速度吗?他最大通讯速度能到多少啊

使用特权

评论回复
14
sfd123| | 2020-5-14 14:51 | 只看该作者
能给一下你的工程我学习一下吗?正在搞USB_CDC_HOST,因为不了解,所以不知道怎么下手!

使用特权

评论回复
15
sfd123| | 2020-5-19 09:57 | 只看该作者
你的STM32F4 usb host CDC 调试的工程可以给一个学习一下吗?可以有偿!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

22

帖子

0

粉丝