CH559L USB_RX_LEN 讀取到超過64的值

測試中發(fā)現(xiàn)只讀寄存器?USB_RX_LEN 會偶然出現(xiàn)值超過64的情況,按理說接收buffer只有64字節(jié),這種現(xiàn)象正常嗎?如果正常,如何解讀該長度值?


另外該寄存器讀取后好像不會自動清0,它在何時會被置0?謝謝。


I am not sure about that but maybe the reason lies on that aditional 2 Bytes for the buffers. In fact the datasheets are not very clear on that and the examples dont show extra gaps in buffer layout. For USB1.1 one out transfer can contain 64 bytes max but can be shorter (flag?USBD_SHORT_TRANSFER_OK). I think its save to ignore that extra bytes.


Wy should the register be cleared after reading? Its updated on every out transfer which means when a usb out irq happens the value is valid. Outside of the irq function it might be meaning less. I am saving the length in some static var when i need it outside of the irq function.


結(jié)合你的兩個問題:1、長度出現(xiàn)超過64字節(jié) 2、讀取后不變?yōu)?

應(yīng)該是你在非必要讀取USB_RX_LEN的時候去讀取了這個寄存器。


USB_RX_LEN我們只在“必須讀取”的時候才去讀他的值:產(chǎn)生USB中斷,且中斷原因是成功完成了一次OUT、SETUP事務(wù),也就是成功收到一包數(shù)據(jù)的時候。這在代碼中是有體現(xiàn),這個寄存器只在USB中斷函數(shù)中,事務(wù)為OUT、SETUP的switch-case分支中被讀取,這個時候USB_RX_LEN應(yīng)該總是小于或等于端點描述符中指示的端點長度。


感謝回復(fù)。目前看該問題可能和USB沒有關(guān)系。


使用同一電腦的其他USB口測試發(fā)現(xiàn)沒有問題,后來測試供電電壓,發(fā)現(xiàn)芯片腳在使用有問題的USB口時,只有3.1V,芯片工作在56MHz,從而導(dǎo)致芯片內(nèi)部寄存器/內(nèi)存數(shù)據(jù)時不時出現(xiàn)混亂,并且偶然出現(xiàn)自重啟現(xiàn)象,通過打印PCON中的bRST_FLAG0/1發(fā)現(xiàn)是檢測到電壓低導(dǎo)致復(fù)位。


采用其他USB口供電,有問題的USB口只接數(shù)據(jù)D+/D-,測試芯片腳電壓3.3V,未再出現(xiàn)問題。后使用兩片3V3 LDO并聯(lián),同時使用有問題的USB口供電,測量芯片管腳供電3.3V,繼續(xù)測試也沒有出現(xiàn)問題,這基本交叉驗證了該問題是USB口供電不足導(dǎo)致的。


手冊中只提供了Fsys=12MHz?時的Vpot電壓大約在2.7V,所以理論上講3.1V的電壓應(yīng)該不會導(dǎo)致芯片內(nèi)部寄存器錯亂,并復(fù)位。芯片工作在?56MHz 時,是否有相關(guān)數(shù)據(jù)?謝謝


@usbman. Thank you for your warm heart as well.



兩種USB口,出現(xiàn)IO電壓低的時候的VBUS電壓都是多少的?

還有要注意芯片供電電路的接法,5V供電和3.3V供電的電路有所不同,可能也是其中一個原因。(電路設(shè)計5V供電,某一時刻外部供電過低,低于3.6V,就會涉及到供電方式這一問題)


3V3供電,不使用芯片自帶的LDO。有問題的USB口VBUS在4.85V左右,正常的USB口VBUS在5.1V左右。

但是因為當前的USB線纜質(zhì)量參差不齊,如果使用較長的USB延長線,也是可能降低到該電壓的。如果能有56MHz的數(shù)據(jù)就能更好地解釋該現(xiàn)象了。


剛剛又測試了不同批次的芯片都有此現(xiàn)象。


可以用示波器監(jiān)控下板上LDO的輸出,示波器用觸發(fā)去抓取,觸發(fā)閾值就設(shè)定在3V.
相反的,也可以嘗試降低主頻,來判斷是否是電壓和頻率之間影響的。


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

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