電源系統(tǒng)管理的尋址
引言
本文引用地址:http://cafeforensic.com/article/201807/383851.htm包括凌力爾特電源系統(tǒng)管理 (PSM) 在內(nèi)的所有 PMBus 應(yīng)用的基礎(chǔ)都是,PMBus 主器件 (系統(tǒng)主器件) 能夠與總線上的所有 PMBus 從屬器件 (PSM 控制器、PSM 管理器、PMS µModule 和 PMBus 單片器件) 通信??偩€上的每個(gè)從屬器件都必須擁有與其他器件不沖突的、獨(dú)一無二的地址。
總線主器件還必須能夠在幾種并非大多數(shù)人都認(rèn)為順理成章的情況下與 PSM 從屬器件通信,包括:
• 地址發(fā)現(xiàn)
• 全局行動(dòng)
• 多相軌
• 無效非易失性存儲(chǔ)器 (NVM)
• 總線 MUX
器件尋址是由基址寄存器加上外部地址選擇 (ASEL) 引腳以及特殊的全局、軌、ARA 地址及其他特殊地址相結(jié)合實(shí)現(xiàn)的。
本文探討凌力爾特 PSM 系列的基本設(shè)計(jì)原則、有關(guān)產(chǎn)品系列之間不同之處的詳細(xì)信息、以及實(shí)際例子和建議。諸如無效 NVM 等特殊情況也會(huì)討論。
凌力爾特的優(yōu)勢(shì)是,設(shè)計(jì)不僅從第一天開始就正常運(yùn)行,甚至在情況變壞時(shí)依然正常運(yùn)行。例如,如果正在用 LTpowerPlay 軟件寫 NVM 時(shí)掉電了,那么設(shè)計(jì)是可恢復(fù)的。此外,如果選擇采用凌力爾特 Linduino 參考代碼中提供的“In Flight Update”1,那么設(shè)計(jì)在現(xiàn)場(chǎng)也是可恢復(fù)的。最后,還能夠識(shí)別系統(tǒng)退化的癥狀,并解決系統(tǒng)退化問題。
一旦了解了怎樣實(shí)現(xiàn)凌力爾特 PSM 尋址,就能夠快速設(shè)計(jì)可靠的系統(tǒng)了。
基本的 PMBus 運(yùn)行方式
PMBus 是一種由 SMBus 擴(kuò)展而來的串行通信標(biāo)準(zhǔn),類似于 I2C。兩條開漏導(dǎo)線 SCL 和 SDA 支持主器件和從屬器件的雙向通信總線。主器件是控制通信的器件,一般是微控制器或 FPGA。從屬器件是受主器件控制的器件,一般是小型集成電路,在本文中,這是諸如 LTC2977 等電源管理器或者諸如 LTC3880 等電源控制器。
一個(gè)系統(tǒng)可以有超過一個(gè)主器件,但是實(shí)際上這種情況很少見。通常有多個(gè)從屬器件。甚至在只有一個(gè)從屬器件的系統(tǒng)中,主器件每次也通過使用地址,來指揮與從屬器件的通信。這意味著,每個(gè)從屬器件必須擁有一個(gè)獨(dú)一無二的地址,以實(shí)現(xiàn)恰當(dāng)?shù)南到y(tǒng)功能。
凌力爾特的電源系統(tǒng)管理器件使用一個(gè) EEPROM 和引腳電阻器來設(shè)定每個(gè) (從屬) 器件獨(dú)一無二的地址。因此,尋址過程確保,如果任何 EEPROM 中沒有有效數(shù)據(jù),那么主器件就可以修補(bǔ)系統(tǒng),使系統(tǒng)達(dá)到每個(gè) (從屬) 器件都有獨(dú)一無二地址的狀態(tài)。
以下各部分詳細(xì)解釋了這些地址配置機(jī)制,包括怎樣選擇、設(shè)計(jì)和修補(bǔ)地址。
基本的 PMBus 尋址
PMBus 尋址由 PMBus 標(biāo)準(zhǔn)引用的 SMBus 標(biāo)準(zhǔn)定義。SMBus 尋址與 I2C 標(biāo)準(zhǔn)相同。為清晰起見,討論范圍限定在 SMBus 標(biāo)準(zhǔn)上。
考慮 SMBus 3.0 標(biāo)準(zhǔn)圖 29 中定義的 Read Byte 協(xié)議 (參見圖 1)。起始位 (S) 之后是任何交易的地址,地址在 ACK 位 (A) 之前結(jié)束。在 (S) 和 (A) 之間有 8 個(gè)位,前 7 位是地址,其余 1 位用來指示寫 (Wr) 或讀 (Rd)。
圖 1:Read Byte 協(xié)議 (SMBus 3.0 標(biāo)準(zhǔn),圖 29)
7 位意味著有 128 個(gè)可能的地址。在本“應(yīng)用指南 (Application Note)”中,所寫地址不包括 (Wr/Rd) 位,如下所示:
0x00 至 0x7F (7 位尋址) 2
有時(shí),程序員寫地址時(shí)喜歡額外帶上保持為零的 (Wr/Rd) 位,例如:
0x00 至 0xFE (8 位尋址)
這些數(shù)字全都是偶數(shù)。示波器和監(jiān)視工具 (例如 Total Phase Beagle 協(xié)議分析儀) 使用與本應(yīng)用指南相同的格式,因此自然使用 0x00 至 0x7F,所以我們也這么做。然而,當(dāng)工程師提供一個(gè)地址但并未指明格式時(shí),請(qǐng)格外注意。給定地址也許需要左移一位,因此看起來的地址比實(shí)際地址大一倍。
請(qǐng)注意,Read Byte 協(xié)議使用兩次地址,但是在第二次使用的地址之前有一個(gè)重復(fù)開始 (Sr) 指示位。重復(fù)開始指示位是所有讀交易的組成部分。在本文中,(S) 和 (Sr) 之后必須使用相同的地址。
地址圖
不是所有地址都可用于 PSM 從屬器件,因?yàn)?SMBus 標(biāo)準(zhǔn)保留了某些地址。SMBus 3.0 規(guī)范的附錄 C 有一個(gè)預(yù)分配地址表。沒必要了解這些地址打算怎樣使用,所以有一個(gè)簡(jiǎn)化的表就夠了。
表 1 所示的 SMBus 地址圖使用了一種簡(jiǎn)單的編碼方法。保守的設(shè)計(jì)僅使用“用途”(Description) 列中有白色底紋的地址。這就避開了所有保留的地址和特殊地址。可能除了為 PMBus 3.1 區(qū)域操作添加的地址 0x28 和 0x37 以外,PSM 設(shè)計(jì)可以使用地址列中所有具白色底紋的地址。
表 1:SMBus 地址圖
PSM 全局地址
還有一些地址由 PSM 使用,不能分配給任何器件,甚至非 PSM 器件也不行,以防引起系統(tǒng)級(jí)問題。
第一類特殊地址是全局地址,即 0x5A 和 0x5B。總線主器件用這些地址一次與多個(gè)器件通信。就LTC388X 系列而言,地址 0x5A 是不被呼叫的全局地址。就 LTC388X PSM 系列和 LTC297X 系列而言,地址 0x5B 都是被呼叫的全局地址。如果一個(gè) PSM 器件的地址被設(shè)定為兩個(gè)全局地址之一,那么總線主器件向該器件發(fā)送命令時(shí),總線上的所有 PSM 器件都會(huì)響應(yīng)該命令。LTpowerPlay 也會(huì)出現(xiàn)意想不到的行為。
第三個(gè)全局地址是 0x7C。如果 LTC388X PSM 系列器件的 EEPROM 中有 CRC 錯(cuò)誤,那么這些器件就響應(yīng)這個(gè)地址。因此不要使用這個(gè)地址。
其他全局地址
非 PSM 器件也可能有全局地址。分配 PSM 地址時(shí),這些地址必須避開。
軌地址
有些 PSM 器件有一種稱為軌地址的特殊地址。用軌地址可以同時(shí)尋址多個(gè)器件或頁面。軌地址的主要功能是,使總線主器件能夠用一條命令與一個(gè)軌的幾個(gè)相位通信。例如,設(shè)定多相軌的 VOUT 電壓。
軌地址用一種稱為 MFR_RAIL_ADDRESS (0xFA) 的寄存器設(shè)定。這個(gè)寄存器的缺省值是 0x80,這個(gè)值禁止軌尋址。將軌地址設(shè)定為其他任何值都可啟動(dòng)軌尋址。
總線主器件對(duì)待軌地址就像對(duì)待總線上的器件一樣,即使它不是一個(gè)單獨(dú)的器件。總線主器件分辨不出二者的差別。因此,軌地址是系統(tǒng)總地址圖的組成部分,一定不能與其他地址相沖突。
通道地址
最后一種特殊地址稱為通道地址。這個(gè)地址也像軌地址一樣是用一個(gè)寄存器 MFR_CHANNEL_ADDRESS (0xD8) 設(shè)定的。通道地址給總線增加了一種指向特定頁面的地址。因此,使用通道地址時(shí),就不必使用 PAGE 寄存器了。
總線主器件對(duì)待通道地址就像對(duì)待總線上的另一個(gè)器件一樣,通道地址不可能與其他地址相沖突。
地址規(guī)劃
地址規(guī)劃很簡(jiǎn)單。創(chuàng)建一個(gè)電子數(shù)據(jù)表,列入所有器件和地址,使用以下所有地址類型:
• 普通地址
• 全局地址
• 軌地址
• 通道地址
• 特殊地址 (ARA)
• 非 PSM 地址
除了全局地址,地址不可重疊,當(dāng)所有地址都使用一個(gè)共用基址時(shí),每個(gè)地址都必須是獨(dú)一無二的。
設(shè)定地址
在怎樣分配地址以及器件的行為方式方面,盡管 LTC388X DC/DC 控制器系列和 LTC297X 管理器系列之間通常很相似,但是仍然存在細(xì)微差別。同一系列之內(nèi)的不同器件之間也存在微小差別。不過,運(yùn)行原理是相似的,所以在考慮具體差異之前,可以按照一般規(guī)則考慮所有器件。
就所有 PSM 器件而言,總線上 PSM 器件的實(shí)際地址由稱為基址 (BASE ADDRESS) 的寄存器值加上由連至器件引腳的電阻器決定之可選變址構(gòu)成,這些器件引腳稱為 ASEL 引腳,即地址選擇引腳。
使用 ASEL 引腳而不是使用預(yù)先設(shè)定器件的方法有幾個(gè)原因。首先,預(yù)先設(shè)定需要花時(shí)間,有成本問題,而且人們也許不想按照一般規(guī)則預(yù)先設(shè)定所有器件。很多器件還具有用來設(shè)定輸出電壓的配置引腳,這些引腳也許就足夠了。其次,如果一個(gè)器件有 CRC NVM 差錯(cuò),那么該器件可能會(huì)丟失地址,這時(shí)總線主器件就無法獨(dú)一無二地與每個(gè)器件通信以重新設(shè)定器件了。
因此,解決方案是 ASEL 引腳和一個(gè)基址??偩€主器件可利用全局地址 0x5B 與所有器件通信。如果主器件可以與所有器件通信,那么就可以設(shè)定基址,因?yàn)樗? PSM 器件都支持 MFR_I2C_BASE_ADDRESS 3 寄存器。之后,總線主器件可以強(qiáng)制所有器件讀取其地址引腳,而且所有器件都將擁有總線主器件已知和獨(dú)一無二的地址。一旦總線主器件可以與每個(gè)器件單獨(dú)通信,就可以重新設(shè)定 EEPROM 了。
這意味著以下事實(shí),而且這些事實(shí)是本文中需要記住的最重要的事情:當(dāng)總線上的所有器件共用一個(gè)基址時(shí),這些器件必須各自擁有獨(dú)一無二的地址,而且這些器件的 ASEL 引腳已經(jīng)被讀取和使用。
如果遵循這個(gè)原則,那么當(dāng)發(fā)生任何 NVM 訛誤時(shí),用 LTpowerPlay、Linduino 參考代碼或定制固件就可修復(fù)系統(tǒng)。因此,修復(fù)系統(tǒng)時(shí),永遠(yuǎn)不需要將凌力爾特 PSM 器件脫焊。
以下內(nèi)容提供產(chǎn)品系列的詳細(xì)信息,以全面了解怎樣設(shè)定地址以及怎樣用地址圖給出的參數(shù)進(jìn)行設(shè)計(jì)。
LTC388X PSM 系列
LTC388X 系列 PSM 器件的地址是由基址值和經(jīng)由 ASEL 引腳獲得的值相結(jié)合來設(shè)定的。有些 LTC388X 器件有一個(gè) ASEL 引腳,有些則有兩個(gè) ASEL 引腳,因此需要以不同的方式對(duì)待這兩種器件。
一個(gè) ASEL 引腳
表 2 顯示了 LTC3880 數(shù)據(jù)表列出的 ASEL 引腳。LTC3880 有一個(gè) ASEL 引腳。從屬地址列中的“xyz”3 位是基址,存儲(chǔ)在 MFR_I2C_BASE_ADDRESS (0xE6) 寄存器中。除非在 ASEL 引腳上沒有電阻器,否則 ASEL 引腳設(shè)定表中的 4 個(gè) LSB。在這情況,使用基址的所有 7 個(gè)位。
表 2:LTC3880 ASEL
僅當(dāng)總線上只有一個(gè)器件時(shí),才設(shè)定 ASEL 引腳開路。在任何多器件應(yīng)用中,都必須使用 ASEL 引腳來設(shè)定地址。如果使用單個(gè) ASEL 引腳設(shè)定器件,總線上的地址數(shù)量就限定為 16 個(gè)。
總線 MUX 為增加地址數(shù)量提供了一種解決方案,將在本文的總線分段部分討論。
雙 ASEL 引腳
雙 ASEL 引腳將 16 個(gè)地址的限制擴(kuò)展到 127 個(gè)。
表 3 顯示了 LTC3882 數(shù)據(jù)表列出的 ASEL 引腳。如果 ASEL1 設(shè)定為“來自 EEPROM”,那么 ASEL0 的表現(xiàn)就像 LTC3880 的單個(gè) ASEL 表現(xiàn)一樣。連至 ASEL1 引腳的電阻器控制器件地址的 3 個(gè) MSB。這將獨(dú)一無二的地址數(shù)量擴(kuò)展至 127 個(gè)。
在由單和雙 ASEL 引腳器件組成的系統(tǒng)中,每種單 ASEL 引腳器件類型可能有多達(dá) 16 個(gè),而且可能有與可用地址一樣多的雙 ASEL 器件。
表 3:LTC3882 ASEL
LTC297X PSM 系列
LTC297X 系列的主要不同是加到基址上的 ASEL 引腳選擇值。“加到”意味著增加,而不是取代或屏蔽一些位。
表 4 顯示了 LTC2975 的地址查詢表。這些 ASEL 引腳有 3 種狀態(tài),高、低或未連接。兩個(gè)引腳選擇 9 個(gè)不同的、顯示為“N =”的值。在這個(gè)表中,基址是 0x5C,當(dāng) N = 0 時(shí),地址為 0x5C。
這個(gè)表還有一個(gè) 8 位的列。這是本應(yīng)用指南使用的地址,像之前討論的那樣,左移一位 (對(duì)習(xí)慣于這種慣例的人而言)。
表 4:LTC2975 ASEL
CRC 失配
所有凌力爾特 PSM 器件都有 EEPROM,用來存儲(chǔ)決定輸出電壓、監(jiān)察限制和基本操作的設(shè)置值。存儲(chǔ)器中的任何差錯(cuò)都可能導(dǎo)致?lián)p壞負(fù)載。凌力爾特 PSM 器件的 EEPROM 保存規(guī)格為 10 年。不過,寫 EEPROM 時(shí)遭遇意外系統(tǒng)情況,例如高溫或電源電壓崩潰,可能導(dǎo)致寫失敗,從而使 EEPROM 保存的內(nèi)容出現(xiàn)訛誤。
CRC 的目的是驗(yàn)證 EEPROM 保存的內(nèi)容是否正確。有效的 CRC 確保器件安全運(yùn)行,無效的 CRC 禁止器件運(yùn)行,并通過 PMBus ALERTB 通知主機(jī)。
CRC 怎樣起作用?
當(dāng) PSM 器件第一次加電時(shí),該器件將 EEPROM 中的內(nèi)容傳送給 RAM,因?yàn)?RAM 是器件的運(yùn)行存儲(chǔ)器。傳送的同時(shí),器件計(jì)算 RAM 所存內(nèi)容的 CRC 值,然后與 EEPROM 中存儲(chǔ)的 CRC 比較 4。如果兩個(gè) CRC 值相同,器件就運(yùn)行;如果不相同,器件就報(bào)告 CRC 故障,并保持在復(fù)位狀態(tài)。
連接所有 PSM 器件的 GPIOB/FAULTB 引腳,設(shè)定器件以分享故障信息并在故障期間禁止運(yùn)行,將使整個(gè)系統(tǒng)之內(nèi)的任何 CRC 都能夠防止對(duì)系統(tǒng)內(nèi)的所有軌供電。一般而言,這是最佳的系統(tǒng)設(shè)計(jì),除非多故障分析已經(jīng)證實(shí),故障的所有組合都是安全的。當(dāng)所有軌都關(guān)斷時(shí),分析簡(jiǎn)單得多,而且系統(tǒng)變得安全得多,因?yàn)槿魏喂收隙紝?dǎo)致所有軌完全斷電。
LTC388X CRC
如果一個(gè) LTC388X 器件出現(xiàn) CRC 失配,那么它的地址將變成 0x7C。如果其他 LTC388X 器件也出現(xiàn) CRC 失配,那么這些器件的地址也將同時(shí)變?yōu)?0x7C。在用有效數(shù)據(jù)重寫這些器件的 NVM 且這些器件經(jīng)過由 MFR_RESET (0xFD) 命令或加電周期啟動(dòng)的初始化之前,這些器件的地址會(huì)一直保持為 0x7C。
LTC297X CRC
如果一個(gè) LTC297X 器件發(fā)生 CRC 失配,那么其值可能是兩個(gè)地址之一。簡(jiǎn)單情況是缺省基址 0x5C,當(dāng)整個(gè) EEPROM 發(fā)生 CRC 失配時(shí),出現(xiàn)這種情況。
因?yàn)?LTC297X 成塊處理 EEPROM,而且靠近底部的塊可能擁有有效的 CRC,靠近頂部的塊可能沒有有效的 CRC,所以地址也有可能是所存儲(chǔ)的基址。
這與 LTC388X 是不同的,因?yàn)?LTC388X 在確定地址之前,對(duì)整個(gè) EEPROM 進(jìn)行一次完整的 CRC 驗(yàn)證,而 LTC297X 則是逐步確定地址。
解決 CRC 失配問題
一般而言,CRC 失配絕不會(huì)手動(dòng)解決。LTpowerPlay 用其編程工具可非常容易地解決 CRC 失配問題,而且 In Flight Update 也會(huì)解決 CRC 失配問題。不過,了解這些方法怎樣解決 CRC 失配問題,對(duì)更好地理解尋址是有幫助的。解決 CRC 失配問題的第一步是,逐個(gè)訪問所有出現(xiàn) CRC 失配問題的器件。這意味著,發(fā)送 PMBus 命令以恢復(fù)各個(gè)地址。
向全局地址 0x5B 發(fā)布一條 MFR_I2C_BASE_ADDRESS 命令。然后發(fā)送一系列命令,強(qiáng)制所有器件讀取其 ASEL 引腳。
注:可以單獨(dú)針對(duì)一個(gè)出現(xiàn) CRC 失配問題的器件,如果你能確定其目前的地址,例如對(duì) LTC388X 而言是 0x7C,或者 LTC297X 的缺省基址。不過,使用全局地址卻簡(jiǎn)單得多,因?yàn)檫@種方式不損害其他器件。此外,如果總線未得到良好規(guī)劃,LTC297X 落在了非 PMBus 器件的地址上,那么單獨(dú)針對(duì)一個(gè)器件的做法可能產(chǎn)生副作用。
第二步是向器件發(fā)送數(shù)據(jù)。理論上,器件支持的所有命令都可以使用,但是通過 MFR_EE_DATA 命令發(fā)送批量數(shù)據(jù)更高效。LTpowerPlay 和 In Flight Update 都使用這條命令。
對(duì)規(guī)劃不佳、未使用 ASEL 引腳將所有器件設(shè)定為擁有獨(dú)一無二地址的地址設(shè)計(jì)而言,第一步不起作用。如果設(shè)定 MFR_I2C_BASE_ADDRESS 導(dǎo)致一個(gè)以上的 PSM 器件擁有相同的地址,那么就無法用 MFR_EE_DATA 修復(fù)單個(gè)器件,因?yàn)閾碛邢嗤刂返娜魏纹骷紩?huì)被相同的數(shù)據(jù)設(shè)定。
總線分段
對(duì) PMBus 分段有兩個(gè)主要原因:
1. 尋址
2. 電容/速度
但是分段以實(shí)現(xiàn)尋址這種方法一般僅用在非常大的系統(tǒng)中。
當(dāng)總線主器件以 400kHz 運(yùn)行時(shí),在非常大和具有很長(zhǎng)總線布線的系統(tǒng)中,可能出現(xiàn)電容問題。這可能導(dǎo)致違反定時(shí)規(guī)范,或干擾性能目標(biāo)。
一般情況下,會(huì)使用多路轉(zhuǎn)換器 LTC4306。LTC4306 的主要功能是,能夠一次連接一個(gè)段或者同時(shí)連接所有段。
當(dāng)修復(fù) CRC 失配問題時(shí),使用該器件,使總線主器件一次連接一個(gè)段。當(dāng)由固件使用時(shí),用該器件將所有段連接成單條總線。當(dāng)所有段作為單條總線連接時(shí),所有地址都必須是獨(dú)一無二的。
一步步地看一個(gè)典型例子,了解怎樣滿足修復(fù)流程需求以及怎樣作為單條總線起作用,這是有幫助的。
總線分段舉例
這個(gè)作為例子的系統(tǒng)由以下各部分組成:
• 4 段 (參見圖 2)
• 每段有 16 個(gè) LTC3880 器
• 一個(gè)多路轉(zhuǎn)換器 LTC4306
圖 2 總線分段舉例
LTC4306 的地址用 3 個(gè) ASEL 引腳設(shè)定為 0x50。該器件還有一個(gè)全局批量寫地址 (Mass Write Address) 0x5D。LTC3880 有 0x5A 和 0x5B 兩個(gè)全局地址。這種設(shè)計(jì)將 4 個(gè)基址 0x20、0x30、0x40 和 0x60 分配給 4 個(gè)段。這避開了 0x50 至 0x5F 的地址范圍,所有凌力爾特 PSM 器件的地址在這個(gè)范圍都是可編程的。此外,大多數(shù)凌力爾特 I2C/SMBus 器件都支持這個(gè)地址范圍。LTC4316 I2C 器件非常容易使其他任何器件與這個(gè)尋址范圍兼容。
還有可能在 0x5X 范圍內(nèi)對(duì)多相軌尋址,或者在小于 0x10 或大于 0x6F 的可用地址范圍內(nèi)對(duì)多相軌尋址。
圖 2:總線分段舉例
固件運(yùn)行
通過將 LTC4306 的寄存器 3 設(shè)定為 0xF0,電路板管理控制器 (Board Management Controller) 將輸入 PMBus 連至所有輸出 PMBus 段。在這種情況下,總線上有 64 個(gè)器件的地址處于以下范圍:0x20 至 0x2F、0x30 至 0x3F、0x40 至 0x4F 和 0x60 至 0x6F。全局地址 0x5A 和 0x5B 用于全局操作。如果器件正常運(yùn)行,沒有 CRC 失配問題,就不會(huì)響應(yīng)地址 0x7C。
系統(tǒng)設(shè)定
系統(tǒng)設(shè)定指的是,用 LTpowerPlay 或 In Flight Update 對(duì)所有總線分段進(jìn)行初始設(shè)定。通過將寄存器 3 的值分別設(shè)定為 0x80、0x40、0x20 和 0x10,LTC4306 會(huì)一次連接一個(gè)段。
LTpowerPlay 或 In Flight Update 會(huì)設(shè)定由 LTC4306 連接的特定段。用于被連接段的 MFR_I2C_BASE_ADDRESS 用全局地址 0x5B 設(shè)定。ASEL 的引腳電阻器確保被連接段上的每個(gè)器件都擁有獨(dú)一無二的地址。
用于每個(gè)段上各個(gè)器件的 ASEL 引腳電阻器是相同的,并在 0x00 至 0x0F 范圍內(nèi)選擇一個(gè)地址變址數(shù)。一次連接一個(gè)段,針對(duì)每個(gè)段單獨(dú)設(shè)定 MFR_I2C_BASE_ADDRESS,就可以使所有 64 個(gè)器件都擁有獨(dú)一無二的器件地址。
注:如果使用有兩個(gè) ASEL 引腳的器件,那么所有分段都有可能包含超過 16 個(gè)器件,因?yàn)閮蓚€(gè) ASEL 引腳允許用一個(gè)基址創(chuàng)建多達(dá) 128 個(gè)器件地址。
解決 CRC 失配問題
這種情況與系統(tǒng)設(shè)定情況是相同的。LTpowerPlay 和 In Flight Update 以同樣的方式對(duì)待設(shè)定流程。在兩種情況下,設(shè)定過程中都會(huì)使用 MFR_I2C_BASE_ADDRESS。
每個(gè)段都是一個(gè)一個(gè)連接和設(shè)定的。
固件運(yùn)行與系統(tǒng)設(shè)定的互動(dòng)
LTC4306 缺省設(shè)置為所有段均斷接。因此,如果電路板管理控制器 (BMC) 保持在復(fù)位狀態(tài)以進(jìn)行系統(tǒng)調(diào)試,連接了 DC1613 PMBus-to-USB 控制器且 LTpowerPlay 正在運(yùn)行,那么 DC1613 就不會(huì)連接到總線上的任何 PSM 器件上。
有兩種方式確保固件不干擾 LTpowerPlay。第一種是為 BMC 提供調(diào)試模式,以便 BMC 退出復(fù)位狀態(tài),并連接所有段,然后暫停。這使 LTpowerPlay 能夠與完整的總線互動(dòng),以便系統(tǒng)進(jìn)入運(yùn)行和調(diào)試狀態(tài)。
BMC 暫停時(shí),會(huì)阻止與 LTpowerPlay 互動(dòng)。即使 LTpowerPlay 能夠進(jìn)行多重控制,依賴 PAGE 命令的多個(gè)命令也會(huì)互動(dòng)。因此,暫??煞乐构碳?LTpowerPlay 得到錯(cuò)誤的遙測(cè)數(shù)據(jù)。
第二種方式是在調(diào)試時(shí)保持 BMC 處于復(fù)位狀態(tài),并允許 LTpowerPlay 控制 MUX。一般而言,這是最安全的情況,因?yàn)楫?dāng) BMC 從復(fù)位狀態(tài)釋放出來之后,例如在關(guān)斷 LTpowerPlay 之后,會(huì)將多路轉(zhuǎn)換器設(shè)定到適當(dāng)?shù)臓顟B(tài),而不管目前處于何種狀態(tài)。
當(dāng) BMC 和 LTpowerPlay 交替控制總線時(shí),主器件不應(yīng)該假設(shè)多路轉(zhuǎn)換器的狀態(tài)。無論何時(shí),只要采取重要行動(dòng),例如任一主器件退出暫停狀態(tài)繼續(xù)運(yùn)行時(shí),首先應(yīng)該將多路轉(zhuǎn)換器設(shè)定到適當(dāng)?shù)臓顟B(tài)。
總結(jié)
電源系統(tǒng)管理的地址規(guī)劃并不復(fù)雜,但是必須注意設(shè)定以及系統(tǒng)從 CRC 失配中恢復(fù)的特殊情況。所有凌力爾特 PSM 器件都是兼容的。
所有凌力爾特的 PSM 器件都通過基址和 ASEL 引腳設(shè)定的變址相結(jié)合來產(chǎn)生獨(dú)一無二的地址。如果在設(shè)定時(shí)掉電,所有 PSM 器件都可能遭遇 CRC 失配問題。通過設(shè)定基址、重新設(shè)定 EEPROM、以及復(fù)位器件,可以全面恢復(fù)系統(tǒng)。LTpowerPlay 和 In Flight Update 自動(dòng)處理合適的地址計(jì)劃的恢復(fù)。
通過地址規(guī)劃,可分配基址和 ASEL 引腳,因此絕對(duì)不會(huì)出現(xiàn)兩個(gè)器件永久使用相同地址的情形。使用擁有兩個(gè) ASEL 引腳的器件或者用一個(gè)諸如 LTC4306 那樣的 I2C 多路轉(zhuǎn)換器對(duì)總線分段,可以設(shè)計(jì)較大型的系統(tǒng)。
必須在進(jìn)行 PCB 設(shè)計(jì)之前進(jìn)行地址規(guī)劃,因?yàn)?ASEL 引腳和總線分段依靠電阻器和引腳來設(shè)定。
注 1:In Flight Update 是一種設(shè)定引擎 (C 代碼),使用 LTpowerPlay 輸出的 ISP/HEX 文件。Linduino 版本中的 In Flight Update 示例代碼被移植給了固件。
注 2:有些地址是保留的。
注 3:在有些器件中,MFR_I2C_BASE_ADDRESS 是以不同方式編制的,但命令代碼始終是 0xE6。
注 4:當(dāng)寫操作通過 RAM 或從外部向 EEPROM 寫數(shù)據(jù)時(shí), PSM 器件在其 EEPROM 中創(chuàng)建 CRC。
注 5:DC1613 與 LTpowerPlay 一起使用,以配置和調(diào)試 PSM 設(shè)計(jì)。
評(píng)論