JAJA929 July   2025 MSPM0G3507

 

  1.   1
  2.   商標
  3. 1はじめに
    1. 1.1 サポート機能
    2. 1.2 CAN フレーム フォーマット
    3. 1.3 SPI メッセージフレームフォーマット
  4. 2実装
    1. 2.1 SPI メッセージ形式
      1. 2.1.1 SPI コマンド
      2. 2.1.2 命令セット
    2. 2.2 タイムアウト機能
    3. 2.3 エラー表示
    4. 2.4 ビジーステータスの表示
    5. 2.5 メッセージ RAM の構成
    6. 2.6 テスト環境
  5. 3参考資料

命令セット

ビット変更命令

MSPM0G3507 ビット変更命令フォーマット図 2-2 ビット変更命令フォーマット

Opcode:0b0000000000010000

ビット変更命令は、特定の CAN レジスタの個々のビットをセットまたはクリアするために使用されます。MASK ビットは、レジスタ内の変更可能なビットを特定します。マスクのビット1を使用すると、レジスタの対応するビットを変更でき、ビット0を使用するとビットの変更を阻止できます。

リセット命令

MSPM0G3507 リセット命令のフォーマット図 2-3 リセット命令のフォーマット

Opcode:0b0000000000100000

リセット命令は、SPI–CAN ブリッジデバイスの CAN モジュールをリセットします。CAN モジュールをリセットするには、ユーザーは、SPI プロトコルを通じて対応する opcode を送信する必要があります。

電源有効化と CAN 構成命令:

MSPM0G3507 電源有効化と CAN 構成命令のフォーマット図 2-4 電源有効化と CAN 構成命令のフォーマット

Opcode:0b0000000000110000

電源有効化および CAN 構成命令は、ブリッジデバイスの CAN モジュールに電力を供給するために使用されます。また、CAN モジュールが有効になった後で、事前定義された CAN メッセージ RAM 構成が行われます。

TX バッファ読み込み命令:

MSPM0G3507 TX バッファ読み込み命令のフォーマット図 2-5 TX バッファ読み込み命令のフォーマット

Opcode:0b00000000010000ab

TX バッファ読み込み命令は、選択した送信バッファに CAN フレームを読み込むために使用されます。送信バッファの選択は、opcode でエンコードされます。4つの送信バッファのうちの1つは、命令フィールドのa、bビットに基づき選択できます。

表 2-2 TX バッファ読み込みのマッピング
a b バッファ
0 0 バッファ – 0
0 1 バッファ – 1
1 0 バッファ – 2
1 1 バッファ – 3

TX FIFO 読み込み命令:

MSPM0G3507 TX FIFO 読み込み命令図 2-6 TX FIFO 読み込み命令

Opcode:0b0000000001010000

TX FIFO 読み込み命令は、送信 FIFO に送信する CAN フレームを読み込むために使用されます。CAN フレームを送信 FIFO にロードする前に、ユーザーは、送信 FIFO が一杯にならないように注意する必要があります。

TX バッファ送信リクエスト命令

MSPM0G3507 TX バッファ送信リクエスト命令のフォーマット図 2-7 TX バッファ送信リクエスト命令のフォーマット

Opcode:0b00000000011000ab

TX バッファ送信リクエスト命令は、4つの送信バッファの1つに対する送信リクエストを追加します。送信バッファの選択は、opcode でエンコードされます。4つの送信バッファのうちの1つは、命令フィールドのa、bビットに基づき選択できます。

表 2-3 TX バッファ送信リクエストのマッピング
a b バッファ
0 0 バッファ – 0
0 1 バッファ – 1
1 0 バッファ – 2
1 1 バッファ – 3

TXFIFO 送信リクエスト命令

MSPM0G3507 TXFIFO 送信リクエスト命令のフォーマット図 2-8 TXFIFO 送信リクエスト命令のフォーマット

Opcode:0b0000000001110000

TX FIFO 送信リクエスト命令は、送信 FIFO 配置インデックスに基づき、送信 FIFO 素子の1つに対する送信リクエストを追加します。ユーザーは、バッファ追加リクエストを送信する前に、送信 FIFO に CAN フレームがあることを確認する必要があります。

レジスタ書き込み命令

MSPM0G3507 レジスタ書き込み命令のフォーマット図 2-9 レジスタ書き込み命令のフォーマット

Opcode:0b0000000010000000

オフセットアドレス – レジスタデータを書き込むレジスタアドレスを指定します。

レジスタ書き込み命令は、SPI ペリフェラル経由で CAN レジスタを構成するために使用されます。データは、オフセットアドレスに基づき、該当するレジスタに書き込まれます。

レジスタデータ読み取り命令:

MSPM0G3507 レジスタデータ読み取り命令のフォーマット図 2-10 レジスタデータ読み取り命令のフォーマット

Opcode:0b0000000010000000

オフセットアドレス – レジスタデータを読み取るためのレジスタアドレスを指定します。

レジスタデータ読み取り命令は、特定の CAN レジスタからデータを読み取るために使用されます。レジスタデータ読み取り命令は、レジスタの読み取りを行いますが、送信は行いません。したがって、レジスタデータ読み取り命令の後は、レジスタデータフェッチ命令が続く必要があります。

レジスタデータフェッチ命令:

MSPM0G3507 レジスタデータフェッチ命令のフォーマット図 2-11 レジスタデータフェッチ命令のフォーマット

Opcode:0b0000000010100000

レジスタデータフェッチ命令は、レジスタデータ読み取り命令を使用して読み取ったレジスタ値の送信を行います。

RX バッファデータ読み取り命令:

MSPM0G3507 RX バッファデータ読み取り命令のフォーマット図 2-12 RX バッファデータ読み取り命令のフォーマット

