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的配置。