MAX16065–MAX16068和MAX16070/MAX16071微处理器监控器焊接到应用电路板后可以编程。这意味着只需要库存未编程的设备,并且可以在制造测试期间将最新版本的配置信息写入设备。一些简单的措施可确保应用电路允许编程硬件共享SMBus™或JTAG总线,并在编程期间为器件供电。本应用笔记提供了SMBus和JTAG总线的编程算法。
介绍
MAX16065/MAX16066、MAX16067、MAX16068和MAX16070/MAX16071产品对复杂多电压系统中的电源进行排序和监测。电源由数字比较器监控,并使用可编程状态机进行排序。表 1 总结了这些产品系列中的器件。
表 1.系统管理器摘要
部分 | 监控输入 | 排序输出 |
MAX16065 | 12 | 12 |
MAX16066 | 10 | 8 |
MAX16067 | 6 | 6 |
MAX16070 | 12 | — |
MAX16071 | 8 | — |
MAX16068 | 6 | — |
这些器件包括一个SMBus兼容接口和一个JTAG接口,通过这些接口可以访问所有器件寄存器,并对内部配置闪存进行编程。这些器件都是在线可编程的,即,只要遵循一些简单的准则,就可以在焊接到应用电路板后对其进行编程。在线编程还意味着只需要库存未编程的器件,并且可以在制造测试期间将最新版本的配置信息写入器件。
提供电力
这些器件的电源电压范围为 2.8V 至 14V。典型应用连接 V抄送至 12V 中间总线电压或 3.3V 辅助电源。
对于具有排序输出的Maxim系统管理器,可以使用部分供电板对器件进行编程。例如,可以在没有任何其它电源的情况下施加3.3V辅助电压,或者可以施加12V中间总线电压。所有下游电源都应关闭,因为此时设备未编程。另一种选择是使用常用的双二极管,以允许从编程连接器供电。由于二极管会造成压降,当器件由12V总线供电时,这种方法效果最佳。
如果未使用二极管OR-ing,并且系统管理器要在电路板上施加电源的情况下进行编程,则必须特别注意时序输出的状态。这是为了防止任何下游电源过早打开。
未编程时,系统管理器具有高阻抗输出。具有高电平有效使能输入的电源应具有下拉电阻;具有/使能输入的电源应具有上拉电阻。排序输出可配置为推挽式或漏极开路。由于漏极开路配置需要一个外部上拉电阻,因此应仅与低电平有效使能输入配合使用。
不建议连接JTAG链中的系统管理器,因为电源可能不会施加到链中的上游设备,从而有效地切断对设备的访问。相反,首选JTAG多路复用器或专用JTAG端口。无法控制电源时序的系统管理器可以安全地包含在JTAG链中。
共享巴士
当IC在正常工作期间需要与系统管理器通信时,会出现潜在问题。例如,系统监控微处理器需要访问MAX16065的ADC读数。当电路板未上电或部分上电且MAX16065正在编程时,连接到SMBus或JTAG总线的其他器件可能会产生干扰。最简单的解决方案是通过JTAG接口对MAX16065进行编程,并将监控微处理器连接到SMBus接口。如果微处理器支持真正的漏极开路SMBus总线I/O(即缺少ESD二极管至V的引脚)抄送),如果上拉电阻足够大,则可以共享SMBus接口以进行编程和正常工作。如果微处理器的SMBus线路不是漏极开路,ESD二极管将箝位总线线路并干扰编程。
如果系统微处理器没有真正的漏极开路SMBus线路,则可以使用图1所示的电路在微处理器和编程SMBus接口之间自动切换。
图1.系统管理器通过MAX4525多路复用器/开关共享其SMBus线路。
图4525所示的MAX1多路复用器在连接到系统微处理器的SMBus线路和连接到编程测试点的SMBus线路之间切换。开关由 V 控制抄送的系统微处理器。如果 V抄送不施加,但 12V 是,开关将 SMBus 接口连接到编程测试点。一次 V抄送应用,交换机将 SMBus 线路连接到系统微处理器。
应用电路示例
下图显示了为在线编程设计的三种不同的应用电路。
由 12V 中间总线供电,并通过 SMBus 接口进行编程
图2电路通过16065V中间总线为MAX12供电,中间总线由模拟使能线EN监视。当12V总线上升到EN电阻分压器设置的门限以上时,MAX16065尝试排序(如果已编程)。未编程的MAX16065不执行任何操作,时序输出保持在高阻电平。
图2.MAX16065由12V中间总线供电,通过SMBus接口编程。
一个电源使用高电平有效推挽使能信号,另一个电源使用低电平有效漏极开路使能信号。适当的上拉和下拉电阻可防止这些电源在未编程输出处于高阻抗电平时导通。
需要注意的是,推挽输出不能上拉到V以上DBP;漏极开路输出不能上拉至6V以上。SMBus 连接被带到编程测试点;编程硬件必须提供适当的上拉电阻。电路很简单,因为电路板上没有其他设备需要连接到SMBus线路。
由3.3V辅助电源供电,并通过JTAG多路复用器进行编程
图3所示,MAX16067从3.3V辅助电源供电。JTAG连接使用DS26900 JTAG多路复用器与其他器件共享,该多路复用器也由3.3V辅助电源供电。编程可通过提供3.3V电压来完成,而无需为12V中间总线上电。
图3.MAX16067由3.3V辅助电源供电,通过DS26900 JTAG多路复用器进行编程。
由12V中间总线供电,并通过JTAG编程
图4所示为MAX16066通过二极管OR-ed连接到12V中间总线供电,无需任何下游电源上电即可安全供电。JTAG和电源连接被带到编程测试点。
图4.MAX16066由12V中间总线供电,通过JTAG编程。
编程算法
Maxim电源管理器件内置闪存,用于存储器件配置参数。接通电源后,闪存的内容将传输到RAM寄存器。RAM和闪存都可以从JTAG和SMBus接口访问。要正确编程设备,必须将所需的参数编程到闪存中。请参阅图 5 中的内存映射。
图5.系统管理器内存映射。
配置文件
MAX16065评估板软件提供两种类型的配置文件。一个是通过选择文件另存为生成的标准英特尔十六®进制文件。此文件可用于 SMBus 编程。第二个文件是通过选择“文件导出到 SVF 文件”生成的。该文件采用串行矢量格式(SVF),由第三方JTAG工具和在线PCB测试仪用于JTAG编程。
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
要使闪存写入操作成功,写入在 8 字节边界对齐的 8 字节块非常重要。(地址的三个 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 语句,包括设备修订代码。如果设备与不同的修订代码一起使用,则此语句将失败。
SDR 32 TDI(00000000) TDO(18001197) MASK(0FFFFFFF);
表 2.IDCODE 寄存器位图
修订版(4 位) | 部件号(16 位) | 制造商(11 位) | ||
二元的 | 0001 | 1000 0000 0000 0001 | 00011001011 | 1 |
十六进制 | 1 | 8001 | 197 |
表 3.部件 ID 码寄存器
部分 | 身份码 |
MAX16065 | _8001197 |
MAX16066 | _8002197 |
MAX16067 | _8003197 |
MAX16070 | _8005197 |
MAX16071 | _8006197 |
MAX16068 | _8004197 |
注意:下划线表示 4 位修订代码。这可能会发生变化——请参阅器件数据手册。
全部0条评论
快来发表一下你的评论吧 !