usb xhci babble error问题解决

在使用USB XHCI控制器与iPhone设备进行数据交换时遇到Babble Error问题,表现为部分芯片数据IN异常。排查过程中,确定问题可能与数据包跨帧、超MaxPacketSize及TD transfer size有关。经过分析代码和硬件调试,发现输入和输出上下文初始化预留的端点数量不足,修正后解决了所有异常芯片的问题。总结中指出,不同芯片上电时SRAM的初始值可能因电压等因素导致错误,进而引发Babble Error。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题现象:xhci的板子通过USB接iphone设备,进行数据OUT和IN,有一些芯片对于OUT,IN都能正常,有一些芯片对于OUT正常,对于IN总是出现babble error. 有时还不能进入事件中断。整体来说就是数据OUT没问题,数据IN对于一些芯片正常,一些芯片不正常,还有一个特殊的芯片是快速开关电源就会正常。

查看xhci对于babble error的描述如下:

意思就是有三种情况下会产生babble error。1:当device 发送的数据 > TD transfer size时,2.当一个包夸帧时,3. 当一个>MaxPacketSize时。

开始我们把log打印出来排除了1,和3,就把原因定位在了2,通过调时钟,调xhci中EOF的time point值,调内核电压等等各种方式都是试了,都没有效果。

下图是打印的各个端点的output_context种的ep_context的内容,是没有问题的,因为iphone发送的数据包是20个byte,不会超过512的maxPacketSize.

 

因为IN端点用的是EP10,所以就感觉是这个端点的问题,就用芯片自己模仿了iphone设备,通过改端点号来查找问题࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值