应用笔记 4283

MAX16031/MAX16032基于EEPROM系统管理器的在线编程

By: Eric Schlaepfer

摘要 : MAX16031/MAX16032系统管理器可以在焊接到应用电路板后进行编程。这意味着只需储存未编程器件,而最新版本的配置信息可以在生产测试过程中写入器件。通过几项简单的测试可确保应用电路通过共享I²C或JTAG总线进行硬件编程,并且在编程过程中为器件供电。本文提供了I²C总线和JTAG总线的编程算法。

MAX16031/MAX16032基于EEPROM的系统管理器为系统监控电路,能够监测八路电源电压,提供三路温度检测和一路电流监测。每个监测参数与四个不同门限进行比较,几路故障指示输出可以配置为在不同条件下触发报警。

系统管理器包括兼容于SMBus™的I²C接口和一个JTAG接口,这两个接口均可访问器件的所有寄存器,编程内部配置EEPROM。MAX16031/MAX16032可在线编程,仅需遵守几条简单规则即可。

供电

MAX16031/MAX16032的电源电压范围为3V至14V。有些应用将VCC连接至12V中等电压总线,有些应用则连接到3.3V辅助电源。

可使用局部供电电路板对这些器件进行编程。例如,可使用3.3V辅助电压而无需任何其它电源,或者施加12V中等电压总线,此时应关闭所有下游电源,以避免其它电路上施加电源。也可以使用常见的双二极管,从编程连接器供电。由于二极管会产生压降,所以当MAX16031/MAX16032由12V总线供电时,这种方法的工作效果最佳。

共用总线

当一个器件(而非µP)在正常工作时需要与MAX16031/MAX16032通信时,存在一个潜在问题。例如,当系统监控µP需要访问MAX16031/MAX16032的ADC读数时。当电路板断电或只是部分供电,并且MAX16031/MAX16032正在编程时,连接到I²C或JTAG总线的其它器件可能产生干扰。最简便的解决方法是通过JTAG接口编程MAX16031/MAX16032并监控连接到I²C接口的µP。若µP支持开漏I²C总线I/O (即没有连接至VCC的ESD保护二极管的引脚),同时上拉电阻足够大,在编程和正常工作时共用I²C总线是可行的。如果µP的I²C总线不是开漏式,ESD二极管将箝位总线并会干扰编程。共用JTAG时可能需要JTAG总线复用器从3.3V供电。

如果系统µP不具备真正的开漏I²C总线,可采用类似图1的电路在µP和编程I²C总线之间自动切换。

图1. MAX16031通过MAX4525复用器/开关共用其I²C总线
图1. MAX16031通过MAX4525复用器/开关共用其I²C总线

图1所示MAX4525复用器在连接到系统µP的I²C和连接到编程测试点上的I²C之间进行切换。开关由系统µP的VCC控制。如果采用12V电源供电,而不是VCC供电,开关将I²C连接至编程测试点。一旦施加VCC电源,开关将I²C连接至系统µP。注意,编程模式下,连接在测试点的编程硬件电路必须提供适当的I²C上拉电阻。

应用电路实例

以下示意图中介绍了用于在线编程的三种不同应用电路。

12V中等电压总线供电,通过I²C总线编程

图2所示电路通过12V中等电压总线向MAX16031供电,通过双二极管从编程连接器供电,该连接器还与MAX16031的I²C总线连接,与板上具有开漏I²C输出的系统管理µP共用总线,此时的µP并未真正加载到总线上,即便是在上电之前。作为外部编程器的替代方案,也可以使用系统管理µP在初始上电时对MAX16031进行编程。能够在没有特殊硬件的条件下方便地更新MAX16031的配置。

图2. MAX16031通过12V中等电压总线供电并且通过I²C接口编程
图2. MAX16031通过12V中等电压总线供电并且通过I²C接口编程

3.3V辅助电源供电,通过JTAG复用器编程

图3所示,MAX16031通过3.3V辅助电源供电。通过专用的JTAG线连接到测试点进行编程。本例中,3.3V必须在编程之前上电,I²C接口仍然连接到系统管理µP。

