TCPC 是 USB Type-C Port Controller 的首字母縮寫,翻譯成中文就是通用串行總線 C 型端口控制器,簡單點(diǎn)說就是 USB-C 型端口控制器,也就是說一個(gè) USB-C 型端口要做的事情它得全管,這句話說起來有點(diǎn)籠統(tǒng),需要深入標(biāo)準(zhǔn)去看看是咋回事。
USB Type-C Port Controller Interface Specification (USB-C 型端口控制器接口規(guī)范,可簡稱 TCPCI 規(guī)范)里是這樣來描述 TCPC 的:The TCPC is a functional block which encapsulates VBUS and VCONN power controls, USB Type-C CC logic, and the USB PD BMC physical layer and protocol layer other than the message creation. 這話的意思是說 TCPC 是個(gè)功能塊,其中含有 VBUS 和 VCONN 的電源控制功能、CC 信號的處理邏輯、USB PD 應(yīng)用中的 BMC 物理層和協(xié)議層(也就是 PD 信息的編碼發(fā)送、接收和處理過程都在里面了),而信息的生成是不包含在其中的。這個(gè)功能塊在現(xiàn)實(shí)中的位置在哪里呢?我們常常會看到論及 TCPC 的地方會有下面這幅圖:
另有一幅圖是這樣的:
這兩幅圖其實(shí)是一回事,只不過是一個(gè)帶有多個(gè) TCPC,一個(gè)只有一個(gè) TCPC,它們要表達(dá)的重點(diǎn)是中間畫圈的部分即 TCPCI(TCPC Interface,TCPC 接口),意思是說 USB-IF 制訂了一個(gè)接口標(biāo)準(zhǔn),它通過 I2C 接口將 TCPM 即 USB Type-C Port Manager(USB-C 型端口管理器)和 TCPC 連接起來,所有的 TCPC 產(chǎn)品都以此標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì),意即 TCPM 看到的 TCPC 都是標(biāo)準(zhǔn)化的,它們內(nèi)部都有大量的寄存器掛在 I2C 接口上,這些寄存器的地址和內(nèi)容絕大部分都是相同的,只有擴(kuò)展的部分才是容許廠家自己定義的,當(dāng)你對不同型號的 TCPC 的同一個(gè)地址的寄存器進(jìn)行讀寫操作時(shí),能夠起到的作用都是相同的(除非該 TCPC 的設(shè)計(jì)不支持這個(gè)功能,或是它容許廠家自己定義其具體內(nèi)容,但凡遇到這樣的狀況時(shí)也都會在其設(shè)計(jì)里被明示出來,例如我們的 RT1715 就明確說明它不支持 PD3.0 的 Fast Role Swap 功能),這樣就簡化了 TCPM 的設(shè)計(jì),它在遇到任何 TCPC 時(shí)都有一樣的功能,啥都不需要修改,除非遇到了不支持的狀況或是自定義的狀況。所以真正的 TCPC 其實(shí)只是前面兩幅圖中的下半部分所展示的內(nèi)容,其中的小方塊表示它含有的功能或是模塊,下面與之連接的自然是實(shí)際中的 USB 端口的物理部分,就像下圖中的 RT1718S 上邊和左邊所連接到的部分:
而 TCPM 在上圖中也只能是位于右側(cè)的 MCU/EC 之中的一個(gè)組件或說是其一個(gè)功能,只是由于 RT1718S 的構(gòu)成除了 TCPC 以外還有對端口各個(gè)信號的過壓保護(hù)和靜電釋放保護(hù)功能,所以它看起來就比較復(fù)雜了,但理解了 TCPC 后就比較容易搞清楚它是怎么回事了。
TCPCI 規(guī)范以需求的形式對 TCPC 要完成的工作進(jìn)行了說明,前面已經(jīng)說過它包含三個(gè)部分,下面對此進(jìn)行簡單說明。
TCPC 需要完成的第一部分工作是對 VBUS 和 VCONN 電源進(jìn)行管控。
VBUS 就是通過 USB 線傳輸?shù)碾娫凑龢O端,它的電壓在 USB誕生的時(shí)候就是 5V,能傳輸?shù)?a class="article-link" target="_blank" href="/tag/%E7%94%B5%E6%B5%81/">電流隨著 USB 的不斷升級從百 mA 級一直往上增長,到了 C 型接口出現(xiàn)后發(fā)展到最大 3A,在 PD 協(xié)議出現(xiàn)以后就發(fā)展到了 5A,現(xiàn)在它可傳輸?shù)碾妷阂训搅?48V,所以通過VBUS 已經(jīng)可以傳輸高達(dá) 240W 的功率了,但其最基本的規(guī)格仍然還是 5V,只有利用 PD 協(xié)議才使其規(guī)格可以在工作過程中進(jìn)行改變,但 TCPCI 對此并不關(guān)心,它提供的只是一個(gè)通道而已。實(shí)際是有關(guān) PD 的協(xié)議在通過 TCPC 的時(shí)候是不會被解讀的,它們會直接通過 TCPC 進(jìn)行傳輸,到了 TCPM 以后才會被處理,其處理結(jié)果會反應(yīng)在 VBUS 電壓的變化上,而 TCPC 卻可以對 VBUS 電壓進(jìn)行監(jiān)測、對 VBUS 通道進(jìn)行開關(guān)控制,到了連接中斷時(shí)還會對 VBUS 通道進(jìn)行放電處理以確保安全。如果某個(gè)器件將 TCPC 和電壓轉(zhuǎn)換器的功能集成在一起了,那么這里所說的 TCPM 對 VBUS 電壓的調(diào)整功能也會被集成在其中,對于用戶來說就變成完全透明的了,只需要將其拿來使用即可,很可能完全不需要自己去做軟件設(shè)計(jì)等操作,而立锜的很多高度集成的產(chǎn)品便是這樣做的,對用戶來說會非常友好,但是技術(shù)支持的力度卻要增強(qiáng),因?yàn)椴煌脩舻牟煌枨蠖夹枰诋a(chǎn)品設(shè)計(jì)中予以滿足,這就要有針對性的服務(wù)才能實(shí)現(xiàn)。
對于連接在 USB 上的不同設(shè)備來說,有的可作為電源的供應(yīng)端,有的可作為用電端,還有的可以在兩個(gè)角色之間進(jìn)行轉(zhuǎn)換,它們的這種能力分別被定義為 Source、Sink 和 DRP,TCPC 中就定義了很多寄存器來對這些角色的實(shí)現(xiàn)或是轉(zhuǎn)換等進(jìn)行控制,實(shí)際實(shí)施的時(shí)候就需要 TCPM 根據(jù)不同的角色和需要隨時(shí)對 TCPC 的寄存器進(jìn)行操控以實(shí)現(xiàn)其應(yīng)用目標(biāo),這也導(dǎo)致不同角色的 TCPC 需要去完成不同的任務(wù)。
VCONN 的作用和 VBUS 有點(diǎn)類似,其生成的位置也是供電端,但使用它的電路位于電纜之中,如 USB-C 型電纜上的電子標(biāo)簽就需要它來供電,其電壓、電流和功率也需要是可控的,TCPC 內(nèi)部也有寄存器可用于 VCONN 的生成和控制。
下面的幾個(gè)表格是從 TCPCI 規(guī)范中截取下來的,它們說明了不同角色的 USB 設(shè)備中的 TCPC 需要完成的工作,有興趣的讀者可以仔細(xì)看看。
TCPC 需要完成的第二部分任務(wù)是對 CC 信號進(jìn)行處理,其中涉及角色判斷、對 CC 線的狀態(tài)進(jìn)行監(jiān)測、根據(jù)需要使用 Rp/Rd 等等。到了 PD 協(xié)議上場以后,TCPC 又新增了對 PD 協(xié)議信息的傳輸能力,其中就有 BMC 編解碼、信息的存儲和收發(fā)等內(nèi)容,這就構(gòu)成了 TCPC 需要完成的第三個(gè)任務(wù),使得 TCPM 完全不需要去關(guān)心 PD 協(xié)議是如何傳輸?shù)?,它只管根?jù)自己的需要去生成和處理信息即可,傳輸上的事情都丟給 TCPC 了。
TCPM 在與 TCPC 通訊的時(shí)候處理的都是 TCPC 內(nèi)部的寄存器,這些寄存器在規(guī)范中的定義如下表所示:
詳細(xì)解讀表中信息的工作量會很大,TCPCI 規(guī)范和我們的產(chǎn)品如 RT1718S 規(guī)格書都用了很大的篇幅來列出寄存器的詳細(xì)信息,需要做詳細(xì)設(shè)計(jì)的人肯定要去仔細(xì)研究,作為大概的了解就不必了,但是瀏覽一下還是能找到一些樂趣,例如我們可以從寄存器的排序上看出它的發(fā)展歷程,PD 協(xié)議是后來才有的,它的發(fā)送和接收寄存器也被排在后面,這大概就是先來后到的影響吧,但這也只是我自己的看法,因?yàn)槲也]有對多個(gè)版本的規(guī)范進(jìn)行比較;擴(kuò)展定義是廠家需要的,它的排序就在最后的 80h…FFh,這也在 RT1718S 的寄存器配置上表現(xiàn)出來,它的超出 TCPC 定義范圍以外的東西都在地址 80h 以后的寄存器里進(jìn)行表達(dá),使用它的用戶必須對它們進(jìn)行操作,同時(shí)立锜的技術(shù)支持人員也能在其開發(fā)工作中提供支持,已有的一些源碼應(yīng)該是可以提供給大家參考使用的,至少有一些定義可以供你使用,就這也可以減少不小的工作量,因?yàn)槟敲炊嗉拇嫫骶褪强粗部赡茏層行┤祟^疼的,我要遇到了也只能是一個(gè)一個(gè)地進(jìn)行描述,一點(diǎn)都急不得,想到這一點(diǎn),我倒是有點(diǎn)慶幸自己沒有一直以軟件設(shè)計(jì)為業(yè)了。
反復(fù)提及 RT1718S 卻沒有提供與其相關(guān)的細(xì)節(jié),這看起來有點(diǎn)不像做產(chǎn)品介紹的樣子,但寫這篇文章的用意也真的不是要做產(chǎn)品介紹,我只是想把自己對 TCPC 的理解寫出來,同時(shí)幫助到也有此需求的讀者,這就夠了,如果因?yàn)槲业睦斫忮e(cuò)誤而給你帶來誤解,那就要先給你說聲抱歉,畢竟我的理解不能當(dāng)做標(biāo)準(zhǔn)來看待,需要認(rèn)真對待的讀者請以標(biāo)準(zhǔn)本身的說明為準(zhǔn)。對我來說學(xué)習(xí)就應(yīng)該是一件好玩的事情,需要帶著好奇心去玩,工作還是先靠邊吧!如果工作的同時(shí)又能學(xué)習(xí)并得到樂趣,能夠豐富我們對這個(gè)世界的認(rèn)識,那就更有意思了,公司還要付我工資呢,這不是雙倍的收益嗎?所以我是帶著感恩的心來做這一切的,希望你也是,我相信你也能因此而獲益。