基于MAX16031系统管理器的在线编程设计
扫描二维码
随时随地手机看文章
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总线在线编程,但设计方法在总线系统的接口编程设计中具有通用性,对相关的电路设计有一定的参考价值。