72
2016 Microchip Technology Inc. DS60001145R_JP - p. 1 PIC32 1.0 デバイスの概要 本書には、PIC32 32 ビット マイクロコントローラ ファミリのフラッシュ プログラミング仕様を記載し ています。 本書は、外部のプログラミング ツールを使うユーザ向 けのガイド書として構成されています。PIC32 を使っ たアプリケーションを開発するユーザは、デバイス ログラミングに対応済みの開発ツールを使う必要があ ります。 本書の主な内容は以下の通りです。 1.0 「デバイスの概要」 2.0 「プログラミングの概要」 3.0 「プログラミング手順」 4.0 「デバイスへの接続」 5.0 EJTAGICSP6.0 「疑似命令」 7.0 2 線式拡張 ICSP モードへの移行」 8.0 「デバイス ステータスの確認」 9.0 「デバイスの消去」 10.0 「シリアル実行モードへの移行」 11.0 「プログラミング エグゼクティブ (PE) のダウ ンロード」 12.0 「データブロックのダウンロード」 13.0 「ページ消去の開始」 14.0 「フラッシュ行書き込みの開始」 15.0 「デバイスメモリのベリファイ」 16.0 「プログラミング モードの終了」 17.0 「プログラミング エグゼクティブ」 18.0 「チェックサム」 19.0 「コンフィグレーション メモリとデバイス ID20.0 TAP コントローラ」 21.0 AC/DC 特性とタイミング要件」 補遺 A: PIC32 フラッシュメモリ マップ」 補遺 B: HEX ファイル フォーマット」 補遺 C: 「改訂履歴」 2.0 プログラミングの概要 プログラミング ツールを開発する際は、ターゲット バイスの内部フラッシュ プログラム動作と、フラッ シュ プログラミングを制御するための特殊機能レジ スタ (SFR) について理解する必要があります。なぜな ら、外部プログラミング ツールとそのソフトウェア は、これらの動作とレジスタを使うからです。これら の動作と制御レジスタの説明は、デバイス データシー ト内の「フラッシュ プログラムメモリ」と、 PIC32 ファミリ リファレンス マニュアル』の関連するセク ションに記載されています。本書と併せてこれらの文 書も参照する事を強く推奨します。 外部ツールを使ったプログラミング システムは、外部 プログラマツールとターゲット PIC32 デバイスによっ て構成されます。2-1 に、代表的なプログラミング システムの構成を示します。プログラマツールは、必 要なプログラミング手順を実行してプログラミング動 作を完了します。 2-1: プログラミング システムの構成 Target PIC32 Device CPU On-Chip Memory External Programmer PIC32 フラッシュ プログラミング仕様 注意 : この日本語版文書は参考資料としてご利用ください。最 新情報は必ずオリジナルの英語版をご参照願います。

PIC32 Pgm Specww1.microchip.com/downloads/jp/DeviceDoc/60001145R_JP.pdf2.3 拡張JTAG (EJTAG) 2線式および4線式インターフェイスはEJTAGプロト コルを使ってプログラマとデータを交換します。本書

Embed Size (px)

Citation preview

PIC32PIC32 フラッシュ プログラミング仕様

注意 : この日本語版文書は参考資料としてご利用ください。新情報は必ずオリジナルの英語版をご参照願います。

1.0 デバイスの概要

本書には、PIC32 32 ビット マイクロコントローラファミリのフラッシュ プログラミング仕様を記載しています。

本書は、外部のプログラミング ツールを使うユーザ向けのガイド書として構成されています。PIC32 を使ったアプリケーションを開発するユーザは、デバイス プログラミングに対応済みの開発ツールを使う必要があります。

本書の主な内容は以下の通りです。

• 1.0 「デバイスの概要」

• 2.0 「プログラミングの概要」

• 3.0 「プログラミング手順」

• 4.0 「デバイスへの接続」

• 5.0 「EJTAGと ICSP」• 6.0 「疑似命令」

• 7.0 「2 線式拡張 ICSP モードへの移行」

• 8.0 「デバイス ステータスの確認」

• 9.0 「デバイスの消去」

• 10.0 「シリアル実行モードへの移行」

• 11.0 「プログラミング エグゼクティブ (PE) のダウンロード」

• 12.0 「データブロックのダウンロード」

• 13.0 「ページ消去の開始」

• 14.0 「フラッシュ行書き込みの開始」

• 15.0 「デバイスメモリのベリファイ」

• 16.0 「プログラミング モードの終了」

• 17.0 「プログラミング エグゼクティブ」

• 18.0 「チェックサム」

• 19.0 「コンフィグレーション メモリとデバイス ID」

• 20.0 「TAP コントローラ」

• 21.0 「AC/DC 特性とタイミング要件」

• 補遺 A: 「PIC32 フラッシュメモリ マップ」

• 補遺 B: 「HEX ファイル フォーマット」

• 補遺 C: 「改訂履歴」

2.0 プログラミングの概要

プログラミング ツールを開発する際は、ターゲット デバイスの内部フラッシュ プログラム動作と、フラッシュ プログラミングを制御するための特殊機能レジスタ (SFR) について理解する必要があります。なぜなら、外部プログラミング ツールとそのソフトウェアは、これらの動作とレジスタを使うからです。これらの動作と制御レジスタの説明は、デバイス データシート内の「フラッシュ プログラムメモリ」と、『PIC32ファミリ リファレンス マニュアル』の関連するセクションに記載されています。本書と併せてこれらの文書も参照する事を強く推奨します。

外部ツールを使ったプログラミング システムは、外部プログラマツールとターゲットPIC32デバイスによって構成されます。図 2-1 に、代表的なプログラミングシステムの構成を示します。プログラマツールは、必要なプログラミング手順を実行してプログラミング動作を完了します。

図 2-1: プログラミング システムの構成

Target PIC32 Device

CPU

On-Chip Memory

ExternalProgrammer

2016 Microchip Technology Inc. DS60001145R_JP - p. 1

PIC32

2.1 デュアル フラッシュパネルと

デュアルブート領域を備えたデバイス

PIC32MK および PIC32MZ ファミリは、デバイスのフィールド ( セルフ ) プログラミングに役立つ各種の機能を備えています。これらの機能には、2 つのブート領域を備えたデュアル フラッシュパネル、起動時にブートコードの自動的な選択を可能にするブート領域のエイリアシング スキーム、プログラム フラッシュのパネルスワップ機能が含まれます。2 つのフラッシュパネルと、それらに対応するブート領域は、別々に消去およびプログラミングできます。これらの機能の詳細は、『PIC32 ファミリ リファレンス マニュアル、セクション 48. メモリ構成とパーミッション』(DS60001214) を参照してください。 量産プログラミング向けの開発ツールは、以下を除くこれらの機能の大部分について考慮されていません。

• SWAPビット(NVMCON<7>)を適正に設定する必要があります。既定値設定は「0」( パネルをスワップしない ) です。開発ツールは、プログラミング ツール向けにソースファイルを生成する際に、既定値設定を前提とします。

• チェックサム計算では、ブートメモリのエイリアシングを適正に処理する必要があります。エイリアスされたセクションは固定されたセクションの複製となります。エイリアスされた領域を使うチェックサム計算については 18.0 「チェックサム」を参照してください。

• PIC32MK では、フラッシュページの消去に失敗して再試行が必要な場合、消去 / 再試行 (Erase/Retry)機能を使います。詳細は 13.0 「ページ消去の開始」を参照してください。

2.2 プログラミング インターフェイス

全ての PIC32 デバイスは、外部プログラマツール向けに以下の2種類の物理インターフェイスを提供します。 • 2 線式 ICSP™ (In-Circuit Serial Programming™)• 4 線式 JTAG (Joint Test Action Group)詳細は 4.0 「デバイスへの接続」を参照してください。

どちらの方式でも、デバイスにダウンロード可能なプログラミング エグゼクティブ (PE) が使えます。PE はターゲット デバイスの RAM から実行し、デバイス プログラミングの細部をプログラマから隠蔽します。また PE は、データ転送に関連するオーバーヘッドを取り除く事で総データ スループットを向上させます。Microchip 社は、どのような外部プログラマにも使える PE を開発しました ( 詳細は 17.0 「プログラミングエグゼクティブ」参照 )。3.0 「プログラミング手順」 に、プログラミングの概略フロー図を示します。その後で、各手順について簡潔に説明します。詳細な説明は、本書の関連する項目に記載しています。

プログラミング コマンド、EJTAG、DC 仕様の詳細は、以下の項目に記載しています。

• 19.0 「コンフィグレーション メモリとデバイス ID」

• 20.0 「TAP コントローラ」

• 21.0 「AC/DC 特性とタイミング要件」

2.3 拡張 JTAG (EJTAG)2 線式および 4 線式インターフェイスは EJTAG プロトコルを使ってプログラマとデータを交換します。本書では、必要に応じてこのプロトコルの使い方を説明します。より詳細を知りたい熟練ユーザには、ImaginationTechnologies 社のウェブサイト (www.imgtec.com) をご覧になる事を推奨します。

2.4 データサイズ

データサイズの定義は以下の通りです。

• 1 ワード : 32 ビット

• 1 ハーフワード : 16 ビット

• 1 クオータワード : 8 ビット

• 1 バイト : 8 ビット

DS60001145R_JP - p. 2 2016 Microchip Technology Inc.

PIC32

3.0 プログラミング手順

全てのプログラマツールは、どのプログラミング方式を使うかに関係なく、同じ手順を実行する必要があります。図 3-1 に、PIC32 をプログラミングするための手順を示します。

図 3-1: プログラミング フロー

以下に、各手順の簡潔な説明を記載します。詳細な説明は、後続の関連する項目に記載しています。

1. ターゲット デバイスに接続します。

必要な全てのピンを適切な信号に接続する必要があります。詳細は 4.0 「デバイスへの接続」を参照してください。

2. ターゲット デバイスをプログラミング モードにします。

2 線式プログラミング方式を使う場合、他の手順を実行する前に、ターゲット デバイスを特別なプログラミング モード ( 拡張 ICSP™) にする必要があります。

詳細は 7.0 「2 線式拡張 ICSP モードへの移行」を参照してください。

3. デバイスのステータスを確認します。

デバイスがプログラマからの情報を受信する準備ができているかどうか確認します。 詳細は 8.0 「デバイス ステータスの確認」を参照してください。

4. ターゲット デバイスを消去します。

デバイス内のターゲット メモリブロックがブランクではない場合、あるいはデバイスがコード保護されている場合、新しいデータを書き込む前に消去手順を実行する必要があります。 詳細は 9.0 「デバイスの消去」を参照してください。

5. プログラミング モードに移行します。

デバイスがコード保護されていない事を確認し、TAPコントローラを起動してPIC32 CPUとのデータ送受信を開始します。 詳細は 10.0 「シリアル実行モードへの移行」を参照してください。

Done

Exit Programming Mode

Verify Device

Done

Initiate Flash Write

Download a Data Block

Download the PE(Optional)

Enter Serial Exec Mode

Erase Device

Check Device Status

Start

Enter Enhanced ICSP™(Only required for 2-wire)

No

Yes

Note: 4 線式を使う場合、手順 2 は不要です。

2016 Microchip Technology Inc. DS60001145R_JP - p. 3

PIC32

6. プログラミング エグゼクティブ (PE) をダウン

ロードします。

PE は、ターゲット デバイスの RAM にダウンロードする実行可能コードの小さなブロックです。PEは、実際のデータを受け取ってデバイスにプログラミングします。

詳細は11.0 「プログラミング エグゼクティブ (PE)のダウンロード」を参照してください。

7. プログラミングするデータのブロックをダウンロードします。

プログラミング方式 (PE を使うかどうか ) に関係なく、必要なプログラミング データを RAM 内のメモリのブロックにダウンロードする必要があります。 詳細は 12.0 「データブロックのダウンロード」を参照してください。

8. フラッシュ書き込みを開始します。

1 つのデータブロックを RAM にダウンロードした後に、プログラミング シーケンスを開始して、そのデータブロックをターゲット デバイスのフラッシュメモリにプログラミングします。 詳細は 14.0 「フラッシュ行書き込みの開始」を参照してください。

9. 全てのデータブロックをダウンロードしてフラッシュメモリにプログラミングするまで、手順7 と 8 を繰り返します。

10.プログラムメモリをベリファイします。

全てのプログラミング データとコンフィグレーション ビットをプログラミングした後に、ターゲット デバイスのメモリを読み戻して、内容が一致するかどうかベリファイします。 詳細は 15.0 「デバイスメモリのベリファイ」を参照してください。

11.プログラミング モードを終了します。

新しく書き込んだデータは、ターゲット デバイスへの電源を一度 OFF にしてから ON にするまで、あるいはプログラミング終了シーケンスを実行するまで、有効にはなりません。 詳細は 16.0 「プログラミング モードの終了」を参照してください。

Note: PEを必要としないプログラミング方式を使う場合、手順 6 は適用しません。

DS60001145R_JP - p. 4 2016 Microchip Technology Inc.

PIC32

4.0 デバイスへの接続

PIC32 ファミリは、接続とメモリ内容のプログラミング用に 2 種類の物理インターフェイスを提供します( 図 4-1 参照 )。どのプログラミング インターフェイスを使う場合も、ターゲット デバイスに電源を投入し、必要な全ての信号を接続する必要があります。さらに、インターフェイスを有効にする必要があります。4 線式JTAGインターフェイスは、対応するコンフィグレーション ビットを使って有効にします。2 線式 ICSP インターフェイスは、特別な初期化シーケンスを使って有効にします。 工場から出荷されたままのブランクデバイスでは、既定値により JTAG インターフェイスが有効です。 ICSP インターフェイスを有効にする方法は、7.0 「2線式拡張 ICSP モードへの移行」に記載しています。

図 4-1: プログラミング インターフェイス

4.1 4 線式インターフェイス

利用可能なインターフェイスの 1 つが 4 線式 JTAG(IEEE 1149.1) ポートです。表 4-1 に、必要なピン接続を示します。このインターフェイスは、以下の 4 本の通信ラインを使って、ターゲットの PIC32 デバイスとの間で双方向にデータを転送します。

• TCK (Test Clock Input)• TMS (Test Mode Select Input)• TDI (Test Data Input)• Test Data Output (TDO)

デバイスピンへの信号接続については、対応するデバイス データシートを参照してください。

4.1.1 TCK (Test Clock Input)TCK は、TAP コントローラの更新と、命令レジスタまたは選択されたデータレジスタによるデータのシフトを制御するためのクロックです。TCK の周波数と位相はプロセッサ クロックとは無関係です。

4.1.2 TMS (Test Mode Select Input)TMS は TAP コントローラのための制御信号です。この信号はTCKの立ち上がりエッジでサンプリングされます。

4.1.3 TDI (Test Data Input)TDI は命令レジスタまたは選択されたデータレジスタに対するテストデータ入力です。 この信号は、一部のTAP コントローラ ステート向けに TCK の立ち上がりエッジでサンプリングされます。

4.1.4 TDO (Test Data Output)TDO は、命令レジスタまたはデータレジスタからのテストデータ出力です。この信号は TCK の立ち下がりエッジで遷移します。TDO はデータがシフトアウトされる時にのみ駆動され、それ以外はトライステートになります。

表 4-1: 4 線式インターフェイス ピン

Note 1: 一部のデバイスでは、このピンは利用できません。ご使用になるデバイスがこれらのピンを備えているかどうかは、対応するデバイス データシート内の「ピン割り当て図」または「ピン割り当て表」を参照してください。

Programmer

2-wireICSP™

OR

4-wireJTAG

+ MCLR, VDD1V8(1),

PIC32

VDD, VSS, VSS1V8(1)

デバイスピン名 ピンタイプ 概要

MCLR I プログラミング イネーブル

ENVREG(2) I 内蔵電圧レギュレータのイネーブル

VDD、VDD1V8(2)、VBAT(2)、 AVDD(1) P 電源

VSS、VSS1V8(2)、 AVSS(1) P GNDVCAP(2) P CPU ロジック フィルタ コンデンサの接続

TDI I テストデータ入力

TDO O テストデータ出力

TCK I テストクロック

TMS I Test Mode ステート

凡例 : I = 入力、O = 出力、P = 電源

Note 1: アナログ電源 (AVDD) ピンとアナログ グランド (AVSS) ピンを含む全ての電源およびグランドピンを接続する必要があります。

2: 一部のデバイスでは、このピンは利用できません。ご使用になるデバイスがこれらのピンを備えているかどうかは、対応するデバイス データシート内の「ピン割り当て図」または「ピン割り当て表」を参照してください。

2016 Microchip Technology Inc. DS60001145R_JP - p. 5

PIC32

4.2 2 線式インターフェイス

もう 1 つのインターフェイスが 2 線式 ICSP ポートです。表 4-2 に、必要なピン接続を示します。このインターフェイスは、以下の 2 本の通信ラインを使って、ターゲットのPIC32デバイスとの間で双方向にデータを転送します。

• シリアル プログラム クロック (PGECx)• シリアル プログラム データ (PGEDx)これらの各信号については、この後で説明します。デバイスピンへの信号の接続については、対応するデバイス データシートを参照してください。

4.2.1 シリアル プログラム クロック (PGECX)PGECx は、TAP コントローラの更新と、命令レジスタまたは選択されたデータレジスタによるデータのシフトを制御するためのクロックです。 PGECx の周波数と位相はプロセッサ クロックとは無関係です。

4.2.2 シリアル プログラムデータ (PGEDX)PGEDx は、命令レジスタまたは選択されたデータレジスタへのデータ入出力です。また、TAP コントローラ向けの信号も制御します。この信号は、一部の TAPコントローラ ステート向けに PGECx の立ち下がりエッジでサンプリングされます。

表 4-2: 2 線式インターフェイス ピン

デバイスピン名プログラマ

ピン名ピンタイプ 概要

MCLR MCLR P プログラミング イネーブル

ENVREG(2) N/A I 内蔵電圧レギュレータのイネーブル

VDD、VDD1V8(2)、VBAT(2)、 AVDD(1) VDD P 電源

VSS、VSS1V8(2)、 AVSS(1) VSS P GNDVCAP(2) N/A P CPU ロジック フィルタ コンデンサの接続

PGECx PGEC I プライマリ プログラミング ピンペア :シリアルクロック

PGEDx PGED I/O プライマリ プログラミング ピンペア : シリアルデータ

凡例 : I = 入力、O = 出力、P = 電源

Note 1: アナログ電源 (AVDD) ピンとアナログ グランド (AVSS) ピンを含む全ての電源およびグランドピンを接続する必要があります。

2: 一部のデバイスでは、このピンは利用できません。ご使用になるデバイスがこれらのピンを備えているかどうかは、対応するデバイス データシート内の「ピン割り当て図」または「ピン割り当て表」を参照してください。

DS60001145R_JP - p. 6 2016 Microchip Technology Inc.

PIC32

4.3 PIC32MX の電源要件

PIC32MX ファミリは 2 つ電源電圧を使います。1 つはコア用の電源であり、もう 1 つは周辺モジュールおよび I/O ピン用の電源です。全てのデバイスは、電圧が低い方のコア電源用にレギュレータを内蔵しているため、外付けレギュレータを追加する必要はありません。内蔵レギュレータの実装方法はデバイスによって異なり、以下の 3 つのバージョンがあります。

• 第 1 のバージョンでは、ENVREG ピンを使って内部レギュレータを無効にできます。無効にした場合、外部電源からコアに給電する必要があります。 有効にした場合、低 ESR フィルタ コンデンサを VCAPピンに接続する必要があります ( 図 4-2 参照 )。

• 第 2 のバージョンでは、内部レギュレータを無効にできません。 VCAPピンには必ず低 ESRフィルタ コンデンサを接続する必要があります。

• 第 3 のバージョンでは、内部レギュレータを無効にできませんが、フィルタ コンデンサは不要です。

デバイスの電源要件については 21.0 「AC/DC 特性とタイミング要件」と、対応するデバイス データシート内の「電気的特性」を参照してください。

図 4-2: 内部レギュレータの有効 / 無効オプション

4.4 VBAT ピンを備えた PIC32MX の電源要件

PIC32MXファミリの一部のデバイスはVBATピンを備えています。このピンは、プログラミング時に VDD 電源へ接続できます。図 4-3 を参照してください。

図 4-3: VBAT ピンを備えた PIC32MX の電源接続

4.5 PIC32MZ EC と PIC32MZ EF の電源要件

PIC32MZ ECおよびPIC32MZ EFファミリもPIC32MXと同様に 2 電源構成です。しかし、内部レギュレータは外付けフィルタ コンデンサを必要とせず、VCAP またはENVREGピンに相当するピンを備えていません。図 4-4 を参照してください。

デバイスの電源要件については 21.0 「AC/DC 特性とタイミング要件」と、対応するデバイス データシート内の「電気的特性」を参照してください。

図 4-4: PIC32MZ EC/EF の電源接続

Note 1: これらの動作電圧は代表値 (typ.)です。VDD と VCAPの動作レンジについては 21.0 「AC/DC 特性とタイミング要件」を参照してください。

2: レギュレータ有効モードとレギュレータ無効モードが使えるかどうかは、デバイスによって異なります。各デバイスのデータシートを参照してください。

VDD

ENVREG

VCAP

VSS

PIC32MX3.3V(1)1.8V(1)

VDD

ENVREG

VCAP

VSS

PIC32MX

CEFC

3.3V

Regulator Enabled(2)

Regulator Disabled(2)

(10 F typical)

(ENVREG tied to VDD)

(ENVREG tied to ground)

Note 1: 3.3 V は動作電圧の代表値 (typ.) です。VDD の動作レンジについては 21.0 「AC/DC 特性とタイミング要件」を参照してください。

VDD

VBAT

VCAP

VSS

PIC32MX XLP3.3V(1)

Vdd

VSS

PIC32MZ EC/EF3.3V(1)

Note 1: 3.3 V は動作電圧の代表値 (typ.) です。VDD の動作レンジについては 21.0 「AC/DC 特性とタイミング要件」を参照してください。

2016 Microchip Technology Inc. DS60001145R_JP - p. 7

PIC32

4.6 PIC32MZ DA の電源要件

PIC32MZ DA ファミリは 4 電源構成です。2 つの電源は PIC32MZ EC および PIC32MZ EF と同じです。3 つ目の電源は DDR メモリ インターフェイス用であり、1.8 V 電源を必要とします。4 つ目の電源は VBAT ピン用ですが、このピンは VDD 電源に接続できます。図 4-5 を参照してください。

デバイスの電源要件については 21.0 「AC/DC 特性とタイミング要件」と、対応するデバイス データシート内の「電気的特性」を参照してください。

図 4-5: PIC32MZ DA の電源接続

4.7 PIC32MK の電源要件

PIC32MK ファミリは 3 電源構成です。2 つの電源はPIC32MZ EC および PIC32MZ EF と同じです。3 つ目の電源は VBAT ピン用ですが、このピンは VDD 電源に接続できます。図 4-6 を参照してください。

図 4-6: PIC32MK の電源接続

5.0 EJTAGと ICSPプログラミングにはCPUコア内のEJTAGモジュールを使います。EJTAG は、フルセットの JTAG ピンに接続されるか、ICSP モード向けに削減された 2 ~ 4 線式 EJTAG インターフェイスに接続されます。どちらの場合も、PIC32 フラッシュメモリをプログラミングするために ETAP コントローラを使います。TAP コントローラは TMS ピンを使って、TDI と TDO の間のシフトパス内での命令レジスタまたはデータレジスタへのアクセスを決定します ( 図 5-1 参照 )。プログラミングに使う EJTAG の基本概念は、DMSEGと呼ぶ特別なメモリ領域 (0xFF200000~0xFF2FFFFF)を使うという事です。この領域は、プロセッサがデバッグモードで動作している時にだけ利用できます。全ての命令は、内部バッファへシリアルにシフトインされた後、命令レジスタに書き込まれ、CPU によって実行されます。命令は、ETAP ステートマシンを介して32 ビットグループで供給されます。

図 5-1: TAP コントローラ

VDD

VBAT

VDD1V8

Vss

PIC32MZ DA

3.3V(1)1.8V(1)

Note 1: これらの動作電圧は代表値 (typ.) です。VDD とVDD1V8 の動作レンジについては 21.0 「AC/DC 特性とタイミング要件」を参照してください。

Vss1V8

Vdd

VBAT

VSS

PIC32MK

3.3V(1)

Note 1: これらの動作電圧は代表値 (typ.) です。VDD とVDD1V8 の動作レンジについては 21.0 「AC/DC 特性とタイミング要件」を参照してください。

TMS

TCK

TDO

TDI

Tap Controller

Instruction, Data, and Control Registers

DS60001145R_JP - p. 8 2016 Microchip Technology Inc.

PIC32

5.1 プログラミング インターフェイス

図 5-2 に、PIC32 の基本的なプログラミング インターフェイスを示します。図の後で、各インターフェイスブロックについて説明します。

図 5-2: 基本的な PIC32 プログラミング インターフェイスのブロック図

5.1.1 ETAPこのブロックは、命令とデータを CPU へシリアルに供給します。

5.1.2 MTAPPIC32 は、EJTAG TAP (ETAP) コントローラの他に、追加機能のために独自の TAP コントローラを備えています。この Microchip TAP (MTAP) コントローラは、プログラミングに関連する 2 つの命令 (MTAP_COMMAND とTAP 切り換え命令 ) をサポートします。命令の完全な一覧は表 20-1 を参照してください。MTAP_COMMAND 命令は、データレジスタを介してデバイスへコマンドを送信するための方法を JTAG プローブに提供します。

プログラマは、SendCommand 疑似命令を使ってMTAP_COMMAND命令をシフトインしてから、XferData疑似命令を使ってMTAP_COMMAND DRコマンドを送信する事により、コマンドを送信します ( 表 20-2 参照 )。プローブは、データレジスタへシフトインされた各々のコマンドに対して MTAP_COMMAND 命令を発行する必要はありません。

5.1.3 2-wire to 4-wireこのブロックは、2 線式 ICSP インターフェイスを 4 線式 JTAG インターフェイスへ変換します。

5.1.4 CPUCPU は、内部オシレータを使って 8 MHz で命令を実行します。

5.1.5 Flash Controllerフラッシュ コントローラは、デバイスのフラッシュメモリの消去とプログラミングを制御します。

5.1.6 Flash MemoryPIC32 のフラッシュメモリは、2 つの論理フラッシュパーティション ( ブート フラッシュメモリ (BFM) とプログラム フラッシュメモリ (PFM)) に分割されています。BFM はアドレス 0x1FC00000 から始まり、PFM はアドレス 0x1D000000 から始まります。各フラッシュパーティションは複数のページに分割されます。ページは、一度に消去できる 小のメモリブロックです。ページのサイズはデバイスに応じて異なり、256 ワード(1024 バイト )、1024 ワード (4096 バイト )、4096 ワード (16,384 バイト ) のいずれかです。行サイズは、行プログラム コマンドが書き込むワードの数を表します。1 ページは必ず 8 行を含みます。デバイスのページサイズが 256ワードの場合、行サイズは 32ワードです。ページサイズが1024ワードであれば行サイズは128ワードであり、ページサイズが 4096 ワードであれば行サイズは 512 ワードです。表 5-1 に、各デバイスファミリのPFM、BFM、行、ページのサイズを示します。

BFM のメモリアドレスは、デバイス コンフィグレーション レジスタ用に予約されています ( 詳細は 19.0

「コンフィグレーション メモリとデバイス ID」参照 )。

TMS

TCK

TDI

TDO

or

PGECx

PGEDx

ETAP CPU

MTAP

2-wire

Flash

Flashto

4-wire

Controller

Memory

Common

VDD/VDD1V8

VSS/VSS1V8

MCLR

2016 Microchip Technology Inc. DS60001145R_JP - p. 9

PIC32

表 5-1: コードメモリのサイズ

PIC32 デバイス行サイズ( ワード )

ページサイズ

( ワード )

ブートフラッシュ メモリアドレス ( バイト )

(Note1 参照 )

プログラミング エグゼクティブ(Note 2、3 参照 )

PIC32MX110/120/130/150/170210/220/230/350/270(28/36/44 ピンデバイスのみ )

32 256

0x1FC00000-0x1FC00BFF (3 KB)

RIPE_11_aabbcc.hexPIC32MX120/130/150/170/230/250/270/530/550/570(64/100 ピンデバイスのみ )PIC32MX15X/17X/25X/27X(28/44 ピンデバイスのみ )

0x1FC00000-0x1FC02FFF (12 KB)

PIC32MX330/350/370/430/450/470

128 1024 0x1FC00000-0x1FC02FFF (12 KB) RIPE_06_aabbcc.hexPIC32MX320/340/360/420/440/460PIC32MX534/564/664/764PIC32MX575/675/695/795PIC32MK0512/1024 128 1024 0x1FC00000-0x1FC04FFF (20 KB)

0x1FC20000-0x1FC24FFF (20 KB) RIPE_15a_aabbcc.hexPIC32MZ05XX/10XX/20XX 512 4096 0x1FC00000-0x1FC13FFF (80 KB)

0x1FC20000-0x1FC33FFF (80 KB) RIPE_15_aabbcc.hex

Note 1: プログラム フラッシュメモリのアドレスレンジは、以下のようにプログラム フラッシュのサイズに基づきます。• 0x1D000000-0x1D003FFF (16 KB)• 0x1D000000-0x1D007FFF (32 KB)• 0x1D000000-0x1D00FFFF (64 KB)• 0x1D000000-0x1D01FFFF (128 KB)• 0x1D000000-0x1D03FFFF (256 KB)• 0x1D000000-0x1D07FFFF (512 KB)• 0x1D000000-0x1D0FFFFF (1024 KB)• 0x1D000000-0x1D1FFFFF (2048 KB)

サポートされるプログラム フラッシュメモリ サイズはデバイスファミリによって異なります。

2: プログラミング エグゼクティブは、Microchip 社ウェブサイトの関連する製品ページから入手できます。また、MPLAB® X IDE がインストール済みであれば、プログラミング エグゼクティブは以下のインストール フォルダ内にあります。 …\Microchip\MPLABX\<version>\mplab_ide\mplablibs\modules\ext\REALICE.jar…\Microchip\MPLABX\<version>\mplab_ide\mplablibs\modules\ext\ICD3.jar…\Microchip\MPLABX\<version>\mplab_ide\mplablibs\modules\ext\PICKIT3.jar

3: ファイル名の 後の文字列「aabbcc」は、ファイルのリビジョンに応じて異なります。

DS60001145R_JP - p. 10 2016 Microchip Technology Inc.

PIC32

5.2 4 線式 JTAG の詳細

4 線式インターフェイスは、以下の標準 JTAG (IEEE1149.1-2001) インターフェイス信号を使います。 • TCK: Test Clock - データ入出力を駆動

• TMS: Test Mode Select - 動作モードの選択

• TDI: Test Data Input - デバイスへ入力するデータ

• TDO: Test Data Output - デバイスから出力されるデータ

データラインは 1 本しかないため、プロトコルは必然的にシリアルです (SPI と同様 )。クロック入力にはTCK ピンを使います。TMS ピンを使ってビット単位でステートマシンを操作する事により、設定を実行します。データは TCK クロックパルスあたり 1 ビットずつ TDI および TDO ピンで入出力されます。各種の命令モードをロードする事で、デバイス ID の読み出しまたはデバイス機能の操作が可能です。

TDI に供給されるデータは、TCK 立ち上がりエッジ前のデバイス固有セットアップ時間と、同エッジ後のホールド時間中に有効である事が必要です。TDO データは、TCK 立ち下がりエッジ後のデバイス固有時間中に有効です ( 図 5-3 参照 )。

図 5-3: 4 線式 JTAG インターフェイス

TMS

TDI

TDO

iMSbiLSb

‘1’

TCK

oLSb oMSb

‘1’ ‘1’ ‘1’‘0’ ‘0’ ‘0’

2016 Microchip Technology Inc. DS60001145R_JP - p. 11

PIC32

5.3 2 線式 ICSP の詳細

ICSP モードでは、2 線式 ICSP 信号が 2-wire to 4-wireブロック内へ時分割多重化されます。2-wire to 4-wireブロックは、TAP コントローラから 4 線式 JTAG ポートのように見えるよう信号を変換します。以下の 2 つの動作モードがあります。

• 4-phase ICSP• 2-phase ICSP

5.3.1 4-phase ICSP4-phase ICSP モードでは TDI、TDO、TMS デバイスピンが 4 クロックの間に PGEDx 上で多重化されます( 図 5-4 参照 )。 下位ビット (LSb) が 初にシフトされます。TDI と TMS は PGECx の立ち下がりエッジでサンプリングされ、TDO は PGECx の立ち下がりエッジで駆動されます。4-phase ICSP モードは、読み出しと書き込みの両方のデータ転送に使われます。

5.3.2 2-phase ICSP2-phase ICSP モードでは、TMS および TDI デバイスピンが 2 クロックの間に PGEDx 上で多重化されます( 図 5-5 参照 )。LSb が 初にシフトされます。TDI とTMS は、PGECx の立ち下がりエッジでサンプリングされます。このモードでは、TDO 出力は提供されません。2-phase ICSP モードは、2 線式の書き込み専用トランザクションを高速化する事を目的とします。

図 5-4: 2 線式 4-phase ICSP

図 5-5: 2 線式 2-phase ICSP

Note: パケットは、次のパケットの 初のクロックが来るまで実行されません。2 線式 2-phaseICSP モードへ移行するには、TDOEN ビット (DDPCON<0>) を「0」に設定する必要があります。

TMS

TDI

TDO

IR4IR0

‘1’

TCK

‘1’ ‘1’ ‘1’‘0’ ‘0’ ‘0’

X1

PGECx

PGEDx pTDO = 1 TDI = IR0 TMS = 0 nTDO = 0

TMS

TDI

TDO

IR4IR0

‘1’

TCK

‘1’ ‘1’ ‘1’‘0’ ‘0’ ‘0’

X1

PGECx

PGEDx TDI = IR0 TMS = 0

DS60001145R_JP - p. 12 2016 Microchip Technology Inc.

PIC32

5.3.3 同期

一部の PIC32 デバイスは、 接続されたプログラマがデバイスとの同期を失った場合に、内部のEJTAGステートマシンをリセットできます。これは、PGCx 信号にノイズが含まれる場合に発生する可能性があります。

再同期を達成するため、PGEDx ピンは 24 PGECx クロックサイクルの間 HIGH に保持されます。これにより、5 回の TMS イベントが EJTAG コントローラに対して生成され、EJTAG ステートマシンは Test IdleReset ステートに置かれます。図 5-6 に、再同期の達成方法を示します。

PGEDx ピンを HIGH にアサートしている時、このピンで競合 ( インサーキット エミュレータが入力を駆動している時にデバイスが TDO 出力を駆動しようとする ) が生じる可能性があります。これは、 大で 1 サイクルの間だけ発生します。なぜなら、TMS の HIGH状態により、EJTAG ステートマシンの Shift-JR またはShift-DR ステートからの退出が早まるからです。

2線式2-phaseモードでの同期はサポートされません。

図 5-6: 再同期の達成

PGECx

PGEDx

1 2 3 4 5 24232221

Synchronization achievedTDO Contention

2016 Microchip Technology Inc. DS60001145R_JP - p. 13

PIC32

6.0 疑似命令

プログラミングの説明を簡明にするため、疑似命令を使って全ての動作を説明します。疑似コードの記述には各種の関数を使います。これらの関数は、疑似コードを読みやすくするため、または実装に固有の挙動を抽象化するため ( もしくはその両方のため ) に使います。疑似命令を使ってパラメータを渡す場合、以下の構文を使います。 • 5’h0x03 - 5 ビットの 16 進値 (3) を送信

• 6’b011111 - 6 ビットの 2 進値 (31) を送信

この後、以下の疑似命令について説明します。

• SetMode (mode)• SendCommand (command)• oData = XferData (iData)• oData = XferFastData (iData)• oData = XferInstruction (instruction)

6.1 SetMode疑似命令

書式 SetMode (mode)

目的EJTAG ステートマシンを特定のステートに設定します。

概要mode の値は、TMS 信号上でクロックに同期してデバイスへ入力されます。TDI は「0」に設定され、TDO は無視されます。

制約 なし

例SetMode (6’b011111)

図 6-1: SetMode 4-wire

図 6-2: SetMode 2-wire

TMS

TDI

TDO

‘1’

TCK

‘1’ ‘1’‘1’ ‘1’ ‘0’

Mode = 6’b011111

PGEDx

PGECx

TDI = 0 TDO = 1TMS = 1 TDI = 0 TMS = 0 TDO = x

Mode = 6’b011111

DS60001145R_JP - p. 14 2016 Microchip Technology Inc.

PIC32

6.2 SendCommand疑似命令 書式 SendCommand (command)

目的特定のTAPレジスタを選択するためのコマンドを送信します。

概要 ( 動作シーケンス )1. Shift IR ステートを選択するために、TMS Header

をクロックに同期してデバイスへ入力します。

2. TMS 信号を LOW に保持している時に、TDI 上でコマンドをクロックに同期してデバイスへ入力します。

3. TMS を HIGH にセットしている時に、コマンドの 後の 上位ビット(MSb)をクロックに同期してデバイスへ入力します。

4. TMS上でTMS Footerをクロックに同期して入力する事で、TAP コントローラを Run/Test Idel ステートに戻します。

制約なし

例SendCommand (5’h0x07)

図 6-3: SendCommand 4-wire

図 6-4: SendCommand 2-wire (4-phase)

TMS

TDI

TDO

iMSb

‘1’

TCK

‘1’ ‘1’ ‘1’‘0’ ‘0’ ‘0’

x1

iLSb

TMS Header = 1100 Command = 5’h0x07Command (MSb)

+ TMS = 1 TMS Footer = 10

TDI = 0 TMS = 1 TMS = 1TDI = 0TDO = x TDO = xTDI = iMSbTDO = xTMS = 0TDI = iLSbTDO = xTMS = 1

TMS Header = 1100 Command (5’h0x07) + TMS = 0 Command (MSb) + TMS = 1 TMS Footer = 10

PGECx

PGEDx

2016 Microchip Technology Inc. DS60001145R_JP - p. 15

PIC32

6.3 XferData疑似命令

書式 oData = XferData (iData)

目的コマンドによって選択されたレジスタとの間で、クロックに同期してデータを双方向に転送します。

概要 ( 動作シーケンス )1. Shift DRステートを選択するために、TMS Header

をクロックに同期してデバイスへ入力します。 2. TMS 信号を LOW に保持している時に、TDI/TDO

上でクロックに同期してデータをデバイスとの間で入出力します。

3. TMS を HIGH にセットしている時に、データの後の MSb をクロックに同期してデバイスとの

間で入出力します。 4. TMS上でTMS Footerをクロックに同期して入力

する事で、TAP コントローラを Run/Test Idel ステートに戻します。

制約なし

例oData = XferData (32’h0x12)

図 6-5: XferData 4-wire

図 6-6: XferData 2-wire (4-phase)

TMS

TDI

TDO

iMSb

‘1’

TCK

‘1’ ‘1’‘0’ ‘0’ ‘0’

iLSb

TMS Header = 100 Data (32’h0x12) Data (MSb) + TMS = 1 TMS Footer = 10

oMSboLSb

TDI = 0 TMS = 0 TDO = oLSbTDI = 0TDO = XTMS = 0TDI = 0TDO = XTMS = 1

PGEC

PGED

TMS Header = 100

TDI = 0 TMS = 0 TDO = XTDI = 0TDO = XTMS = 1

TMS = 1 TDO = XTMS = 0TDI = iLSb TDO = oLSb+1 TDI = iMSb

Data (31’h0x12) + TMS = 0 Data (MSb) + TMS Footer = 1

TMS Footer = 10

...

DS60001145R_JP - p. 16 2016 Microchip Technology Inc.

PIC32

6.4 XferFastData疑似命令

書式 oData = XferFastData (iData)

目的32 ビットデータをデバイスとの間で高速に入出力します。

概要 ( 動作シーケンス )1. Shift DRステートを選択するために、TMS Header

をクロックに同期してデバイスへ入力します。

2. PrAcc の入力値 (「0」) をクロックに同期して入力します。

3. TMS Footer = 10をクロックに同期して入力する事で、TAP コントローラを Run/Test Idel ステートに戻します。

制約高速データレジスタを選択するため、SendCommand(ETAP_FASTDATA)を 初に送信する必要があります( 例 6-1 参照 )。コマンドの詳細な説明は表 20-4 を参照してください。

例 6-1: SendCommand

図 6-7: XferFastData 4-wire

図 6-8: XferFastData 2-wire (2-phase)

Note: 2 線式 (4-phase) の場合、 後のクロックで、TMS Header をクロックに同期して入力しながら TDO 上で oPrAcc ビットをシフトアウトします。 oPrAcc の値が「1」ではない場合、動作全体を繰り返す必要があります。

Note: 2 線式 (4-phase) の場合、この動作中の TDOは出力データの LSb です。入力データの残りの 31 ビットはクロックに同期して入力され、出力データの 31 ビットはクロックに同期して出力されます。入力データの 後のビットでは、TMS Footer = 1 に設定されます。

Note: 2-phase XferData は、プログラマブル エグゼクティブ (PE) と通信する場合にのみ使います。詳細は 17.0 「プログラミング エグゼクティブ」を参照してください。

// Select the Fastdata RegisterSendCommand(ETAP_FASTDATA)// Send/Receive 32-bit DataoData = XferFastData(32’h0x12)

TMS

TDI

TDO

iMSbiLSb

‘1’

TCK

oLSb oMSb

‘1’ ‘1’‘0’ ‘0’ ‘0’

‘0’

‘1’

TMS Header = 100 PrAcc Data (32’h0x12) Data (MSb) + TMS = 1 TMS Footer = 10

TDI = X TMS = 1TDI = XTDI =TMS = 0TDI =TMS = 0TDI = 0TMS = 1

TMS Header = 100 Data (32’h0x12) TMS Footer = 10

iLSbPGEDx

PGECx

PrAcc

TMS = 1 MSb

Data (MSb) TMS = 1

2016 Microchip Technology Inc. DS60001145R_JP - p. 17

PIC32

図 6-9: XferFastData 2-wire (4-phase)

TDI = 0 TMS = 0 TDO = oPrAccTDI = 0TDO = XTMS = 0TDI = 0TDO = XTMS = 1

PGECx

PGEDx

TMS Header = 100

TDI = 0 TMS = 0 TDO = XTDI = 0TDO = XTMS = 1

TMS = 1 TDO = XTMS = 0TDI = iLSb TDO = oLSb+1 TDI = iMSb

Data (31’h12) + TMS = 0 Data (MSb) + TMS Footer = 1

TMS Footer = 10

TMS = 0TDI = 0 TDO = oLSb

PrAcc

DS60001145R_JP - p. 18 2016 Microchip Technology Inc.

PIC32

6.5 XferInstruction疑似命令

書式 XferInstruction (instruction)

目的実行する 32 ビットのデータをデバイスへ送信します。

概要命令はクロックに同期してデバイスへ入力され、CPU によって実行されます。

制約デバイスはデバッグモードで動作している必要があります。

例 6-2: XferInstructionXferInstruction (instruction){

// Select Control RegisterSendCommand(ETAP_CONTROL);// Wait until CPU is ready// Check if Processor Access bit (bit 18) is setdo {

controlVal = XferData(32’h0x0004C000);} while( PrAcc(contorlVal<18>) is not ‘1’ );

// Select Data RegisterSendCommand(ETAP_DATA);

// Send the instructionXferData(instruction);

// Tell CPU to execute instructionSendCommand(ETAP_CONTROL);XferData(32’h0x0000C000);

}

2016 Microchip Technology Inc. DS60001145R_JP - p. 19

PIC32

6.6 ReadFromAddress疑似命令

書式 oData = ReadFromAddress (address)

目的32 ビットのデータをデバイスメモリへ送信します。

概要「address」パラメータで指定したアドレスでメモリから 32 ビットデータを読み出します。

制約デバイスはデバッグモードで動作している必要があります。

例 6-3: ReadFromAddress (PIC32MX、PIC32MZ、PIC32MK 用 )ReadFromAddress (address){

// Load Fast Data register address to s3instruction = 0x3c130000;instruction |= (0xff200000>>16)&0x0000ffff;XferInstruction(instruction); // lui s3, <FAST_DATA_REG_ADDRESS(31:16)> - set address of fast data register

// Load memory address to be read into t0instruction = 0x3c080000;instruction |= (address>>16)&0x0000ffff;XferInstruction(instruction); // lui t0, <DATA_ADDRESS(31:16)> - set address of datainstruction = 0x35080000;instruction |= (address&0x0000ffff);XferInstruction(instruction); // ori t0, <DATA_ADDRESS(15:0)> - set address of data

// Read dataXferInstruction(0x8d090000); // lw t1, 0(t0)

// Store data into Fast Data registerXferInstruction(0xae690000); // sw t1, 0(s3) - store data to fast data registerXferInstruction(0); // nop

// Shift out the dataSendCommand(ETAP_FASTDATA);oData = XferFastData(32'h0x00000000);

return oData;

}

DS60001145R_JP - p. 20 2016 Microchip Technology Inc.

PIC32

6.7 Synchronize疑似命令

書式 Synchronize ()

目的EJTAGステートマシンをTest Idle Resetステートへリセットします。

概要PGEDx 信号は 24 PGECx クロックサイクルの間HIGH を保持します。他の全ての信号は無視されます。

制約なし

図 6-10: 再同期の達成

PGECx

PGEDx

1 2 3 4 5 24232221

Synchronization achievedTDO Contention

2016 Microchip Technology Inc. DS60001145R_JP - p. 21

PIC32

7.0 2線 式拡張 ICSPモ ードへの移行

