這部分大師匈分倆部分,今天講一下基本的協商邏輯,有學習這塊內容的同學或者在快充領域的同志們也都見到過,使用某公司的協定分析工具,但是那麼抓包工具略顯捉急,有點貴,而且不支援PD3.0。
回到正題,大師匈一直在講,PD最重要的就是電源協商,前面講的都是鋪墊,基礎知識,現在是真正需要利用前面的基礎進行電源協商溝通。
策略層就是一個個狀態機,有看過PD手冊的同學知道,第八章8.3.3的名字就是State Diagram(狀態機)。狀態機就是每一個步驟都有一個狀態,執行哪一個操作要根據狀態來看的,有著嚴謹的邏輯。必須在某一個狀態下才能去做某一個操作,百度有很多的狀態機解釋。
上圖就是一個簡單的狀態機,在飢渴的狀態下,會使得人去吃飯,那麼就是這個狀態觸發了這個動作,最後達到一個吃飽的狀態,
那麼PD的策略狀態機也是差不多的概念,在某一個狀態下會觸發一個動作,然後到達另一個狀態,然後再去觸發下一個狀態,比上圖看到的多一些而已。
PD協定策略的實現有賴於協定層,也有賴於時間限制,某一動作必須在一定時間內完成,保證能夠source端能夠及時響應sink端的需求,以及保證PD協定軟體的正常執行,穩定性,不會卡死在某一箇中間狀態。
關於PD的時間這一塊我會講在內容裡面穿插著講。但是大家一定要知道時間很重要!!!!但是也要了解,PD標準對時間的要求都是毫秒級的,大多比較寬鬆, 但是這不意味著我們實際的軟體也很寬鬆。因為相容性。
下面上圖
上圖是一個最簡單的溝通流程。
1、source端發起一個廣播source cap(150ms廣播一次,知道收到goodcrc)
2、sink端收到並請求某一檔位的電源,以及電流要求。(收到source cap的24ms內)
3、source端評估是否接受,接受就回復接受accept,這個也是需要在24ms內去回覆的
4、 如果source端接受,那麼此時source端應該開始準備這個檔位的電源,
5、當電源準備完成的時候,發出ps_ready協定,表示準備妥當,可以開始抽電了,這個需要在450ms內。
上面就是最基本的一個溝通過程。以及上述的時間都是標準值,標準內的時間有一個範圍,我在裡面去了中間值或者邊界值給大家講解。比如150ms的這個時間,標準內應該是100~200ms都可以。
以上是大師匈今天的內容,下一期會按照標準檔案說明,會比較複雜一些。以及上述內容如果哪裡不嚴謹或者錯誤,請大傢俬信。
最新有人給大師匈留言提問,同學可以在評論區提問嘛?嘿嘿,然後順便關注一下,給大師匈一點動力,繼續更新。
有興趣可以加群717720218,大家一起進行技術交流,共同進步。