遇到反饋最多的問(wèn)題是收不了數據,發(fā)不了數據。
?
多半是不清楚USB數據收發(fā)的機制導致。這里不做教學(xué),只講怎么用起來(lái)。
以CH554EVT.ZIP為代碼基礎,寄存器說(shuō)明參考CH554DS1.PDF
文中所有提到的代碼均以偽代碼形式,便于理解。
?
先總結:
?
USB設備片面的理解是“被動(dòng)的”。USB主要就是上傳(IN事務(wù),DEVICE->HOST)和下傳(OUT事務(wù),HOST->DEVICE)。上傳的被動(dòng)體現在設備準備好需要上傳的數據之后,等著(zhù)主機來(lái)將數據取走。下傳的被動(dòng)體現在設備需要準備好空閑的緩沖區,等著(zhù)主機將數據發(fā)下來(lái)。數據什么時(shí)候流動(dòng),流動(dòng)方向是什么,完全取決于主機,主機怎么控制數據流,取決于協(xié)議(這個(gè)協(xié)議包括標準USB CLASS協(xié)議,還有用戶(hù)自定交互流程)。
?
因為這個(gè)被動(dòng),就會(huì )產(chǎn)生問(wèn)題:
1、什么時(shí)候才表示主機將數據取走了、什么時(shí)候主機已經(jīng)把數據發(fā)下來(lái)了。
2、上傳數據不能夠在主循環(huán)中拼命執行,因為可能上一包數據并沒(méi)有成功發(fā)送。