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

描述

MAX16046–MAX16049系统管理器焊接到应用电路板后即可编程。这意味着只需要库存未编程的设备,并且可以在制造测试期间将最新版本的配置信息写入设备。一些简单的措施可确保应用电路允许编程硬件共享I²C或JTAG总线,并在编程期间为器件供电。为I²C总线和JTAG总线提供编程算法。

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

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

提供电力

MAX16046–MAX16049具有3V至14V的电源电压范围。典型应用连接 V抄送至 12V 中间总线电压或 3.3V 辅助电源。

可以使用部分上电板对MAX16046–MAX16049进行编程。例如,可以在没有任何其他电源的情况下施加3.3V辅助电压,或者可以施加12V中间总线电压;所有下游电源都应关闭,因为此时未对系统管理器进行编程。另一种选择是使用常用的双二极管,以允许从编程连接器供电。由于二极管引起的压降,当MAX16046–MAX16049由12V总线供电时,这种方法效果最好。

如果不使用二极管OR-ing,并且MAX16046–MAX16049在电路板上供电进行编程,则必须特别注意时序输出的状态,以防止任何下游电源过早导通。

未编程时,MAX16046–MAX16049具有高阻输出。具有高电平有效使能输入的电源应具有下拉电阻,具有低电平有效使能输入的电源应具有上拉电阻。排序输出可配置为推挽式或漏极开路。由于漏极开路配置需要一个外部上拉电阻,因此应仅与低电平有效使能输入配合使用。

不建议将MAX16046–MAX16049连接到JTAG链中,因为电源可能不会施加到链路中的上游器件,从而有效地切断了对MAX16046–MAX16049的访问。相反,首选JTAG多路复用器或专用JTAG端口。

共享巴士

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

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

总线

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

图4525所示的MAX1多路复用器在连接到系统μP的I²C和连接到编程测试点的I²C之间切换。开关由 V 控制抄送系统μP。如果 V抄送不施加,但12V,开关将I²C连接到编程测试点。一次 V抄送施加,开关将I²C连接到系统μP。

应用电路示例

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

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

图2电路通过16046V中间总线为MAX12供电,中间总线由模拟使能线EN监视。当12V总线上升到EN上电阻分压器设定的门限以上时,MAX16046尝试排序(如果已编程)。未编程的MAX16046不执行任何操作,时序输出保持在高阻电平。

总线

图2.MAX16046由12V中间总线供电,通过I²C接口编程。

一个电源使用高电平有效推挽使能信号,另一个电源使用低电平有效漏极开路使能信号。适当的上拉和下拉电阻可防止这些电源在未编程输出处于高阻抗电平时导通。

需要注意的是,推挽输出不能上拉到V以上DBP,并且漏极开路输出不能被拉高到6V以上。I²C连接被引入编程测试点;编程硬件必须提供适当的上拉电阻。电路很简单,因为电路板上没有其他器件需要连接到I²C总线。

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

图3所示,MAX16046从3.3V辅助电源供电。JTAG连接使用DS26900 JTAG多路复用器与其他器件共享,该多路复用器也由3.3V辅助电源供电。编程可通过提供3.3V电压来完成,而无需为12V中间总线上电。

总线

图3.MAX16046由3.3V辅助电源供电,通过DS26900 JTAG多路复用器进行编程。

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

图4所示为MAX16046通过二极管OR连接到12V中间总线供电,无需任何下游电源上电即可安全供电。JTAG和电源连接被带到编程测试点。

总线

图4.MAX16046由12V中间总线供电,通过JTAG编程。

编程算法

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

表 1.MAX16046存储器映射

总线

配置文件

MAX16046评估板(EV kit)软件提供两种类型的配置文件。一个是通过选择“文件将配置另存为”生成的人类可读的 XML 文件。此文件可用于I²C编程。第二个是通过选择“文件另存为”生成的。储值支付工具。该文件采用串行矢量格式(SVF),由第三方JTAG工具和在线PCB测试仪用于JTAG编程。

XML文件可以在许多Web浏览器中以颜色编码的分层格式查看。评估板软件生成的XML文件分为几个部分,包含设置标签信息和寄存器数据。有两个感兴趣的部分:Config_Register部分,其中包含可加载到 EEPROM 中的配置值,以及User_Register部分,其中包含要加载到用户 EEPROM 中的值。

在每个部分中,寄存器标记指定要加载到特定地址的值。寄存器标签的格式如下:

所有值均为十进制。这些地址对应于RAM寄存器和EEPROM地址。请注意,RAM 寄存器 0 到 14 是 DAC 寄存器,但地址 0 到地址 14 的 EEPROM 是保存的故障数据。EEPROM 编程例程应从地址 15 开始。

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文件以及评估板软件通过JTAG编程电缆或在线PCB测试仪生成的SVF数据文件。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);

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

 

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

 

审核编辑:郭婷

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

全部0条评论

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

×
20
完善资料,
赚取积分