2線式のPGEDxおよびPGECxピンをプログラミング用に使います。従って、これらのピンを有効にする必要があります。デバイス上のプログラミング ピンペアはどれでも使えますが、必ずペアとして使う必要があります。例えば、PGED1 ピンは PGEC1 ピンと一緒に使う必要があります。

2 線式拡張 ICSP モードに移行するには、以下の手順が必要です。

1. MCLR ピンを短く HIGH にしてから LOW にします。

2. 32 ビット鍵シーケンスをクロックに同期してPGEDx に入力します。

3. MCLR ピンが HIGH に駆動され、指定された期間だけ HIGH に保持されます。

タイミング要件は 21.0 「AC/DC 特性とタイミング要件」を参照してください。

MCLRピンに印加するプログラミング電圧はVIHです。PIC32 の場合、この電圧は原則的に VDD です。VIH の保持時間に 小要件はありません。VIH を OFF にした後、少なくとも P18 の待機時間が経過してから、PGEDx に鍵シーケンスを入力する必要があります。

鍵シーケンスは以下の 32 ビットパターンです。‘0100 1101 0100 0011 0100 1000 0101 0000’(ASCII コードで「MCHP」を表す )

鍵シーケンスが有効な場合にのみ、デバイスはプログラム / ベリファイ モードに移行します。 上位ニブルの MSb を 初にシフトインする必要があります。 鍵シーケンスが完了した後に、VIH を MCLR ピンに印加し、2 線式拡張 ICSP インターフェイスの動作を維持する間は、この電圧レベルを保持する必要があります。 データを PGEDx に入力する前に、少なくとも P19+ P7 の待機時間が必要です。P7 が経過する前にPGEDx に入力された信号は、正しく解釈されません。

移行に成功すると、この後で説明する各種プログラミング動作を実行できます。2 線式拡張 ICSP モード中は、全ての未使用 I/O がハイインピーダンス状態に置かれます。

図 7-1: 拡張 ICSP™ モードへの移行

Note: 4 線式 JTAG インターフェイスを使う場合、以下の手順は不要です。

Note: ICSP モードに移行すると、命令の実行を防ぐため、デバイスはリセット状態に置かれ ま す。リ セ ッ ト を 解 除 す る に は、MCHP_DE_ASSERT_RST コマンドを発行する必要があります。

MCLR

PGEDx

PGECx

VDD

P6P14

b31 b30 b29 b28 b27 b2 b1 b0b3...

Program/Verify Entry Code = 0x4D434850

P1AP1B

P18

P19

0 1 0 0 1 0 0 0 0

P7VIH VIH

P20

DS60001145R_JP - p. 22 2016 Microchip Technology Inc.

PIC32

8.0 デバイス ステータスの確認

デバイスのプログラミングを開始する前に、デバイスが情報の受信準備を完了しているかどうか調べるため、プログラマはデバイスのステータスを確認する必要があります。

図 8-1: デバイス ステータスの確認

8.1 4 線式インターフェイス

4 線式 JTAG プログラミング モードへ移行するための手順は、MCLR ピンがアサートされている間に実行する必要があります。プログラミング モードへ移行した後は、MCLR ピンを解放する事で、プロセッサによる命令の実行またはポートの駆動が可能になります。

4 線式インターフェイスを使ってデバイスのステータスを確認するための手順は以下の通りです。

1. MCLR ピンを LOW にします。

2. SetMode (6’b011111) を使ってデバイスの TAPコントローラを Run Test/Idle ステートにします。

3. SendCommand (MTAP_SW_MTAP)4. SetMode (6’b011111) を使ってデバイスの TAP

コントローラを Run Test/Idle ステートにします。

5. SendCommand (MTAP_COMMAND)6. statusVal = XferData (MCHP_STATUS)7. CFGRDY (statusVal<3>) = 1 かつ FCBUSY

(statusVal<2>) = 0 ではない場合、手順 6 へ戻ります。

8.2 2 線式インターフェイス

2 線式インターフェイスを使ってデバイスのステータスを確認するための手順は以下の通りです。

1. SetMode (6’b011111) を使ってデバイスの TAPコントローラを Run Test/Idle ステートにします。

2. SendCommand (MTAP_SW_MTAP)3. SetMode (6’b011111) を使ってデバイスの TAP

コントローラを Run Test/Idle ステートにします。

4. SendCommand (MTAP_COMMAND)5. statusVal = XferData (MCHP_STATUS)6. CFGRDY (statusVal<3>) = 1 かつ FCBUSY

(statusVal<2>) = 0 ではない場合、手順 5 へ戻ります。

SetMode (6’b011111)

SendCommand (MTAP_SW_MTAP)

SendCommand (MTAP_COMMAND)

statusVal = XferData (MCHP_STATUS)

FCBUSY = 0CFGRDY = 1

No

Set MCLR low 4-wire

Done

Yes

SetMode (6’b011111)

Note: 4 線式インターフェイスを使う場合、コンフィグレーション ワードで選択されているオシレータ源がフラッシュメモリへのアクセス用に利用可能である事が必要です。未プログラム状態のデバイスでは、フラッシュメモリへのアクセス用オシレータ源として内部 FRC が選択されます。コンフィグレーション ワードを書き換えて外部オシレータ源を選択した場合、その外部オシレータ源がフラッシュメモリへのアクセス用に利用可能である事が必要です。コンフィグレーション ワードの設定によるオシレータ選択の詳細は、対応するデバイス データシート内の

「その他の特殊機能」を参照してください。

Note: 10 ms 以内に CFGRDY ビット = 「1」 かつFCBUSY ビット = 「0」にならない場合、手順が正しく実行されなかったか、デバイスが損傷している可能性があります。

2016 Microchip Technology Inc. DS60001145R_JP - p. 23

PIC32

9.0 デバイスの消去

デバイスは、プログラミングする前に消去する必要があります。消去動作は、フラッシュメモリの全てのビットに「1」を書き込む事で、新しいデータがプログラミングできるよう準備します。デバイスを消去した後に、「ブランクチェック」動作を実行する事で、デバイスをベリファイできます。詳細は 9.1 「ブランクチェック」を参照してください。

プログラムメモリ ( プログラム、ブート、コンフィグレーション メモリ ) を消去するには、MTAP を選択し、MCHP_ERASE コマンドを送信します。プログラマは、MCHP_STATUS 値内のビットを読み出してベリファイする事により、消去動作が完了するまで待機する必要があります。 図 9-1 に、デバイス消去を実行するための処理を示します。

ターゲット デバイスを消去するための手順は以下の通りです。

1. SendCommand (MTAP_SW_MTAP)2. SetMode (6’b011111)3. SendCommand (MTAP_COMMAND)4. XferData (MCHP_ERASE)5. XferData (MCHP_DE_ASSERT_RST)

PIC32MX にはこの手順は不要です。

6. 10 ms の遅延

7. statusVal = XferData (MCHP_STATUS) 8. CFGRDY (statusVal<3>) = 1 かつ FCBUSY

(statusVal<2>) = 0 ではない場合、手順 6 へ戻ります。

図 9-1: デバイスの消去

9.1 ブランクチェック

「ブランクチェック」とは、デバイスが正しく消去されたかどうか ( 全てのメモリアドレスが未プログラム状態かどうか )、ベリファイする事を意味します。ブランク ( または消去済み ) メモリアドレスの読み値は常に「1」です。 ブランクチェックは、デバイス コンフィグレーションレジスタを無視します。また、ブランクチェックは全ての未実装メモリ空間を無視します。

Note: デバイス ID のメモリアドレスは読み出し専用であり、消去できません。従って、デバイス消去はこれらのメモリアドレスに影響しません。

Note: デバイス消去動作は自動的にタイミング制御されます。指定されたデバイス消去時間内に FCBUSY ビット = 「0」かつ CFGRDYビット = 「1」にならない場合、手順が正しく実行されなかったか、デバイスが損傷している可能性があります。

SendCommand (MTAP_COMMAND)

statusVal = XferData (MCHP_STATUS)

FCBUSY = 0CFGRDY = 1

No

SendCommand (MTAP_SW_MTAP)Select MTAP

Put MTAP in Command Mode

XferData (MCHP_ERASE)Issue Chip Erase Command

Read Erase Status

Done

Yes

10 milliseconds Delay

XferData (MCHP_DE_ASSERT_RST)Not required for PIC32MX Devices

SetMode (6’b011111)

DS60001145R_JP - p. 24 2016 Microchip Technology Inc.

PIC32

10.0 シリアル実行モードへの移行

プログラミングする前に、デバイスをシリアル実行モードにする必要があります。シリアル実行モードへ移行するには、デバイスがコード保護されていない事を確認する必要があります。デバイスがコード保護されている場合、デバイス消去を実行する必要があります。詳細は9.0 「デバイスの消去」を参照してください。

図 10-1: シリアル実行モードへの移行

Select MTAPSendCommand (MTAP_SW_MTAP)

Put MTAP in Command ModeSendCommand (MTAP_COMMAND)

Read Code-Protect StatusstatusVal = XferData (MCHP_STATUS)

CPS = 1 Cannot EnterMust Erase First

Select ETAPSendCommand (MTAP_SW_ETAP)

Put CPU in Serial Exec ModeSendCommand (ETAP_EJTAGBOOT)

No

2-wire

4-wire

Set MCLR High

Enable FlashXferData (MCHP_FLASH_EN)

Release ResetXferData (MCHP_DE_ASSERT_RST)

Put MTAP in Command ModeSendCommand (MTAP_COMMAND)

Select MTAPSendCommand (MTAP_SW_MTAP)

Assert ResetXferData (MCHP_ASSERT_RST) 2-wire

Yes

Select ETAPSendCommand (MCHP_SW_ETAP)

Required for PIC32MX devices

SetMode (6’b011111)

SetMode (6’b011111)

SetMode (6’b011111)

SetMode (6’b011111)

2016 Microchip Technology Inc. DS60001145R_JP - p. 25

PIC32

10.1 4 線式インターフェイス

シリアル実行モードに移行するための手順は以下の通りです。

1. SendCommand (MTAP_SW_MTAP)2. SetMode (6’b011111)3. SendCommand (MTAP_COMMAND)4. statusVal = XferData (MCHP_STATUS) 5. CPS (statusVal<7>) が「1」ではない場合、 初

にデバイスを消去する必要があります。

6. SendCommand (MTAP_SW_ETAP)7. SetMode (6’b011111)8. SendCommand (ETAP_EJTAGBOOT)9. MCLR ピンを HIGH にします。

10.2 2 線式インターフェイス

シリアル実行モードに移行するための手順は以下の通りです。

1. SendCommand (MTAP_SW_MTAP)2. SetMode (6’b011111)3. SendCommand (MTAP_COMMAND)4. statusVal = XferData (MCHP_STATUS) 5. CPS (statusVal<7>) が「1」ではない場合、 初

にデバイスを消去する必要があります。

6. XferData (MCHP_ASSERT_RST)7. SendCommand (MTAP_SW_ETAP)8. SetMode (6’b011111)9. SendCommand (ETAP_EJTAGBOOT)10. SendCommand (MTAP_SW_MTAP)11. SetMode (6’b011111)12. SendCommand (MTAP_COMMAND)13. XferData (MCHP_DE_ASSERT_RST)14. XferData (MCHP_FLASH_ENABLE)

この手順は、PIC32MX ファミリには不要です。 15. SendCommand (MTAP_SW_ETAP)16. SetMode (6’b011111)

Note: 前記の「デバイス ステータスの確認」手順( 図 8-1 参照 ) から MCLR ピンは LOW に駆動されたままであると想定します。

DS60001145R_JP - p. 26 2016 Microchip Technology Inc.

PIC32

11.0 プログラミング エグゼクティブ(PE)の ダウンロード

PE は RAM メモリ内に配置され、デバイスをプログラミングするためにCPUによって実行されます。PEは、簡潔なコマンドセットと通信プロトコルを使ってPIC32 デバイスをプログラミング / ベリファイするための手段をプログラマに提供します。PE は以下を含む各種の関数を提供します。

• メモリの読み出し

• メモリの消去

• メモリのプログラミング

• ブランクチェック

• エグゼクティブ ファームウェア リビジョンの読み出し

• フラッシュメモリ アドレスの CRC ( 巡回冗長検査 )値の取得

PE は、デバイスのプログラミングとベリファイに必要なローレベルタスクを実行します。これにより、プログラマは適切なコマンドとデータを発行する事によってデバイスをプログラミングできます。各コマンドの詳細な説明は 17.2 「PE コマンドセット」に記載しています。

PE は、デバイスのデータ RAM を変数の保存とプログラム実行のために使います。PE を実行した後のデータ RAM の内容は不確定です。 PE をデータ RAM にダウンロードした後は、表 17-1に示すコマンドセットを使ってPIC32ファミリをプログラミングできます。

図 11-1: PE のダウンロード

PE は以下の 2 手順によりメモリにロードできます。

1. データ RAM に PE ローダをロードしますPEローダは、PEバイナリファイルをデータRAM内の適切な位置にロードした後に、プログラミング実行コードへジャンプし、その実行を開始します。

2. PE バイナリを PE ローダへ入力します。

表 11-1 に、PE をダウンロードするための手順を示します。

Write the PE Loader to RAM

Load the PE

表 11-1: PE ダウンロード オペコード

動作 オペランド

手順 1: PIC32MX のみ : BMXCON を 0x1F0040 に初期

化します。PIC32 コアが実行する命令シーケン

スは以下の通りです。 lui a0,0xbf88ori a0,a0,0x2000 /* address of BMXCON */lui a1,0x1fori a1,a1,0x40 /* a1 has 0x1f0040 */sw a1,0(a0) /* BMXCON initialized */XferInstruction 0x3c04bf88XferInstruction 0x34842000XferInstruction 0x3c05001fXferInstruction 0x34a50040XferInstruction 0xac850000手順 2: PIC32MX のみ : BMXDKPBA を 0x800 に初期化

します。PIC32 コアが実行する命令シーケンス

は以下の通りです。

li a1,0x800sw a1,16(a0)XferInstruction 0x34050800XferInstruction 0xac850010手順 3: PIC32MX のみ : BMXDUDBA と BMXDUPBA を

BMXDRMSZ の値に初期化します。PIC32 コア

が実行する命令シーケンスは以下の通りです。

lw a1,64(a0) /* load BMXDMSZ */sw a1,32(a0)sw a1,48(a0)XferInstruction 0x8C850040XferInstruction 0xac850020XferInstruction 0xac850030手順 4: PIC32 RAM アドレスを PE 向けに設定します。

PIC32 コアが実行する命令シーケンスは以下の

通りです。

lui a0,0xa000ori a0,a0,0x800XferInstruction 0x3c04a000XferInstruction 0x34840800手順 5: PE_Loader をロードします。PE_Loader を完全

に PIC32 メモリへロードするまで、この手順 5を繰り返します。オペランド フィールド

「<PE_loader hi++>」は、表 11-2 に示す PEローダ オペコードの 上位部 (bit 31-16) を表し

ます。同様に、「<PE_loader lo++>」は、 表 11-2 に示す PE ローダ オペコードの 下位部

(bit 15-0) を表します。「++」は、これらの動作が

続けて実行された時に、新しいワードが LPEローダのオペコードのリスト ( 表 11-2) から転送

されるという事を示します。PIC32 コアが実行

する命令シーケンスは以下の通りです。

lui a2, <PE_loader hi++>ori a2,a2, <PE_loader lo++>sw a2,0(a0)addiu a0,a0,4

2016 Microchip Technology Inc. DS60001145R_JP - p. 27

PIC32

XferInstruction (0x3c06 <PE_loader hi++> )

XferInstruction (0x34c6 <PE_loader lo++> )

XferInstruction 0xac860000XferInstruction 0x24840004手順 6: PE_Loader へジャンプします。PIC32 コアが実

行する命令シーケンスは以下の通りです。

lui t9,0xa000ori t9,t9,0x800jr t9nopXferInstruction 0x3c19a000XferInstruction 0x37390800XferInstruction 0x03200008XferInstruction 0x00000000手順 7: PE_Loader を使って PE をロードします。PE を

完全に PIC32 メモリにロードするまで、この手

順 7 の 後の命令を繰り返します。この手順 7では、PE の Intel® Hex 形式ファイルを使って、

一度に複数の 32 ビットワードを構文解析して

PIC32 メモリへ転送します ( 補遺 B: 「HEX ファ

イル フォーマット」参照 )。PIC32 コアが実行す

る命令シーケンスは表 11-2 に記載しています。

SendCommand ETAP_FASTDATAXferFastData PE_ADDRESS (Address

of PE program block from PE Hex file)

XferFastData PE_SIZE (Number of 32-bit words of the program block from PE Hex file)

XferFastData PE software op code from PE Hex file (PE Instructions)

手順 8: PE へジャンプします。マジックナンバー

(0xDEAD0000) は、PE がメモリに完全にロード

されたという事を PE_Loader に知らせます。

PE_Loader は、マジックナンバーを検出すると

PE へジャンプします。

XferFastData 0x00000000XferFastData 0xDEAD0000

表 11-1: PE ダウンロード オペコード ( 続き )動作 オペランド

表 11-2: PE ローダ オペコード

オペコード 命令

0x3c07dead lui a3, 0xdead0x3c06ff20 lui a2, 0xff200x3c05ff20 lui al, 0xff20

herel:0x8cc40000 lw a0, 0 (a2)0x8cc30000 lw v1, 0 (a2)0x1067000b beq v1, a3, <here3>0x00000000 nop0x1060fffb beqz v1, <here1>0x00000000 nop

here2:0x8ca20000 lw v0, 0 (a1)0x2463ffff addiu v1, v1, -10xac820000 sw v0, 0 (a0)0x24840004 addiu a0, a0, 40x1460fffb bnez v1, <here2>0x00000000 nop0x1000fff3 b <here1>0x00000000 nop

here3:0x3c02a000 lui v0, 0xa0000x34420900 ori v0, v0, 0x9000x00400008 jr v00x00000000 nop

DS60001145R_JP - p. 28 2016 Microchip Technology Inc.

PIC32

12.0 データブロックのダウンロード

データブロックを PIC32 にプログラミングするには、そのブロックを SRAM にロードする必要があります。

12.1 PE を使わない場合

PE を使わずにメモリのブロックをプログラミングするには、データブロックを 初に RAM に書き込む必要があります。この方法では、データブロックをデバイスの内部 RAM メモリに書き込むために、プログラマはデータを埋め込んだ ( 即値の ) マシン語命令を転送する必要があります。

図 12-1: PE を使わないデータのダウンロード

データブロックをダウンロードするための手順は以下の通りです。

1. XferInstruction (op code)2. 後の命令を CPU へ転送するまで手順 1 を繰り

返します。

表 12-1: データダウンロード オペコード

12.2 PE を使う場合

PE を使う場合、12.0 「データブロックのダウンロード」と 14.0 「フラッシュ行書き込みの開始」の手順は1つのコマンド(ROW_PROGRAMまたはPROGRAM)を使って実行します。

ROW_PROGRAMコマンドは、フラッシュデータの1行をプログラミングし、PROGRAM コマンドはフラッシュデータの複数行をプログラミングします。これら 2 つのコマンドの説明は 17.0 「プログラミング エグゼクティブ」に記載しています。

オペコード 命令

手順 1: SRAM ベースアドレスを 0xA0000000 に初期化

します。

3c10a000 lui s0, 0xA000;手順 2: システム SRAM にプログラミングする完全な

1 行のデータを書き込みます。

3c08<DATA> 3508<DATA> ae08<OFFSET>

lui t0, <DATA(31:16)>;ori t0, t0, <DATA(15:0)>;sw t0, <OFFSET>(s0);// OFFSET increments by 4

手順 3: 1 行のデータをロードするまで手順 2 を繰り返

します。

bufAddr = RAM Buffer Address

Write 32-bit Immediate

Increment bufAddr

DoneNo

Data to bufAddr

2016 Microchip Technology Inc. DS60001145R_JP - p. 29

PIC32

13.0 ページ消去の開始

フラッシュメモリの全体ではなく 1 ページだけ消去する事ができます。その場合、PE は使いません。

PIC32MK ファミリでは、消去に使う内部電圧を高める事により、1 つのページに対して消去を再試行できます。

表 13-1: ページ消去オペコード

オペコード 命令手順 1: 全ての PIC32: 定数を初期化します。レジスタ

a1、a2、a3 はそれぞれ WREN = 1または

NVMOP<3:0> = 0100、WR = 1、WREN = 1とな

るよう設定します。レジスタ s1 と s2 はデータ値

のロックを解除するよう設定し、レジスタ s0 は

「0」に初期化します。

34054004 ori a1, $0,0x400434068000 ori a2,$0,0x800034074000 ori a3,$0,0x40003c11aa99 lui s1,0xaa9936316655 ori s1,s1,0x66553c125566 lui s2,0x5566365299aa ori s2,s2,0x99aa3c100000 lui s0,0x0000手順 2: PIC32MX ファミリのみ : レジスタ a0 を NVM レ

ジスタのベースアドレス (0xBF80_F400) に設定

します。

3c04bf80 lui a0,0xbf803484f400 ori a0,a0,0xf400手順 3: PIC32MK および PIC32MZ ファミリのみ : レジ

スタ a0 を NVM レジスタのベースアドレス

(0xBF80_0600) に設定します。レジスタ s3 は、

NVMBPB 内の書き込み保護を無効にするための

値に設定します。

3c04b480 lui a0,0xbf8034840600 ori a0,a0,0x060034138080 ori s3,$0,0x8080手順 4: PIC32MK および PIC32MZ ファミリのみ : ブー

トフラッシュの書き込み保護をロック解錠して無

効にします。

ac910010 sw s1,16(a0)ac920010 sw s2,16(a0)ac930090 sw s3,144(a0)00000000 nop手順 5: PIC32MK ファミリのみ : NVMCON2 の内容を退

避させます。

8c9400a0 lw s4,160(a0)手順 6: PIC32MK ファミリのみ : 初期プログラミング電

圧レベルを設定し、ページテストを有効にします

( ロック解除が必要 )。36953000 ori s5,s4,0x300032b5fcff andi s5,s5,0xFCFF

here3:ac910010 sw s1,16(a0)ac920010 sw s2,16(a0)ac860008 sw a2,8(a0)ac9500a0 sw s5,160(a0)

手順 7: 全ての PIC32: NVMADDR レジスタを消去するフ

ラッシュページのアドレスに設定します。

3c08<ADDR> luit0, <FLASH_PAGE_ADDR(31:16)>

3508<ADDR> ori t0,t0, <FLASH_PAGE_ADDR(15:0)>

ac880020 sw t0,32(a0)手順 8: 全ての PIC32: NVMCON レジスタを書き込み動

作向けに設定します。

ac850000 sw a1,0(a0)delay (6 us)

手順 9: PIC32MX のみ : LVDSTAT レジスタをポーリング

します。

here1:8c880000 lw t0,0(a0)31080800 andi t0,t0,0x08001500fffd bne t0,$0,here100000000 nop手順 10: 全ての PIC32: NVMCON レジスタのロックを解

除し、書き込み動作を開始します。

ac910010 sw s1,16(a0)ac920010 sw s2,16(a0)ac860008 sw a2,8(a0)手順 11: 全ての PIC32: WR ビット (NVMCON<15>) がク

リアされるまでループします。

here2:8c880000 lw t0,0(a0)01064024 and t0,t0,a21500fffd bne t0,$0,here200000000 nop手順 12: 全ての PIC32: WR ビット (NVMCON<15>) で

「0」を検出してから 500 ns 以上待機した後に、

NVM レジスタのいずれかに書き込みます。この

ために、実行に NOPを挿入する必要があります。

以下の例では、コアが 8 MHz で動作する事を想

定しています。従って、4 回の NOP命令によって

500 ns の待機時間が得られます。

00000000 nop00000000 nop00000000 nop00000000 nop手順 13: 全ての PIC32: WREN ビット (NVMCON<14>) を

クリアします。

ac870004 sw a3,4(a0)

表 13-1: ページ消去オペコード ( 続き )オペコード 命令

DS60001145R_JP - p. 30 2016 Microchip Technology Inc.

PIC32

手順 14: PIC32MK ファミリのみ : ページ内の全てのデー

タが消去された事を確認します。全てが消去され

ていない場合、電圧を調整した後に再度消去しま

す。どの電圧レベルでも失敗する場合、エラー処

理手順へ進みます。

ac870004 sw a3, 4(a0)20171000 addi s7, $0, 409600005020 add t2, $0, $08c880020 lw t0, 32(a0)01194020 add t0, t0, t9

here5:8d090000 lw t1, 0(t0)15200005 bne t1, $0, here6 214a0010 addi t2, t2, 16 11570009 beq t2, s7, here700000000 nop1000fffa beq $0, $0, here5 21080010 addi t0, t0, 16

here6:22b50100 addi s5, s5, 25632b60300 andi s6, s5, 76816c0ffde bne s6, $0, here300000000 nop10000005 beq $0, $0, err_proc00000000 nop手順 15: PIC32MK ファミリのみ : NVMCON2 レジスタを

復元します。

here7:ac9400a0 sw s4,160(a0)手順 16: 全ての PIC32: プログラミン シーケンスが正常に

完了した事を WRERR ビット (NVMCON<13>) で確認します。エラーが発生した場合、エラー処理

ルーチンへジャンプします。

8c880000 lw t0,0(a0)30082000 andi t0,t0,0x20001500<ERR_PROC>

bne t0,$0,<err_proc_offset>

00000000 nop

表 13-1: ページ消去オペコード ( 続き )オペコード 命令

2016 Microchip Technology Inc. DS60001145R_JP - p. 31

PIC32

14.0 フラッシュ行書き込みの開始

1行のデータがデバイスのSRAMにダウンロードされた後に、プログラミング シーケンスを開始してデータブロックをフラッシュメモリに書き込む必要があります。

フラッシュ行書き込みを開始するためのオペコードと命令については表 14-1 を参照してください。

14.1 PE を使う場合

PE を使う場合、データは SRAM からフラッシュ メモリへ即座に書き込まれます。追加の操作は不要です。

14.2 PE を使わない場合

フラッシュメモリ書き込み動作は NVMCON レジスタにより制御されます。NVMCON レジスタで書き込み動作のタイプを選択し、同レジスタの WR 制御ビット(NVMCON<15>) をセットする事により、プログラミング シーケンスを開始します。

図 14-1: PE を使わないフラッシュ書き込み の開始

フラッシュ書き込み手順 ( 表 14-1 参照 ) では、行プログラミング方式を使ってフラッシュメモリをプログラミングします ( 一般的に行プログラミングが も目的に適っているため )。一部のデバイスでは、ワードおよびクワッドワード プログラミング方式も必要に応じて利用できます。 詳細は、各デバイス データシート内の「フラッシュ プログラムメモリ」と『PIC32 ファミリ リファレンス マニュアル』の関連するセクションを参照してください。

フラッシュ書き込みを開始するための手順は以下の通りです。

1. XferInstruction (op code)2. 後の命令を CPU へ転送するまで手順 1 を繰り

返します。

Note: 一部の PIC32 は ECC メモリを備えています。ECC 機能を使う場合、フラッシュメモリは、4×32 ビット ワード アラインメントを使って ( すなわち 4 個の 32 ビットワードを1 つのグループとして ) プログラミングする必要があります。ECC を動的に使う場合、この機能を使うタイミングはプログラミング方式によって決まります。ECC は、単一ワード プログラミング コマンドを使ってプログラミングされるワードに対して有効ではありません。ECC は、クワッドワードまたは行プログラミング コマンドを使って4ワードを1つのグループとしてプログラミングされるワードに対してのみ有効です。これに従わない場合、実行中に ECC DED エラーが発生する可能性があります。ECC の使用および設定の詳細は、各デバイスのデータシートを参照してください。

Done

Unprotect Control Registers

Select Write Operation

Load Addresses in NVM Registers

Unlock Flash Controller

Start Operation

DS60001145R_JP - p. 32 2016 Microchip Technology Inc.

PIC32

表 14-1:フラッシュ行書き込み開始オペコード

オペコード 命令

手順 1: 全ての PIC32: 定数を初期化します。 レジスタ

a1、a2、a3 はそれぞれ WREN = 1または

NVMOP<3:0> = 0011、WR = 1、WREN = 1とな

るよう設定します。レジスタ s1 と s2 はデータ値

のロックを解除するよう設定し、レジスタ s0 は

「0」に初期化します。 3405400334068000340740003c11aa99363166553c125566365299aa3c100000

ori a1,$0,0x4003ori a2,$0,0x8000 ori a3,$0,0x4000 lui s1,0xaa99 ori s1,s1,0x6655lui s2,0x5566 ori s2,s2,0x99aalui s0,0x0000

手順 2: PIC32MX のみ : レジスタ a0 を NVM レジスタの

ベースアドレス (0xBF80_F400) に設定します。

3c04bf803484f400

lui a0,0xbf80 ori a0,a0,0xf400

Step 2: PIC32MK および PIC32MZ ファミリのみ : レジ

スタ a0 を NVM レジスタのベースアドレス

(0xBF80_0600) に設定します。レジスタ s3 は、

NVMBPB 内の書き込み保護を無効にするための

値に設定します。 3c04bf803484060034138080

lui a0,0xbf80 ori a0,a0,0x0600ori s3,$0,0x8080

手順 3: PIC32MK および PIC32MZ ファミリのみ : ブー

トフラッシュの書き込み保護のロックを解錠して

無効にします。

ac910010ac920010ac93009000000000

sw s1,16(a0) sw s2,16(a0)sw s3,144(a0) nop

手順 4: 全ての PIC32: NVMADDR レジスタをプログラミ

ング先フラッシュ行のアドレスに設定します。

3c08<ADDR>3508<ADDR>ac880020

lui t0,<FLASH_ROW_ADDR(31:16)>ori t0,t0,<FLASH_ROW_ADDR(15:0)>sw t0,32(a0)

手順 5: PIC32MX のみ : NVMSRCADDR レジスタを物理

ソース SRAM アドレス ( オフセットは 64) に設定

します。

3c10<ADDR>3610<ADDR>ac900040

lui s0, <RAM_ADDR(31:16)>ori s0,s0,<RAM_ADDR(15:0)>sw s0,64(a0)

Step 5: PIC32MK および PIC32MZ ファミリのみ : NVMSRCADDR レジスタを物理ソース SRAM ア

ドレス ( オフセットは 112) に設定します。

3c10<ADDR>3610<ADDR>ac900070

lui s0, <RAM_ADDR(31:16)>ori s0,s0,<RAM_ADDR(15:0)>sw s0,112(a0)

手順 6: 全ての PIC32: NVMCON レジスタを書き込み動

作向けに設定します。

ac850000 sw a1,0(a0)delay (6 μs)

手順 7: PIC32MX のみ : LVDSTAT レジスタをポーリング

します。

8C880000310808001500fffd00000000

here1: lw t0,0(a0) andi t0,t0,0x0800 bne t0,$0,here1 nop

手順 8: 全ての PIC32: NVMCON レジスタのロックを解

除し、書き込み動作を開始します。

ac910010ac920010ac860008

sw s1,16(a0) sw s2,16(a0)sw a2,8(a0)

手順 9: 全ての PIC32: WR ビット (NVMCON<15>) がク

リアされるまでループします。

8c880000010640241500fffd00000000

here2:lw t0,0(a0)and t0,t0,a2bne t0,$0,here2nop

手順 10: 全ての PIC32: WR ビット (NVMCON<15>) の「0」を検出してから 500 ns 以上待機した後に、

NVM レジスタのいずれかに書き込みます。この

ために、実行に NOPを挿入する必要があります。

以下の例では、コアが 8 MHz で動作する事を想

定しています。従って、4 回の NOP命令によって

500 ns の待機時間が得られます。

00000000000000000000000000000000

nopnopnopnop

手順 11: 全ての PIC32: WREN ビット (NVMCONM<14>)をクリアします。

ac870004 sw a3,4(a0)手順 12: 全ての PIC32: プログラミン シーケンスが正常に

完了した事を WRERR ビット (NVMCON<13>) で確認します。エラーが発生した場合、エラー処理

ルーチンへジャンプします。

8c880000300820001500<ERR_PROC>00000000

lw t0,0(a0)andi t0,zero,0x2000bne t0, $0, <err_proc_offset>nop

表 14-1:フラッシュ行書き込み開始オペコード ( 続き )オペコード 命令

2016 Microchip Technology Inc. DS60001145R_JP - p. 33

PIC32

15.0 デバイスメモリのベリファイ

ベリファイは、コードメモリ空間から読み出した内容を、プログラマのバッファで保持している複製と比較します。コンフィグレーション レジスタは、その他のコードと一緒にベリファイされます。

15.1 PE を使ったメモリのベリファイ

メモリのベリファイは GET_CRC コマンドを使って実行します。表 17-2 に、オペコードと命令を示します。

図 15-1: PE を使ったメモリのベリファイ

PE を使ってメモリをベリファイするための手順は以下の通りです。

1. XferFastData (GET_CRC)2. XferFastData (start_Address)3. XferFastData (length)4. valCkSum = XferFastData (32’h0x00)

valCkSum がプログラマのバッファ内で保持されている複製のチェックサムと一致するかどうかベリファイします。

15.2 PE を使わないメモリのベリファイ

高速データレジスタからの一連の読み出しアクセスを実行する事により、フラッシュメモリからの読み出しを実行します。表 20-4 に、EJTAG プログラミングの詳細 ( プロセッサ アクセス動作を実行するためのアドレスとオペコード データを含む ) を示します。

図 15-2: PE を使わないメモリのベリファイ

メモリをベリファイするための手順は以下の通りです。

1. XferInstruction (op code)2. 後の命令を CPU へ転送するまで手順 1 を繰り

返します。

3. valReadがプログラマのバッファ内で保持されている複製と一致するかどうかベリファイします。

4. 手順1~3を各メモリ位置に対して繰り返します。

表 15-1: デバイス ベリファイ オペコード

Note: コンフィグレーション レジスタはデバイスコード保護ビットを含むため、コード保護が有効な場合、コードメモリは書き込みの直後にベリファイする必要があります。これは、コード保護ビットをクリアした後にデバイスリセットが発生すると、デバイスの読み出しと検証ができなくなるからです。

Issue Verify Command

Receive Response

オペコード 命令

手順 1: 一部の内容を初期化します。

3c13ff20 lui s3, 0xFF20手順 2: メモリアドレスを読み出します。

3c08<ADDR>3508<ADDR>

lui t0,<FLASH_WORD_ADDR(31:16)>ori t0, t0, <FLASH_WORD_ADDR(15:0)>

手順 3: 高速データ アドレスに書き込みます。

8d090000 ae690000

lw t1, 0(t0) sw t1, 0(s3)

手順 4: 高速データレジスタ 0xFF200000 からデータを読

み出します。

手順 5: 全てのコンフィグレーション アドレスを読み出す

まで手順 2 ~ 4 を繰り返します。

Read Memory Location

Verify Location

DoneNo

using ReadFromAddressPseudo Operation

DS60001145R_JP - p. 34 2016 Microchip Technology Inc.

PIC32

16.0 プログラミング モードの終了

デバイスをプログラミングした後は、新しいプログラム メモリの内容の実行を開始するために、プログラミング モードを終了する必要があります。

16.1 4 線式インターフェイス

プログラミング モードを終了するには、MCLR ピンのVIH を OFF にします ( 図 16-1 参照 )。 終了のための唯一の要件として、 後のクロックおよびプログラム信号から VIH を OFF にするまでの間に待機時間 P16 が必要です。

図 16-1: 4 線式プログラミング モードの終了

プログラミング モードを終了するための手順は以下の通りです。

1. SetMode (5’b11111)2. MCLR ピンをアサートします。

3. デバイスへの給電を停止します ( デバイスが給電されている場合 )。

16.2 2 線式インターフェイス

プログラミング モードを終了するには、MCLR ピンのVIH を OFF にします ( 図 16-2 参照 )。 終了のための唯一の要件として、 後のクロック (PGECx) およびプログラム信号 (PGEDx) から VIH を OFF にするまでの間に待機時間 P16 が必要です。

図 16-2: 2 線式プログラミング モードの終了

プログラミング モードを終了するための手順は以下の通りです。

1. SetMode (5’b11111)2. MCLR ピンをアサートします。

3. PGECx でクロックパルスを発行します。

4. デバイスへの給電を停止します ( デバイスが給電されている場合 )。

MCLR

VDD/VDD1V8

TCK

TMS

TDI

TDO

‘1’ ‘1’ ‘0’

P16

MCLR

VDD/VDD1V8

PGEDx

PGECx

P16 P17

VIH

VIH

PGEDx = Input

2016 Microchip Technology Inc. DS60001145R_JP - p. 35

PIC32

17.0 プログラミング エグゼクティブ

17.1 PE の通信

プログラマと PE はマスタとスレーブの関係を持ち、プログラマがマスタ プログラミング デバイスとして動作し、PE がスレーブとして動作します。 全ての通信は、コマンドの形態でプログラマによって開始されます。PE は一度に 1 つのコマンドしか受信できません。PE は受信したコマンドを処理した後に、プログラマへ 1 つの応答を送信します。

17.1.1 2 線式 ICSP EJTAG の通信レート

拡張 ICSP モードの場合、PIC32 は内部高速 RC オシレータ ( 公称周波数は 8 MHz) を使って動作します。

17.1.2 通信の概要

プログラマと PE は、EJTAG アドレス レジスタ、データレジスタ、高速データレジスタを使って通信します。プログラマは、高速データレジスタを使ってコマンドとデータを PE へ転送します。プログラマは、アドレスレジスタとデータレジスタを使って PE からの応答を 受 信 し ま す。応 答 を 受 信 す る た め のGetPEResponse疑似命令を以下に示します。

書式response = GetPEResponse()

目的プログラマがPEから32ビットの応答値を受信できるようにします。

例 17-1: GetPEResponseの例

プログラマと PE の間の代表的な通信シーケンスを表 17-1 に示します。 シーケンスはプログラマがコマンドとオプションの追加データを PE へ送信した時点で始まり、PE はコマンドを実行します。 PE はコマンドの実行を終了した後に、プログラマへ応答を送信します。 複数の応答が返される場合があります。例えば、プログラマが READ コマンドを送信した場合、応答は読み出したデータを含みます。

表 17-1: PE の通信シーケンス

Note: プログラミング エグゼクティブ (PE) は、MPLAB X IDE のインストールに含まれています。適切な PE ファイルをデバイスにダウンロードするために、Microchip 社ウェブサイト (www.microchip.com) の関連する製品ページをご覧ください。

動作 オペランド

手順 1: プログラマはコマンドとオプションのデータを

PE へ送信します。

XferFastData (Command | data len)XferFastData.. optional data..手順 2: プログラマは PE からの応答を読み出します。

GetPEResponse responseGetPEResponse... response...

WORD GetPEResponse(){ WORD response;

// Wait until CPU is readySendCommand(ETAP_CONTROL);

// Check if Proc.Access bit (bit 18) is setdo { controlVal=XferData(32’h0x0004C000 );} while( PrAcc(contorlVal<18>) is not ‘1’ );

// Select Data RegisterSendCommand(ETAP_DATA);

// Receive Responseresponse = XferData(0);

// Tell CPU to execute instructionSendCommand(ETAP_CONTROL);XferData(32’h0x0000C000);

// return 32-bit responsereturn response;}

DS60001145R_JP - p. 36 2016 Microchip Technology Inc.

PIC32

17.2 PE コマンドセット

表 17-2 に、PE コマンドセットの詳細 ( オペコード、ニーモニック、各コマンドの概要 ) を示します。各コマンドの機能の詳細は、17.2.3 「ROW_PROGRAM コマンド」~ 17.2.14 「CHANGE_CFGコマンド」に記載しています。

PE は、受信した各コマンドに対する応答をプログラマへ送信します。応答は、コマンドが正しく処理されたかどうかを示します。応答は、要求された応答データまたはエラーデータを含みます。

17.2.1 コマンドの書式

全ての PE コマンドは、32 ビットのヘッダと、コマンドが要求するデータにより構成されます ( 図 17-1 参照 )。32 ビットのヘッダは、16 ビットのオペコード フィールド ( コマンドの識別用 ) と 16 ビットのコマンド オペランド フィールドで構成されます。オペランドフィールドの使い方はコマンドによって異なります。

オペコード フィールド内のコマンドは、表 17-2 に示すコマンドセット内のいずれかに一致する必要があります。そうではない場合、NACK 応答が返されます( 表 17-3 参照 )。PE は、コマンドのオペランド フィールドを使って、読み書きするバイトの数を特定します。このフィールドの値が正しくない場合、PE はコマンドを正しく受信しません。

表 17-2: PE コマンドセット

Note: 一部のコマンドはオペランド情報を持ちませんが、オペランド フィールドは送信する必要があります (PE はその内容を無視します )。

図 17-1: コマンドの書式31 16

Op code15 0

Operand (optional)31 16

Command Data High (if required)15 0

Command Data Low (if required)

オペコード

ニーモニック 概要

0x0 ROW_PROGRAM(1)指定アドレスで、フラッシュメモリの 1 行をプログラミングします。

0x1 READ 指定アドレスから始まるメモリの N 個の 32 ビットワードを読み出します。(N < 65,536)

0x2 PROGRAM 指定アドレスで始まるフラッシュメモリをプログラミングします。

0x3 WORD_PROGRAM(3)指定アドレスでフラッシュメモリの 1 ワードをプログラミングします。

0x4 CHIP_ERASE デバイス全体を消去します。

0x5 PAGE_ERASE 指定アドレスからコードメモリのページを消去します。

0x6 BLANK_CHECK コードをブランクチェックします。

0x7 EXEC_VERSION PE ソフトウェア バージョンを読み出します。

0x8 GET_CRC フラッシュメモリの CRC を取得します。

0x9 PROGRAM_CLUSTER 指定数のバイトを指定アドレスへプログラミングします。

0xA GET_DEVICEID デバイスのハードウェア ID を返します。

0xB CHANGE_CFG(2) PE の各種コンフィグレーションを設定するためにプローブによって使われます。

0xC GET_CHECKSUM フラッシュメモリのチェックサムを取得します。

0xD QUAD_WORD_PGRM(4)指定アドレスでフラッシュメモリの 4 ワードをプログラミングします。

Note 1: 各デバイスの行サイズについては表 5-1 を参照してください。

2: このコマンドは、PIC32MX1XX/2XX では利用できません。

3: ECC を実装した PIC32MZ ファミリの場合、WORD_PROGRAMコマンドは ECC パリティビットを生成しません。ECCを有効にした場合、WORD_PROGRAMコマンドを使ってプログラミングされた位置を読み出すと DED エラーが発生し

ます。

4: このコマンドは、PIC32MK および PIC32MZ ファミリでのみ利用できます。

2016 Microchip Technology Inc. DS60001145R_JP - p. 37

PIC32

17.2.2 応答の書式

表 17-3 に PE 応答セットを示します。全ての PE 応答は、32 ビットのヘッダと、応答に必要な任意データにより構成されます ( 図 17-2 参照 )。

17.2.2.1 Last_Cmd フィールド

Last_Cmd は、応答の 初のワード内の 16 ビットフィールドであり、PE が処理したコマンドを示します。このフィールドは、プログラマが送信したコマンドを PE が正しく受信した事を確認するために使えます。

17.2.2.2 応答コード

応答コードは、 後のコマンドの処理に成功したかどうか、または、そのコマンドが認識可能な値かどうかを示します。応答コード値を表 17-3 に示します。

17.2.2.3 オプションデータ

特定のコマンド ( 読み出し等 ) では、応答ヘッダの後にオプションのデータが続きます。オプションデータの 32 ビットワードの数は、直近のコマンド動作とそのパラメータによって異なります。

17.2.3 ROW_PROGRAM コマンド

ROW_PROGRAMコマンドは、指定アドレスで1行のデータをプログラミングするよう PE に指示します。 メモリにプログラミングするデータ ( コマンドワードData_1 ~ Data_N に格納 ) は、表 17-4 に示すパックされた命令ワード書式に従って配列する必要があります ( このコマンドは、完全な 1 行のデータを要求します )。

期待される応答 (1 ワード )

図 17-4: ROW_PROGRAMコマンドへの応答

図 17-2: 応答の書式31 16

Last Command15 0

Response Code31 16

Data_High_115 0

Data_Low_131 16

Data_High_N15 0

Data_Low_N

表 17-3: 応答値

オペコード ニーモニック 概要

0x0 PASS コマンドの処理に成功した

0x2 FAIL コマンドの処理に失敗した

0x3 NACK コマンドは未知

図 17-3: ROW_PROGRAMコマンド31 16

Op code15 0

Operand31 16

Addr_High15 0

Addr_Low31 16

Data_High_115 0

Data_Low_131 16

Data_High_N15 0

Data_Low_N

表 17-4: ROW_PROGRAMコマンドの書式

フィールド 概要

Op code 0x0Operand 未使用

Addr_High 32 ビット デスティネーション アドレスの上位 16 ビット

Addr_Low 32 ビット デスティネーション アドレスの下位 16 ビット

Data_High_1 データワード 1 の上位 16 ビット

Data_Low_1 データワード 1 の下位 16 ビット

Data_High_N データワード 2 ~ N の上位 16 ビット

Data_Low_N データワード 2 ~ N の下位 16 ビット

31 16Last Command

15 0Response Code

DS60001145R_JP - p. 38 2016 Microchip Technology Inc.

PIC32

17.2.4 READコマンド

READコマンドは、メモリからの読み出しを PE に指示します。Addr_Low および Addr_High フィールドで指定された 32 ビットアドレスから始まる N 個 (N はOperand フィールドで指定 ) の 32 ビットワードを読み出します。このコマンドは、フラッシュメモリとコンフィグレーション ワードを読み出すために使えます。このコマンドへの応答内で返される全てのデータは、表17-5に示すパックされたデータ書式に従います。

期待される応答

図 17-6: READコマンドへの応答

17.2.5 PROGRAMコマンド

PROGRAMコマンドは、Addr_Lowおよび Addr_Highフィールドで指定された 32 ビットアドレスから始まるフラッシュメモリ ( コンフィグレーション ワードを含む ) をプログラミングするよう PE に指示します。32 ビットの Length フィールドは、プログラミングするバイトの数を指定します。 アドレスはフラッシュの行サイズ境界を指す必要があり、データ長はフラッシュ行サイズの倍数である事が必要です。各 PIC32 デバイスの行サイズは表 5-1 に記載しています。図 17-5: READコマンド

31 16Op code

15 0Operand

31 16Addr_High

15 0Addr_Low

表 17-5: READコマンドの書式

フィールド 概要

Op code 0x1Operand 読み出す 32 ビットワードの数 (N)

( 大 65,535)Addr_Low 32 ビット ソースアドレスの

下位 16 ビット

Addr_High 32 ビット ソースアドレスの上位 16 ビット

31 16Last Command

15 0Response Code

31 16Data_High_1

15 0Data_Low_1

31 16Data_High_N

15 0Data_Low_N

Note: 未実装メモリを読み出すと、PE はリセットします。ターゲット デバイスが実装しているメモリ位置にのみアクセスする事が必要です。

図 17-7: PROGRAMコマンド31 16

Op code15 0

Operand31 16

Addr_High15 0

Addr_Low31 16

Length_High15 0

Length_Low31 16

Data_High_115 0

Data_Low_131 16

Data_High_N15 0

Data_Low_N

表 17-6: PROGRAMコマンドの書式

フィールド 概要

Op code 0x2

Operand 未使用

Addr_Low 32 ビット デスティネーション アドレスの下位 16 ビット

Addr_High 32 ビット デスティネーション アドレスの上位 16 ビット

Length_Low データ長の下位 16 ビット

Length_High データ長の上位 16 ビット

Data_Low_N データワード 2 ~ N の下位 16 ビット

Data_High_N データワード 2 ~ N の上位 16 ビット

2016 Microchip Technology Inc. DS60001145R_JP - p. 39

PIC32

プログラミングには以下の 3 通りの状況があります。

• プログラミングするデータ長が 1 フラッシュ行のサイズである場合

• プログラミングするデータ長が 2 フラッシュ行のサイズである場合

• プログラミングするデータ長が 2 フラッシュ行のサイズよりも大きい場合

データ長が 512 バイトである場合、PE はプローブから 512 バイトのデータブロックを受信し、直ちにこのコマンドに対する応答をプローブへ返送します。

PE は、受信したデータの各行に対して応答します。コマンドのデータ長が 1 行に等しい場合、1 つの PE 応答が生成されます。データ長が 2 行に等しい場合、PEはデータの 2 つの行を受信するまで待機した後に、各データ行に対する応答を続けて送信します。データ長がデータの 2 行よりも大きい場合、PE は 初の 2 行のデータを受信した後に 初の 1 行に対する応答を送信します。後続の応答は、その次のデータ行パケットを受信した後に送信します。つまり、応答はデータより 1 行遅れます。データの 後の行を受信した時点で、PE は 後から 2 番目と 後のデータ行に対する応答を続けて送信します。

いずれかのブロックのプログラミング中にエラーが発生した場合、PE はエラーステータスをプローブへ送信し、PROGRAMコマンドの実行を中止します。プローブは、エラーステータスを受信した時にデータの送信を停止する必要があります。PE は、プローブからのこのコマンドに関する後続のデータを一切処理しなくなります。PROGRAM コマンドの処理を図 17-9 に示します。

このコマンドに対する応答は、他のコマンドとは少し異なります。応答の 16 MSb は、デスティネーションアドレス ( 直近ブロックのプログラミング先 ) の16 LSb を格納します。これにより、プローブと PE はデータ / 応答の送受信の同期を適正に保つ事ができます。

期待される応答 (1 ワード )

図 17-8: PROGRAMコマンドへの応答

Note: PROGRAM コマンドの実行に失敗した場合、プログラマは READコマンドを使って、失敗した行をフラッシュメモリから読み出す必要があります。プログラマは、フラッシュメモリから読み出した行とプログラマ内の複製をワードごとに比較し、フラッシュ プログラミングが失敗したアドレスを特定する必要があります。

31 16LSB 16 bits of the destination address of last block

15 0Response Code

DS60001145R_JP - p. 40 2016 Microchip Technology Inc.

PIC32

図 17-9: PROGRAMコマンドのアルゴリズム

Done

Receive statusfor Row N

Receive statusfor Row N-1

Receive statusfor Row 2

Receive statusfor Row 2

Receive statusfor Row 1

Receive status(LSB 16 bits of

Destination AddressStatus Value)

Send first rowof data

Start

Send one rowof data

Receive statusfor Row 1

Data is Data isequal to asingle row

equal totwo rows

Datais larger than

two rows

Send first rowof data

Send second rowof data

Send second rowof data

Send third rowof data

Send Nth rowof data

2016 Microchip Technology Inc. DS60001145R_JP - p. 41

PIC32

17.2.6 WORD_PROGRAMコマンド

WORD_PROGRAMコマンドは、指定アドレスで 1 ワード(32ビット )のデータをプログラミングするようPEに指示します。

期待される応答 (1 ワード )

図 17-11: WORD_PROGRAMコマンドへの応答

17.2.7 CHIP_ERASEコマンド

CHIP_ERASE コマンドは、コンフィグレーション ブロックを含むデバイス全体を消去します。

消去の実行後は、フラッシュメモリの全体が0xFFFFFFFF を格納します。

期待される応答 (1 ワード )

図 17-13: CHIP_ERASEコマンドへの応答

図 17-10: WORD_PROGRAMコマンド31 16

Op code15 0

Operand31 16

Addr_High15 0

Addr_Low31 16

Data_High15 0

Data_Low

表 17-7: WORD_PROGRAMコマンドの書式

フィールド 概要

Op code 0x3Operand 未使用

Addr_High 32 ビット デスティネーション アドレスの上位 16 ビット

Addr_Low 32 ビット デスティネーション アドレスの下位 16 ビット

Data_High データワードの上位 16 ビット

Data_Low データワードの下位 16 ビット

31 16Last Command

15 0Response Code

図 17-12: CHIP_ERASEコマンド31 16

Op code15 0

Operand

表 17-8: CHIP_ERASEコマンドの書式

フィールド 概要

Op code 0x4Operand 未使用

Addr_Low 32 ビット デスティネーション アドレスの下位 16 ビット

Addr_High 32 ビット デスティネーション アドレスの上位 16 ビット

31 16Last Command

15 0Response Code

DS60001145R_JP - p. 42 2016 Microchip Technology Inc.

PIC32

17.2.8 PAGE_ERASEコマンド

PAGE_ERASEコマンドは、指定ベースアドレスから始まる指定ページ数のコードメモリを消去します。ベースアドレスは、デバイスに応じて 0x400 または 0x100の倍数である事が必要です。 消去の実行後は、コードメモリ内の消去対象となった全てのワードが 0xFFFFFFFF を格納します。

期待される応答 (1 ワード )

図 17-15: PAGE_ERASEコマンドへの応答

17.2.9 BLANK_CHECKコマンド

BLANK_CHECK コマンドは、コードメモリの内容とコード保護コンフィグレーション ビット (GCP、GWRP) がブランク ( 全てのビットが「1」) であるかどうか PE に問い合わせます。

期待される応答 ( ブランクデバイスの 1 ワード )

図 17-17: BLANK_CHECKコマンドへの応答

図 17-14: PAGE_ERASEコマンド31 16

Op code15 0

Operand31 16

Addr_High15 0

Addr_Low

表 17-9: PAGE_ERASEコマンドの書式

フィールド 概要

Op code 0x5Operand 消去するページの数

Addr_Low 32 ビット デスティネーション アドレスの下位 16 ビット

Addr_High 32 ビット デスティネーション アドレスの上位 16 ビット

31 16Last Command

15 0Response Code

図 17-16: BLANK_CHECKコマンド31 16

Op code15 0

Operand31 16

Addr_High15 0

Addr_Low31 16

Length_High15 0

Length_Low

表 17-10: BLANK_CHECKコマンドの書式

フィールド 概要

Op code 0x6

Operand 未使用

Address ブランクチェックを開始するアドレス

Length チェックするプログラムメモリ領域のバイト数

31 16Last Command

15 0Response Code

2016 Microchip Technology Inc. DS60001145R_JP - p. 43

PIC32

17.2.10 EXEC_VERSIONコマンド

EXEC_VERSIONは、RAMに保存されている PEソフトウェアのバージョンを問い合わせます。

期待される応答 (1 ワード )

図 17-19: EXEC_VERSIONコマンドへの応答

17.2.11 GET_CRCコマンド

GET_CRCは、指定アドレスから始まる指定長さのバッファの CRC を、ルックアップ方式を使って計算します。CRC の詳細は以下の通りです。

• CRC-CCITT、16 ビット

• 多項式 : X^16+X^12+X^5+1、hex 0x00011021• シード : 0xFFFF• 上位バイト (MSB) を 初にシフトインします。

期待される応答 (2 ワード )

図 17-21: GET_CRCコマンドへの応答

図 17-18: EXEC_VERSIONコマンド31 16

Op code

15 0

Operand

表 17-11: EXEC_VERSIONコマンドの書式

フィールド 概要

Op code 0x7Operand 未使用

31 16

Last Command

15 0

Version Number

Note 1: 応答では、CRC の 下位 16 ビットだけが有効です。

2: PE は、ハードウェア CRC が利用可能かどうか自動的に判定し、既定値としてハードウェア CRC を使います。PIC32MX1XX/2XX では、ハードウェアCRC を使いません。

図17-20: GET_CRCコマンド31 16

Op code15 0

Operand31 16

Addr_High15 0

Addr_Low31 16

Length_High15 0

Length_Low

表17-12: GET_CRCコマンドの書式

フィールド 概要

Op code 0x8

Operand 未使用

Address CRC 計算を開始するアドレス

Length CRC を計算するバッファの長さ( バイト数 )

31 16

Last Command15 0

Response Code31 16

CRC_High15 0

CRC_Low

DS60001145R_JP - p. 44 2016 Microchip Technology Inc.

PIC32

17.2.12 PROGRAM_CLUSTERコマンド

PROGRAM_CLUSTERは、指定アドレスへ指定バイト数をプログラミングします。アドレスは 32 ビット境界を指す必要があり、バイト数は 32 ビットワードの倍数である事が必要です。

期待される応答 (1 ワード )

図 17-23: PROGRAM_CLUSTERコマンドへの応答

17.2.13 GET_DEVICEIDコマンド

GET_DEVICEIDコマンドは、デバイスのハードウェアID を返します。

期待される応答 (1 ワード )

図 17-25: GET_DEVICEIDコマンドへの応答

図 17-22: PROGRAM_CLUSTERコマンド31 16

Op code

15 0

Operand

31 16

Addr_High

15 0

Addr_Low

31 16

Length_High

15 0

Length_Low

表 17-13: PROGRAM_CLUSTERコマンドの書式

フィールド 概要

Op code 0x9Operand 未使用

Address プログラミング開始アドレス

Length プログラミングする領域の長さ( バイト数 )

Note: PROGRAM_CLUSTER コマンドの実行に失敗した場合、プログラマは READ コマンドを使って、フラッシュメモリから失敗した行を読み出す必要があります。プログラマは、フラッシュメモリから読み出した行とプログラマ内の複製をワードごとに比較し、フラッシュ プログラミングが失敗したアドレスを特定する必要があります。

31 16

Last Command

15 0

Response Code

図 17-24: GET_DEVICEIDコマンド31 16

Op code

15 0

Operand

表 17-14: GET_DEVICEIDコマンドの書式

フィールド 概要

Op code 0xAOperand 未使用

31 16

Last Command

15 0

Device ID

2016 Microchip Technology Inc. DS60001145R_JP - p. 45

PIC32

17.2.14 CHANGE_CFGコマンド

期待される応答 (1 ワード )

図 17-27: CHANGE_CFGコマンドへの応答

17.2.15 GET_CHECKSUMコマンド

期待される応答 (1 ワード )

図 17-29: GET_CHECKSUMコマンドへの応答

CHANGE_CFGは、PEのコンフィグレーションを設定するために、プローブによって使われます。現時点では、PE が使う CRC 計算方式 ( 以下のどちらか ) を選択するためのコンフィグレーションしかありません。 • ソフトウェア CRC 計算方式 • ハードウェア CRC 計算方式

図 17-26: CHANGE_CFGコマンド31 16

Op code

15 0

Operand

31 16

CRCFlag_High

15 0

CRCFlag_Low

表 17-15: CHANGE_CFGコマンドの書式

フィールド 概要

Op code 0xBOperand 未使用

CRCFlag 値が「0」の場合、PE はソフトウェア CRC 計算方式を使います。 値が「1」の場合、PE はハードウェア CRC ユニットを使って CRC を計算します。

31 16

Last Command

15 0

Response Code

Note: PIC32MX1XX/2XX では、CHANGE_CFGコマンドを利用できません。

GET_CHECKSUMは、指定アドレス(引数address)から始まる指定長さ (引数 length)の領域内の全バイトの総和を返します。結果は 32 ビットワードです。

図 17-28: CHANGE_CFGコマンド31 16

Op code

15 0

Operand

31 16

Addr_High

15 0

Addr_Low

31 16

Length_High

15 0

Length_Low

表 17-16: GET_CHECKSUMコマンドの書式

フィールド 概要

Op code 0x0COperand 未使用

Addr_High チェックサムを計算するデータの開始アドレス (32 ビット ) の上位 16 ビット

Addr_Low チェックサムを計算するデータの開始アドレス (32 ビット ) の下位 16 ビット

Length_High チェックサムを計算するデータ長さ(32 ビット ) の上位 16 ビット

Length_Low チェックサムを計算するデータ長さ(32 ビット ) の下位 16 ビット

31 16

Last Command

15 0

Response Code

31 16

Checksum_High

15 0

Checksum_Low

DS60001145R_JP - p. 46 2016 Microchip Technology Inc.

PIC32

17.2.16 QUAD_WORD_PROGRAMコマンド

期待される応答 (1 ワード )

図 17-31: QUAD_WORD_PROGRAMコマンドへの応答

QUAD_WORD_PROGRAMは、4個の32ビットワードを指定アドレスでプログラミングするよう PE に指示します。アドレスは 4 ワード境界を指す必要があります(bit 0 と bit 1 は常に「0」)。そうしないと、コマンドは FAIL 応答値を返し、データはプログラミングされません。

図 17-30: QUAD_WORD_PROGRAMコマンド31 16

Op code

15 0

Operand

31 16

Addr_High

15 0

Addr_Low

31 16

Data0_High

15 0

Data0_Low

31 16

Data1_High

15 0

Data1_Low

31 16

Data2_High

15 0

Data2_Low

31 16

Data3_High

15 0

Data3_Low

表 17-17: QUAD_WORD_PROGRAMコマンドの書式

フィールド 概要

Op code 0x0DOperand 未使用

Addr_High 32 ビット開始アドレスの上位 16 ビット

Addr_Low 32 ビット開始アドレスの下位 16 ビット

Data0_High データワード 0 の上位 16 ビット

Data0_Low データワード 0 の下位 16 ビット

Data1_High データワード 1 の上位 16 ビット

Data1_Low データワード 1 の下位 16 ビット

Data2_High データワード 2 の上位 16 ビット

Data2_Low データワード 2 の下位 16 ビット

Data3_High データワード 3 の上位 16 ビット

Data3_Low データワード 3 の下位 16 ビット

31 16

Last Command

15 0

Response Code

2016 Microchip Technology Inc. DS60001145R_JP - p. 47

PIC32

18.0 チェックサム

18.1 原理

チェックサムはプログラム フラッシュ、ブートフラッシュ (デバイス コンフィグレーション ワードを除く )、デバイス ID レジスタ ( マスク適用 )、デバイス コンフィグレーション ワード ( マスク適用 ) 内の全てのバイト (8 ビット値 ) の総和 (32 ビット値 ) の 2 の補数として計算されます。この 終的な 32 ビット値がチェックサムとして提供されます。

18.2 マスク値

デバイス コンフィグレーションのマスク値は、全ての未実装ビットを「0」に設定し、全ての実装ビットを

「1」に設定する事により得られます。 例として、PIC32MX360F512L の DEVCFG0 レジスタをレジスタ 18-1 に示します。このレジスタのマスク値は以下の通りです。

mask_value_devcfg0 = 0x110FF00B

レジスタ 18-1: PIC32MX360F512Lの DEVCFG0レ ジスタ

ビットレンジ

ビット31/23/15/7

ビット30/22/14/6

ビット29/21/13/5

ビット28/20/12/4

ビット27/19/11/3

ビット26/18/10/2

ビット25/17/9/1

ビット24/16/8/0

31:24r-0 r-1 r-1 R/P-1 r-1 r-1 r-1 R/P-1— — — CP — — — BWP

23:16r-1 r-1 r-1 r-1 R/P-1 R/P-1 R/P-1 R/P-1— — — — PWP19 PWP18 PWP17 PWP16

15:8R/P-1 R/P-1 R/P-1 R/P-1 r-1 r-1 r-1 r-1

PWP15 PWP14 PWP13 PWP12 — — — —

7:0r-1 r-1 r-1 r-1 R/P-1 r-1 R/P-1 R/P-1— — — — ICESEL — DEBUG<1:0>

凡例 : P = プログラム可能ビット r = 予約済みビット

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

DS60001145R_JP - p. 48 2016 Microchip Technology Inc.

PIC32

表 18-1 に PIC32MX、PIC32MZ、PIC32MK のチェックサム計算に使う4つのデバイス コンフィグレーション レジスタとデバイス ID レジスタのマスク値を示します。

表 18-1: 現在サポートされる PIC32MX、PIC32MZ、PIC32MK のデバイス コンフィグレーション レジスタのマスク値

デバイスファミリフラッシュメモリ

サイズ (KB)DEVCFG0 DEVCFG1 DEVCFG2 DEVCFG3 DEVCFG4 DEVID

PIC32MX110/120/130/150(28/36/44 ピンデバイスのみ )

16、32、64、128

0x1100FC1F 0x03DFF7A7 0x00070077 0x30000000 — 0x0FFFFFFF

PIC32MX210/220/230/250(28/36/44 ピンデバイスのみ )

16、32、64、128

0x1100FC1F 0x03DFF7A7 0x00078777 0xF0000000 — 0x0FFFFFFF

PIC32MX15X/17X (28/44 ピンデバイスのみ )

128、256 0x1107FC1F 0x03FFF7A7 0xFFB700F7 0x30C00000 — 0x0FFFFFFF

PIC32MX25X/27X (28/44 ピンデバイスのみ )

128、256 0x1107FC1F 0x03FFF7A7 0xFFB787F7 0xF0C00000 — 0x0FFFFFFF

PIC32MX320/340/360

32、64、128、256、512

0x110FF00B 0x009FF7A7 0x00070077 0x00000000 — 0x000FF000

PIC32MX420/440/460

32、64、128、256、512

0x110FF00B 0x009FF7A7 0x00078777 0x00000000 — 0x000FF000

PIC32MX120/130/150/170 (64/100 ピンデバイスのみ )

64、128、256、512

0x110FFC1F 0x03DFF7A7 0x00070077 0x30000000 — 0x0FFFFFFF

PIC32MX230/250/270/530/550/570(64/100 ピンデバイスのみ )

64, 128, 256, 512 0x110FFC1F 0x03DFF7A7 0x00078777 0xF0000000 — 0x0FFFFFFF

PIC32MX330/350/370

64、128、256、512

0x110FF01F 0x03DFF7A7 0x00070077 0x30070000 — 0x0FFFFFFF

PIC32MX430/450/470

64、128、256、512

0x110FF01F 0x03DFF7A7 0x00078777 0xF0070000 — 0x0FFFFFFF

PIC32MX534/564 64、128 0x110FF00F 0x009FF7A7 0x00078777 0xC4070000 — 0x0FFFF000

PIC32MX664 64、128 0x110FF00F 0x009FF7A7 0x00078777 0xC3070000 — 0x0FFFF000

PIC32MK0512/1024 512、1024 0x7FFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFF0000 — 0x0FFFFFFF

PIC32MX764 128 0x110FF00F 0x009FF7A7 0x00078777 0xC7070000 — 0x0FFFF000

PIC32MX170(28/36/44 ピンデバイスのみ )

256 0x1107FC1F 0x03DFF7A7 0x00070077 0xF0000000 — 0x0FFFFFFF

Note 1: PIC32MZ DA ファミリにのみ適用します。

2016 Microchip Technology Inc. DS60001145R_JP - p. 49

PIC32

PIC32MX270(28/36/44 ピンデバイスのみ )

256 0x1107FC1F 0x03DFF7A7 0x00078777 0xF0000000 — 0x0FFFFFFF

PIC32MZ05XX/10XX/20XX

512、1024、2048 0x7FFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFF0000 0xFFFFFFFF

(Note 1 参照 )0x0FFFFFFF

PIC32MX575 256、512 0x110FF00F 0x009FF7A7 0x00078777 0xC4070000 — 0x000FF000

PIC32MX675/695 256、512 0x110FF00F 0x009FF7A7 0x00078777 0xC3070000 — 0x000FF000

PIC32MX775/795 256、512 0x110FF00F 0x009FF7A7 0x00078777 0xC7070000 — 0x000FF000

表 18-1: 現在サポートされる PIC32MX、PIC32MZ、PIC32MK のデバイス コンフィグレーション レジスタのマスク値 ( 続き )

デバイスファミリフラッシュメモリ

サイズ (KB)DEVCFG0 DEVCFG1 DEVCFG2 DEVCFG3 DEVCFG4 DEVID

Note 1: PIC32MZ DA ファミリにのみ適用します。

DS60001145R_JP - p. 50 2016 Microchip Technology Inc.

PIC32

18.3 アルゴリズム

図 18-1 に、PIC32 のチェックサム計算に使うアルゴリズムの例を示します。これは 1 つの例に過ぎません。終的なアルゴリズムはソフトウェア開発者が決定します。

既に説明したように、PIC32 のチェックサムはプログラム フラッシュ、ブートフラッシュ ( デバイス コンフィグレーション ワードを除く )、デバイス ID レジスタ (マスク適用 )、デバイス コンフィグレーション ワード ( マスク適用 ) 内の全てのバイト (8 ビット値 ) の総和 (32 ビット値 ) の 2 の補数として計算されます。 この 終的な 32 ビット値がチェックサムとして提供されます。

デバイス コンフィグレーション レジスタとデバイスID レジスタのマスク値については、既に 18.2 「マスク値」で説明しました。

これらのデバイス コンフィグレーション レジスタのバイト値と対応するマスク値の論理積 (AND)がチェックサムに加算されます。 同様に、デバイス ID レジスタのバイト値と対応するマスク値の論理積 (AND) がチェックサムに加算されます。詳細は 19.0 「コンフィグレーション メモリとデバイス ID」を参照してください。

図 18-1: チェックサム計算の概略アルゴリズム

pic32_checksum

Read Program Flash, Boot Flash (including DEVCFG registers) and DEVID register in tmpBuffer

Apply DEVCFG and DEVID masks to appropriate locations in tmpBuffer

tmpChecksum (32-bit quantity) = 0

Finish processing all bytes (8-bit quantities) in

tmpBuffer?

tmpChecksum = tmpChecksum + Current Byte Value (8-bit quantity) in tmpBuffer

Checksum (32-bit quantity) = 2’s complement of tmpChecksum

Done

No

Yes

2016 Microchip Technology Inc. DS60001145R_JP - p. 51

PIC32

PIC32 のチェックサムの計算式を式 18-1 に示します。

式 18-1: チェックサムの計算式

Checksum 2s complement PF BF DCR DIR+ + + =

DCRyX 0=

32-bit summation of bytes MASKDEVCFGX & DEVCFGx =

DIR 32-bit summation of bytes MASKDEVID & DEVID =

PF = プログラム フラッシュ内の全バイトの総和 (32 ビット値 )BF = ブートフラッシュ内 ( デバイス コンフィグレーション レジスタを除く ) の全バイトの総和 (32 ビット値 )、 (Note 1 参照 )

MASKDEVCFGX = ( 表 18-1 に基づくマスク値 ) MASKDEVID = ( 表 18-1 に基づくマスク値、Note 2 参照 )

Note 1: PIC32MZ ファミリの場合、0x1FCxFF00 ~ 0x1FCxFFFF に配置されるブートフラッシュ メモリは加算されません ( これらのメモリアドレスはデバイス コンフィグレーションと CP 値を格納するため )。PIC32MK ファミリの場合、0x1FC03F00 ~ 0x1FC03FFF に配置されるブートフラッシュ メモリは加算されません。

2: PIC32MZ および PIC32MK ファミリの場合、MPLAB X IDE 内で計算されるチェックサムはプライマリ DEVCFGx レジスタだけを使います。代替または第 2 のブートフラッシュ レジスタは、利用可能であっても計算されません。

:

y = 3 (PIC32MX、PIC32MK、PIC32MZ EC、PIC32MZ EF ファミリの場合 )y = 4 ( その他の PIC32MZ ファミリの場合 )

DS60001145R_JP - p. 52 2016 Microchip Technology Inc.

PIC32

18.4 チェックサム計算の例

以下では、式 18-1 を使った PIC32MX360F512L でのチェックサム計算について説明します。 このチェックサム計算例では、以下を想定します。

• プログラム フラッシュとブートフラッシュは消去済み ( 全バイトが 0xFF) である。

• デバイス コンフィグレーションはデバイスの既定値状態である ( 設定は一切変更されていない )。

式の右辺の各項 (PF、BF、DCR、DIR) は個別に計算します。これらの値を計算した後にチェックサムの終値を計算します。

18.4.1 チェックサム計算式内の「PF」の計算

プログラム フラッシュのサイズは 512 KB (524288 バイト ) です。プログラム フラッシュは消去済みであると想定するため、PF の値は以下により求まります。

PF = 0xFF + 0xFF + … 524288 個を加算

PF = 0x7F80000 (32 ビット値 )

18.4.2 チェックサム計算式内の「BF」の計算

ブートフラッシュのサイズは 12 KB (12288バイト )です。しかし、 後の 16 バイトはデバイス コンフィグレーション レジスタであるため、別に扱います。従って、ここで考慮するブートフラッシュのバイト数は12272 です。ブートフラッシュは消去済みであると想定するため、BF の値は以下により求まります。

BF = 0xFF + 0xFF + … 12272 個を加算

BF = 0x002FC010 (32 ビット値 )

18.4.3 チェックサム計算式内の「DCR」の計算

デバイス コンフィグレーション レジスタは既定値状態のままであるため、表18-2に示す全ての値(DEVCFGレジスタ値 (PIC32 コアが読み出す値 )、対応するマスク値、マスクを適用した値、それらのバイトの 32 ビット総和)から全バイトの32ビット総和値が得られます。

表 18-2 から、「DCR」の値は以下となります。

DCR = 0x000003D6 (32 ビット値 )

表 18-2: DCR の計算例

レジスタ POR 既定値 マスク POR 既定値 AND マスク バイトの 32 ビット総和

DEVCFG0 0x7FFFFFFF 0x110FF00B 0x110FF00B 0x0000011BDEVCFG1 0xFFFFFFFF 0x009FF7A7 0x009FF7A7 0x0000023DDEVCFG2 0xFFFFFFFF 0x00070077 0x00070077 0x0000007EDEVCFG3 0xFFFFFFFF 0x00000000 0x00000000 0x00000000

全バイトの 32 ビット総和 = 0x000003D6

2016 Microchip Technology Inc. DS60001145R_JP - p. 53

PIC32

18.4.4 チェックサム計算式内の「DIR」の計算

デバイス ID レジスタの値、対応するマスク値、マスクを適用した値、バイトの 32 ビット総和を表 18-3 に示します。

表 18-3 から、「DIR」の値は以下となります。

DIR = 0x00000083 (32 ビット値 )

18.4.5 PIC32 のチェックサム計算の完了

上記で得られた値 (PF、BF、DCR、DIR) を使ってチェックサム値を計算します。PF、BF、DCR、DIRの 32 ビット総和を計算し、その値を変数 temp に保存します ( 例 18-1 参照 )。

例 18-1: チェックサム計算手順

18.4.6 デバイスがコード保護されている場合のチェックサム値

PIC32 がコード保護された状態である場合、デバイスコンフィグレーション ワードは読み出せないため、全てのデバイスでチェックサム値は 0 です。

表 18-3: DIR の計算例

レジスタ POR 既定値 マスク POR 既定値 AND マスク バイトの 32 ビット総和

DEVID 0x00938053 0x000FF000 0x00038000 0x00000083

1. 初に temp = PF + BF + DCR + DIR を計算します。 temp = 0x7F80000 + 0x002FC010 + 0x000003D6 + 0x00000083

2. 4 つの値を加算した temp の値は 0x0827C469 です。

3. 後に temp の 2 の補数をチェックサムとして計算します。 Checksum = 2’s complement (temp)

すなわちChecksum = 1’s complement (temp) + 1 = 0xF7D83B97

終的なチェックサムとして 0xF7D83B97 が得られます。

DS60001145R_JP - p. 54 2016 Microchip Technology Inc.

PIC32

19.0 コンフィグレーション メモリとデバイス ID

PIC32 は、アプリケーションの柔軟性と信頼性を 大限に高め、外付け部品を少なくしてコストを 小に抑えるために、以下の各種機能を備えています。これらの機能は、各デバイスの対応するコンフィグレーション ビットを使って設定できます。

デバイスが備える機能、コンフィグレーション ビット、デバイス ID レジスタの完全な一覧は、デバイスデータシート内の「その他の特殊機能」を参照してください。

特定デバイスの 新のシリコン リビジョンとリビジョン ID については、そのファミリの「Silicon Errataand Data Sheet Clarification」を参照してください。これらの文書は、Microchip 社ウェブページ (http://www.microchip.com/ja/design-centers/32-bit)内の関連文書 > Errata からダウンロードできます。

19.1 デバイス コンフィグレーション

PIC32 デバイスでは、コンフィグレーション ワードを使って各種のデバイス設定を選択します。これらは、デバイスリセット時にコード実行開始前に設定されます。これらの値は、ブートフラッシュ メモリ (BFM) の

上位領域に配置されます。これらはプログラムメモリの一部であるため、実行コードおよびプログラム内容と一緒にプログラミング ファイル内に含まれます。これらのコンフィグレーション ワードの名称と位置を表 19-1 ~表 19-4 に示します。

表 19-3 と表 19-4 には、デュアルブートおよびデュアルパネル フラッシュを備えた PIC32MZ ファミリ ( 表19-3) と PIC32MK ファミリ ( 表 19-4) のコンフィグレーション ワードを記載しています。デュアルブート領域の詳細は、『PIC32 ファミリ リファレンス マニュアル、セクション 48. メモリ構成とパーミッション』(DS60001214) を参照してください。

表 19-1: DEVCFG レジスタのアドレス - PIC32MX25X/27X および PIC32MX3XX/4XX/5XX/6XX/7XX のみ

表 19-2: DEVCFG レジスタのアドレス - 28/36/44 ピン PIC32MX1XX/2XX、 28/44 および 64/100 ピン PIC32MX1XX/2XX/5XX デバイスのみ

パワーオン リセット(POR)等のリセットが発生すると、コンフィグレーション ワードはブートフラッシュ メモリから対応するコンフィグレーション レジスタへ複製されます。 コンフィグレーション ビットには「0」のみプログラミングできます ( 未プログラム状態 = 1)。 PIC32MX ファミリでは、ページ消去を実行する前にコンフィグレーション ワードを2回までプログラミングできます。PIC32MZ および PIC32MK ファミリでは1 回しかプログラミングできません。

コンフィグレーション ワードをプログラミングした後は、デバイスリセットによって新しい値がコンフィグレーション レジスタにロードされます。このため、プログラマは、デバイスをベリファイする直前にコンフィグレーション ワードをプログラミングする必要があります。 後に、コード保護コンフィグレーションワードをプログラミングします。

これらのコンフィグレーション ワードにより、オシレータ源が決まります。2 線式拡張 ICSP モードを使う場合、コンフィグレーション ワードは無視され、デバイスは常に FRC を使います。しかし、4 線式モードの場合は異なります。コンフィグレーション ワードで選択されているクロック源がリセット後にデバイスで利用できない場合、プログラマはリセット後のフラッシュ動作を実行できません。コンフィグレーションワードによるオシレータ選択の詳細は、デバイス データシート内の「その他の特殊機能」を参照してください。

コンフィグレーション ワード 物理アドレス

DEVCFG0 0x1FC02FFCDEVCFG1 0x1FC02FF8DEVCFG2 0x1FC02FF4DEVCFG3 0x1FC02FF0

コンフィグレーション ワード 物理アドレス

DEVCFG0 0x1FC00BFCDEVCFG1 0x1FC00BF8DEVCFG2 0x1FC00BF4DEVCFG3 0x1FC00BF0

2016 Microchip Technology Inc. DS60001145R_JP - p. 55

PIC32

表 19-3: PIC32MZ ファミリのコンフィグレーション ワードのアドレス

表 19-4: PIC32MK ファミリのコンフィグレーション ワードのアドレス

コンフィグレーション ワード(Note 1 参照 )

レジスタ物理アドレス

固定ブート領域 1 固定ブート 領域 2アクティブブート エイリアス領域(Note 2 参照 )

非アクティブブート エイリアス領域(Note 2 参照 )

ブートシーケンス番号 0x1FC4FFF0 0x1FC6FFF0 0x1FC0FFF0 0x1FC2FFF0

コード保護 0x1FC4FFD0 0x1FC6FFD0 0x1FC0FFD0 0x1FC2FFD0DEVCFG0 0x1FC4FFCC 0x1FC6FFCC 0x1FC0FFCC 0x1FC2FFCCDEVCFG1 0x1FC4FFC8 0x1FC6FFC8 0x1FC0FFC8 0x1FC2FFC8DEVCFG2 0x1FC4FFC4 0x1FC6FFC4 0x1FC0FFC4 0x1FC2FFC4DEVCFG3 0x1FC4FFC0 0x1FC6FFC0 0x1FC0FFC0 0x1FC2FFC0

DEVCFG4 (Note 3 参照 ) 0x1FC4FFBC 0x1FC6FFBC 0x1FC0FFBC 0x1FC2FFBC

代替ブートシーケンス番号 0x1FC4FF70 0x1FC6FF70 0x1FC0FF70 0x1FC2FF70

代替コード保護 0x1FC4FF50 0x1FC6FF50 0x1FC0FF50 0x1FC2FF50

代替 DEVCFG0 0x1FC4FF4C 0x1FC6FF4C 0x1FC0FF4C 0x1FC2FF4C

代替 DEVCFG1 0x1FC4FF48 0x1FC6FF48 0x1FC0FF48 0x1FC2FF48

代替 DEVCFG2 0x1FC4FF44 0x1FC6FF44 0x1FC0FF44 0x1FC2FF44

代替 DEVCFG3 0x1FC4FF40 0x1FC6FF40 0x1FC0FF40 0x1FC2FF40

代替 DEVCFG4 (Note 3 参照 ) 0x1FC4FF3C 0x1FC6FF3C 0x1FC0FF3C 0x1FC2FF3C

Note 1: 適切な ECC コンフィグレーションを確保するため、メモリ領域 (0x1FCxFF00 ~ 0x1FCxFFFF) 内の全ての値は QUAD_WORD_PROGRAM コマンドを使ってプログラミングする必要があります。詳細は 17.2.16

「QUAD_WORD_PROGRAMコマンド」を参照してください。

2: アクティブ / 非アクティブブート エイリアスの選択は、未プログラム状態のデバイス ( 固定領域 1 がアクティブで、固定領域 2 が非アクティブ ) を想定しています。エイリアスブート領域の詳細は、『PIC32 ファミリ リファレンス マニュアル、セクション 48. メモリ構成とパーミッション』(DS60001214) を参照してください。

3: これらのコンフィグレーション ワードは、PIC32MZ DA ファミリでのみ利用できます。

コンフィグレーション ワード(Note 1 参照 )

レジスタ物理アドレス

固定ブート領域 1 固定ブート 領域 2 アクティブブート エイリアス領域(Note 2 参照 )

非アクティブブート エイリアス領域(Note 2 参照 )

ブートシーケンス番号 0x1FC43FF0 0x1FC63FF0 0x1FC03FF0 0x1FC23FF0

コード保護 0x1FC43FD0 0x1FC63FD0 0x1FC03FD0 0x1FC23FD0DEVCFG0 0x1FC43FAC 0x1FC63FAC 0x1FC03FAC 0x1FC23FACDEVCFG1 0x1FC43FA8 0x1FC63FA8 0x1FC03FA8 0x1FC23FA8DEVCFG2 0x1FC43FA4 0x1FC63FA4 0x1FC03FA4 0x1FC23FA4DEVCFG3 0x1FC43FA0 0x1FC63FA0 0x1FC03FA0 0x1FC23FA0

Note 1: デバイスが ECC メモリを備えている場合、QUAD_WORD_PROGRAM を使って以下の各コンフィグレーション ワード グループをプログラミングする必要があります。

• ブートシーケンス番号 (1 回のクワッドワード プログラミング動作 )• コード保護 (1 回のクワッドワード プログラミング動作 )• DEVCFG3、DEVCFG2、DEVCFG1、DEVCFG0 (1 回のクワッドワード プログラミング動作 )

2: アクティブ / 非アクティブブート エイリアスの選択は、未プログラム状態のデバイス ( 固定領域 1 がアクティブで、固定領域 2 が非アクティブ ) を想定しています。エイリアスブート領域の詳細は、『PIC32 ファミリ リファレンス マニュアル、セクション 48. メモリ構成とパーミッション』(DS60001214) を参照してください。

DS60001145R_JP - p. 56 2016 Microchip Technology Inc.

PIC32

19.1.1 コンフィグレーション レジスタの保護

コード実行中に誤ってコンフィグレーション ビットが変更される事を防ぐため、全ての設定可能コンフィグレーション ビットは 1 回しか書き込めません ( ライトワンス )。1 回の電源サイクル中にあるビットを初期プログラミングした後は、そのビットに再度書き込む事はできません。デバイス コンフィグレーションを変更するには、ブートフラッシュ メモリ内のコンフィグレーション データを変更した後に、デバイスへの電源を一度 OFF にしてから ON にする必要があります。

128 ビットデータの整合性を確保するため、各コンフィグレーション ビットは保存されている複製と継続的に比較されます。不一致が検出されるとコンフィグレーション不一致リセットが生成され、デバイスリセットが発生します。

19.2 データコード保護ビット (CP) PIC32 ファミリはコード保護機能を備えています。これを有効にした場合、外部プログラミング デバイスからのフラッシュメモリの読み出しが防がれます。コード保護を有効にした後は、デバイス消去コマンド(MCHP_ERASE) を使ってデバイスを消去しない限り、保護を無効にできません。

コード保護を使う場合、デバイスをプログラミングする際は、コード保護を有効にする前にベリファイを実行する必要があります。コード保護の有効化は、プログラミング手順の 後に実行します。コード保護イネーブルビットのアドレスはデバイスごとに異なります。詳細はデバイス データシート内の「その他の特殊機能」を参照してください。

19.3 プログラム書き込み保護ビット (PWP)PIC32 ファミリは書き込み保護機能を備えています。この機能は、指定されたブートおよびブログラム フラッシュ領域がプログラム実行中に消去される ( または書き込まれる ) 事を防ぎます。

PIC32MX ファミリの場合、書き込み保護はデバイスコンフィグレーション ワードによってコンフィグレーション メモリ内に実装されます。これに対しPIC32MZおよびPIC32MKファミリの書き込み保護は、フラッシュ コントローラ内の SFR を使って実装されます。

書き込み保護がデバイス コンフィグレーション ワードによって実装される場合、書き込み保護レジスタは全てのブートおよびプログラム フラッシュメモリをプログラミングした後に書き込みます。詳細は、デバイス データシート内の「その他の特殊機能」を参照してください。

SFR で書き込み保護を実装する場合、フラッシュ領域をプログラミングする前に、外部プログラマによってデバイスの初期化中に特定の手順が要求される場合があります。詳細は、デバイス データシート内の「フラッシュ プログラムメモリ」を参照してください。

Note: コード保護を有効にすると、フラッシュメモリは読み出せなくなります。外部プログラマによってコード保護を無効にするには、デバイス消去コマンド (MCHP_ERASE) を使う以外に方法はありません。

2016 Microchip Technology Inc. DS60001145R_JP - p. 57

PIC32

20.0 TAPコ ントローラ

表 20-1: MCHP TAP命令

20.1 Microchip TAP コントローラ (MTAP)

20.1.1 MTAP_COMMAND命令

MTAP_COMMANDは、MCHPコマンドシフト レジスタを選択します。利用可能なコマンドは表 20-2 を参照してください。

20.1.1.1 MCHP_STATUS命 令

MCHP_STATUSは、Microchip TAPコントローラの8ビット ステータス値を返します。表 20-3 に、返されるステータス値の書式を示します。

20.1.1.2 MCHP_ASSERT_RST命 令

MCHP_ASSERT_RSTは、永続的デバイスリセットを実行します。これは、MCLR ピンをアサートして保持するのと同じです。対応するステータスビットはDEVRST です。

20.1.1.3 MCHP_DE_ASSERT_RST命 令

MCHP_DE_ASSERT_RSTは、永続的デバイスリセットを解除します。これは、MCLR ピンをネゲートするのと同じです。対応するステータスビットは DEVRST です。

20.1.1.4 MCHP_ERASE命 令

MCHP_ERASEは、Chip Eraseを実行します。CHIP_ERASEコマンドは、フラッシュ コントローラの消去を要求するための内部ビットをセットします。コントローラがビジー (FCBUSY ステータスビットによって示される ) になると、この内部ビットはクリアされます。

20.1.1.5 MCHP_FLASH_ENABLE命 令

MCHP_FLASH_ENABLEは、フラッシュメモリへのプロセッサ アクセスを制御するためのFAENビットをセットします。FAEN ビットの状態は、同名のフィールド内で返されます。CPS = 0の場合、このコマンドは効力を持ちません。このコマンドは NOPの実行を要求します。

20.1.1.6 MCHP_FLASH_DISABLE命 令

MCHP_FLASH_DISABLEは、フラッシュメモリへのプロセッサ アクセスを制御するためのFAENビットをクリアします。FAEN ビットの状態は、同名のフィールド内で返されます。CPS = 0の場合、このコマンドは効力を持ちません。このコマンドは NOPの実行を要求します。

20.1.2 MTAP_SW_MTAP命令

MTAP_SW_MTAPは、TAP命令セットをMCHP TAP命令セットへ切り換えます。

これらの各コマンドに続けて SetMode (6'b011111)を実行する事で、Chip TAP コントローラを Run Test/Idle ステートに移行させる必要があります。

20.1.3 MTAP_SW_ETAP命令 MTAP_SW_ETAPは、TAP命令セットをEJTAG TAP命令セットへ切り換えます。この命令は、MTAP_SW_ETAP命令が MCHP TAP コントローラによってデコードされるまで EJTAG TAP コントローラを Run Test/Idle ステートに保持する事により、切り換えを実行します。

これらの各コマンドに続けて SetMode (6'b011111)を実行する事で、Chip TAP コントローラを Run Test/Idle ステートに移行させる必要があります。

20.1.4 MTAP_IDCODE命令

MTAP_IDCODEは、DEVID レジスタに保存されている値を返します。

コマンド 値 概要

MTAP_COMMAND 5’h0x07 TDI と TDO を MCHP コマンドシフト レジスタに接続します ( 表 20-2 参照 )。MTAP_SW_MTAP 5’h0x04 TAP コントローラから MCHP TAP コントローラへ切り換えます。

MTAP_SW_ETAP 5’h0x05 TAP コントローラから EJTAG TAP コントローラへ切り換えます。

MTAP_IDCODE 5’h0x01 デバイス ID データレジスタを選択します。

Note: このコマンドは、PIC32MZ および PIC32MKファミリには必要ありません。

Note: このコマンドは、PIC32MZ および PIC32MKファミリには必要ありません。

DS60001145R_JP - p. 58 2016 Microchip Technology Inc.

PIC32

表 20-2: MTAP_COMMAND DRコマンド

表 20-3: MCHP ステータス値

表 20-4: EJTAG TAP命令

コマンド 値 概要

MCHP_STATUS 8’h0x00 NOPを実行してステータスを返します。

MCHP_ASSERT_RST 8’h0xD1 デバイスリセットのアサートをリセット コントローラに要求します。

MCHP_DE_ASSERT_RST 8’h0xD0 デバイスリセットの要求を解除します。他の要因 (MCLR 等 ) がリセットを要求していなければ、リセット コントローラはデバイスリセットをネゲートします。

MCHP_ERASE 8’h0xFC フラッシュ コントローラにデバイス消去を実行させます。

MCHP_FLASH_ENABLE(1) 8’h0xFE プロセッサからフラッシュへのフェッチとロードを有効にします。

MCHP_FLASH_DISABLE(1) 8’h0xFD プロセッサからフラッシュへのフェッチとロードを無効にします。

Note 1: このコマンドは、PIC32MK および PIC32MZ ファミリには必要ありません。

ビットレンジ

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

7:0 CPS 0 NVMERR(1) 0 CFGRDY FCBUSY FAEN(2) DEVRST

bit 7 CPS: コード保護ステータスビット1 = デバイスはコード保護されていない0 = デバイスはコード保護されている

bit 6 未実装 : 「0」として読み出しbit 5 NVMERR: NVMCON ステータスビット (1)

1 = NVM 動作中にエラーが発生した0 = NVM 動作中にエラーは発生しなかった

bit 4 未実装 : 「0」として読み出しbit 3 CFGRDY: コード保護ステータスビット

1 = コンフィグレーションは読み出され、CP は有効0 = コンフィグレーションは読み出されていない

bit 2 FCBUSY: フラッシュ コントローラ ビジービット1 = フラッシュ コントローラはビジー ( 消去を実行中 )0 = フラッシュ コントローラは非ビジー ( 消去は開始されていないか既に終了した )

bit 1 FAEN: フラッシュ アクセス イネーブルビット (2)

このビットは CFGCON.FAEN の状態を反映します。1 = フラッシュ アクセスを有効にする0 = フラッシュ アクセスを無効にする ( プロセッサ アクセスはブロックされる )

bit 0 DEVRST: デバイスリセット ステータスビット1 = デバイスリセットはアクティブ0 = デバイスリセットは非アクティブ

Note 1: PIC32MX320/340/360/420/440/460 はこのビットを実装していません。 2: PIC32MK および PIC32MZ ファミリはこのビットを実装していません。

コマンド 値 概要

ETAP_ADDRESS 5’h0x08 アドレスレジスタを選択します。

ETAP_DATA 5’h0x09 データレジスタを選択します。

ETAP_CONTROL 5’h0x0A EJTAG 制御レジスタを選択します。

ETAP_EJTAGBOOT 5’h0x0C EjtagBrk、ProbEn、ProbTrap をリセット値として「1」にセットします。

ETAP_FASTDATA 5’h0x0E データレジスタと高速データレジスタを選択します。

2016 Microchip Technology Inc. DS60001145R_JP - p. 59

PIC32

20.2 EJTAG TAP コントローラ

20.2.1 ETAP_ADDRESSコマンド

ETAP_ADDRESSはアドレスレジスタを選択します。読み出し専用のアドレスレジスタは、プロセッサ アクセスのためのアドレスを提供します。レジスタの読み値は、プロセッサ アクセスが保留中の場合に有効です。それ以外の場合、値は未確定です。

このレジスタの 下位の 2 または 3 ビットを EJTAG制御レジスタの Psz フィールドと一緒に使う事で、保留中プロセッサ アクセス転送のサイズとデータ位置を示します。これらのビットは、ロード / ストアによって参照されるアドレスから直接取られるのではありません。

20.2.2 ETAP_DATAコマンド

ETAP_DATAは、データレジスタを選択します。読み書きデータレジスタは、プロセッサ アクセス中にオペコードとデータを転送するために使われます。データレジスタの読み値は、書き込みのためのプロセッサ アクセスが保留中である場合にのみ有効です。この場合、データレジスタはストア値を保持します。データレジスタに書き込まれた値は、保留中読み出しのためのプロセッサ アクセスが後に終了する場合にのみ使われます。この場合、書き込まれたデータ値は、フェッチまたはロードのための値です。この挙動は、データレジスタは前に書き込んだ値を後で読み出せるようなメモリ位置ではないという事を意味します。

20.2.3 ETAP_CONTROLコマンド

ETAP_CONTROLは制御レジスタを選択します。EJTAG制御レジスタ (ECR) は、プロセッサ リセットおよびソフトリセットの指示、デバッグモードの指示、アクセスの開始 / 終了 / サイズ、読み / 書きの指示を操作します。ECR は以下の機能も提供します。

• デバッグベクタ位置の制御とサービスされるプロセッサ アクセスの指示

• デバッグ割り込み要求の許可

• プロセッサ省電力モードの指示

• 実装に依存するプロセッサおよび周辺モジュールリセットの許可

20.2.3.1 EJTAG 制御レジスタ (ECR)EJTAG 制御レジスタ ( レジスタ 20-1 参照 ) は、リセット (ROCC (bit 31) が既に「0」または「0」が書き込まれる )が発生しない限りUpdate-DRステート中に更新/ 書き込みされません。この条件により、リセット後にプロセッサ アクセスの適正な処理を確保します。

ROCC ビットを通してプロセッサのリセットが引き起こされた事が示されます。TCK とプロセッサクロックの同期によって、このビットと ECR レジスタで示されたビットはリセット後にTCKが複数サイクル入力されるとクリアされます。

レジスタ内の読み書き可能 (R/W) ビットは、他の挙動が定義されていない限り、書き込まれた値を後続の読み出し時に返します。

内部同期により、TAP コントローラが Update-DR ステートから Capture-DR ステートへ 短経路を取った場合でも、書き込まれた値は即座に更新され、直後の読み出しで返されます。

DS60001145R_JP - p. 60 2016 Microchip Technology Inc.

PIC32

レジスタ 20-1: ECR: EJTAG制 御レジスタ

ビットレンジ

ビット31/23/15/7

ビット30/22/14/6

ビット29/21/13/5

ビット28/20/12/4

ビット27/19/11/3

ビット26/18/10/2

ビット25/17/9/1

ビット24/16/8/0

31:24 R/W-0 R-0 R-0 U-0 U-0 U-0 U-0 U-0Rocc Psz<1:0> — — — — —

23:16 R-0 R-0 R-0 R/W-0 R-0 R/W-0 U-0 R/W-0VPED Doze Halt PerRst PrnW PrACC — PrRst

15:8 R/W-0 R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0ProbEn ProbTrap — EjtagBrk — — — —

7:0 U-0 U-0 U-0 U-0 R-0 U-0 U-0 U-0— — — — DM — — —

凡例 :R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-29 Note 1 を参照してください。

bit 28-24 未実装 : 「0」として読み出し

bit 23-19 Note 1 を参照してください。

bit 18 PrACC: 保留中プロセッサ アクセス / 制御ビット

このビットは、プロセッサ アクセスが保留中かどうかを示すと共に、保留中プロセッサ アクセスの終了を制御します。「0」を書き込むと、保留中のプロセッサ アクセスは終了します。「1」を書き込んでも無視されます。FASTDATA アクセスが成功すると、このビットはクリアされます。 1 = プロセッサ アクセスを保留中0 = 保留中のプロセッサ アクセスは存在しない

bit 17 未実装 : 「0」として読み出し

bit 16 Note 1 を参照してください。

bit 15 ProbEn: プロセッサ アクセスサービス制御ビット

このビットは、プローブがプロセッサ アクセスのサービスを介して DMSEG セグメントへのアクセスを処理するかどうか制御します。 1 = プローブはプロセッサ アクセスをサービスする0 = プローブはプロセッサ アクセスをサービスしない

bit 14 ProbTrap: デバッグ例外ベクタ位置制御ビット

このビットは、デバッグ例外ベクタの位置を制御します。 1 = 0xFF2002000 = 0xBFC00480

bit 13 未実装 : 「0」として読み出し

bit 12 EjtagBrk: デバッグ割り込み例外要求ビット

このビットが「1」として書き込まれた時、デバッグ割り込み例外がプロセッサに対して要求されます。「0」を書き込んでも無視されます。1 = デバッグ割り込み例外要求は保留中0 = デバッグ割り込み例外要求は保留中ではない

bit 11-4 未実装 : 「0」として読み出し

bit 3 Note 1 を参照してください。

bit 2-0 未実装 : 「0」として読み出し

Note 1: これらのビットについては、Imagination Technologies Limited のウェブサイト (www.imgtec.com) を参照してください。

2016 Microchip Technology Inc. DS60001145R_JP - p. 61

PIC32

20.2.4 ETAP_EJTAGBOOTコマンド

ETAP_EJTAGBOOT コマンドにより、プロセッサはリセット後にデバッグ例外ベクタからコードをフェッチします。これにより、プロセッサが通常のリセットベクタから命令をフェッチする代わりに、プログラマからプロセッサへ命令を送信して実行させる事ができます。EjtagBrk、ProbTrap、ProbE ビットのリセット値は、内部 EJTAGBOOT 指示の設定に従います。

EJTAGBOOT命令が与えられ、かつ内部EJTAGBOOT指示がアクティブである場合、これら 3 つのビットのリセット値は「1」にセットされます。そうではない場合、リセット値は「0」にクリアされます。

これらのビットをセットした場合の結果は以下の通りです。

• EjtagBrk をセットすると、プロセッサ リセットの直後に EJTAGBOOT 命令からデバッグ割り込み例外が要求されます。

• ProbTrap ビットがセットされているため ( つまりEJTAG メモリ内のデバッグベクタ (0xFF200200)が指示されているため )、デバッグハンドラは EJTAGメモリから実行されます。

• ProbEN ビットがセットされているため、プロセッサ アクセスのサービスが指示されます。

この設定を行った場合、割り込み例外が発生し、プロセッサは DMSEG (0xFF200200) からハンドラをフェッチします。ProbEn ビットがセットされているため、プロセッサはプローブから提供される命令を待機します。

20.2.5 ETAP_FASTDATAコマンド

ETAP_FASTDATAコマンドは、プロセッサとプローブの間で高速にデータを転送するための方法を提供します。高速データレジスタの幅は 1 ビットです。高速データアクセス中は、高速データレジスタが読み書きされます ( つまり、1 ビットがシフトインされ、1 ビットがシフトアウトされます )。高速データアクセス中は、シフトインされた高速データレジスタ値によって高速データアクセスを完了するべきかどうかが指定されます。シフトアウトされた値は、高速データアクセスが正常に完了したかどうかを示すフラグです ( 完了が要求された場合 )。高速データアクセスは、DMSEGセグメント ( プローブ側 ) とターゲットメモリ ( プロセッサ側 ) の間の効率的なブロック転送のために使われます。「アップロード」は、プロセッサがターゲットメモリからロードしてDMSEGセグメントにストアするシーケンスとして定義されます。「ダウンロード」は、プロセッサが DMSEG セグメントからロードしてターゲットメモリにストアするシーケンスの事です。

「高速データ領域」は、アップロードとダウンロードに使える DMSEG セグメント アドレスの有効レンジ(0xFF200000 ~ 0xFF20000F) を指定します。データレジスタと高速データレジスタ (FASTDATA 命令により選択 ) は、保留中の高速データ領域アクセスの効率的な完了を可能にします。

高速データ アップロードおよびダウンロード中に、プロセッサは高速データ領域へのアクセスでストールします。PrAcc ( プロセッサ アクセス保留ビット ) は「1」(プローブはアクセスを完了するよう要求される )になります。アップロードおよびダウンロード アクセスは、どちらも「0」の SPrAcc 値 ( アクセスの完了を要求 ) をシフトインする事によって試行され、SPrAcc をシフトアウトする事で、その試行が成功するかどうか( つまり、 保留中アクセスが存在し、有効な高速データ領域アドレスが使われたかどうか ) を調べます。

ダウンロードは、DMSEG セグメント高速データ領域からのロードを満たすためのデータもシフトインします。アップロードは、DMSEG セグメント高速データ領域にストアされているデータをシフトアウトします。

既に示したように、高速データアクセスが成功するには、以下の 2 つの条件が必要です。

• PrAcc は「1」である事 ( つまり、保留中プロセッサアクセスが存在する事 )

• 高速データ動作はDMSEGセグメント内の有効な高速データ領域アドレス(0xFF200000~0xFF20000F)を使う事

DS60001145R_JP - p. 62 2016 Microchip Technology Inc.

PIC32

21.0 AC/DC特 性とタイミング要件

表 21-1: AC/DC 特性とタイミング要件

標準動作条件動作温度レンジ : 0 ~ +70 ℃、+25 ℃でのプログラミングを推奨

パラメータ

No.記号 特性 Min. Max. 単位 条件

D111 VDD プログラミング中の電源電圧 — — V Note 1 参照

D112 VDD1V8 プログラミング中の DDR SDRAM 電源電圧 — — V Note 1 参照

D116 VDDVBAT プログラミング中の VBAT 電源電圧 — — V Note 1 参照

D113 IDDP プログラミング中の消費電流 — — A Note 1 参照

D114 IPEAK 起動時の瞬時ピーク電流 — — mA Note 1 参照

D115 IDD1V8P プログラミング中の DDR SDRAM 消費電流 — — V Note 1 参照

D117 IDDVBAT プログラミング中の VBAT 消費電流 — — A Note 1 参照

D031 VIL 入力 LOW 電圧 — — V Note 1 参照

D041 VIH 入力 HIGH 電圧 — — V Note 1 参照

D080 VOL 出力 LOW 電圧 — — V Note 1 参照

D090 VOH 出力 HIGH 電圧 — — V Note 1 参照

D012 CIO I/O ピンの負荷容量 (PGEDx) — — pF Note 1 参照

D013 CF VCAP のフィルタ コンデンサ容量 — — mF Note 1 参照

P1 TPGC シリアルクロック (PGECx) 周期 100 — ns —P1A TPGCL シリアルクロック (PGECx) LOW 時間 40 — ns —P1B TPGCH シリアルクロック (PGECx) HIGH 時間 40 — ns —

P6 TSET2 VDD から MCLR までのセットアップ時間 100 — ns —

P7 THLD2 MCLR からの入力データ保持時間 500 — ns —P9A TDLY4 PE コマンド処理時間 40 — ms —P9B TDLY5 PE による PGEDx と PE による PGEDx リリースの

間の遅延時間

15 — ms —

P11 TDLY7 デバイス消去時間 — — ms Note 1 参照

P12 TDLY8 ページ消去時間 — — ms Note 1 参照

P13 TDLY9 行プログラミング時間 — — ms Note 1 参照

P14 TR MCLR 立ち上がりから ICSP™ モードに移行するまでの時間

— 1.0 ms —

P15 TVALID PGECxからデータ出力有効までの時間 10 — ns —

P16 TDLY8 後の PGECx と MCLR の間の遅延時間 0 — s —

P17 THLD3 MCLR から VDD までの時間 — 100 ns —

P18 TKEY1 PGEDx 上の鍵シーケンスにおける 初の MCLR から 初の PGECx までの遅延時間

40 — ns —

P19 TKEY2 PGEDx 上の鍵シーケンスにおける 後の PGECx から 2 番目の MCLR までの遅延時間

40 — ns —

P20 TMCLRH MCLR HIGH 時間 — 500 µs —

Note 1: このパラメータの 小値と 大値については、デバイス データシート内の「電気的特性」を参照してください。

2016 Microchip Technology Inc. DS60001145R_JP - p. 63

PIC32

補遺 A: PIC32 フラッシュメモリ マップ

図 A-1: フラッシュメモリ マップ

補遺 B: HEX ファイル フォーマット

フラッシュ プログラマは、Microchip 社の開発ツールが使う標準 16 進 (HEX) フォーマットのファイルを処理します。サポートされるフォーマットは Intel®HEX32 フォーマット (INHX32) です。HEX ファイルフォーマットの詳細は、『MPASM™ Assembler,MPLINK™ Object Linker, MPLIB™ Object LibrarianUser’s Guide』 (DS33014) 内の「Section 1.75 Hexfile Formats」を参照してください。 この HEX ファイルの基本フォーマットは以下の通りです。

:BBAAAATTHHHH...HHHHCC各データレコードは 9 文字の接頭辞で始まり、必ず2 文字のチェックサムで終わります。全てのレコードは、フォーマットに関係なく、「:」で始まります。各エレメントは以下の通りです。

• BB - ライン上に現れるデータバイトの数を表す 2 桁の 16 進数です。この値の 1/2 がラインあたりのワード数です。

• AAAA - データレコードの開始アドレスを表す4桁の16 進数です。上位バイトの後に下位バイトが続きます。

• TT - 2 桁のレコードタイプです。「00」はデータレコード、「01」は End-Of-File レコード、「04」は拡張アドレスレコードを表します。

• HHHH - 4 桁の 16 進データワードです。下位バイトの後に上位バイトが続きます。TTの後に BB/2 個のデータワードが続きます。

• CC - 2桁の 16進チェックサム (ラインレコード内の全ての先行バイトの総和の 2 の補数 ) です。

Intel HEX ファイル フォーマットはバイトを基準としますが、16 ビット プログラム カ ウンタはそうではありません。このため、プログラムメモリ セクションは特別な処理を要求します。各24ビット プログラムワードは、1 バイト (「ファントムバイト」と呼ぶ ) を挿入する事で 32 ビットへ拡張されます。各プログラムメモリ アドレスに 2 を乗算する事で、バイトアドレスが得られます。 例えばプログラムメモリ内の0x100に配置されたセクションは、HEXファイル内で0x200として表されます。 HEX ファイルは、以下の内容で生成されます。

:020000040000fa:040200003322110096:00000001FF

ソースコードが指定したアドレスは 0x100 ですが、データレコード (第 2行 )のロードアドレスは 0200です。データは「リトルエンディアン」形式で表現されます。つまり 下位バイトが 初に現れ、ファントムバイトが 後に ( チェックサムの前に ) 現れます。

Note: 上図のメモリマップはあくまでも参考資料です。 お使いになるデバイスの実際のメモリアドレスについては、対応するデバイス データシート内の「メモリ構成」を参照してください。

Boot Page 0

Boot Page 1

Boot Page 2Debug Page

Configuration Words(4 x 32 bits)

0x1F000000

0x1F001FFF

0x1F002FF0

0x1F002FFF

0x1D000000

Program Flash Memory

0x1D007FFF

PFM

BFM

DS60001145R_JP - p. 64 2016 Microchip Technology Inc.

PIC32

補遺 C: 改訂履歴

リビジョン A (2007 年 8 月 )本書の初版です。

リビジョン B (2008 年 2 月 )このリビジョンの更新記録はありません。

リビジョン C (2008 年 4 月 )このリビジョンの更新記録はありません。

リビジョン D (2008 年 5 月 )このリビジョンの更新記録はありません。

リビジョン E (2009 年 7 月 )このリビジョンでの更新内容は以下の通りです。

• 文章および体裁の変更等、本書全体の細部を修正しました。

• 以下のデバイスを追加しました。

- PIC32MX565F256H- PIC32MX575F512H- PIC32MX675F512H- PIC32MX795F512H- PIC32MX575F512L- PIC32MX675F512L- PIC32MX795F512L

• 図 7-1 で、MCLR パルスのラインを更新しました。しました ( アクティブ HIGH (P20) を表示 )。

• 表 11-1 の手順 7 を更新し、この手順内での 後の命令の繰り返しを明確にしました。

• 表 13-1 内の以下の命令を更新しました。

- 手順 1 内の 7、9、11 番目の命令

- 手順 2 内の全ての命令

- 手順 3 内の 初の命令

- 手順 4 内の 3 番目の命令

• 表 17-1 に以下のデバイスを追加しました。

- PIC32MX565F256H- PIC32MX575F512H- PIC32MX575F512L- PIC32MX675F512H- PIC32MX675F512L- PIC32MX795F512H- PIC32MX795F512L

• 表 17-2 内のアドレス値を更新しました。

リビジョン E (2009 年 7 月 ) ( 続き )• 表 17-5 に以下のデバイスを追加しました。

- PIC32MX565F256H- PIC32MX575F512H- PIC32MX675F512H- PIC32MX795F512H- PIC32MX575F512L- PIC32MX675F512L- PIC32MX795F512L

• Note 1 ~ 3 と以下のビットを DEVCFG - デバイス コンフィグレーション ワードの一覧表と DEVCFG3:デバイス コンフィグレーション ワード 3 に追加しました ( 表 18-1 とレジスタ参照 )。- FVBUSIO- FUSBIDIO- FCANIO- FETHIO- FMIIEN- FPBDIV<1:0>- FJTAGEN

• DEVID の一覧表を更新しました ( 表 18-1 参照 )。• ICESEL ビットの説明を更新し、DEVCFG0: デバ

イス コンフィグレーション ワード 0 に FJTAGENビットを追加しました ( 表 16-1 参照 )。

• DEVID: デバイスおよびリビジョン ID レジスタを更新しました。

• デバイス ID とリビジョン テーブルを追加しました( 表 18-4 参照 )。

• MCLR HIGH 時間 ( パラメータ P20) を表 20-1 に追加しました。

• 補遺 B: HEX ファイル フォーマットと補遺 D: 改訂履歴を追加しました。

リビジョン F (2010 年 4 月 )このリビジョンでの更新内容は以下の通りです。

• 以下のグローバルビットの名前を変更しました。

- NVMWR を WR に変更

- NVMWREN を WREN に変更

- NVMERR を WRERR に変更

- FVBUSIO を FVBUSONIO に変更

- FUPLLEN を UPLLEN に変更

- FUPLLIDIV を UPLLIDIV に変更

- POSCMD を POSCMOD に変更

• 2.0 「プログラミングの概要」の第 4 段落内のPIC32MX ファミリ データシートへの参照を更新しました。

• 5.2.2 「2-Phase ICSP」内の Note を更新しました。

• フラッシュ行書き込み開始オペコードと命令を更新しました ( 表 13-1 の手順 4、5、6 参照 )。

2016 Microchip Technology Inc. DS60001145R_JP - p. 65

PIC32

リビジョン F (2010 年 4 月 ) ( 続き )• 以下のデバイスを追加しました。

- PIC32MX534F064H- PIC32MX534F064L- PIC32MX564F064H- PIC32MX564F064L- PIC32MX564F128H- PIC32MX564F128L- PIC32MX575F256L- PIC32MX664F064H- PIC32MX664F064L- PIC32MX664F128H- PIC32MX664F128L- PIC32MX675F256H- PIC32MX675F256L- PIC32MX695F512H- PIC32MX605F512L- PIC32MX764F128H- PIC32MX764F128L- PIC32MX775F256H- PIC32MX775F256L- PIC32MX775F512H- PIC32MX775F512L

リビジョン G (2010 年 8 月 )このリビジョンでの変更内容は以下の通りです。

• 表 11-1: 「PE のダウンロード」内の手順 3 を更新しました。

• 文章および体裁の変更等、本書全体の細部を修正しました。

リビジョン H (2011 年 4 月 )このリビジョンでの更新内容は以下の通りです。

• 表現および体裁の変更等、本書全体の細部を修正しました。

• 以下のデバイスを追加しました。

- PIC32MX110F016B- PIC32MX110F016C - PIC32MX110F016D- PIC32MX120F032B - PIC32MX120F032C - PIC32MX120F032D - PIC32MX210F016B - PIC32MX210F016C - PIC32MX210F016D - PIC32MX220F032B - PIC32MX220F032C- PIC32MX220F032D

• 以下の行を表 17-1 に追加しました。

- PIC32MX1X0- PIC32MX2X0

• 17.4.6 「デバイスがコード保護されている場合のチェックサム値」を追加しました。

• レジスタ 18-1 ~ 18-5 を削除しました。

• 表 17-2 を削除しました。

• 17.5 「PIC32 のチェックサム」と、その副項目を削除しました。

• フラッシュ プログラムメモリ書き込み保護レンジの表 ( 以前の表 18-4) を削除しました。

• PIC32MX1X0 および PIC32MX20X 専用のDEVCFG アドレスを追加しました ( 表 18-3 参照 )。

• 18.0 「コンフィグレーション メモリとデバイスID」内の表 18-1 を削除し、表 18-2 を更新しました。DEVID の一覧を表 18-1 としました。

• MCHP ステータス値の表に NVMERR ビットを追加しました ( 表 19-3 参照 )。

• 以下のシリコン リビジョンとリビジョン ID を表18-4 に追加しました。

- 0x5 - B6 リビジョン

- 0x1 - A1 リビジョン

• フラッシュメモリ マップ ( 図 A-1 参照 ) に Note を追加しました。

• 補遺 C: 「フラッシュ プログラムメモリの Data Sheet Clarification」を追加しました。

リビジョン J (2011 年 8 月 )

このリビジョンでの変更内容は以下の通りです。

• VCORE/VCAP を全て VCAP に変更しました。

• 2.0 「プログラミングの概要」の第 4 段落を更新しました。

• 2 線式インターフェイスのピン割り当て表から列「プログラマピン名」を削除し、MCLR のピンタイプを更新しました ( 表 4-2 参照 )。

• 以下の新しいデバイスをコードメモリサイズの表( 表 5-1) とデバイス ID およびリビジョンの表( 表 18-4) に追加しました。

- PIC32MX130F064B - PIC32MX130F064C - PIC32MX130F064D - PIC32MX150F128B - PIC32MX150F128C - PIC32MX150F128D - PIC32MX230F064B - PIC32MX230F064C - PIC32MX230F064D - PIC32MX250F128B - PIC32MX250F128C- PIC32MX250F128D

• コードメモリサイズの表 ( 表 5-1) に「行サイズ」と「ページサイズ」の列を追加しました。

Note: 本書では、意図的に「リビジョン I」を飛ばしました。リビジョン H の次はリビジョンJ です。これは、小文字の「l」( エル ) と大文字の「I」( アイ ) の混乱を避けるためです。

DS60001145R_JP - p. 66 2016 Microchip Technology Inc.

PIC32

リビジョン J (2011 年 8 月 ) ( 続き )• 拡張 ICSP モードへの移行における PGCx 信号を更

新しました ( 図 7-1 参照 )。• デバイス消去のブロック図 ( 図 9-1) を更新しまし

た。

• 9.0 「デバイスの消去」内のターゲット デバイスを消去するための手順に手順 4 を追加しました。

• 2 線式のテストモード終了における MCLR 信号を更新しました ( 図 15-2 参照 )。

• PE コマンドセットを以下のコマンドで更新し、Note 2 を変更しました ( 表 16-2)。- PROGRAM_CLUSTER- GET_DEVICEID- CHANGE_CFG

• 16.2.11 「GET_CRC コマンド」を追加しました。

• PROGRAM_CLUSTERの書式におけるアドレスと長さの説明を更新しました ( 表 16-13 参照 )。

• CHANGE_CFGの応答の後に Note を追加しました( 図 16-27 参照 )。

• 表 17-1 において、全ての PIC32MX1XX およびPIC32MX2XX デバイス向けの DEVCFG0 とDEVCFG1 の値を更新しました。

• AC/DC 特性とタイミング要件 ( 表 20-1 に対して以下の変更を適用しました )。- パラメータ D111 (VDD) の Min. 値を更新しました。

- パラメータ D114 (IPEAK) を追加しました。

- パラメータ P2、P3、P4、P4A、P5、P8、P10を削除しました。

• 補遺 C: 「フラッシュ プログラムメモリの Data Sheet Clarification」を削除しました。

• 文章および体裁の変更等、本書全体の細部を修正しました。

リビジョン K (2012 年 7 月 )このリビジョンでの変更内容は以下の通りです。

• PGCとPGDは全てPGECとPGEDに変更しました。

• 本書の主要項目を記載した 1.0 「デバイス概要」を更新しました。

• 2.3 「データサイズ」を追加しました。

• 4.0 「デバイスへの接続」を更新しました。

• 内蔵レギュレータへの接続にNote 2を追加しました ( 図 4-2 参照 )。

• 4 線式および 2 線式インターフェイスのピン割り当て表に Note 2 を追加しました ( 表 4-1 と表 4-2 参照 )。

• 7.0 「2 線式拡張 ICSP モードへの移行」を更新しました。

• シリアル実行モードへの移行を更新しました ( 図10-1 参照 )。

• 10.2 「2 線式インターフェイス」内の手順 11 を更新しました。

• 12.2 「PE を使う場合」を更新しました。

• フラッシュ行書き込みオペコードの開始内の手順 3を更新しました ( 表 13-1 参照 )。

• デバイス オペコードのベリファイ内の手順 1 を更新しました ( 表 14-1 参照 )。

• 15.1 「4 線式インターフェイス」と 15.2 「2 線式インターフェイス」内の期間を更新しました。

• 16.0 「プログラミング エグゼクティブ」内の PE位置に関する Note を追加しました。

• 16.2 「PE コマンドセット」全体を通して、Operand フィールドへの参照を追加しました。

• PROGRAMコマンドのアルゴリズムを更新しました( 図 16-9 参照 )。

• 全ての PIC32MX1XX および PIC32MX2XX デバイスのマスク値と、全てのデバイスの DEVCFG3 を更新しました ( 表 17-1 参照 )。

• DCR 値を更新しました (17.4.3 「チェックサム計算式内の「DCR」の計算」と表 17-2 参照 )。

• チェックサム計算処理を更新しました ( 例 17-1 参照 )。

• 以下の新しいデバイスをコードメモリサイズの表( 表 5-1) とデバイス ID およびリビジョンの表 ( 表18-4) に追加しました。

• 18.2 「デバイスコード保護ビット (CP)」に Noteを追加しました。

• EJTAG 制御レジスタを追加しました( レジスタ 19-1 参照 )。

• 19.2.4 「ETAP_EJTAGBOOT コマンド」を追加しました。

• AC/DC 特性とタイミング要件を更新しました( 表 20-1 参照 )。- パラメータ D112 を削除しました。

- Note 1 と Note2 を新しい Note1 に置き換えました。

- パラメータ D111、D113、D114、D031、D041、D080、D090、D012、D013、P11、P12、P13を更新しました。

• 文章および体裁の変更等、本書全体の細部を修正しました。

- PIC32MX420F032H - PIC32MX450F128L- PIC32MX330F064H - PIC32MX440F256H- PIC32MX330F064L - PIC32MX450F256H- PIC32MX430F064H - PIC32MX450F256L- PIC32MX430F064L - PIC32MX460F256L- PIC32MX340F128H - PIC32MX340F512H- PIC32MX340F128L - PIC32MX360F512H- PIC32MX350F128H - PIC32MX370F512H- PIC32MX350F128L - PIC32MX370F512L- PIC32MX350F256H - PIC32MX440F512H- PIC32MX350F256L - PIC32MX460F512L- PIC32MX440F128H - PIC32MX470F512H- PIC32MX440F128L - PIC32MX470F512L- PIC32MX450F128H

2016 Microchip Technology Inc. DS60001145R_JP - p. 67

PIC32

リビジョン L (2013 年 1 月 )このリビジョンでの変更内容は以下の通りです。

• 以下の項目を追加または更新しました。

- 2.1 「デュアル フラッシュパネルとデュアルブート領域を備えたデバイス」 ( 新規 )

- 4.3 「電源要求」

- 13.0 「フラッシュ行書き込みの開始」

- 16.1.1 「2 線式 ICSP EJTAG RATE」• デバイス コンフィグレーション レジスタマスク値

を更新しました ( 表 17-1 参照 )。• 以下のデバイスをコードメモリ サイズ表とデバイ

ス ID およびリビジョン表に追加しました( 表 5-1 と表 18-4 参照 )。

• PE コマンドセットに Note 3 および Note4 と、GET_CHECKSUMおよびQUAD_WORD_PRGMコマンドを追加しました ( 表 16-2 参照 )。

• 16.2.15 「GET_CHECKSUM コマンド」を追加しました。

• 16.2.16 「QUAD_WORD_PROGRAM コマンド」を追加しました。

• DEVCFG 位置内の全てのアドレスを更新しました( 表 18-1 と表 18-2 参照 )。

• PIC32MZ EC ファミリ向けのコンフィグレーション ワード位置を追加しました ( 表 18-3 参照 )。

• 18.2 「デバイスコード保護ビット (CP)」を更新しました。

• 18.3 「プログラム書き込み保護ビット (PWP)」を更新しました。

• 文書全体を通して、全ての「テストモード」を「プログラミング モード」へ更新しました。

• 文章および体裁の変更等、本書全体の細部を修正しました。

リビジョン M (2013 年 9 月 )このリビジョンでの変更内容は以下の通りです。

• MIPS Technologies 社および www.mips.com への全ての参照は、それぞれ Imagination Technologies Limited 社および www.imgtec.com へ更新しました。

• 2.0 「プログラミングの概要」を更新しました。

• 5.1.6 「フラッシュメモリ」の 終段落を更新しました。

• コードメモリ サイズを更新し、Note 3 を追加しました ( 表 5-1 参照 )。

• デバイス消去のフロー図 ( 図 9-1) を更新しました。

• 表 11-1 内の手順 1、2、3、5 を更新しました。

• 13.2 「PE を使わない場合」に新しい段落を追加しました。

• 表 13-1 内の手順 2、3、5 を更新しました。

• 表 16-17 内のオペコードの説明を更新しました。

• デバイス コンフィグレーション マスク値を更新しました ( 表 17-1 参照 )。

• 17.3 「アルゴリズム」の第 4 段落内の 初の文章を削除しました。

• デバイス ID とリビジョンを更新しました ( 表 18-4参照 )。

リビジョン N (2014 年 4 月 )このリビジョンでの変更内容は以下の通りです。

• 表 4-1: 「4 線式インターフェイス ピン」内のNote2 を更新しました。

• 表 4-2: 「2 線式インターフェイス ピン」内のNote2 を更新しました。

• 9.0 「デバイスの消去」の手順 5 内の遅延値を更新しました。

• デバイス ID およびリビジョンの表内の「リビジョン ID」および「シリコン リビジョン」列を更新し、以下のデバイスを追加しました( 表 18-4 参照 )。

- PIC32MZ0256ECE064 - PIC32MZ1024ECF064- PIC32MZ0256ECE100 - PIC32MZ1024ECF100- PIC32MZ0256ECE124 - PIC32MZ1024ECF124- PIC32MZ0256ECE144 - PIC32MZ1024ECF144- PIC32MZ0256ECF064 - PIC32MZ1024ECG064- PIC32MZ0256ECF100 - PIC32MZ1024ECG100- PIC32MZ0256ECF124 - PIC32MZ1024ECG124- PIC32MZ0256ECF144 - PIC32MZ1024ECG144- PIC32MZ0512ECE064 - PIC32MZ1024ECH064- PIC32MZ0512ECE100 - PIC32MZ1024ECH100- PIC32MZ0512ECE124 - PIC32MZ1024ECH124- PIC32MZ0512ECE144 - PIC32MZ1024ECH144- PIC32MZ0512ECF064 - PIC32MZ2048ECG064- PIC32MZ0512ECF100 - PIC32MZ2048ECG100- PIC32MZ0512ECF124 - PIC32MZ2048ECG124- PIC32MZ0512ECF144 - PIC32MZ2048ECG144- PIC32MZ1024ECE064 - PIC32MZ2048ECH064- PIC32MZ1024ECE100 - PIC32MZ2048ECH100- PIC32MZ1024ECE124 - PIC32MZ2048ECH124- PIC32MZ1024ECE144 - PIC32MZ2048ECH144

- PIC32MX170F256B - PIC32MX350F256H- PIC32MX170F256D - PIC32MX350F256L- PIC32MX270F256B - PIC32MX430F064H- PIC32MX270F256D - PIC32MX430F064L- PIC32MX330F064H - PIC32MX450F128H- PIC32MX330F064L - PIC32MX450F128L- PIC32MX350F128H - PIC32MX450F256H- PIC32MX350F128L - PIC32MX450F256L

DS60001145R_JP - p. 68 2016 Microchip Technology Inc.

PIC32

リビジョン P (2014 年 10 月 )

以下の更新を適用しました。

• 表 5-1: 「コードメモリ サイズ」に PIC32MK の情報を含めました。

• 表 18-1: 「PIC32MX、PIC32MZ、PIC32MK 向けに現在サポートされるデバイス コンフィグレーション レジスタマスク値」に PIC32MK の情報を含めました。

• 元の表 18-4:「デバイス ID およびリビジョン」を削除しました ( この情報は 新のファミリシリコン エラッタに記載されているため )。

• 表 19-4: 「PIC32MK ファミリデバイスのコンフィグレーション ワードの位置」を追加しました。

リビジョン Q (2015 年 7 月 )このリビジョンでの変更内容は以下の通りです。

• 14.0 「フラッシュ行書き込みの開始」を追加しました。

• 表 18-1: 「PIC32MX、PIC32MZ、PIC32MK 向けに現在サポートされるデバイス コンフィグレーション レジスタマスク値」に DEVCFG4 を含めました。

• 式 18-1: 「チェックサムの計算式」を更新しました。

• 表 19-3: 「PIC32MZ ファミリデバイスのコンフィグレーション ワードの位置」を追加し、DEVCFG4 を含めました。

• 文章および体裁の変更等、本書全体の細部を修正しました。

リビジョン R (2016 年 4 月 )このリビジョンでの変更内容は以下の通りです。

• 図 4-1: 「プログラミング インターフェイス」を更新しました。

• 表 4-1: 「4 線式インターフェイス ピン」を更新しました。

• 表 4-2: 「2 線式インターフェイス ピン」を更新しました。

• 図 4-4: 「PIC32MZ EC/EF の電源接続」を更新しました。

• 図 4-5: 「PIC32MZ DA の電源接続」を更新しました。

• 表 5-1: 「コードメモリのサイズ」を更新しました。

• 図 5-2: 「基本的な PIC32 プログラミング インターフェイスのブロック図」を更新しました。

• 図 16-1: 「4 線式プログラミング モードの終了」を更新しました。

• 図 16-2: 「2 線式プログラミング モードの終了」を更新しました。

• パラメータ D112 (VDD1V8) および D115 (IDD1V8P) を表 21-1: 「AC/DC 特性とタイミング要件」に追加しました。

• 4.3 「PIC32MX の電源要件」を更新しました。

• 4.4 「VBAT ピンを備えた PIC32MX の 電源要件」を追加しました。

• 4.5 「PIC32MZ EC と PIC32MZ EF の 電源要件」を追加しました。

• 4.6 「PIC32MZ DA の電源要件」を追加しました。

• 4.7 「PIC32MK の電源要件」を追加しました。

• 5.3.3 「同期」を追加しました。

• 6.7 「Synchronize疑似命令」を追加しました。

• 8.1 「4 線式インターフェイス」を更新しました。

• 8.2 「2 線式インターフェイス」を更新しました。

• 表 13-1: 「ページ消去オペコード」を更新しました。

• 表 18-1: 「現在サポートされる PIC32MX、PIC32MZ、PIC32MK のデバイス コンフィグレーション レジスタのマスク値」を更新しました。

• チェックサム計算式の Note 1 を更新しました ( 式18-1 参照 )。

Note: 本書では、意図的に「リビジョン O」を飛ばしました。リビジョン N の次はリビジョン P です。これは、大文字の「O」( オー )と数字の「0」( ゼロ ) の混乱を避けるためです。

2016 Microchip Technology Inc. DS60001145R_JP - p. 69

PIC32

NOTE:

DS60001145R_JP - p. 70 2016 Microchip Technology Inc.

2016 Microchip Technology Inc. DS60001145R_JP - p. 71

本書に記載されているデバイス アプリケーション等に関する

情報は、ユーザの便宜のためにのみ提供されているものであ

り、更新によって無効とされる事があります。お客様のアプ

リケーションが仕様を満たす事を保証する責任は、お客様に

あります。Microchip 社は、明示的、暗黙的、書面、口頭、法

定のいずれであるかを問わず、本書に記載されている情報に

関して、状態、品質、性能、商品性、特定目的への適合性を

はじめとする、いかなる類の表明も保証も行いません。

Microchip 社は、本書の情報およびその使用に起因する一切の

責任を否認します。Microchip 社の明示的な書面による承認な

しに、生命維持装置あるいは生命安全用途に Microchip 社の製

品を使用する事は全て購入者のリスクとし、また購入者はこ

れによって発生したあらゆる損害、クレーム、訴訟、費用に

関して、Microchip 社は擁護され、免責され、損害をうけない

事に同意するものとします。暗黙的あるいは明示的を問わず、

Microchip社が知的財産権を保有しているライセンスは一切譲

渡されません。

商標

Microchip 社の名称と Microchip ロゴ、dsPIC、FlashFlex、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、

米国およびその他の国における Microchip TechnologyIncorporated の登録商標です。

FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MTP、SEEVAL、Embedded Control Solutions Company は、

米国における Microchip Technology Incorporated の登録商標

です。

Silicon Storage Technologyは、その他の国におけるMicrochipTechnology Incorporated の登録商標です。

Analog-for-the-Digital Age、Application Maestro、BodyCom、

chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPF、MPLAB 認証ロゴ、MPLIB、MPLINK、mTouch、Omniscient Code Generation、PICC、PICC-18、PICDEM、

PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、SQI、Serial Quad I/O、Total Endurance、TSHARC、UniWinDriver、WiperLock、ZENA、Z-Scale は、米国およびその他の国におけ

る Microchip Technology Incorporatedの登録商標です。

SQTP は、米国における Microchip Technology Incorporatedのサービスマークです。

GestICとULPPは、その他の国におけるMicrochip TechnologyGermany II GmbH & Co. & KG (Microchip TechnologyIncorporated の子会社 ) の登録商標です。

その他、本書に記載されている商標は各社に帰属します。

©2013, Microchip Technology Incorporated, Printed in theU.S.A., All Rights Reserved.

ISBN: 978-1-5224-0614-3

Microchip 社製デバイスのコード保護機能に関して次の点にご注意ください。

• Microchip 社製品は、該当する Microchip 社データシートに記載の仕様を満たしています。

• Microchip 社では、通常の条件ならびに仕様に従って使用した場合、Microchip 社製品のセキュリティ レベルは、現在市場に流

通している同種製品の中でも最も高度であると考えています。

• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解ではこうした手法は、

Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事になります。このような行為は知的所

有権の侵害に該当する可能性が非常に高いと言えます。

• Microchip 社は、コードの保全性に懸念を抱くお客様と連携し、対応策に取り組んでいきます。

• Microchip 社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護

機能とは、Microchip 社が製品を「解読不能」として保証するものではありません。

コード保護機能は常に進歩しています。Microchip 社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip 社

のコード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著

Microchip 社では、Chandler および Tempe ( アリゾナ州 )、Gresham( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を取得しています。Microchip 社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得しています。

QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV

== ISO/TS 16949 ==

DS60001145R_JP - p. 72 2016 Microchip Technology Inc.

北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel:480-792-7200 Fax:480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com

アトランタDuluth, GA Tel:678-957-9614 Fax:678-957-1455

オースティン (TX)Tel:512-257-3370

ボストンWestborough, MA Tel:774-760-0087 Fax:774-760-0088

シカゴItasca, IL Tel:630-285-0071 Fax:630-285-0075

クリーブランドIndependence, OH Tel:216-447-0464

Fax:216-447-0643

ダラスAddison, TX Tel:972-818-7423 Fax:972-818-2924

デトロイトNovi, MI Tel:248-848-4000

ヒューストン (TX) Tel:281-894-5983

インディアナポリスNoblesville, IN Tel:317-773-8323Fax:317-773-5453

ロサンゼルスMission Viejo, CA Tel:949-462-9523 Fax:949-462-9608

ニューヨーク (NY) Tel:631-435-6000

サンノゼ (CA) Tel:408-735-9110

カナダ - トロントTel:905-673-0699 Fax:905-673-6509

アジア / 太平洋

アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel:852-2943-5100Fax:852-2401-3431

オーストラリア - シドニーTel:61-2-9868-6733Fax:61-2-9868-6755

中国 - 北京Tel:86-10-8569-7000 Fax:86-10-8528-2104

中国 - 成都Tel:86-28-8665-5511Fax:86-28-8665-7889

中国 - 重慶Tel:86-23-8980-9588Fax:86-23-8980-9500

中国 - 東莞

Tel:86-769-8702-9880

中国 - 杭州Tel:86-571-8792-8115 Fax:86-571-8792-8116

中国 - 香港 SARTel:852-2943-5100 Fax:852-2401-3431

中国 - 南京Tel:86-25-8473-2460Fax:86-25-8473-2470

中国 - 青島Tel:86-532-8502-7355Fax:86-532-8502-7205

中国 - 上海Tel:86-21-5407-5533 Fax:86-21-5407-5066

中国 - 瀋陽Tel:86-24-2334-2829Fax:86-24-2334-2393

中国 - 深圳Tel:86-755-8864-2200 Fax:86-755-8203-1760

中国 - 武漢Tel:86-27-5980-5300Fax:86-27-5980-5118

中国 - 西安Tel:86-29-8833-7252Fax:86-29-8833-7256

アジア / 太平洋

中国 - 厦門Tel:86-592-2388138 Fax:86-592-2388130

中国 - 珠海Tel:86-756-3210040 Fax:86-756-3210049

インド - バンガロールTel:91-80-3090-4444 Fax:91-80-3090-4123

インド - ニューデリーTel:91-11-4160-8631Fax:91-11-4160-8632

インド - プネTel:91-20-3019-1500

日本 - 大阪Tel:81-6-6152-7160 Fax:81-6-6152-9310

日本 - 東京Tel:81-3-6880- 3770 Fax:81-3-6880-3771

韓国 - 大邱Tel:82-53-744-4301Fax:82-53-744-4302

韓国 - ソウルTel:82-2-554-7200Fax:82-2-558-5932 または 82-2-558-5934

マレーシア - クアラルンプールTel:60-3-6201-9857Fax:60-3-6201-9859

マレーシア - ペナンTel:60-4-227-8870Fax:60-4-227-4068

フィリピン - マニラTel:63-2-634-9065Fax:63-2-634-9069

シンガポールTel:65-6334-8870Fax:65-6334-8850

台湾 - 新竹Tel:886-3-5778-366Fax:886-3-5770-955

台湾 - 高雄Tel:886-7-213-7828

台湾 - 台北Tel:886-2-2508-8600 Fax:886-2-2508-0102

タイ - バンコクTel:66-2-694-1351Fax:66-2-694-1350

ヨーロッパ

オーストリア - ヴェルスTel:43-7242-2244-39

Fax:43-7242-2244-393

デンマーク - コペンハーゲンTel:45-4450-2828 Fax:45-4485-2829

フランス - パリTel:33-1-69-53-63-20 Fax:33-1-69-30-90-79

ドイツ - デュッセルドルフTel:49-2129-3766400

ドイツ - ミュンヘンTel:49-89-627-144-0 Fax:49-89-627-144-44

ドイツ - プフォルツハイムTel:49-7231-424750

イタリア - ミラノ Tel:39-0331-742611 Fax:39-0331-466781

イタリア - ベニスTel:39-049-7625286

オランダ - ドリューネンTel:31-416-690399 Fax:31-416-690340

ポーランド - ワルシャワTel:48-22-3325737

スペイン - マドリッドTel:34-91-708-08-90Fax:34-91-708-08-91

スウェーデン - ストックホルムTel:46-8-5090-4654

イギリス - ウォーキンガムTel:44-118-921-5800Fax:44-118-921-5820

各国の営業所とサービス

01/27/15