MAX16065~MAX16068およびMAX16070/MAX16071のフラッシュプログラマブルなシステムマネージャのためのインサーキットプログラミング

要約

マイクロプロセッサ監視回路のMAX16065~MAX16068、およびMAX16070/MAX16071は、アプリケーション回路基板にはんだ付けした後にプログラムすることができます。これは、プログラムされていないデバイスのみストックしておく必要があり、また製造テスト時に最新バージョンの設定情報をデバイスに書き込むことができることを意味します。いくつかの簡単な手段によって、アプリケーション回路においてプログラミングハードウェアにSMBusまたはJTAGバスラインを共有させて、プログラミング中にデバイスに給電させることをできるようにします。このアプリケーションノートは、SMBusおよびJTAGバスの両方のプログラミングアルゴリズムを提供しています。

はじめに

MAX16065/MAX16066、MAX16067、MAX16068、およびMAX16070/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の補助電源に接続します。

シーケンス出力を備えたマキシムのシステムマネージャの場合、部分的に給電された基板でデバイスをプログラムすることができます。たとえば、3.3Vの補助電圧を他の電源なしで印加することができます。また、12Vの中間バス電圧を印加することもできます。デバイスはその時点でプログラムされていないため、すべてのダウンストリーム電源がオフにされている必要があります。別のオプションは、一般に利用可能なデュアルダイオードを使用してプログラミングコネクタから給電可能にする方法です。ダイオードによって生じる電圧ドロップのため、この方法はデバイスが12Vのバスから給電されたときに最も良好に動作します。

ダイオードOR-ingが使用されず、システムマネージャが基板に印加された電力でプログラムされる場合、シーケンス出力の状態に注意を払う必要があります。これは、ダウンストリーム電源が早期ターンオンするのを防ぐためです。

プログラムされていない場合、システムマネージャはハイインピーダンス出力を備えています。アクティブハイイネーブル入力の電源は、プルダウン抵抗を必要とします。アクティブローイネーブル入力の電源は、プルアップ抵抗を必要とします。シーケンス出力は、プッシュプルまたはオープンドレインとして構成することができます。オープンドレイン構成は、外付けプルアップ抵抗を必要とするため、アクティブローイネーブル入力のみで使用する必要があります。

システムマネージャをJTAGチェーンに接続することは推奨されません。これは、チェーンのアップストリームデバイスに電力を印加することができず、デバイスへのアクセスが事実上切断されるためです。むしろ、JTAGマルチプレクサか専用のJTAGポートが推奨されます。電源シーケンスに対する制御を持たないシステムマネージャは、JTAGチェーンに安全に組み込むことができます。

バスの共有

通常動作中にICがシステムマネージャと通信する必要があるとき、潜在的な問題が生じます。たとえば、システム監視回路マイクロプロセッサがMAX16065のADC読取りにアクセスする必要があるときです。基板が給電されない、もしくは部分的に給電され、MAX16065がプログラムされる場合、SMBusまたはJTAGバスに接続されている他のデバイスが干渉する可能性があります。最も簡単なソリューションは、MAX16065をJTAGインタフェースからプログラムして、監視回路プロセッサをSMBusインタフェースに接続する方法です。マイクロプロセッサが真のオープンドレインSMBusバスI/O (つまり、VCCに対するESDダイオードを持っていないピン)をサポートしており、プルアップ抵抗が十分大きい場合、プログラミングと通常動作の両方でSMBusインタフェースを共有することが可能です。マイクロプロセッサのSMBusラインがオープンドレインでない場合、ESDダイオードがバスラインをクランプし、プログラミングに干渉します。

システムマイクロプロセッサが真のオープンドレインSMBusラインを持たない場合、図1のような回路を使用して、マイクロプロセッサとプログラミングSMBusインタフェースを自動的に切り替えることができます。

図1. システムマネージャはMAX4525マルチプレクサ/スイッチを通じてSMBusラインを共有しています。

図1. システムマネージャはMAX4525マルチプレクサ/スイッチを通じてSMBusラインを共有しています。

図1のMAX4525マルチプレクサは、システムマイクロプロセッサに接続されたSMBusラインとプログラミングテストポイントに接続されたSMBusラインの間で切り替えます。スイッチは、システムマイクロプロセッサのVCCによって制御されます。VCCが印加されず12Vが印加された場合、スイッチはSMBusインタフェースをプログラミングテストポイントに接続します。VCCが印加されると、スイッチはSMBusラインをシステムマイクロプロセッサに接続します。

アプリケーション回路例

下図は、インサーキットプログラミング用に設計された3つの異なるアプリケーション回路を示しています。


12V中間バスから給電してSMBusインタフェースからプログラムする場合


図2の回路は、MAX16065に12Vの中間バスから給電して、それをアナログイネーブルラインENによって監視しています。12Vのバスが上昇して、EN上の抵抗分圧器によってセットされたスレッショルドを超えると、MAX16065はプログラムされているシーケンスを試みます。プログラムされていないMAX16065は何も実行せず、シーケンス出力はハイインピーダンスレベルに維持されます。

図2. MAX16065は12Vの中間バスから給電され、SMBusインタフェースを通じてプログラムされます。

図2. MAX16065は12Vの中間バスから給電され、SMBusインタフェースを通じてプログラムされます。

1つの電源はアクティブハイ、プッシュプルイネーブル信号を使用し、もう1つはアクティブロー、オープンドレインイネーブル信号を使用します。適切なプルアップおよびプルダウン抵抗によって、プログラムされていない出力がハイインピーダンスレベルにある間、これらの電源がオンになるのを防ぎます。

プッシュプル出力はVDBPを超えてプルアップすることができないことに注意することが重要です。また、オープンドレイン出力は6Vを超えてプルアップすることはできません。SMBus接続は、プログラミングテストポイントに接続されています。プログラミングハードウェアによって、適切なプルアップ抵抗が提供される必要があります。回路基板上の他のデバイスはSMBusラインに接続する必要がないため、この回路は単純です。


3.3V補助電源から給電してJTAGマルチプレクサからプログラムする場合


図3では、MAX16067は3.3Vの補助電源から電力を供給されます。JTAG接続は、3.3Vの補助電源から同様に給電されるDS26900 JTAGマルチプレクサを使用して、他のデバイスと共有されます。プログラミングは、12Vの中間バスをパワーアップしなくても、3.3Vを供給することによって実行することができます。

図3. MAX16067は3.3Vの補助電源から給電され、DS26900 JTAGマルチプレクサを通じてプログラムされます。

図3. MAX16067は3.3Vの補助電源から給電され、DS26900 JTAGマルチプレクサを通じてプログラムされます。


12V中間バスから給電してJTAGインタフェースからプログラムする場合


図4は、ダウンストリーム電源をオンにせずに電力が安全に印加されるように、12Vの中間バスとのダイオードOR接続で給電されたMAX16066を示しています。JTAGおよび電源の接続は、プログラミングテストポイントに接続されています。

図4. MAX16066は12Vの中間バスから給電され、JTAGインタフェースを通じてプログラムされます。

図4. MAX16066は12Vの中間バスから給電され、JTAGインタフェースを通じてプログラムされます。

プログラミングアルゴリズム

マキシムのパワーマネージメントデバイスは、デバイス設定パラメータを格納するフラッシュメモリを内蔵しています。電源が印加されると、フラッシュの内容がRAMレジスタに転送されます。RAMとフラッシュメモリはいずれも、JTAGおよびSMBusインタフェースからアクセス可能です。デバイスを正しくプログラムするには、所望のパラメータをフラッシュメモリにプログラムする必要があります。図5のメモリマップを参照してください。

図5. システムマネージャメモリマップ

図5. システムマネージャメモリマップ

設定ファイル


MAX16065EVKITソフトウェアは、2タイプの設定ファイルを提供します。1番目のファイルは、標準のIntel® HEXファイルで、File Save As.を選択すると生成されます。このファイルは、SMBusプログラミングに使用することができます。2番目のファイルは、File Export to SVF File.を選択すると生成されます。このファイルは、サードパーティJTAGツールとJTAGプログラミング用のインサーキットPCBテスタで使用されるシリアルベクトルフォーマット(SVF)です。

Intel HEXフォーマットの説明は、このドキュメントの範囲を超えており、詳細については、http://en.wikipedia.org/wiki/Intel_HEXをご覧ください。

SVFファイル形式の詳細については、www.asset-intertech.com/support/svf.pdfをご覧ください。


SMBusプログラミング手順


フラッシュ設定メモリをプログラムするには、最初に、レジスタr8Ch (設定メモリページ。フラッシュページではない)のメモリロックビットがゼロであることを確認します。00をレジスタに書き込み、すべてのメモリロックビットをクリアします。フラッシュメモリに書き込むには、該当するコマンドを送出してフラッシュメモリページに入り、先頭アドレス(8バイト境界に合わせること)をロードして、一連のBlock Writeコマンドを送出します。フラッシュメモリは8バイトブロックでプログラムされます。SMBusプロトコルの詳細については、MAX16065のデータシートを参照してください。

標準的なフラッシュメモリプログラミング処理の擬似コードは次のようになります。


FlashPageOff()
UserFlashPageOff()
If ReadRegister(8Ch) != 0 Then WriteRegister(8Ch, 00h)
FlashPageOn()

Loop Address from 30h to 8Dh 
  SetAddress(Address)           // アドレスをロードします。
  WriteBlock(Data, 08h)         // 1つの8バイトブロックを書き込みます。
  Wait(150 milliseconds)        // プログラミングを待ちます。
SetAddress(Address)
ReadBlock(DataRead, 08h)        // データブロックをリードバックします。
If DataRead != Data Then    
  Fail
Else
  Address = Address + 08h       // 次のブロックに進みます。
End Loop
FlashPageOff()                  // デフォルトページに戻ります。
Success

ユーザーフラッシュメモリに書き込むには、同じ処理を使用することができますが、アドレス範囲は00h~FFh (A0h~AFhのリザーブブロックは除く)となります。

フラッシュ書込み動作が成功するには、8バイト境界に合わせた8バイトブロックに書き込むことが重要です(アドレスの3 LSBがゼロである必要があります)。


JTAGプログラミング手順


標準のサードパーティJTAGツール、MAX16065~MAX16068、およびMAX16070/MAX16071のBSDLファイル、およびEVキットソフトウェアによって生成されたSVFデータファイルを使用し、JTAGプログラミングケーブルまたはインサーキットPCBテスタのいずれかでデバイスをプログラムします。BSDLファイルは、ダウンロードで入手可能です。

EVキットソフトウェアによって生成されるSVFファイルはIDCODEレジスタを試験することに注意してください。以下のコードスニペットは、MAX16065 EVキットソフトウェアによって生成された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ビットのレビジョンコードを表します。これは変更される場合があります。デバイスのデータシートを参照してください。