用WCH565开发USB3.0相机,在大多数机器上识别没有问题,但有一台台式机很奇怪。它上面的USB3.0口用USB30 U盘测试是好的,能够正常识别最高速率能达到200MBps, 但是死活识别不出基于WCH565的相机。刚开始怀疑是USB3.0布线的问题,但是严格按照USB3.0布线规范,问题依旧。所以想办法将USBSS Link中断记录输出,经过日志分析发现出现大量连续不断的LINK_RDY_FLAG中断。
正常工作的机器上, MCU输出的日志(你们一定会说:输出日志会打断时序,USB30LinkLog只是把数据暂存内存中,实际打印在main函数主进程中完成,因此对时序的影响很小).
插入不能正常识别的机器上输出的日志如下:
可以看到连续不断地出现LINK_RDY_FLAG中断,似乎清中断标志无效。
Q1:
? if( tx_lmp_port ) // LMP, TX PORT_CAP & RX PORT_CAP
? ? ? ? {
? ? ? ? ? ? USBSS->LMP_TX_DATA0 = LINK_SPEED | PORT_CAP | LMP_HP;
? ? ? ? ? ? USBSS->LMP_TX_DATA1 = UP_STREAM | NUM_HP_BUF;
? ? ? ? ? ? USBSS->LMP_TX_DATA2 = 0x0;
? ? ? ? ? ? tx_lmp_port = 0;
? ? ? ? }
这段代码来自你们的Demo, LMP, tx_lmp_port?是什么含义?
Q2: 日志中发现USBSS->LINK_ERR_STATUS错误码等于0x200, 0x200的含义是什么?
Q3: USBSS PHY在何种情况下会连续不断触发LINK_RDY中断?
附日志打印函数: