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 |
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !