WCH565 USB30 巨量LINK_RDY_FLAG中斷發(fā)生

用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í)序的影響很小).

01.png


插入不能正常識(shí)別的機(jī)器上輸出的日志如下:

02.png


可以看到連續(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的含義是什么?

03.png

Q3: USBSS PHY在何種情況下會(huì)連續(xù)不斷觸發(fā)LINK_RDY中斷?


附日志打印函數(shù):

1669890515339247.png

1669890515334989.png


根據(jù)截圖中LINK中斷函數(shù),應(yīng)該不是最新版本。
前往獲取最新版本代碼,以EVT包中CH372DEVICE示例程序?yàn)榛A(chǔ)代碼工程:

http://www.findthetime.net/downloads/CH569EVT_ZIP.html



06.png

標(biāo)準(zhǔn)CH372DEVICE:-LIB VERION2.0-20221124中的例子直接下載到WCH565評(píng)估板上,怎么提示"配置描述符請(qǐng)求失敗?"



按照CH372Device例程中的LINK_IRQHandler的是實(shí)現(xiàn)方式(主要是else if語句 替換為if語句),仍然是原來正常識(shí)別的機(jī)器能夠正常識(shí)別,不能識(shí)別的還是不能識(shí)別。

07.png


新的發(fā)現(xiàn)是LINK中斷標(biāo)志寄存器值等于0x00010083時(shí), 對(duì)應(yīng)4個(gè)中斷標(biāo)志,?

0x00010083,

1<<0, LINK_RDY_FLAG

1<<1, LINK_RECOV_FLAG,LINK_IRQHandler函數(shù)未處理

1<<7, LINK_GO_U0_FLAG,??LINK_IRQHandler函數(shù)未處理

1<<16, 未知,LINK_IRQHandler函數(shù)未處理

LINK_IRQHandler只處理了LINK_RDY_FLAG


08.png

LINK_ERR_STATUS的值依然時(shí)0x00000200, 強(qiáng)烈要求解釋一下它的含義!

正常識(shí)別機(jī)器上的日志如下圖所示:

09.png

可以看到正常識(shí)別情形下LINK_ERR_STATUS始終為0, LINK中斷程序只執(zhí)行了4次。

Q:請(qǐng)問LINK_INT_FLAG bit16的含義是什么?




可以分享一下有問題電腦的硬件型號(hào)是什么,看能否找到相似電腦來進(jìn)行測(cè)試。

LINK有異常,可能是由枚舉數(shù)據(jù)交互中出錯(cuò)導(dǎo)致,那就還是請(qǐng)以官網(wǎng)下載的示例程序?yàn)闇?zhǔn):http://www.findthetime.net/downloads/CH569EVT_ZIP.html


下載 WCH569 USB3.0 CDC程序到CH565評(píng)估板上, 短暫識(shí)別為串口設(shè)備后,反復(fù)掉線上線,不穩(wěn)定.

1670047826156594.png

1670047826863851.png


系統(tǒng)的USB主控制器如下圖所示

1670049911117597.png


1670049911697989.png

1670049911174951.png

1670049911199172.png



在USB30_StandardReq中將主機(jī)下發(fā)的8字節(jié)請(qǐng)求打印出來看下(這在代碼中已經(jīng)有printf),將主機(jī)下發(fā)的請(qǐng)求和函數(shù)后面swtch-case處理對(duì)比下,看是否存在沒有處理的請(qǐng)求。


CH565燒錄CH569 CDC 串口例程,打印日志。

正常識(shí)別的機(jī)器上的日志如下


1670313101161461.png


1670313100444033.png

偶然發(fā)現(xiàn),在Windows設(shè)備管理器將設(shè)備識(shí)別為串口后,將設(shè)備從主機(jī)拔除的一瞬間(隨后系統(tǒng)掉電),會(huì)觸發(fā)多次LINK_RDY_FLAG, 而對(duì)應(yīng)的中斷處理函數(shù)仍然認(rèn)為USB3.0通訊成功,感到處理邏輯似乎有問題啊。

下圖是CH565評(píng)估板外接5V電源,?在Windows設(shè)備管理器將設(shè)備識(shí)別為串口后, 將設(shè)備從主機(jī)拔下時(shí)抓下的日志。

CDC_PowerOn_PlugOn.png


以上操作均在識(shí)別正常的機(jī)器上執(zhí)行。


在識(shí)別有問題的機(jī)器上,設(shè)備識(shí)別成功后又莫名地?cái)嚅_,反反復(fù)復(fù),但是第三方USB3.0 U盤卻沒有這樣的問題。


Failed-Recognize.png

icon_rar.gifcode.zip

icon_rar.giflog.zip




Code.png

Q:USBSS->LINK_ERR_STATUS 不等于0時(shí)的中斷處理是否需要特殊處理?


可以的話測(cè)試下官方示例程序:http://www.findthetime.net/downloads/CH569EVT_ZIP.html
或者郵件聯(lián)系:wsh@wch.cn



只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频