用WCH565開發(fā)USB3.0相機(jī),在大多數(shù)機(jī)器上識(shí)別沒有問題,但有一臺(tái)臺(tái)式機(jī)很奇怪。它上面的USB3.0口用USB30 U盤測(cè)試是好的,能夠正常識(shí)別最高速率能達(dá)到200MBps, 但是死活識(shí)別不出基于WCH565的相機(jī)。剛開始懷疑是USB3.0布線的問題,但是嚴(yán)格按照USB3.0布線規(guī)范,問題依舊。所以想辦法將USBSS Link中斷記錄輸出,經(jīng)過日志分析發(fā)現(xiàn)出現(xiàn)大量連續(xù)不斷的LINK_RDY_FLAG中斷。
正常工作的機(jī)器上, MCU輸出的日志(你們一定會(huì)說:輸出日志會(huì)打斷時(shí)序,USB30LinkLog只是把數(shù)據(jù)暫存內(nèi)存中,實(shí)際打印在main函數(shù)主進(jìn)程中完成,因此對(duì)時(shí)序的影響很小).
插入不能正常識(shí)別的機(jī)器上輸出的日志如下:
可以看到連續(xù)不斷地出現(xiàn)LINK_RDY_FLAG中斷,似乎清中斷標(biāo)志無效。
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: 日志中發(fā)現(xiàn)USBSS->LINK_ERR_STATUS錯(cuò)誤碼等于0x200, 0x200的含義是什么?
Q3: USBSS PHY在何種情況下會(huì)連續(xù)不斷觸發(fā)LINK_RDY中斷?
附日志打印函數(shù):