本帖最後由 hon829 於 2021-9-1 20:54 編輯

取貨後, 終摸索了吓


玩了兩範例:
1. 誘騙出12V : (發覺輸出幾個固定電壓是屬於PD2.0的)




2. 誘騙出8.4V 2A 是屬於PD3.0的:





另發現兩個問題  
1) 用Win7 的Auduino IDE不能下載程序到板上, 用Win10即沒問題, 似COM port通訊問題:



2) 函數 PD_UFP.run(); 必須頻密執行, 否則影響PD通訊, 阻礙誘騙:



初步感覺MCU不能執行太多別的東西, 有delay/hang都影響誘騙電壓輸出的
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

本帖最後由 peter95811658 於 2021-9-2 04:13 編輯
取貨後, 終摸索了吓


玩了兩範例:
1. 誘騙出12V : (發覺輸出幾個固定電壓是屬於PD2.0的)




2. 誘 ...
hon829 發表於 2021-9-1 20:52


可以試下用timer interrupt去call個run(); function, 就唔怕loop行delay就搞到行唔到
不過用ATMEGA32U4得16M係禁上下,盡量用timer做野,唔好用delay浪費左MCU資源

TOP

本帖最後由 Offer 於 2021-9-2 09:36 編輯
取貨後, 終摸索了吓


玩了兩範例:
1. 誘騙出12V : (發覺輸出幾個固定電壓是屬於PD2.0的)




2. 誘 ...
hon829 發表於 2021-9-1 20:52

沒錯,因為這是PD Host的特性


.

TOP

本帖最後由 marlin12 於 2021-9-9 21:17 編輯

回覆 51# hon829
PD_UFP.run()是PD Micro的核心,與其說它是頻密執行,不如說它是一個server,負責處理一切PD通訊和PD sink的工作。

相信你是想用delay,去測試PD Micro剩餘的processing power。但是微控器的多工環境,不是這樣運作的。

通常,每個functional module(例如:PD、UI)會把time critical的部份(例如:處理FUSB302 PHY layer),安排在interrupt裏執行,並且會有priority。而非time critical的部份,才會安排在main loop裏執行。而且,module和module之間,會有semaphore去告訴對方狀況,讓對方避開time critical的部份。

PD Micro沒有充分利用interrupt和周邊的性能,把全部的工作放在main loop裏執行,確實是有改善空間。

PD negotiation有不同的state,由attached state到power ready state之前,應該是最忙的,要把干擾減到最低。

但是,在power ready state之後,在fixed voltage模式下,估計是沒有PD通訊。在PPS voltage模式下,估計只有keep alive的PD通訊 (PD Micro 的設定是每5秒鐘一次)。

因此,在main loop裏,其他的工作是可以避開大部份的PD通訊。
  1. void loop()
  2. {
  3.     PD_UFP.run();
  4.     ... ... ...
  5.     if( (PD_UFP.is_power_ready() || PD_UFP.is_PPS_ready())
  6.     &&  !PD_UFP.is_ps_transition() )
  7.     {
  8.         // PD engine not busy
  9.     }
  10. }
複製代碼
PD Micro支援data logging,可以把PD的通訊,透過微控器的serial1,傳到Arduino的COM monitor,是學習USB PD協議的好工具,詳情可以看README.md的Debugging部份。

[備註] 如果有PD Micro開發板,可以嘗試用PD Micro的data logging,証實在power ready state之後,是否很少PD通訊。

TOP

回覆  hon829
PD_UFP.run()是PD Micro的核心,與其說它是頻密執行,不如說它是一個server,負責處理一切PD ...
marlin12 發表於 2021-9-2 20:41



同意PD Micro是學習USB PD協議的工具 但應用上都是簡單的單芯片誘騙線/模塊較實用

相信PD keep alive的通訊都要幾頻密, 否則中途拔線後隻牛1秒倒就變回5V輸出! 要了解相信一定要看懂FUSB302 芯片的角色/工作

TOP

本帖最後由 marlin12 於 2021-9-4 15:47 編輯
相信PD keep alive的通訊都要幾頻密, 否則中途拔線後隻牛1秒倒就變回5V輸出! 要了解相信一定要看懂FUSB302 芯片的角色/工作hon829 發表於 2021-9-3 11:50

中途拔線後隻牛1秒倒就變回5V輸出,原因是供電器(PD source)偵測到PD Micro(PD sink) 連接斷開(detach),不是因為收不到keep alive通訊

[備註] 根據USB PD 3.1 spec (section 2.6.1),PPS模式的keep alive timeout (tPSSTimeout) 是13.5秒。


附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

TOP

回覆 57# Offer

仲有邊度有得買?

TOP

回覆  Offer

仲有邊度有得買?
victorchuk622 發表於 2022-2-19 01:04


你指PD Micro開發板?
團購貨尾我仲有少量在手

TOP

樓主仲未用晒

TOP