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