应用笔记 4285

MAX16046–MAX16049 EEPROM可编程系统管理器的在线编程

By: Eric Schlaepfer

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

MAX16046–MAX16049 EEPROM可编程系统管理器是电源排序器、监测器和裕量调节器,可控制多达12路电源。电源由三个数字比较器监测,由可编程DAC输出调节裕量,并且由可编程状态引擎对其进行排序。

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

供电

MAX16046–MAX16049的电源电压范围为3V至14V。典型应用中将VCC连接至12V中等电压总线或3.3V辅助电源。

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

如果不使用二极管逻辑“或”电路,而在电路板通电时对MAX16046–MAX16049进行编程,则必须注意排序输出的状态,以防止下游电源过早打开。

MAX16046–MAX16049在编程之前为高阻输出。高电平有效的电源使能输入应具有下拉电阻,而低电平有效的电源使能输入应具有上拉电阻。排序输出可设置为推挽输出或开漏输出。因为开漏配置需要外部上拉电阻,所以只能采用低电平有效的使能输入。

最好不要将MAX16046–MAX16049连接到JTAG链路,因为链路中上游器件可能没有供电,从而阻止对MAX16046–MAX16049的访问。建议首选JTAG复用器或专用JTAG接口。

共用总线

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

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

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

图1所示MAX4525复用器在连接到系统µP的I²C和连接到编程测试点上的I²C之间进行切换。开关由系统µP的VCC控制。如果采用12V电源供电,而不是VCC供电,开关将I²C连接至编程测试点。一旦施加VCC电源,开关将I²C连接至系统µP。

应用电路实例

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

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

图2所示电路通过12V中等电压总线向MAX16046供电,由模拟使能端EN监测。当12V总线电压超过EN端电阻分压器设置的门限时,如果器件已经编程完毕,则MAX16046尝试排序。未经编程的MAX16046则没有任何反应,且排序输出保持高阻态。

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

一路电源使用高电平有效的推挽使能控制,而其它电源采用低电平有效的开漏使能控制。当未经编程的输出处于高阻态时,适当的上拉、下拉电阻可防止电源打开。

需要特别注意的是:推挽式输出不能上拉到VDBP以上的电压,开漏输出不能上拉到6V以上的电压。I²C连接被引至编程测试点,编程硬件必须提供适当的上拉电阻。该电路非常简单,因为电路板上没有其它器件需要连接到I²C总线。

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

图3所示,MAX16046通过3.3V辅助电源供电。用一个DS26900 JTAG复用器与其它器件共用JTAG连接,该DS26900 JTAG复用器也由3.3V辅助电源供电。通过3.3V供电时无需施加12V中等电压总线即可完成编程。

图3. MAX16046通过3.3V辅助电源供电并通过DS26900 JTAG复用器编程
图3. MAX16046通过3.3V辅助电源供电并通过DS26900 JTAG复用器编程

12V中等总线供电,通过JTAG编程

图4所示,MAX16046通过连接到12V中等电压总线的二极管逻辑“或”电路供电,可以安全供电,不会对下游电路产生影响。JTAG和电源连接被引至编程测试点。

图4. MAX16046通过一个12V中等电压总线供电并通过JTAG编程
图4. MAX16046通过一个12V中等电压总线供电并通过JTAG编程

编程算法

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

表1. MAX16046存储器表
表1. MAX16046存储器表

配置文件

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

XML文件可以在各种web浏览器上以彩色编码的分层格式查看。EV软件生成的XML文件被分成几个片段并且包含设置选项卡信息和寄存器数据。有两个重要部分:包含被加载到EEPROM的配置值的Config_Register部分和包含加载到用户EEPROM的User_Register部分。

每一部分中,Register标签指定加载到特定地址的值。该寄存器标签的格式为:
<Register Address="{register number}" Value="{register value}"
Description="{text description of register}"/>
所有值均为十进制。这些地址对应RAM寄存器和EEPROM地址。请注意,RAM寄存器0至14为DAC寄存器,而地址0至地址14的EEPROM为保存的故障数据。EEPROM编程应从地址15开始。

关于XML文件格式的详细信息,请访问XML Developer Center

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

I²C编程步骤

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

以下为一个典型EEPROM编程过程的逻辑代码:
SendByte(5Dh)                 // Check lock bit
If ReadByte() & 2 == 2 Then
  WriteByte(5Dh, 02h)         // Clear lock bit if needed
SendByte(9Ah)                 // Access EEPROM page
Loop Address from 0Fh to 7Dh 
  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
SendByte(9Bh)                 // Return to default page
Success
若要写入用户EEPROM,可采用相同步骤,仅用地址范围9Ch至FFh代替0Fh至7Dh即可。

JTAG编程步骤

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

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

表2. IDCODE寄存器
  Revision (4 Bits) Part Number (16 Bits) Manufacturer (11 Bits)
Binary 0001 0000 0000 0000 0001 00011001011          1
Hex 1 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 4285:
应用笔记 4285,AN4285, AN 4285, APP4285, Appnote4285, Appnote 4285