Opcode:0b00000000101100xy

SPI-CAN ブリッジが CAN ネットワークから新しい CAN フレームを受信すると、図 2-12に示すように、SPI-CAN ブリッジは GPIO ピンをトグルし、フレームが SPI コントローラで受信されたことを示します。

SPI-CAN ブリッジで CAN モジュール RX バッファから受信した CAN フレームを取得するには、次のシーケンスに従う必要があります。

  1. まず、RX ステータスデータ読み取り命令と、RX ステータスデータフェッチ命令を使用し、受信した CAN フレームがどの RX バッファに含められるかを特定します。
  2. 次に、RX バッファ読み取り命令を実行し、バッファの内容にアクセスします。この命令はバッファの場所を読み取るだけで、データの送信は行わないことに注意してください。
  3. 最後に、RX バッファデータフェッチ命令を実行し、バッファからデータを取得します。

データの送信を完了するには、各 RX バッファ読み取り命令を対応する RX バッファデータフェッチ命令と組み合わせる必要があります。

RX バッファの選択は、opcode でエンコードされます。4つの RX バッファのうちの1つは、命令のx、yビットに基づいて選択できます。

表 2-4 RX バッファ読み取りのマッピング
X y バッファ
0 0 バッファ – 0
0 1 バッファ – 1
1 0 バッファ – 2
1 1 バッファ – 3

RX バッファデータフェッチ命令

MSPM0G3507 RX バッファデータフェッチ命令のフォーマット図 2-13 RX バッファデータフェッチ命令のフォーマット

Opcode:0b0000000011000000

RX バッファデータフェッチ命令は、RX バッファ読み取り命令を使用して読み取られた RX バッファデータを送信します。

RX FIFO データ読み取り命令:

MSPM0G3507 RXFIFO データ読み取り命令のフォーマット図 2-14 RXFIFO データ読み取り命令のフォーマット

Opcode:0b0000000011010000

SPI-CAN ブリッジが CAN ネットワークから新しい CAN フレームを受信すると、図 2-14に示すように、SPI-CAN ブリッジは GPIO ピンをトグルし、フレームが SPI コントローラで受信されたことを示します。

SPI-CAN ブリッジ内で CAN モジュールの RX FIFO から受信した CAN フレームを取得するには、次のシーケンスに従う必要があります。

  1. 最初に、RX ステータスデータ読み取り命令と、RX ステータスデータフェッチ命令を使用して、RXFIFOの状態に関する情報を取得します。
  2. 次に、RX FIFO データ読み取り命令を実行し、FIFO 素子の内容にアクセスします。RX FIFO 取得インデックスに基づき、RX FIFO 素子が選択され、データが読み取られ、アレイに格納されます。この命令は FIFO 素子の位置を読み取るだけで、データの送信は行わないことに注意してください。
  3. 最後に、RX FIFO データフェッチ命令を実行し、FIFO からデータを実際に取得します。

RX FIFO データフェッチ命令:

MSPM0G3507 RXFIFO データフェッチ命令のフォーマット図 2-15 RXFIFO データフェッチ命令のフォーマット

Opcode:0b0000000011100000

RX FIFO データフェッチ命令は、RX FIFO 読み取り命令を使用して読み出された RX FIFO データを送信します。

受信ステータスデータ読み取り命令

MSPM0G3507 受信ステータスデータ読み取り命令のフォーマット図 2-16 受信ステータスデータ読み取り命令のフォーマット

Opcode:0b0000000011110000

受信ステータスデータ読み取り命令は、SPI から CAN デバイスへの CAN モジュールのステータスビットを取得するために使用されます。この命令に対する応答として受信されたデータビットの意味を図 2-17に示します。

MSPM0G3507 ステータスビット表示図 2-17 ステータスビット表示
  • B0 – B4:RX は、NDAT レジスタからの新しいデータステータスをバッファします。各ビットは、各 RX バッファのステータスを示します。1:該当する Rx バッファには CAN フレームがあります。0:該当する Rx バッファは空です。
  • FL:CAN RXFIFO のフルフラグステータスを示します。1:RXFIFO がいっぱいです。0:RXFIFO はいっぱいになっていません。
  • F2、F1、F0:CAN RXFIFO の充填レベルを示します。1:該当する Rx FIFO には CAN フレームがあります。0:該当する Rx FIFO は空です。
  • L2、L1、L0:CAN プロトコルの LEC (最終エラーコード) ビットを示します。
    表 2-5 最終エラーコード (LEC) ビット診断のマッピング
    LEC ビット [L2、L1、L0] エラーコード
    000 エラーなし
    001 スタッフエラー
    010 フォームエラー
    011 Ack エラー
    100 Bit1 エラー
    101 Bit0 エラー
    110 CRC 誤差
    111 変更なし
  • D2、D1、D0:CAN プロトコルの DLEC (データフェーズ最終エラーコード) ビットを示します。エラーコードは LEC と同じです。
  • ES:前の命令のエラーステータスを示します。1:前の命令の受信中にエラーが発生しました。0:前の命令の受信中にはエラーはありませんでした。
  • TO:前の命令のタイムアウトステータス。1:前の命令でタイムアウトが発生しました。0:前の命令でタイムアウトは発生しませんでした

受信ステータスデータフェッチ命令

MSPM0G3507 受信ステータスデータフェッチ命令のフォーマット図 2-18 受信ステータスデータフェッチ命令のフォーマット

Opcode:0b0000000000001000

RX ステータスデータフェッチ命令は、RX ステータスデータ読み取り命令によってすでに読み取られ、変数に保存されている RX ステータスデータを受信するために使用されます。