1 引言
目前,很多應(yīng)用系統(tǒng)均采用總線控制方式實(shí)時(shí)配置各種寄存器,靈活實(shí)現(xiàn)其控制功能,從而全程監(jiān)控各個(gè)參數(shù)。典型的總線控制設(shè)計(jì)方案一基于EEPROM的系統(tǒng)監(jiān)控電路,通過對EEPROM進(jìn)行在線編程,實(shí)時(shí)配置系統(tǒng)各個(gè)控制參數(shù),進(jìn)而實(shí)時(shí)監(jiān)測各種電路參數(shù)及故障。
MAX16031就是一種基于EEPROM的系統(tǒng)監(jiān)控電路,可監(jiān)測8路電源電壓,提供3路溫度檢測和1路電流監(jiān)測;每個(gè)監(jiān)測參數(shù)與4個(gè)不同門限相比較,多路故障指示輸出可配置在不同條件下觸發(fā)報(bào)警。這里以MAX16031為核心,配以相應(yīng)的輔助電路和靈活的軟件設(shè)計(jì),通過I2C總線來實(shí)現(xiàn)基于MAX16031的實(shí)時(shí)監(jiān)控在線編程功能。
2 硬件設(shè)計(jì)
MAX16031內(nèi)置有一個(gè)兼容于SMBusTM的I2C接口和一個(gè)JTAG接口,這兩個(gè)接口均可訪問器件的所有寄存器,可編程設(shè)置其內(nèi)部EEPROM。
2.1 供電電源
MAX16031的電源電壓范圍為3~14 V,通??蓪CC連接至12 V中等電壓總線,或連接到3.3 V輔助電源。也可使用外部供電電路對其編程設(shè)置,例如使用3.3 V輔助電壓(而無需其他電源),或施加12 V中等電壓總線,關(guān)閉所有下游電源,以避免其他電路施加電源。也可使用常見的雙二極管,由編程連接器供電。當(dāng)MAX16031由12 V總線供電時(shí),由于二極管會產(chǎn)生壓降,因此該供電效果最佳。
2.2 共用總線
當(dāng)一器件(非μP)正常工作時(shí)需與MAX16031通信,則存在潛在問題。例如,當(dāng)系統(tǒng)監(jiān)控μP需要訪問MAX16031的A/D轉(zhuǎn)換器讀數(shù)時(shí),外部供電電路掉電或只是部分供電、且MAX16031正在編程時(shí),掛接在I2C總線的其他器件可能產(chǎn)生干擾。而最簡便解決方法是通過JTAG接口編程MAX16031并監(jiān)控連接到I2C接口的μP。若μP支持開漏I2C總線I/O(即未連接至VCC的ESD保護(hù)二極管的引腳),同時(shí)上拉電阻足夠大,則在編程和正常工作時(shí)共用I2C總線是可行的。如果μP的I2C總線不是開漏式,ESD二極管將箝位總線并會干擾編程。如果系統(tǒng)μP不具備真正的開漏I2C總線,可采用圖1所示電路在μP和編程I2C總線之間自動切換。
圖1中,MAX4525復(fù)用器在連接到系統(tǒng)μP的I2C和連接到編程測試點(diǎn)上的I2C之間切換。開關(guān)由系統(tǒng)μP的VCC控制。如果采用12 V電源供電,而不是VCC,開關(guān)將I2C連接至編程測試點(diǎn)。一旦施加VCC電源,開關(guān)將I2C連接至系統(tǒng)μP。在編程模式下,連接在測試點(diǎn)的編程硬件電路必須提供適當(dāng)?shù)腎2C上拉電阻。
2.3 編程電路
圖2所示電路通過12 V中等電壓總線向MAX16031供電,通過雙二極管從編程連接器供電。該連接器與MAX16031的I2C總線連接,并與板上具有開漏I2C輸出的系統(tǒng)管理μP共用總線,此時(shí)μP并未真正加載到總線上,即便是在上電前。作為外部編程器的替代方案,也可使用系統(tǒng)管理μP在初始上電時(shí),編程設(shè)置MAX16031,可在沒有特殊硬件的條件下更新MAX16031的配置。
3 在線編程
3.1 編程算法
利用MAX16031的內(nèi)置EEPROM,首先確定編程寄存器的鎖定地址;然后加載EEPROM的開始地址;利用寫入命令在EEPROM的開始地址處寫入數(shù)據(jù);等待I2C總線編程結(jié)束后,進(jìn)入下一個(gè)編程循環(huán),如圖3所示。
3.2 參數(shù)設(shè)置
MAX16031內(nèi)置EEP-ROM用于儲存器件配置參數(shù)。上電后,EEPROM的內(nèi)容被送入RAM寄存器。RAM和EEPROM均通過JTAG和I2C接口訪問。若要正確編程MAX16031,則所需參數(shù)必須設(shè)置在EEPROM,圖4為MAX16031的存儲器映射。
3.3 在線編程步驟
在編程MAX16031的EEPROM配置內(nèi)存時(shí),必須首先確定寄存器r5Fh[0]上的配置鎖定位是否為零;如果不為零,則在該位上寫入“1”將其清零。若要寫入EEPROM,進(jìn)入EEPROM頁面,加載開始地址(97h),然后發(fā)送一系列塊燒錄命令(I2C)。以下為典型EEPROM編程過程的偽碼:
經(jīng)上述在線編程后,通過I2C總線即可實(shí)時(shí)監(jiān)控各種復(fù)雜系統(tǒng)的電壓、電流、溫度和故障等,同時(shí)允許用戶自行設(shè)置工作范圍、上下限、故障輸出以及工作模式,并存儲相關(guān)數(shù)據(jù),從而實(shí)現(xiàn)更高的靈活性。
4 結(jié)束語
該系統(tǒng)設(shè)計(jì)雖然是針對I2C總線在線編程,但設(shè)計(jì)方法在總線系統(tǒng)的接口編程設(shè)計(jì)中具有通用性,對相關(guān)的電路設(shè)計(jì)有一定的參考價(jià)值。