应用笔记 4715

MAX16065–MAX16068和MAX16070/MAX16071闪存配置系统管理器的在电路编程

By: Eric Schlaepfer

摘要 : MAX16065–MAX16068与MAX16070/MAX16071微处理器监控电路可以在焊接到电路板之后进行编程。这意味着只需存储没有编程的器件,可以在生产测试中写入最新的配置信息。进行一些简单的测量,确保应用电路能够通过SMBus™或JTAG总线对硬件编程,并在编程期间为器件供电。本应用笔记介绍了用SMBus和JTAG总线的编程算法。

引言

MAX16065/MAX16066MAX16067MAX16068MAX16070/MAX16071能够在复杂的多电压供电系统中进行电压排序与监测。利用数字比较器对电源进行监测,通过可编程状态机进行电源排序,表1概括了该系列产品的器件特性。

表1. 系统管理器总结
Part Monitoring Inputs Sequencing Outputs
MAX16065 12 12
MAX16066 10 8
MAX16067 6 6
MAX16070 12
MAX16071 8
MAX16068 6

这些器件包含SMBus兼容接口和JTAG接口,通过这些接口可以访问所有的器件寄存器,并对内部配置闪存进行编程。这些器件都可以在电路编程,只需遵循一些简单的准则,即可在焊接应用电路板之后对器件进行编程。在电路编程还意味着只需存储尚未编程的器件,可以在生产测试中将最新配置信息写入器件。

供电

器件的供电范围为2.8V至14V,典型应用中将VCC连接到12V中等电压总线或3.3V辅助电源。

对于Maxim具有排序输出的系统管理器,可以用部分供电的电路板对器件编程。例如,可以仅使用3.3V辅助电源或12V中等电压总线供电。由于器件尚未进行编程,应关闭所有下游电源。另一选择是采用常见的双二极管,从编程连接器供电。由于二极管存在压降,这种方式比较适合12V总线供电的情况。

如果没有使用“或”逻辑二极管,系统管理器在编程时由板上电源供电,需要注意顺序输出的状态,以防过早打开下游电源。

没有编程时,系统管理器具有高阻输出。带高电平有效使能输入的电源应在使能端接下拉电阻;带低电平有效使能输入的电源应在使能端接上拉电阻。顺序输出可以配置成推挽式或开漏式控制,由于开漏式配置需要外接上拉电阻,只能配合低电平有效的使能输入使用。

不推荐将系统管理器连接到JTAG链路,因为电源可能不会对链路中的上游器件供电,从而切断了器件的访问路径。推荐使用JTAG复用器或特定的JTAG端口。如果系统管理器没有用于控制电源的供电顺序,则可安全地放置在JTAG链路中。

共享总线

正常工作时,IC需要与系统管理器进行通信时会产生一些潜在问题。例如,系统监控的微处理器需要读取MAX16065的ADC读数时,如果电路板还没有供电或部分供电,而MAX16065正在编程,连接在SMBus或JTAG总线的其它器件可能产生干扰。最简单的解决方案是通过JTAG接口对MAX16065编程,把监控微处理器连接到SMBus接口。如果微处理器支持真正的开漏SMBus总线I/O (引脚没有连接ESD保护二极管至VCC),如果上拉电阻足够大,编程和常规操作可共用SMBus接口。如果微处理器的SMBus总线不是开漏输出,ESD二极管将会钳位总线并干扰编程。

系统微处理器没有真正的开漏SMBus总线时,可以使用图1所示电路自动切换微处理器和编程SMBus接口。

图1. 通过MAX4525复用器/开关共享系统管理器的SMBus接口
图1. 通过MAX4525复用器/开关共享系统管理器的SMBus接口

图1中的MAX4525复用器可以自动连接SMBus总线与系统微处理器,或连接SMBus总线与编程测试点。系统微处理器的VCC控制开关切换。如果没有作用VCC,而是由12V供电,开关将SMBus接口连接到编程测试点。施加VCC后,开关将SMBus总线连接到系统微处理器。

应用电路举例

下图给出了设计用于在电路编程的三种不同电路。

由12V中等电源总线供电,通过SMBus接口编程

图2电路采用12V中等电源总线对MAX16065供电,通过模拟使能EN信号线监测。当12V总线上升到由EN连接的电阻分压器设定的门限值以上时,已经编程的MAX16065将尝试排序电源输出。没有编程的MAX16065不会有任何动作,排序输出仍然保持高阻抗状态。

图2. MAX16065由12V中等电源总线供电,通过SMBus接口编程。
图2. MAX16065由12V中等电源总线供电,通过SMBus接口编程。

一路电源采用高电平有效的推挽式使能控制信号,另一路电源采用低电平有效的开漏式使能控制信号。增加适当的上拉、下拉电阻可以防止在未经编程的输出处于高阻态时错误地打开电源。

