BC1.2的一些心得

什麼叫DCD

DataContact Detect(DCD)

 

 

1.首先是DCD

2.然後是Primary detection

3.然後是Secondary detection

 

 

檢測充電的條件是VBUS>VOTG_SESS_VLD

檢測流程

1.DCD 階段

打開IDP_SRCRDM_DWN,檢測D+上的電壓和VLGC_LOW比較.如果VDP小於VLGC_LOW,或者TDCD_TIMEOUTDCD階段結束,這個時候應該關閉IDP_SRCRDM_DWN

標準的CDPSDP都是支持DCD

 

2.PRI階段

暫不考慮ACA

打開D+上打開VDP_SRC,然後檢查D-的電壓和VDAT_REF比較,如果VDM 大於VDAT_REF,則可以是DCP或者是CDP,如果VDM小於VDAT_REF則是SDP

關閉VDP_SRC

 

3.SEC階段

D-上打開VDM_SRC,然後比較D+的電壓與VDAT_REF,如果VDP大於VDAT_REFPD連接的是DCP,如果VDP小於VDAT_REFPD連接的是CDP.

當檢測到是DCP時,應該關閉VDM_SRC

打開VDP_SRC或者通過RDP_UP上拉D+VDP_UP

當檢測到是CDP時,應該關閉VDM_SRC,使得D+D-都保持低位until ready to connect and be enumerated.

 

 

 

SDPCDP都是能夠通過DCD的檢測的。大部分DCP也是能夠通過DCD的檢測的。DCP其實是將D+D-中間加電阻短接。而CDP來說可以認爲D+D-直接連接檢測DCD的過程是將DP上的電流源IDP_SRCRDM_DOWN打開,檢測D+上的電壓值。標準的SDPCDP由於RDM_DOWN的電阻比較小,電壓值不夠VLGC_LOW,也就是說DP上的電壓小於0.8V則認爲是通過了DCD的檢測。

 

可以認爲通過DCD的就是標準的DCP/SDP/CDP的充電器,沒有通過的都是特殊的充電器

 

其原理就是:

一般可以認爲充電口D+/D-上的電阻值比較小,也沒什麼上拉的電阻把上面的電壓值拉高,所以使用一個電流源IDP_SRC(Data Contact Detect CurrentSource 7~~13uA)DP上,這個電流源在沒有連接充電器的時候會使得DP+上的電壓值高於2.0V。而如果PD和充電端口連上的時候,由於D+/D-上面有接地電阻,而且該接地電阻一般最多也就24.8KR,這樣的電阻不能使得DP上的電壓值達到VLGC_LOW=0.8V。這樣判斷VDP<VLGC_LOW就表示數據引腳連接上了。

 

注意:

DCD的時候不僅要看BC1.2也要看BC1.1,有助於理解爲什麼IDP_SRC的電流,以及DCD的原理

 

 

 

 

檢查當前的DP/DM的類型的方式:

1.通過RX CMD

2.通過讀取ULPI 寄存器 DEBUGlinestate[Bit1 Bit0].

3.TI有個Vendor specific的寄存器可以測量debouncedDP/DM

 

 

 

檢測充電器時,比如DCD階段需要打開IDP_SRCRDM_DWN.這裏RDP_DWN RDM_DWN分別是在chargerdetection moduleDPDM的下拉電阻。該電阻和由DPPULLDOWNDMPULLDOWNbit位控制的PHY blockDM 下拉電阻是物理上不同的電阻.

檢查充電的DP/DM下拉電阻和PHYDP/DM的下拉電阻是不一樣的。其實他們的電阻值的要求也是不一樣的。

 

 

 

USB charger detection前提條件PHY不再驅動DP/DMPHY上的DP/DM上的上拉下拉電阻必須關閉,處於全速模式狀態

 

 

 

問題:

在插入的時候,高速設備的terminatorresistor 是否連上?D+D-上的電阻是否連上?

 

充電檢測的順序和enumeration的順序是怎樣的?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章