基于EEPROM的系统监视器MAX16031/MAX16032的在线编程

描述

MAX16031/MAX16032系统监视器焊接到应用电路板后即可进行编程。这意味着只需要库存未编程的设备,并且可以在制造测试期间将最新版本的配置信息写入设备。本应用笔记详细介绍了几种简单的措施,确保应用电路允许编程硬件共享I²C或JTAG总线,并在编程期间为器件供电。还为I²C总线和JTAG总线提供了编程算法。

MAX16031/MAX16032基于EEPROM的系统管理器是系统监控器件,用于监测<>个电源电压、<>个温度传感器和<>个电流。将每个参数与四个不同的阈值进行比较,并且可以配置多个故障输出以在各种条件下置位。

这些监视器包括一个SMBus™兼容的I²C接口和一个JTAG接口,这两个接口都可以访问所有器件寄存器并对内部配置EEPROM进行编程。MAX16031/MAX16032是在线可编程的,只要遵循一些简单的准则即可。

提供电力

MAX16031/MAX16032具有3V至14V的电源电压范围。某些应用程序连接 V抄送至 12V 中间总线电压,而其他连接 V抄送至 3.3V 辅助电源。

可以使用部分供电的电路板对这些设备进行编程。例如,可以在没有任何其他电源的情况下施加3.3V辅助电压,或者可以在所有下游电源被强制关闭时施加12V中间总线电压,以防止电源到达任何其他电路。另一种选择是使用常用的双二极管,以便从编程连接器供电。由于二极管引起的压降,当MAX16031/MAX16032由12V总线供电时,这种方法效果最佳。

共享巴士

当微处理器(μP)以外的某些器件在正常工作期间需要与MAX16031/MAX16032通信时,会出现潜在问题。例如,当系统监控μP需要访问MAX16031/MAX16032的ADC读数时。当电路板未上电或部分上电且MAX16031/MAX16032正在编程时,连接到I²C或JTAG总线的其他器件可能会产生干扰。最简单的解决方案是通过JTAG接口对MAX16031/MAX16032进行编程,并将监控μP连接到I²C接口。如果μP支持真正的漏极开路I²C总线I/O(即引脚缺少ESD二极管至V抄送),并且上拉电阻足够大,可以共享I²C总线进行编程和正常工作。如果μP的I²C总线不是漏极开路,ESD二极管将箝位母线并干扰编程。共享JTAG可能需要由3.3V供电的JTAG总线多路复用器。

如果系统μP没有真正的漏极开路I²C总线,则可以使用图1所示的电路在μP和编程I²C总线之间自动切换。

电源

图1.MAX16031通过MAX4525多路复用器/开关共享I²C总线。

图4525所示的MAX1多路复用器在连接到系统μP的I²C和连接到编程测试点的I²C之间切换。开关由 V 控制抄送系统μP。如果 V抄送不施加,但12V,开关将I²C连接到编程测试点。一次 V抄送施加,开关将I²C连接到系统μP。 注意,在编程模式下,连接到测试点的编程硬件必须提供适当的I²C上拉电阻。

应用电路示例

下图显示了为在线编程设计的两种不同的应用电路。

由12V中间总线供电,并通过I²C总线编程

图2所示,MAX16031由12V中间总线供电。双通道二极管允许编程连接器供电,编程连接器也连接到MAX16031的I²C线路。它们与板载系统管理μP共享,具有漏极开路I²C输出,即使μP未上电,也不会加载总线。作为外部编程器的替代方案,系统管理μP还可以在初始上电时对MAX16031进行编程。这也使得无需特殊硬件即可轻松更新MAX16031的配置。

电源

图2.MAX16031由12V中间总线供电,并通过I²C总线进行在线编程。

由3.3V辅助总线供电,并通过JTAG端口编程

图3所示为MAX16031由3.3V辅助总线供电。编程是通过专用的JTAG线完成的,这些线路被带到编程测试点。在本例中,必须先提供3.3V辅助总线,然后才能完成编程。I²C接口仍连接到系统管理μP。

电源

图3.MAX16031由3.3V辅助总线供电,通过JTAG端口编程。

编程算法

MAX16031/MAX16032内置EEPROM,用于存储器件配置参数。接通电源后,EEPROM的内容被传输到RAM寄存器。RAM和EEPROM都可以从JTAG和I²C接口访问。为了正确编程MAX16031/MAX16032,必须根据EEPROM编程所需参数——参见表1中的存储器图。

表 1.MAX16031/MAX16032存储器图
 

电源

配置文件

MAX16031评估板(EV kit)软件提供两种类型的配置文件。一个是通过选择系统

电源

保存配置生成的人类可读的文本文件...此文件可用于I²C编程。第二个是通过选择系统

电源

另存为 SVF 生成的...该文件采用串行矢量格式(SVF),许多PLD供应商用于JTAG编程。

文本文件格式如下:

[Registers]

register number=register value

. . .

所有值均为十进制。寄存器从 23 开始,到 98。这些地址对应于RAM寄存器,而不是EEPROM地址。要获取EEPROM地址,请在RAM寄存器地址上加128。

SVF 文件格式在串行矢量格式规范 (PDF, 85.2kB) 中有更详细的描述。

I²C编程程序

要对MAX16031/MAX16032的EEPROM配置存储器进行编程,首先需要确保寄存器r5Fh[0]中的配置锁紧位为零。如果它不为零,则在该位上写一个“1”以清除它。要写入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);

mask 语句忽略 4 位修订代码字段(请参阅表 2)。

 

  修订版(4 位) 部件号(16 位) 制造商(11 位)
二元的 0010 0000 0000 0000 0001 00011001011 1
十六进制 2 0001 197

 

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分