图3. MAX16031通过3.3V辅助电源供电并通过JTAG口编程
图3. MAX16031通过3.3V辅助电源供电并通过JTAG口编程

编程算法

MAX16031/MAX16032具有内置EEPROM,用于储存器件配置参数。上电后,EEPROM的内容被送入RAM寄存器。RAM和EEPROM均可通过JTAG和I²C接口访问。若要正确编程MAX16031/MAX16032,则所需参数必须设置在EEPROM—请参见表1所示存储器表。

表1. MAX16031/MAX16032存储器表
表1. MAX16031存储器表

配置文件

MAX16031评估板(EV kit)软件提供两种类型的配置软件。一种是通过选择System Save Configuration...生成的可读XML文件,该文件可用于I²C编程。另一种是通过选择System Save as SVF...生成的文件,该文件为连续矢量格式(SVF),第三方JTAG工具和在线PCB测试可利用该文件进行JTAG编程。

文件格式如下:

[Registers]
register number=register value
.
.
.
所有数值采用十进制,寄存器从23到98。这些地址对应于RAM寄存器,而非EEPROM地址。为了得到EEPROM地址,需要将RAM寄存器地址加上128。

关于SVF文件格式的详细信息,请参考Serial Vector Format Specification (English only, PDF, 85.2kB)。

I²C编程步骤

在编程MAX16031/MAX16032的EEPROM配置内存时,必须首先确定寄存器r5Fh[0]上的配置锁定位为零。如果不是零,则在该位上写入‘1’将其清零。若要写入EEPROM,进入EEPROM页面,加载开始地址(97h),然后发送一系列块烧录命令(I²C)或写命令(JTAG)。关于相应I²C协议的详细信息,请参阅MAX16031/MAX16032的数据资料。

以下为典型EEPROM编程过程的伪码:
SendByte(5Fh)                 // Check lock bit
If ReadByte() & 1 == 1 Then
  WriteByte(5Fh, 01h)         // Clear lock bit if needed
Loop Address from 97h to DFh 
  SendByte(Address)           // Load address
  WriteBlock(Data, 10h)       // Write a block of 16 bytes
  Wait(16 * 11 milliseconds)  // Wait for programming
  SendByte(Address)
  ReadBlock(DataRead, 10h)    // Read back data block
  If DataRead != Data Then    
    RepeatCount = RepeatCount + 1
    If RepeatCount == 3 Then
      Fail
  Else
    RepeatCount = 0
    Address = Address + 10h     // Advance to next block
Success

JTAG编程步骤

对器件进行编程时,使用标准的第三方JTAG工具、MAX16031/MAX16032 BSDL文件、评估软件生成的SVF数据文件以及JTAG编程电缆或在电路PCB检测仪。可以下载BSDL文件。

需要注意的是,评估软件生成的SVF文件对IDCODE寄存器进行测试,以下是MAX16031评估软件生成的SVF文件中的一段代码:
ENDDR IDLE;
ENDIR IDLE;
SIR 5 TDI(00) TDO(01);
SDR 32 TDI(00000000) TDO(00001197) MASK(0FFFFFFF); 
TDO(00001197)声明验证了完整的IDCODE声明,包括器件版本号。如果使用不同版本号的器件,该声明将失效。如需使SVF文件忽略IDCODE寄存器中的版本号区域,使用以下代码行:
SDR 32 TDI(00000000) TDO(00001197) MASK(0FFFFFFF);
模板声明忽略4位版本号区域(见表2)。

表2. IDCODE寄存器
  Revision (4 Bits) Part Number (16 Bits) Manufacturer (11 Bits)
Binary 0010 0000 0000 0000 0001 00011001011          1
Hex 2 0001 197

下一步
EE-Mail 订阅EE-Mail,接收关于您感兴趣的新文档的自动通知。
© , Maxim Integrated Products, Inc.
The content on this webpage is protected by copyright laws of the United States and of foreign countries. For requests to copy this content, contact us.
APP 4283:
应用笔记 4283,AN4283, AN 4283, APP4283, Appnote4283, Appnote 4283