概念
單向數據流(Unidirectional data flow)方式使用一個上傳數據流和一個下傳數據流進行雙向數據通信,兩個數據流之間相互獨立。
下傳數據流是由計算機套用層通過數據流下傳API發起的,CH372以64個位元組為一組,將一個較大的數據塊分成多組提交給單片機;如果套用層傳送150個位元組的數據塊,則單片機會被中斷3次,前兩次各取64位元組,最後一次獲取22位元組。
工作原理
上傳數據流的發起方式有兩種:一種是查詢方式,指計算機套用層定期以查詢方式發起;另外一種是偽中斷方式,指單片機以中斷數據通知計算機套用層,再由計算機套用層發起,因為USB匯流排是主從式結構,只有在計算機主動聯繫USB設備時,USB設備才能向計算機上傳數據。
上傳數據流以查詢方式發起的系統中,計算機套用層總是通過數據上傳API嘗試讀取數據。當
單片機沒有數據需要上傳時,計算機套用層就會一直等待(如果設定USB數據讀逾時則會退出),實際上該套用層程式的執行緒將會被作業系統掛起。當單片機需要上傳數據時,應該將數據寫入CH372批量端點的上傳緩衝區中,接著計算機套用層自動取走數據,然後CH372以中斷方式通知單片機上傳成功,以便單片機繼續上傳後續數據。使用這種方式,建議用CH375SetBufUpload設定內部緩衝上傳。
上傳數據流以偽中斷方式發起的系統中,計算機套用層初始化時設定一個偽中斷服務程式,然後套用層就不需要涉及上傳數據流。當單片機需要上傳數據時,首先將數據寫入批量端點的上傳緩衝區中,然後將中斷特徵數據寫入中斷端點的上傳緩衝區中。在1ms之內(理論值),與中斷特徵數據對應的偽中斷服務程式被激活,偽中斷服務程式通知主程式調用數據上傳API獲得上傳數據塊。在此期間,單片機將會收到CH372通知的兩次中斷,首先是中斷端點上傳成功中斷,然後是批量端點上傳成功中斷。