重要的是,推挽式输出不能上拉到VDBP以上;开漏输出不能上拉到6V以上。SMBus连接到编程测试点;编程硬件电路必须提供适当的上拉电阻。此电路非常简单,无需其它板上器件即可连接SMBus总线。

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

图3中,MAX16067由3.3V辅助电源供电,通过DS26900 JTAG复用器与其它器件共用JTAG接口,DS26900也由3.3V辅助电源供电。编程时只需提供3.3V电源,无需打开12V中等电源总线。

图3. MAX16067由3.3V辅助电源供电,通过DS26900 JTAG复用器编程。
图3. MAX16067由3.3V辅助电源供电,通过DS26900 JTAG复用器编程。

从12V中等电源总线供电,通过JTAG接口编程

图4所示MAX16066通过连接到12V中等电源总线的二极管“或”逻辑电路供电,可安全加载电源而且不会对下游电路供电,JTAG和电源连接到编程测试点。

图4. MAX16066由12V中等电源总线供电,通过JTAG接口编程。
图4. MAX16066由12V中等电源总线供电,通过JTAG接口编程。

编程算法

Maxim的电源管理器件集成了闪存存储器,用于存储器件的配置参数。电源上电时,闪存中的内容加载到RAM寄存器。RAM和闪存都可通过JTAG或SMBus接口访问。为了正确编程器件,所要求的参数必须编程到闪存存储器内。存储器地址如图5所示。

图5. 系统管理器存储器地址
图5. 系统管理器存储器地址

配置文件

MAX16065EVKIT软件提供两种配置文件:一种是标准Intel® HEX文件,通过选择File Save As生成,该文件可用于SMBus编程;第二种文件通过选择File Export to SVF File生成,这种矢量格式(SVF)文件用于第三方的JTAG工具和JTAG编程的在电路PCB测试。

关于Intel HEX格式说明超出了本文探讨的内容范围,详细资料请参见:http://en.wikipedia.org/wiki/Intel_HEX

关于SVF文件格式的详细说明,请参见:www.asset-intertech.com/support/svf.pdf

SMBus编程过程

编程闪存配置存储器时,首先要保证寄存器r8Ch (配置存储器页面,不是闪存页面)的存储器锁存位为零。在该寄存器写入00,清除所有存储器锁存位。将内容写入闪存时,首先要发送正确命令给闪存存储器页,载入初始地址(8字节对齐),发送一系列数据块写指令。闪存按照8字节数据块编程,关于SMBus总线协议的详细信息请参考MAX16065数据资料。

以下给出了典型的闪存编程代码。
FlashPageOff()
UserFlashPageOff()
If ReadRegister(8Ch) != 0 Then WriteRegister(8Ch, 00h)
FlashPageOn()

Loop Address from 30h to 8Dh 
  SetAddress(Address)           // Load address
  WriteBlock(Data, 08h)         // Write a block of 8 bytes
  Wait(150 milliseconds)        // Wait for programming
SetAddress(Address)
ReadBlock(DataRead, 08h)     	// Read back data block
If DataRead != Data Then    
  Fail
Else
  Address = Address + 08h    	// Advance to next block
End Loop
FlashPageOff()                  // Return to default page
Success
写入用户闪存存储器时可以使用相同流程,但地址范围是00h至FFh (A0h–AFh保留区除外)。

为保证成功写入闪存,必须保证写入的8字节数据块对齐8字节边界(地址的3个LSB必须为零)。

JTAG编程过程

使用标准的第三方JTAG工具、MAX16065–MAX16068和MAX16070/MAX16071 BSDL文件和评估软件生成的SVF数据文件,通过JTAG编程电缆或在电路PCB测试电路对器件编程。BSDL文件可以从网站下载

注意,评估软件生成的SVF文件用于测试IDCODE寄存器。下列代码来自MAX16065评估软件生成的SVF文件:
ENDDR IDLE;
ENDIR IDLE;
SIR 5 TDI(00) TDO(01);
SDR 32 TDI(00000000) TDO(18001197);
TDO(18001197)声明检验完整的IDCODE状态,包括器件的修订代码。如果器件使用不同的修订代码,则该声明失效。如果要SVF文件忽略IDCODE寄存器的修订代码,使用如下程序代替:
SDR 32 TDI(00000000) TDO(18001197) MASK(0FFFFFFF);
上述声明忽略了4位修订代码(参见表2)。IDCODE对应于每个系统管理器的型号,参见表3

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

表3. 器件的IDCODE寄存器
Part IDCODE
MAX16065 _8001197
MAX16066 _8002197
MAX16067 _8003197
MAX16070 _8005197
MAX16071 _8006197
MAX16068 _8004197
注:下划线代表4位修订代码,可能会更改这些代码—请参考器件数据资料。

下一步
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 4715:
应用笔记 4715,AN4715, AN 4715, APP4715, Appnote4715, Appnote 4715