can fd (flexible data-rate) プロトコル...

118
2019 Microchip Technology Inc. DS70005340B_JP - p. 1 ハイライト 本書には以下の主要項目を記載しています。 1.0 はじめに ........................................................................................................................... 2 2.0 CAN FD メッセージ フレーム ......................................................................................... 5 3.0 制御レジスタ ................................................................................................................... 9 4.0 動作モード ..................................................................................................................... 51 5.0 設定 ................................................................................................................................ 57 6.0 メッセージの送信 .......................................................................................................... 68 7.0 送信イベントFIFO – TEF .............................................................................................. 77 8.0 メッセージのフィルタ処理 ............................................................................................ 82 9.0 メッセージの受信 .......................................................................................................... 87 10.0 FIFOの動作 .................................................................................................................... 93 11.0 タイムスタンプ ............................................................................................................ 104 12.0 割り込み ....................................................................................................................... 105 13.0 エラー対応 ................................................................................................................... 112 14.0 関連アプリケーション ノート ..................................................................................... 114 15.0 改訂履歴 ....................................................................................................................... 115 CAN FD (Flexible Data-Rate) プロトコル モジュール 注意 : この日本語版文書は参考資料としてご利用ください。 最新情報は必ずオリジナルの英語版をご参照願います。

Upload: others

Post on 12-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD (Flexible Data-Rate) プロトコル モジュール

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

ハイライト

本書には以下の主要項目を記載しています。

1.0 はじめに ........................................................................................................................... 22.0 CAN FD メッセージ フレーム ......................................................................................... 53.0 制御レジスタ ................................................................................................................... 94.0 動作モード ..................................................................................................................... 515.0 設定 ................................................................................................................................ 576.0 メッセージの送信 .......................................................................................................... 687.0 送信イベントFIFO – TEF .............................................................................................. 778.0 メッセージのフィルタ処理 ............................................................................................ 829.0 メッセージの受信 .......................................................................................................... 8710.0 FIFOの動作 .................................................................................................................... 9311.0 タイムスタンプ ............................................................................................................ 10412.0 割り込み ....................................................................................................................... 10513.0 エラー対応 ................................................................................................................... 11214.0 関連アプリケーション ノート ..................................................................................... 11415.0 改訂履歴 ....................................................................................................................... 115

2019 Microchip Technology Inc. DS70005340B_JP - p. 1

Page 2: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

1.0 はじめに

CAN FD (Flexible Data-Rate) は、CAN バスの帯域幅に対する要求の高まりに対応します。CAN 2.0B に対する主な強化点は以下の 2 つです。

• データ フィールドのサイズが 64 データバイトに増加 ( 従来は 8 バイト )• アービトレーション フィールドの後のビットレートをより高速なレートに切り換える事が可能

図 1-1 に、データ ビットレート (DBR) の高速化とフレームあたりデータバイト数の増加によって得られる実効ビットレートの向上を示します。

図 1-1: CAN FD の実効ビットレート

CAN FD プロトコルは、CAN 2.0 メッセージと CAN FD メッセージが同一バス上で混在する事を許容するよう定義されています。しかし、これは同一バス上で CAN FD 非対応コントローラと CAN FD 対応コントローラが混在できる事を意味するのではありません。CAN FD 非対応コントローラは、CAN FD メッセージの受信時にエラーフレームを生成します。

1.1 特長

本 CAN FD モジュールの特長は以下の通りです。

全般

• 最大 1 Mbps の定格 ( アービトレーション ) ビットレート

• 最大 8 Mbps のデータビットレート

• CAN FD コントローラ モード - CAN 2.0B/CAN FD 混用モード

- CAN 2.0B モード

• ISO11898-1:2015 に準拠

メッセージ FIFO• 31 個の FIFO ( 送信用または受信用として設定可能 )• 1 個の送信キュー (TXQ)• 32 ビット タイムスタンプ機能を備えた送信イベント FIFO (TEF)メッセージ送信

• メッセージ送信の優先順位付け - 優先度ビットフィールドで設定する

- TXQ を使って最低 ID を持つメッセージを最初に送信する

• 自動再送信の試行回数を設定可能 : 無制限、3 回のみ、再送信しない

Frame ID: 11-Bit, Bit Rate Arbitration: 1 Mbit

DS70005340B_JP - p. 2 2019 Microchip Technology Inc.

Page 3: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

メッセージ受信

• 32 個の柔軟なフィルタ / マスク オブジェクト

• 各オブジェクトで以下のいずれかを受け入れるフィルタを設定可能

- 標準 ID と最初の 18 データビット

- 拡張 ID• 32 ビット タイムスタンプ

• CAN FD ビットストリーム プロセッサ (BSP) は、ISO11898-1:2015 が定義する CAN FD プロトコルの MAC (Medium Access Control) を実装します。BSP はビットストリームとのシリアル - パラレル変換、CAN FD フレームのエンコード / デコード、メディアアクセスの管理、フレームの肯定応答、エラーの検出 / 報告を実行します。

• TXハンドラは、複数の送信FIFOによって要求される送信メッセージに優先順位を付けます。 TXハンドラはRAMインターフェイスを使ってRAMから送信データをフェッチし、そのデータを送信用に BSP へ供給します。

• BSP は受信メッセージを RX ハンドラへ提供します。RX ハンドラは、アクセプタンス フィルタを使って受信 FIFO に保存するメッセージを選別します。RX ハンドラは、RAM インターフェイスを使って受信データを RAM に保存します。

• 各 FIFO は、送信 FIFO または受信 FIFO として設定できます。FIFO 制御は、FIFO ヘッドおよびテールを追跡し、ユーザアドレスを計算します。TX FIFO の場合、ユーザアドレスは次の送信メッセージのデータが保存される RAM 内のアドレスを指します。RX FIFO の場合、ユーザアドレスは次の受信メッセージのデータが読み出される RAM 内のアドレスを指します。ユーザ アプリケーションは、FIFO のヘッド / テールをインクリメントする事により、RAM に対してメッセージが読み書きされる事を FIFO に知らせます。

• TXQ は、キューに保存されたメッセージの ID に基づいてメッセージを送信する特殊な送信FIFO です。

• TEF は、送信メッセージのメッセージ ID を保存します。

• 受信メッセージにタイムスタンプを付けるためにフリーランニングのタイムベース カウンタ (TBC) を使います。TEF 内のメッセージにもタイムスタンプを付ける事ができます。

• CAN FD コントローラ モジュールは、新しいメッセージを受信した時またはメッセージの送信に成功した時に割り込みを生成します。

2019 Microchip Technology Inc. DS70005340B_JP - p. 3

Page 4: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 1-2 に、システムブロック図を示します。

図 1-2: システムブロック図

Note: サポートされる FIFO、フィルタ、マスクの数はデバイスごとに異なります。 FIFO、フィルタ、マスクの実際の数については、対応するデバイス データシート内の「CANFD モジュール」の説明を参照してください。

TX Handler

TX Prioritization

RX Handler

Filter and Masks

Timestamping

Interrupt Control

Error Handling Diagnostics

CxTX

CxRX

Device RAM

TEF

MessageObject 0

MessageObject 31

•••

TXQ

MessageObject 0

MessageObject 31

•••

FIFO 1

MessageObject 0

MessageObject 31

•••

FIFO 31

MessageObject 0

MessageObject 31

•••

• • •

DS70005340B_JP - p. 4 2019 Microchip Technology Inc.

Page 5: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

2.0 CAN FD メッセージ フレーム

ISO11898-1:2015 は、各種の CAN メッセージ フレームを詳細に定義しています。図 2-1 ~図 2-6 に、メッセージと各フィールドの構造を示します。

CAN データ / リモートフレームには以下の 4 種類があります ( 図 2-2 参照 )。• CAN ベースフレーム : 標準 ID を使う CAN 2.0 フレーム

• CAN FD ベースフレーム : 標準 ID を使う CAN FD フレーム

• CAN 拡張フレーム : 拡張 ID を使う CAN 2.0 フレーム

• CAN FD 拡張フレーム : 拡張 ID を使う CAN FD フレーム

CAN FD フレームにはリモートフレームが存在しないため、RTR ビットは RRS ビットに置き換えられています ( 図 2-2 参照 )。CAN FD ベースフレーム内の RRS ビットを使って SID を12 ビットに拡張できます。拡張 ID を有効にした場合、RRS ビットは SID11 ビット (SID[11:0]の最下位ビット (LSb)) として使われます。

図 2-3 に、各種 CAN メッセージのコントロール フィールドを示します。ISO11898-1:2015 にCAN FD が追加される以前は、FDF ビットは予約済みビットでした。FDF ビットは、従来型CAN フォーマットと CAN FD フォーマットのどちらかを選択するために使います。

BRS ビットは、CAN FD フレームのデータフェイズ向けにビットレートを切り換えるかどうかを選択するために使います。図 2-6 に、エラーおよびオーバーロード フレームを示します。これらの特別なフレームは従来型 CAN から変更されていません。

2.1 ISO CRC と非 ISO CRC非 ISO CRC を使う ECU のシステム検証をサポートするため、本 CAN FD コントローラ モジュールは ISO CRC (ISO11898-1:2015 に準拠 ) と非 ISO CRC の両方をサポートします ( 図 2-4 と図 2-5 参照 )。CRC フィールドは ISOCRCEN ビット (C1CONL[5]) を使って選択できます。ISOCRC フィールドはスタッフカウントを含みます。このカウントは、最初の CAN FD 仕様には含まれていませんでしたが、誤り検出における小さな問題を解決するために追加されました。

CAN FDフレームは 2通りの長さのCRCを使います (16データバイト以下に対して 17ビット、16 データバイト超に対して 21 ビット )。通常、CAN FD では全部で 6 種類の CAN データ / リモートフレームが使われます。

図 2-1: 一般的なデータフレーム

Note: CAN FD フレームのデータフェイズ中にエラーが検出されると、ビットレートは定格ビットレート (NBR) に戻されます。エラーフレームは常にアービトレーション ビットレートで送信されます。

IFS(= 3b)

SOF(1b) ARBITRATION (12/32b) CTRL (6/8/9b) DATA

(0 to 64b)CRC (16/18/22b)CRC (16/22/26b) ACK (2b) EOF (7b) IFS

(= 3b)

DATA FRAME

2019 Microchip Technology Inc. DS70005340B_JP - p. 5

Page 6: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 2-2: アービトレーション フィールド

図 2-3: コントロール フィールド

図 2-4: ISO CRC フィールド

ARBITRATION (12/32b)

SID[10:0] RTR

SID[10:0] RRSSID11

EID[28:18] SRR IDE EID[17:0] RTR

EID[28:18] SRR IDE EID[17:0] RRS

CAN Base

CAN FD Base

CAN Ext.

CAN FD Ext.

CTRL (6/8/9b)

IDE FDF

IDE ESI

FDF DLC[3:0]

FDF ESI DLC[3:0]

CAN Base

CAN FD Base

CAN Ext.

CAN FD Ext.

DLC[3:0]

FDF BRS DLC[3:0]

r0

res BRS

res

CRC (16/22/26b)

CRC (15b)

CRC (15b)

CAN Base

CAN FD Base

CAN Ext.

CAN FD Ext.

CRC

CRC (17/21b)

BRS

DEL

CRCDEL

STUFFCNT (4b)

CRCDEL

STUFFCNT (4b)

CRCDEL

DS70005340B_JP - p. 6 2019 Microchip Technology Inc.

Page 7: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

図 2-5: 非 ISO CRC フィールド

図 2-6: エラー / オーバーロード フレーム

CRC (16/18/22b)

CRC (15b)

CRC (15b)

CAN Base

CAN FD Base

CAN Ext.

CAN FD Ext.

CRC

CRC (17/21b)

CRC (17/21b)

DEL

CRCDEL

CRCDEL

CRCDEL

ANYWHERE WITHIN DATA FRAME ERRFLAG (6b) ERRDEL (8b) IFS (= 3b) or OVL

EOF or ERRDEL or OVLDEL OVLFLAG (6b) OVLDEL (8b) IFS (= 3b) or OVL

ERROR

OVERLOAD

2019 Microchip Technology Inc. DS70005340B_JP - p. 7

Page 8: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

2.1.1 DLC (Data Length Code)DLC (Data Length Code) は、メッセージ フレームが格納するデータバイトの数を指定します。表 2-1 に、DCL の値とデータバイト数の関係を示します。

表 2-1: DLC とデータバイト数の関係

フレーム DLC データバイト数

CAN 2.0/CAN FD 0 01 12 23 34 45 56 67 78 8

CAN 2.0 9-15 8CAN FD 9 12

10 1611 2012 2413 3214 4815 64

DS70005340B_JP - p. 8 2019 Microchip Technology Inc.

Page 9: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

3.0 制御レジスタ

CAN FD の動作は、以下の特殊機能レジスタ (SFR) を使って制御します。

• レジスタ 3-1: C1CONH• レジスタ 3-2:C1CONL• レジスタ 3-3:C1NBTCFGH• レジスタ 3-4: C1NBTCFGL• レジスタ 3-5: C1DBTCFGH• レジスタ 3-6: C1DBTCFGL• レジスタ 3-7: C1TDCH• レジスタ 3-8:C1TDCL• レジスタ 3-9:C1TBCH• レジスタ 3-10:C1TBCL• レジスタ 3-11:C1TSCONH• レジスタ 3-12:C1TSCONL• レジスタ 3-13:C1VECH• レジスタ 3-14:C1VECL• レジスタ 3-15:C1INTH• レジスタ 3-16:C1INTL• レジスタ 3-17:C1RXIFH• レジスタ 3-18:C1RXIFL• レジスタ 3-19:C1RXOVIFH• レジスタ 3-20:C1RXOVIFL• レジスタ 3-21:C1TXIFH• レジスタ 3-22:C1TXIFL• レジスタ 3-23:C1TXATIFH• レジスタ 3-24:C1TXATIFL• レジスタ 3-25:C1TXREQH• レジスタ 3-26:C1TXREQL• レジスタ 3-27:C1FIFOBAH• レジスタ 3-28:C1FIFOBAL• レジスタ 3-29:C1TXQCONH• レジスタ 3-30:C1TXQCONL• レジスタ 3-31:C1TXQSTA• レジスタ 3-32:C1FIFOCONxH• レジスタ 3-33:C1FIFOCONxL• レジスタ 3-34:C1FIFOSTAx• レジスタ 3-35:C1TEFCONH• レジスタ 3-36:C1TEFCONL• レジスタ 3-37:C1TEFSTA• レジスタ 3-38:C1FIFOUAxH• レジスタ 3-39:C1FIFOUAxL• レジスタ 3-40:C1TEFUAH• レジスタ 3-41:C1TEFUAL• レジスタ 3-42:C1TXQUAH• レジスタ 3-43:C1TXQUAL• レジスタ 3-44:C1TRECH• レジスタ 3-45:C1TRECL• レジスタ 3-46:C1BDIAG0H• レジスタ 3-47:C1BDIAG0L• レジスタ 3-48:C1BDIAG1H• レジスタ 3-49: C1BDIAG1L• レジスタ 3-50:C1FLTCONxH• レジスタ 3-51:C1FLTCONxL• レジスタ 3-52:C1FLTOBJxH• レジスタ 3-53:C1FLTOBJxL• レジスタ 3-54:C1MASKxH• レジスタ 3-55:C1MASKxL

2019 Microchip Technology Inc. DS70005340B_JP - p. 9

Page 10: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-1: C1CONH: CAN 制御レジスタ High

R/W-0 R/W-0 R/W-0 R/W-0 S/HC-0 R/W-1 R/W-0 R/W-0TXBWS3 TXBWS2 TXBWS1 TXBWS0 ABAT REQOP2 REQOP1 REQOP0

bit 15 bit 8

R-1 R-0 R-0 R/W-1 R/W-1 R/W-0 R/W-0 R/W-0OPMOD2 OPMOD1 OPMOD0 TXQEN(1) STEF(1) SERRLOM(1) ESIGM(1) RTXAT(1)

bit 7 bit 0

凡例 : S = セット可能ビット HC = ハードウェア クリア可能ビット

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

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

bit 15-12 TXBWS[3:0]: 送信帯域幅共有ビット

1111-1100 = 40961011 = 20481010 = 10241001 = 5121000 = 2560111 = 1280110 = 640101 = 320100 = 160011 = 80010 = 40001 = 20000 = 遅延なし

bit 11 ABAT: 保留中の全送信中止ビット

1 = 全ての送信バッファに対して送信中止を要求する0 = このビットは、全ての送信が中止された時点でモジュールによってクリアされます。

bit 10-8 REQOP[2:0]: 要求動作モードビット

111 = 制限動作モードに設定する110 = ノーマル CAN 2.0 モードに設定する (CAN FD フレーム検出時にエラーフレームを送信 )101 = 外部ループバック モードに設定する100 = コンフィグレーション モードに設定する011 = リッスンオンリー モードに設定する010 = 内部ループバック モードに設定する001 = 無効モードに設定する000 = ノーマルCAN FDモードに設定する (CAN FDフレームとCAN 2.0フレームの混用をサポート )

bit 7-5 OPMOD[2:0]: 動作モード ステータスビット

111 = モジュールは制限動作モード中110 = モジュールはノーマル CAN 2.0 モード中 (CAN FD フレーム検出時にエラーフレームを送信 )101 = モジュールは外部ループバック モード中100 = モジュールはコンフィグレーション モード中011 = モジュールはリッスンオンリー モード中010 = モジュールは内部ループバック モード中001 = モジュールは無効モード中000 = モジュールはノーマルCAN FDモード中 (CAN FDフレームとCAN 2.0フレームの混用をサポート )

bit 4 TXQEN: 送信キュー (TXQ) イネーブルビット (1)

1 = TXQ を有効にして RAM 内に空間を予約する0 = RAM 内に TXQ 向けの空間を予約しない

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

DS70005340B_JP - p. 10 2019 Microchip Technology Inc.

Page 11: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

bit 3 STEF: 送信イベント FIFO (TEF) 保存ビット (1)

1 = 送信メッセージを TEF に保存する0 = 送信メッセージを TEF に保存しない

bit 2 SERRLOM: システムエラー時リッスンオンリー モード移行ビット (1)

1 = リッスンオンリー モードへ移行する0 = 制限動作モードへ移行する

bit 1 ESIGM: ゲートウェイ モード中 ESI 送信ビット (1)

1 = メッセージの ESI が High の場合、または CAN コントローラがエラー パッシブの場合、ESI はリセッシブとして送信される

0 = ESI は CAN コントローラのエラーステータスを反映する

bit 0 RTXAT: 制限付き再送信試行ビット (1)

1 = 再送信の試行は TXAT[1:0] ビット (C1FIFOCONxH[6:5]) に従う0 = 再送信の試行は無制限 (TXAT[1:0] ビットを無視する )

レジスタ 3-1: C1CONH: CAN 制御レジスタ High ( 続き )

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

2019 Microchip Technology Inc. DS70005340B_JP - p. 11

Page 12: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-2: C1CONL: CAN 制御レジスタ Low

R/W-0 U-0 R/W-0 R/W-0 R-0 R/W-1 R/W-1 R/W-1CON — SIDL BRSDIS BUSY WFT1 WFT0 WAKFIL(1)

bit 15 bit 8

R/W-0 R/W-1 R/W-1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0CLKSEL(1) PXEDIS(1) ISOCRCEN(1) DNCNT4 DNCNT3 DNCNT2 DNCNT1 DNCNT0

bit 7 bit 0

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

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

bit 15 CON: CAN イネーブルビット

1 = CAN モジュールを有効にする0 = CAN モジュールを無効にする

bit 14 未実装 : 「0」として読み出し

bit 13 SIDL: アイドル中 CAN 停止制御ビット

1 = アイドルモード中にモジュールは動作を停止する0 = アイドルモード中にモジュールは動作を停止しない

bit 12 BRSDIS: ビットレート切り換え (BRS) ディセーブル ビット 1 = メッセージ送信オブジェクト内の BRS に関係なく、ビットレートの切り換えを無効にする0 = メッセージ送信オブジェクト内の BRS に応じてビットレートを切り換える

bit 11 BUSY: CAN モジュール ビジービット

1 = CAN モジュールはアクティブ0 = CAN モジュールは非アクティブ

bit 10-9 WFT[1:0]: 復帰フィルタ時間選択ビット

11 = T11FILTER10 = T10FILTER01 = T01FILTER00 = T00FILTER

bit 8 WAKFIL: 復帰用 CAN バス ラインフィルタ イネーブルビット (1)

1 = 復帰用に CAN バス ラインフィルタを使う0 = 復帰用に CAN バスライン フィルタを使わない

bit 7 CLKSEL: モジュール クロック源選択ビット (1)

1 = モジュール有効時は補助クロックが動作する0 = モジュール有効時は CAN クロック ジェネレータからのクロックが動作する

bit 6 PXEDIS: プロトコル例外イベント検出ディセーブル ビット (1)

リセッシブの FDF ビットの後にリセッシブの予約 (res) ビットが続く事をプロトコル例外と呼びます。1 = プロトコル例外をフォームエラーとして扱う0 = プロトコル例外が検出された場合、CAN は Bus Integrating ステートに移行する

bit 5 ISOCRCEN: CAN FD フレーム内 ISO CRC イネーブルビット (1)

1 = CRC フィールドにスタッフビット カウントを含め、非ゼロの CRC 初期化ベクタを使う 0 = CRC フィールドにスタッフビット カウントを含めず、全て「0」の CRC 初期化ベクタを使う

bit 4-0 DNCNT[4:0]: DeviceNet™ フィルタビット数ビット

10011-11111 = 無効な選択 (18 ビット以下のデータのみ EIDx と比較可能 )10010 = データバイト 2 の bit 6 まで EID17 と比較する...00001 = データバイト 0 の bit 7 まで EID0 と比較する00000 = データバイトを比較しない

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

DS70005340B_JP - p. 12 2019 Microchip Technology Inc.

Page 13: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-3: C1NBTCFGH: CAN 定格ビット時間コンフィグレーション レジスタ High(1)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0BRP[7:0]

bit 15 bit 8

R/W-0 R/W-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-0 R/W-0TSEG1[7:0]

bit 7 bit 0

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

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

bit 15-8 BRP[7:0]: baud レート プリスケーラ ビット

1111 1111 = TQ = 256/FSYS...0000 0000 = TQ = 1/FSYS

bit 7-0 TSEG1[7:0]: 時間セグメント 1 ビット ( 伝播セグメント + 位相セグメント 1)1111 1111 = 256 x TQ...0000 0000 = 1 x TQ

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

レジスタ 3-4: C1NBTCFGL: CAN 定格ビット時間コンフィグレーション レジスタ Low(1)

U-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-1 R/W-1 R/W-1— TSEG2[6:0]

bit 15 bit 8

U-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-1 R/W-1 R/W-1— SJW[6:0]

bit 7 bit 0

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

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

bit 15 未実装 : 「0」として読み出し

bit 14-8 TSEG2[6:0]: 時間セグメント 2 ビット ( 位相セグメント 2)111 1111 = 128 x TQ...000 0000 = 1 x TQ

bit 7 未実装 : 「0」として読み出し

bit 6-0 SJW[6:0]: 同期ジャンプ幅ビット

111 1111 = 128 x TQ...000 0000 = 1 x TQ

Note 1: これらのビットはコンフィグレーション モード ( OPMOD[2:0] = 100) 中にのみ変更可能です。

2019 Microchip Technology Inc. DS70005340B_JP - p. 13

Page 14: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-5: C1DBTCFGH: CAN データビット時間コンフィグレーション レジスタ High(1)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0BRP[7:0]

bit 15 bit 8

U-0 U-0 U-0 R/W-0 R/W-1 R/W-1 R/W-1 R/W-0— — — TSEG1[4:0]

bit 7 bit 0

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

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

bit 15-8 BRP[7:0]: baud レート プリスケーラ ビット

1111 1111 = TQ = 256/FSYS...0000 0000 = TQ = 1/FSYS

bit 7-5 未実装 : 「0」として読み出し

bit 4-0 TSEG1[4:0]: 時間セグメント 1 ビット ( 伝播セグメント + 位相セグメント 1)1 1111 = 32 x TQ...0 0000 = 1 x TQ

Note 1: このレジスタはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

レジスタ 3-6: C1DBTCFGL: CAN データビット時間コンフィグレーション レジスタ Low(1)

U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-1 R/W-1— — — — TSEG2[3:0]

bit 15 bit 8

U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-1 R/W-1— — — — SJW[3:0]

bit 7 bit 0

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

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

bit 15-12 未実装 : 「0」として読み出し

bit 11-8 TSEG2[3:0]: 時間セグメント 2 ビット ( 位相セグメント 2)1111 = 16 x TQ...0000 = 1 x TQ

bit 7-4 未実装 : 「0」として読み出し

bit 3-0 SJW[3:0]: 同期ジャンプ幅ビット

1111 = 16 x TQ...0000 = 1 x TQ

Note 1: このレジスタはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

DS70005340B_JP - p. 14 2019 Microchip Technology Inc.

Page 15: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-7: C1TDCH: CAN トランスミッタ遅延補償レジスタ High(1)

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0— — — — — — EDGFLTEN SID11EN

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 U-0 R/W-1 R/W-0— — — — — — TDCMOD1 TDCMOD0

bit 7 bit 0

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

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

bit 15-10 未実装 : 「0」として読み出し

bit 9 EDGFLTEN: 「Bus Integration」ステート中エッジフィルタ イネーブルビット

1 = ISO11898-1:2015 に従ってエッジフィルタ処理を有効にする0 = エッジフィルタ処理を無効にする

bit 8 SID11EN: CAN FD ベース フォーマット メッセージ内 12 ビット SID イネーブルビット

1 = CAN FD ベース フォーマット メッセージ内で RRS を SID11 として使う : SID[11:0] = {SID[10:0], SID11}

0 = RRS を SID11 として使わない : SID[10:0] のみ使用

bit 7-2 未実装 : 「0」として読み出し

bit 1-0 TDCMOD[1:0]: トランスミッタ遅延補償 (TDC) モードビット (Secondary Sample Point (SSP))10-11 = 自動 : 遅延を計測し TSEG1[4:0] (C1DBTCFGH[4:0]) を加算する ; TDCO[6:0] を加算する01 = 手動 : 遅延を計測せずに C1TDCL レジスタからの TDCV[5:0] + TDCO[6:0] を使う00 = 無効

Note 1: このレジスタはコンフィグレーション モード OPMOD[2:0] = 100) 中にのみ変更可能です。

2019 Microchip Technology Inc. DS70005340B_JP - p. 15

Page 16: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-8: C1TDCL: CAN トランスミッタ遅延補償レジスタ Low(1)

U-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0 R/W-0— TDCO[6:0]

bit 15 bit 8

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — TDCV[5:0]

bit 7 bit 0

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

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

bit 15 未実装 : 「0」として読み出し

bit 14-8 TDCO[6:0]: トランスミッタ遅延補償オフセットビット (Secondary Sample Point (SSP))111 1111 = -64 x TCY...011 1111 = 63 x TCY...000 0000 = 0 x TCY

bit 7-6 未実装 : 「0」として読み出し

bit 5-0 TDCV[5:0]: トランスミッタ遅延補償値ビット (Secondary Sample Point (SSP))11 1111 = 63 x TCY...00 0000 = 0 x TCY

Note 1: このレジスタはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

DS70005340B_JP - p. 16 2019 Microchip Technology Inc.

Page 17: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-9: C1TBCH: CAN タイムベース カウンタレジスタ High(1,2)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TBC[31:24]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TBC[23:16]

bit 7 bit 0

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

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

bit 15-0 TBC[31:16]: CAN タイムベース カウンタビット

これは、TBCEN ビットがセットされている時に TBCPRE[9:0] クロック周期でインクリメントするフリーランニング タイマです。

Note 1: TBCEN = 0の場合、省電力化のためにタイムベース カウンタ (TBC) は停止してリセットされます。

2: TBC プリスケーラ カウントは、C1TBCH/L への書き込み時にリセットされます (TBCPREx は影響を受けません )。

レジスタ 3-10: C1TBCL: CAN タイムベース カウンタレジスタ Low(1,2)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TBC[15:8]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TBC[7:0]

bit 7 bit 0

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

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

bit 15-0 TBC[15:0]: CAN タイムベース カウンタビット

これは、TBCEN ビットがセットされている時に TBCPRE[9:0] クロック周期でインクリメントするフリーランニング タイマです。

Note 1: TBCEN = 0の場合、省電力化のために TBC は停止してリセットされます。

2: TBC プリスケーラ カウントは、C1TBCH/L への書き込み時にリセットされます TBCPREx は影響を受けません )。

2019 Microchip Technology Inc. DS70005340B_JP - p. 17

Page 18: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-11: C1TSCONH: CAN タイムスタンプ制御レジスタ High

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0— — — — — TSRES TSEOF TBCEN

bit 7 bit 0

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

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

bit 15-3 未実装 : 「0」として読み出し

bit 2 TSRES: タイムスタンプ リセットビット (CAN FD フレーム専用 )1 = FDF ビットの次のビットのサンプリング時点0 = SOF (Start-of-Frame) のサンプリング時点

bit 1 TSEOF: タイムスタンプ EOF (End-of-Frame) ビット

1 = フレームが有効と見なされた時点のタイムスタンプ (11898-1 10.7) - RX: EOF の最後から 2 番目のビットまでエラーなし- TX: EOF の最後のビットまでエラーなし

0 = フレームの開始時点のタイムスタンプ- 従来型フレーム : SOF のサンプリング時点- CAN FD フレーム : TSRES ビット参照

bit 0 TBCEN: タイムベース カウンタ (TBC) イネーブルビット

1 = TBC を有効にする0 = TBC を停止してリセットする

レジスタ 3-12: C1TSCONL: CAN タイムスタンプ制御レジスタ Low

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0— — — — — — TBCPRE[9:8]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TBCPRE[7:0]

bit 7 bit 0

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

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

bit 15-10 未実装 : 「0」として読み出し

bit 9-0 TBCPRE[9:0]: CAN タイムベース カウンタ (TBC) プリスケーラ ビット

1023 = TBC は 1024 クロック周期でインクリメントする...0 = TBC は 1 クロック周期でインクリメントする

DS70005340B_JP - p. 18 2019 Microchip Technology Inc.

Page 19: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-13: C1VECH: CAN 割り込みコードレジスタ High

U-0 R-1 R-0 R-0 R-0 R-0 R-0 R-0— RXCODE[6:0]

bit 15 bit 8

U-0 R-1 R-0 R-0 R-0 R-0 R-0 R-0— TXCODE[6:0]

bit 7 bit 0

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

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

bit 15 未実装 : 「0」として読み出し

bit 14-8 RXCODE[6:0]: 受信割り込みフラグ コードビット

1000001-1111111 = 予約済み1000000 = 割り込みなし0100000-0111111 = 予約済み0011111 = FIFO 31 割り込み (RFIF[31] = 1)...0000010 = FIFO 2 割り込み (RFIF[2] = 1)0000001 = FIFO 1 割り込み (RFIF[1] = 1)0000000 = 予約済み (FIFO 0 はメッセージを受信できないため )

bit 7 未実装 : 「0」として読み出し

bit 6-0 TXCODE[6:0]: 送信割り込みフラグ コードビット

1000001-1111111 = 予約済み1000000 = 割り込みなし0100000-0111111 = 予約済み0011111 = FIFO 31 割り込み (TFIF[31] = 1)...0000001 = FIFO 1 割り込み (TFIF[1] = 1)0000000 = FIFO 0 割り込み (TFIF[0] = 1)

2019 Microchip Technology Inc. DS70005340B_JP - p. 19

Page 20: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-14: C1VECL: CAN 割り込みコードレジスタ Low

U-0 U-0 U-0 R-0 R-0 R-0 R-0 R-0— — — FILHIT[4:0]

bit 15 bit 8

U-0 R-1 R-0 R-0 R-0 R-0 R-0 R-0— ICODE[6:0]

bit 7 bit 0

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

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

bit 15-13 未実装 : 「0」として読み出し

bit 12-8 FILHIT[4:0]: 一致フィルタ番号ビット

11111 = フィルタ 3111110 = フィルタ 30...00001 = フィルタ 100000 = フィルタ 0

bit 7 未実装 : 「0」として読み出し

bit 6-0 ICODE[6:0]: 割り込みフラグコード ビット

1001011-1111111 = 予約済み1001010 = 送信試行割り込み (C1TXATIF 内のいずれかのビットがセットされた )1001001 = 送信イベント FIFO 割り込み (C1TEFSTA 内のいずれかのビットがセットされた )1001000 = 無効メッセージが発生した (IVMIF/IE)1000111 = CAN モジュールのモードが変化した (MODIF/IE)1000110 = CAN タイマ オーバーフロー (TBCIF/IE)1000101 = RX/TX MAB オーバーフロー / アンダーフロー

RX: 直前のメッセージがメモリに保存される前に次のメッセージを受信したTX: TX MAB に十分な速度で書き込めないため完全なデータを送信できない (SERRIF/IE)

1000100 = アドレスエラー割り込み ( 不正な FIFO アドレスがシステムに渡された ) (SERRIF/IE)1000011 = 受信 FIFO オーバーフロー割り込み (C1RXOVIF 内のいずれかのビットがセットされた )1000010 = 復帰割り込み (WAKIF/WAKIE)1000001 = エラー割り込み (CERRIF/IE)1000000 = 割り込みなし0100000-0111111 = 予約済み0011111 = FIFO 31 割り込み (TFIF31 または RFIF31 = 1)...0000001 = FIFO 1 割り込み (TFIF1 または RFIF1 = 1)0000000 = FIFO 0 割り込み (TFIF0 = 1)

DS70005340B_JP - p. 20 2019 Microchip Technology Inc.

Page 21: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-15: C1INTH: CAN 割り込みレジスタ High

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0IVMIE WAKIE CERRIE SERRIE RXOVIE TXATIE — —

bit 15 bit 8

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — TEFIE MODIE TBCIE RXIE TXIE

bit 7 bit 0

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

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

bit 15 IVMIE: 無効メッセージ割り込みイネーブルビット

1 = 無効メッセージ割り込みを有効にする0 = 無効メッセージ割り込みを無効にする

bit 14 WAKIE: バス復帰アクティビティ割り込みイネーブルビット

1 = 復帰アクティビティ割り込みを有効にする0 = 復帰アクティビティ割り込みを無効にする

bit 13 CERRIE: CAN バスエラー割り込みイネーブルビット

1 = CAN バスエラー割り込みを有効にする0 = CAN バスエラー割り込みを無効にする

bit 12 SERRIE: システムエラー割り込みイネーブルビット

1 = システムエラー割り込みを有効にする0 = システムエラー割り込みを無効にする

bit 11 RXOVIE: 受信バッファ オーバーフロー割り込みイネーブルビット

1 = 受信バッファ オーバーフロー割り込みを有効にする0 = 受信バッファ オーバーフロー割り込みを無効にする

bit 10 TXATIE: 送信試行割り込みイネーブルビット

1 = 送信試行割り込みを有効にする0 = 送信試行割り込みを無効にする

bit 9-5 未実装 : 「0」として読み出し

bit 4 TEFIE: 送信イベント FIFO 割り込みイネーブルビット

1 = 送信イベント FIFO 割り込みを有効にする0 = 送信イベント FIFO 割り込みを無効にする

bit 3 MODIE: モード変化割り込みイネーブルビット

1 = モード変化割り込みを有効にする0 = モード変化割り込みを無効にする

bit 2 TBCIE: CAN タイマ割り込みイネーブルビット

1 = CAN タイマ割り込みを有効にする0 = CAN タイマ割り込みを無効にする

bit 1 RXIE: 受信オブジェクト割り込みイネーブルビット

1 = 受信オブジェクト割り込みを有効にする0 = 受信オブジェクト割り込みを無効にする

bit 0 TXIE: 送信オブジェクト割り込みイネーブルビット

1 = 送信オブジェクト割り込みを有効にする0 = 送信オブジェクト割り込みを無効にする

2019 Microchip Technology Inc. DS70005340B_JP - p. 21

Page 22: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-16: C1INTL: CAN 割り込みレジスタ Low

HS/C-0 HS/C-0 HS/C-0 HS/C-0 R-0 R-0 U-0 U-0IVMIF(1) WAKIF(1) CERRIF(1) SERRIF(1) RXOVIF TXATIF — —

bit 15 bit 8

U-0 U-0 U-0 R-0 HS/C-0 HS/C-0 R-0 R-0— — — TEFIF MODIF(1) TBCIF(1) RXIF TXIF

bit 7 bit 0

凡例 : HS = ハードウェア セット可能ビット C = クリア可能ビット

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

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

bit 15 IVMIF: 無効メッセージ割り込みフラグビット (1)

1 = 無効メッセージ割り込みが発生した0 = 無効メッセージ割り込みは発生していない

bit 14 WAKIF: バス復帰アクティビティ割り込みフラグビット (1)

1 = 復帰アクティビティ割り込みが発生した0 = 復帰アクティビティ割り込みは発生していない

bit 13 CERRIF: CAN バスエラー割り込みフラグビット (1)

1 = CAN バスエラー割り込みが発生した0 = CAN バスエラー割り込みは発生していない

bit 12 SERRIF: システムエラー割り込みフラグビット (1)

1 = システムエラー割り込みが発生した0 = システムエラー割り込みは発生していない

bit 11 RXOVIF: 受信バッファ オーバーフロー割り込みフラグビット

1 = 受信バッファ オーバーフロー割り込みが発生した0 = 受信バッファ オーバーフロー割り込みは発生していない

bit 10 TXATIF: 送信試行割り込みフラグビット

1 = 送信試行割り込みが発生した0 = 送信試行割り込みは発生していない

bit 9-5 未実装 : 「0」として読み出し

bit 4 TEFIF: 送信イベント FIFO 割り込みフラグビット

1 = 送信イベント FIFO 割り込みが発生した0 = 送信イベント FIFO 割り込みは発生していない

bit 3 MODIF: CAN モード変化割り込みフラグビット (1)

1 = CAN モジュールのモードが変化した (REQOP[2:0] に従って OPMOD[2:0] が変化した )0 = モードは変化していない

bit 2 TBCIF: CAN タイマ オーバーフロー割り込みフラグビット (1)

1 = TBC がオーバーフローした0 = TBC はオーバーフローしていない

bit 1 RXIF: 受信オブジェクト割り込みフラグビット

1 = 受信オブジェクト割り込みが発生した0 = 受信オブジェクト割り込みは保留中ではない

bit 0 TXIF: 送信オブジェクト割り込みフラグビット

1 = 送信オブジェクト割り込みが発生した0 = 送信オブジェクト割り込みは保留中ではない

Note 1: これらのフラグはハードウェアによってセットされ、アプリケーションによってクリアする必要があります。

DS70005340B_JP - p. 22 2019 Microchip Technology Inc.

Page 23: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-17: C1RXIFH: CAN 受信割り込みステータス レジスタ High(1)

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0RFIF[31:24]

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0RFIF[23:16]

bit 7 bit 0

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

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

bit 15-0 RFIF[31:16]: 受信 FIFO 割り込み保留中ビット

1 = 有効にされた 1 つまたは複数の受信 FIFO 割り込みが保留中0 = 有効にされた受信 FIFO 割り込みは保留中ではない

Note 1: RFIFx は、有効にされた RX FIFO フラグの論理和です ( フラグは FIFO レジスタ内でクリアする必要があります )。

レジスタ 3-18: C1RXIFL: CAN 受信割り込みステータス レジスタ Low(1)

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0RFIF[15:8]

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 U-0RFIF[7:1] —

bit 7 bit 0

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

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

bit 15-1 RFIF[15:1]: 受信 FIFO 割り込み保留中ビット

1 = 有効にされた 1 つまたは複数の受信 FIFO 割り込みが保留中0 = 有効にされた受信 FIFO 割り込みは保留中ではない

bit 0 未実装 : 「0」として読み出し

Note 1: RFIFx は、有効にされた RX FIFO フラグの論理和です ( フラグは FIFO レジスタ内でクリアする必要があります )

2019 Microchip Technology Inc. DS70005340B_JP - p. 23

Page 24: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-19: C1RXOVIFH: CAN 受信オーバーフロー割り込みステータス レジスタ High(1)

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0RFOVIF[31:24]

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0RFOVIF[23:16]

bit 7 bit 0

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

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

bit 15-0 RFOVIF[31:16]: 受信 FIFO オーバーフロー割り込み保留中ビット

1 = この割り込みは保留中である0 = この割り込みは保留中ではない

Note 1: RFOVIFx フラグは FIFO レジスタ内でクリアする必要があります。

レジスタ 3-20: C1RXOVIFL: CAN 受信オーバーフロー割り込みステータス レジスタ Low(1)

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0RFOVIF[15:8]

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 U-0RFOVIF[7:1] —

bit 7 bit 0

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

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

bit 15-1 RFOVIF[15:1]: 受信 FIFO オーバーフロー割り込み保留中ビット

1 = この割り込みは保留中である0 = この割り込みは保留中ではない

bit 0 未実装 : 「0」として読み出し

Note 1: RFOVIFx フラグは FIFO レジスタ内でクリアする必要があります。

DS70005340B_JP - p. 24 2019 Microchip Technology Inc.

Page 25: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-21: C1TXIFH: CAN 送信割り込みステータス レジスタ High(1)

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0TFIF[31:24]

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0TFIF[23:16]

bit 7 bit 0

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

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

bit 15-0 TFIF[31:16]: 送信 FIFO/TXQ 割り込み保留中ビット

1 = 有効にされた 1 つまたは複数の送信 FIFO/TXQ 割り込みが保留中0 = 有効にされた FIFO/TXQ 割り込みは保留中ではない

Note 1: TFIFx は、有効にされた TX FIFO フラグの論理和です ( フラグは FIFO レジスタ内でクリアする必要があります )。

レジスタ 3-22: C1TXIFL: CAN 送信割り込みステータス レジスタ Low(1)

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0TFIF[15:8]

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0TFIF[7:0](2)

bit 7 bit 0

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

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

bit 15-0 TFIF[15:0]: 送信 FIFO/TXQ 割り込み保留中ビット (2)

1 = 有効にされた 1 つまたは複数の送信 FIFO/TXQ 割り込みが保留中0 = 有効にされた送信 FIFO/TXQ 割り込みは保留中ではない

Note 1: TFIFx は、有効にされた TX FIFO フラグの論理和です ( フラグは FIFO レジスタ内でクリアする必要があります )。

2: TFIF0 は TXQ 用です。

2019 Microchip Technology Inc. DS70005340B_JP - p. 25

Page 26: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-23: C1TXATIFH: CAN 送信試行割り込みステータス レジスタ High(1)

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0TFATIF[31:24]

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0TFATIF[23:16]

bit 7 bit 0

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

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

bit 15-0 TFATIF[31:16]: 送信 FIFO/TXQ 試行割り込み保留中ビット

1 = この割り込みは保留中である0 = この割り込みは保留中ではない

Note 1: TFATIFx フラグは FIFO レジスタ内でクリアする必要があります。

レジスタ 3-24: C1TXATIFL: CAN 送信試行割り込みステータス レジスタ Low(1)

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0TFATIF[15:8]

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0TFATIF[7:0](2)

bit 7 bit 0

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

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

bit 15-0 TFATIF[15:0]: 送信 FIFO/TXQ 試行割り込み保留中ビット (2)

1 = この割り込みは保留中である0 = この割り込みは保留中ではない

Note 1: TFATIFx フラグは FIFO レジスタ内でクリアする必要があります。

2: TFATIF0 は TXQ 用です。

DS70005340B_JP - p. 26 2019 Microchip Technology Inc.

Page 27: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-25: C1TXREQH: CAN 送信要求レジスタ High

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TXREQ[31:24]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TXREQ[23:16]

bit 7 bit 0

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

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

bit 15-0 TXREQ[31:16]: メッセージ送信要求ビット

TXEN = 1 ( オブジェクトが送信オブジェクトとして設定されている場合 ):このビットを「1」にセットする事でメッセージの送信を要求します。オブジェクト内でキューに入れられた 1 つまたは複数のメッセージが正常に送信されると、このビットは自動的にクリアされます。このビットを使って送信を中止する事はできません。

TXEN = 0 ( オブジェクトが受信オブジェクトとして設定されている場合 ):このビットは無効です。

レジスタ 3-26: C1TXREQL: CAN 送信要求レジスタ Low

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TXREQ[15:8]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TXREQ[7:1] TXREQ0

bit 7 bit 0

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

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

bit 15-1 TXREQ[15:0]: メッセージ送信要求ビット

TXEN = 1 ( オブジェクトが送信オブジェクトとして設定されている場合 ):このビットを「1」にセットする事でメッセージの送信を要求します。オブジェクト内でキューに入れられた 1 つまたは複数のメッセージが正常に送信されると、このビットは自動的にクリアされます。このビットを使って送信を中止する事はできません。

TXEN = 0 ( オブジェクトが受信オブジェクトとして設定されている場合 ):このビットは無効です。

bit 0 TXREQ0: 送信キュー メッセージ送信要求ビット

このビットを「1」にセットする事でメッセージの送信を要求します。オブジェクト内でキューに入れられた 1 つまたは複数のメッセージが正常に送信されると、このビットは自動的にクリアされます。このビットを使って送信を中止する事はできません。

2019 Microchip Technology Inc. DS70005340B_JP - p. 27

Page 28: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-27: C1FIFOBAH: CAN メッセージメモリ ベースアドレス レジスタ High

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0FIFOBA[31:24]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0FIFOBA[23:16]

bit 7 bit 0

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

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

bit 15-0 FIFOBA[31:16]: メッセージメモリ ベースアドレス ビット

送信イベント FIFO のベースアドレスを定義します。メッセージ オブジェクトはこのアドレスから配置されます。

レジスタ 3-28: C1FIFOBAL: CAN メッセージメモリ ベースアドレス レジスタ Low

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0FIFOBA[15:8]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0FIFOBA[7:0]

bit 7 bit 0

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

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

bit 15-0 FIFOBA[15:0]: メッセージメモリ ベースアドレス ビット

送信イベント FIFO のベースアドレスを定義します。メッセージ オブジェクトはこのアドレスから配置されます。

DS70005340B_JP - p. 28 2019 Microchip Technology Inc.

Page 29: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-29: C1TXQCONH: CAN 送信キュー制御レジスタ High

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0PLSIZE2(1) PLSIZE1(1) PLSIZE0(1) FSIZE4(1) FSIZE3(1) FSIZE2(1) FSIZE1(1) FSIZE0(1)

bit 15 bit 8

U-0 R/W-1 R/W-1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— TXAT1 TXAT0 TXPRI4 TXPRI3 TXPRI2 TXPRI1 TXPRI0

bit 7 bit 0

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

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

bit 15-13 PLSIZE[2:0]: ペイロードサイズ ビット (1)

111 = 64 データバイト110 = 48 データバイト101 = 32 データバイト100 = 24 データバイト011 = 20 データバイト010 = 16 データバイト001 = 12 データバイト000 = 8 データバイト

bit 12-8 FSIZE[4:0]: FIFO サイズビット (1)

11111 = FIFO の深さは 32 メッセージ...00010 = FIFO の深さは 3 メッセージ00001 = FIFO の深さは 2 メッセージ00000 = FIFO の深さは 1 メッセージ

bit 7 未実装 : 「0」として読み出し

bit 6-5 TXAT[1:0]: 再送信試行ビット

この機能は RTXAT (C1CONH[0]) がセットされている場合に有効です。11 = 再送信を無制限に試行する10 = 再送信を無制限に試行する01 = 再送信を 3 回だけ試行する00 = 再送信の試行を無効にする

bit 4-0 TXPRI[4:0]: メッセージ送信優先度ビット

11111 = 最高のメッセージ優先度...00000 = 最低のメッセージ優先度

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

2019 Microchip Technology Inc. DS70005340B_JP - p. 29

Page 30: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-30: C1TXQCONL: CAN 送信キュー制御レジスタ Low

U-0 U-0 U-0 U-0 U-0 S/HC-1 R/W/HC-0 S/HC-0— — — — — FRESET TXREQ UINC

bit 15 bit 8

R-1 U-0 U-0 R/W-0 U-0 R/W-0 U-0 R/W-0TXEN(1) — — TXATIE — TXQEIE — TXQNIE

bit 7 bit 0

凡例 : S = セット可能ビット HC = ハードウェア クリア可能ビット

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

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

bit 15-11 未実装 : 「0」として読み出し

bit 10 FRESET: FIFO リセットビット

1 = FIFO をリセットするこのビットは、FIFO がリセットされるとハードウェアによってクリアされます。ユーザは、何らかのアクションを取る前に、このビットをポーリングしてクリアされた事を確認する必要があります。0 =何もしない

bit 9 TXREQ: メッセージ送信要求ビット

1 = メッセージの送信を要求するTXQ でキューに入れられている全てのメッセージが正常に送信されると、このビットは自動的にクリアされます。0 =このビットが「1」の時に「0」にクリアする事で、送信の中止を要求します。

bit 8 UINC: インクリメント ヘッド / テールビット

このビットをセットすると FIFO ヘッドが 1 メッセージ分インクリメントします。

bit 7 TXEN: TX イネーブルビット (1)

1 = メッセージキューを送信するこのビットは常に「1」として読み出されます。

bit 6-5 未実装 : 「0」として読み出し

bit 4 TXATIE: 送信試行回数使い切り割り込みイネーブルビット

1 = この割り込みを有効にする0 = この割り込みを無効にする

bit 3 未実装 : 「0」として読み出し

bit 2 TXQEIE: 送信キュー エンプティ割り込みイネーブルビット

1 = TXQ エンプティ時の割り込みを有効にする0 = TXQ エンプティ時の割り込みを無効にする

bit 1 未実装 : 「0」として読み出し

bit 0 TXQNIE: 送信キュー非フル割り込みイネーブルビット

1 = TXQ 非フル時の割り込みを有効にする0 = TXQ 非フル時の割り込みを無効にする

Note 1: TXEN ビットのリセット値については、対応するデバイス データシートを参照してください。

DS70005340B_JP - p. 30 2019 Microchip Technology Inc.

Page 31: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-31: C1TXQSTA: CAN 送信キュー ステータス レジスタ

U-0 U-0 U-0 R-0 R-0 R-0 R-0 R-0— — — TXQCI4(1) TXQCI3(1) TXQCI2(1) TXQCI1(1) TXQCI0(1)

bit 15 bit 8

R-0 R-0 R-0 HS/C-0 U-0 R-1 U-0 R-1TXABT(2) TXLARB(2) TXERR(2) TXATIF — TXQEIF — TXQNIF

bit 7 bit 0

凡例 : C = クリア可能ビット HS = ハードウェア セット可能ビット

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

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

bit 15-13 未実装 : 「0」として読み出し

bit 12-8 TXQCI[4:0]: 送信キュー メッセージ インデックス ビット (1)

このレジスタを読み出すと、FIFO が次に送信するメッセージへのインデックスが返されます。

bit 7 TXABT: メッセージ中止ステータスビット (2)

1 = メッセージ送信は中止された0 = メッセージ送信は正常に完了した

bit 6 TXLARB: メッセージ アービトレーション ロスト ステータス ビット (2)

1 = メッセージの送信中にアービトレーション ロストが発生した0 = メッセージの送信中にアービトレーション ロストは発生しなかった

bit 5 TXERR: 送信中エラー検出ビット (2)

1 = メッセージの送信中にバスエラーが発生した0 = メッセージの送信中にバスエラーは発生しなかった

bit 4 TXATIF: 送信試行回数使い切り割り込み保留中ビット

1 = この割り込みは保留中である0 = この割り込みは保留中ではない

bit 3 未実装 : 「0」として読み出し

bit 2 TXQEIF: 送信キュー エンプティ割り込みフラグビット

1 = TXQ はエンプティ0 = TXQ は非エンプティ ( 少なくとも 1 つのメッセージが送信待ち )

bit 1 未実装 : 「0」として読み出し

bit 0 TXQNIF: 送信キュー 非フル割り込みフラグビット

1 = TXQ は非フル0 = TXQ はフル

Note 1: TXQCI[4:0] ビットは、TXQ 内のメッセージに 0 から始まるインデックスを与えます。 TXQ が 4 メッセージの深さを持つ場合 (FSIZE = 3)、TXQCIx は TXQ の状態に応じて 0 ~ 3 の値を取ります。

2: これらのビットは、メッセージの完了時 / 中止時または TXQ のリセット時に更新されます。

2019 Microchip Technology Inc. DS70005340B_JP - p. 31

Page 32: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-32: C1FIFOCONxH: CAN FIFO 制御レジスタ x (x = 1 ~ 31) High

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0PLSIZE2(1) PLSIZE1(1) PLSIZE0(1) FSIZE4(1) FSIZE3(1) FSIZE2(1) FSIZE1(1) FSIZE0(1)

bit 15 bit 8

U-0 R/W-1 R/W-1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— TXAT1 TXAT0 TXPRI4 TXPRI3 TXPRI2 TXPRI1 TXPRI0

bit 7 bit 0

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

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

bit 15-13 PLSIZE[2:0]: ペイロードサイズ ビット (1)

111 = 64 データバイト110 = 48 データバイト101 = 32 データバイト100 = 24 データバイト011 = 20 データバイト010 = 16 データバイト001 = 12 データバイト000 = 8 データバイト

bit 12-8 FSIZE[4:0]: FIFO サイズビット (1)

11111 = FIFO の深さは 32 メッセージ...00010 = FIFO の深さは 3 メッセージ00001 = FIFO の深さは 2 メッセージ00000 = FIFO の深さは 1 メッセージ

bit 7 未実装 : 「0」として読み出し

bit 6-5 TXAT[1:0]: 再送信試行ビット

この機能は RTXAT (C1CONH[0]) がセットされている場合に有効です。11 = 再送信を無制限に試行する10 = 再送信を無制限に試行する01 = 再送信を 3 回だけ試行する00 = 再送信の試行を無効にする

bit 4-0 TXPRI[4:0]: メッセージ送信優先度ビット

11111 = 最高のメッセージ優先度...00000 = 最低のメッセージ優先度

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

DS70005340B_JP - p. 32 2019 Microchip Technology Inc.

Page 33: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-33: C1FIFOCONxL: CAN FIFO 制御レジスタ x (x = 1 ~ 31) Low

U-0 U-0 U-0 U-0 U-0 S/HC-1 R/W/HC-0 S/HC-0— — — — — FRESET TXREQ UINC

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TXEN RTREN RXTSEN(1) TXATIE RXOVIE TFERFFIE TFHRFHIE TFNRFNIE

bit 7 bit 0

凡例 : S = セット可能ビット HC = ハードウェア クリア可能ビット

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

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

bit 15-11 未実装 : 「0」として読み出し

bit 10 FRESET: FIFO リセットビット

1 =FIFO をリセットするこのビットは、FIFO がリセットされるとハードウェアによってクリアされます。ユーザは、何らかのアクションを取る前に、このビットをポーリングしてクリアされた事を確認する必要があります。0 =何もしない

bit 9 TXREQ: メッセージ送信要求ビット

TXEN = 1 (FIFO が送信 FIFO として設定されている場合 ):1 =メッセージの送信を要求するFIFO でキューに入れられている全てのメッセージが正常に送信されると、このビットは自動的にクリアされます。0 =このビットが「1」の時に「0」にクリアする事で、送信の中止を要求します。

TXEN = 0 (FIFO が受信 FIFO として設定されている場合 ):このビットは無効です。

bit 8 UINC: インクリメント ヘッド / テールビット

TXEN = 1 (FIFO が送信 FIFO として設定されている場合 )このビットをセットすると FIFO ヘッドが 1 メッセージ分インクリメントします。

TXEN = 0 (FIFO が受信 FIFO として設定されている場合 ):このビットをセットすると FIFO テールが 1 メッセージ分インクリメントします。

bit 7 TXEN: TX/RX バッファ選択ビット

1 = メッセージ オブジェクトを送信する0 = メッセージ オブジェクトを受信する

bit 6 RTREN: 自動 RTR (Remote Transmit Request) イネーブルビット

1 = RTR を受信した時に TXREQ をセットする0 = RTR を受信しても TXREQ には影響しない

bit 5 RXTSEN: 受信メッセージ タイムスタンプ イネーブルビット (1)

1 = RAM 内の受信メッセージ オブジェクトのタイムスタンプをキャプチャする0 = タイムスタンプをキャプチャしない

bit 4 TXATIE: 送信試行回数使い切り割り込みイネーブルビット

1 = この割り込みを有効にする0 = この割り込みを無効にする

bit 3 RXOVIE: オーバーフロー割り込みイネーブルビット

1 = オーバーフロー発生時の割り込みを有効にする0 = オーバーフロー発生時の割り込みを無効にする

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

2019 Microchip Technology Inc. DS70005340B_JP - p. 33

Page 34: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

bit 2 TFERFFIE: 送信 / 受信 FIFO エンプティ / フル割り込みイネーブルビット

TXEN = 1 (FIFO が送信 FIFO として設定されている場合 ):送信 FIFO エンプティ割り込みイネーブルビット1 = FIFO エンプティ時の割り込みを有効にする0 = FIFO エンプティ時の割り込みを無効にする

TXEN = 0 (FIFO が受信 FIFO として設定されている場合 ):受信 FIFO フル割り込みイネーブルビット1 = FIFO フル時の割り込みを有効にする0 = FIFO フル時の割り込みを無効にする

bit 1 TFHRFHIE: 送信 / 受信 FIFO ハーフエンプティ / ハーフフル割り込みイネーブルビット

TXEN = 1 (FIFO が送信 FIFO として設定されている場合 ):送信 FIFO ハーフエンプティ割り込みイネーブルビット1 = FIFO ハーフエンプティ時の割り込みを有効にする0 = FIFO ハーフエンプティ時の割り込みを無効にする

TXEN = 0 (FIFO が受信 FIFO として設定されている場合 ):受信 FIFO ハーフフル割り込みイネーブル1 = FIFO ハーフフル時の割り込みを有効にする0 = FIFO ハーフフル時の割り込みを無効にする

bit 0 TFNRFNIE: 送信 / 受信 FIFO 非フル / 非エンプティ割り込みイネーブルビット

TXEN = 1 (FIFO が送信 FIFO として設定されている場合 ):送信 FIFO 非フル割り込みイネーブル1 = FIFO 非フル時の割り込みを有効にする0 = FIFO 非フル時の割り込みを無効にする

TXEN = 0 (FIFO が受信 FIFO として設定されている場合 ):受信 FIFO 非エンプティ割り込みイネーブル1 = FIFO 非エンプティ時の割り込みを有効にする0 = FIFO 非エンプティ時の割り込みを無効にする

レジスタ 3-33: C1FIFOCONxL: CAN FIFO 制御レジスタ x (x = 1 ~ 31) Low ( 続き )

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

DS70005340B_JP - p. 34 2019 Microchip Technology Inc.

Page 35: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-34: C1FIFOSTAx: CAN FIFO ステータス レジスタ x (x = 1 ~ 31)

U-0 U-0 U-0 R-0 R-0 R-0 R-0 R-0— — — FIFOCI4(1) FIFOCI3(1) FIFOCI2(1) FIFOCI1(1) FIFOCI0(1)

bit 15 bit 8

R-0 R-0 R-0 HS/C-0 HS/C-0 R-0 R-0 R-0TXABT(3) TXLARB(2) TXERR(2) TXATIF RXOVIF TFERFFIF TFHRFHIF TFNRFNIF

bit 7 bit 0

凡例 : C = クリア可能ビット HS = ハードウェア セット可能ビット

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

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

bit 15-13 未実装 : 「0」として読み出し

bit 12-8 FIFOCI[4:0]: FIFO メッセージ インデックス ビット (1)

TXEN = 1 (FIFO が送信バッファとして設定されている場合 ):このレジスタを読み出すと、FIFO が次に送信するメッセージへのインデックスが返されます。

TXEN = 0 (FIFO が受信バッファとして設定されている場合 ):このレジスタを読み出すと、FIFO が次のメッセージを保存するために使うインデックスが返されます。

bit 7 TXABT: メッセージ中止ステータスビット (3)

1 = メッセージ送信は中止された0 = メッセージ送信は正常に完了した

bit 6 TXLARB: メッセージ アービトレーション ロスト ステータス ビット (2)

1 = メッセージの送信中にアービトレーション ロストが発生した0 = メッセージは送信中にアービトレーション ロストは発生しなかった

bit 5 TXERR: 送信中エラー検出ビット (2)

1 = メッセージの送信中にバスエラーが発生した0 = メッセージの送信中にバスエラーは発生しなかった

bit 4 TXATIF: 送信試行回数使い切り割り込み保留中ビット

TXEN = 1 (FIFO が送信バッファとして設定されている場合 ):1 = この割り込みは保留中である0 = この割り込みは保留中ではない

TXEN = 0 (FIFO が受信バッファとして設定されている場合 ):未使用、「0」として読み出し

bit 3 RXOVIF: 受信 FIFO オーバーフロー割り込みフラグビット

TXEN = 1 (FIFO が送信バッファとして設定されている場合 ):未使用、「0」として読み出し

TXEN = 0 (FIFO が受信バッファとして設定されている場合 ):1 = オーバーフロー イベントが発生した0 = オーバーフロー イベントは発生していない

Note 1: FIFOCI[4:0] は、FIFO 内のメッセージに 0 から始まるインデックスを与えます。 FIFO が 4 メッセージの深さを持つ場合 (FSIZE = 3)、FIFOCIx は FIFO の状態に応じて 0 ~ 3 の値を取ります。

2: このビットは、メッセージの完了時 / 中止時または FIFO のリセット時に更新されます。

3: このビットは、このレジスタの読み出し時または TXQ のリセット時にリセットされます。

2019 Microchip Technology Inc. DS70005340B_JP - p. 35

Page 36: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

bit 2 TFERFFIF: 送信 / 受信 FIFO エンプティ / フル割り込みフラグビット

TXEN = 1 (FIFO が送信 FIFO として設定されている場合 ):送信 FIFO エンプティ割り込みフラグ1 = FIFO はエンプティ0 = FIFO は非エンプティ ( 少なくとも 1 つのメッセージが送信待ち )TXEN = 0 (FIFO が受信 FIFO として設定されている場合 ):受信 FIFO フル割り込みフラグ1 = FIFO はフル0 = FIFO は非フル

bit 1 TFHRFHIF: 送信 / 受信 FIFO ハーフエンプティ / ハーフフル割り込みフラグビット

TXEN = 1 (FIFO が送信 FIFO として設定されている場合 ):送信 FIFO ハーフエンプティ割り込みフラグ1 = FIFO ハーフフル0 = FIFO > ハーフフル

TXEN = 0 (FIFO が受信 FIFO として設定されている場合 ):受信 FIFO ハーフフル割り込みフラグ1 = FIFO ハーフフル0 = FIFO < ハーフフル

bit 0 TFNRFNIF: 送信 / 受信 FIFO 非フル / 非エンプティ割り込みフラグビット

TXEN = 1 (FIFO が送信 FIFO として設定されている場合 ):送信 FIFO 非フル割り込みフラグ1 = FIFO は非フル0 = FIFO はフル

TXEN = 0 (FIFO が受信 FIFO として設定されている場合 ):受信 FIFO 非エンプティ割り込みフラグ1 = FIFO は非エンプティ ( 少なくとも 1 つのメッセージが存在する )0 = FIFO はエンプティ

レジスタ 3-34: C1FIFOSTAx: CAN FIFO ステータス レジスタ x (x = 1 ~ 31) ( 続き )

Note 1: FIFOCI[4:0] は、FIFO 内のメッセージに 0 から始まるインデックスを与えます。 FIFO が 4 メッセージの深さを持つ場合 (FSIZE = 3)、FIFOCIx は FIFO の状態に応じて 0 ~ 3 の値を取ります。

2: このビットは、メッセージの完了時 / 中止時または FIFO のリセット時に更新されます。

3: このビットは、このレジスタの読み出し時または TXQ のリセット時にリセットされます。

DS70005340B_JP - p. 36 2019 Microchip Technology Inc.

Page 37: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-35: C1TEFCONH: CAN 送信イベント FIFO 制御レジスタ High

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — FSIZE[4:0](1)

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 7 bit 0

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

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

bit 15-13 未実装 : 「0」として読み出し

bit 12-8 FSIZE[4:0]: FIFO サイズビット (1)

11111 = FIFO の深さは 32 メッセージ...00010 = FIFO の深さは 3 メッセージ00001 = FIFO の深さは 2 メッセージ00000 = FIFO の深さは 1 メッセージ

bit 7-0 未実装 : 「0」として読み出し

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

2019 Microchip Technology Inc. DS70005340B_JP - p. 37

Page 38: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-36: C1TEFCONL: CAN 送信イベント FIFO 制御レジスタ Low

U-0 U-0 U-0 U-0 U-0 S/HC-1 U-0 S/HC-0— — — — — FRESET — UINC

bit 15 bit 8

U-0 U-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0— — TEFTSEN(1) — TEFOVIE TEFFIE TEFHIE TEFNEIE

bit 7 bit 0

凡例 : S = セット可能ビット HC = ハードウェア クリア可能ビット

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

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

bit 15-11 未実装 : 「0」として読み出し

bit 10 FRESET: FIFO リセットビット

1 = FIFO をリセットするこのビットは、FIFO のリセット時にハードウェアによってクリアされます。ユーザは、何らかのアクションを取る前に、このビットをポーリングしてクリアされた事を確認する必要があります。0 = 何もしない

bit 9 未実装 : 「0」として読み出し

bit 8 UINC: テール インクリメント ビット

1 = このビットをセットすると FIFO テールが 1 メッセージ分インクリメントします。0 = FIFO テールはインクリメントしない

bit 7-6 未実装 : 「0」として読み出し

bit 5 TEFTSEN: 送信イベント FIFO タイムスタンプ イネーブルビット (1)

1 = TEF 内のエレメントにタイムスタンプを付ける0 = TEF 内のエレメントにタイムスタンプを付けない

bit 4 未実装 : 「0」として読み出し

bit 3 TEFOVIE: 送信イベント FIFO オーバーフロー割り込みイネーブルビット

1 = オーバーフロー発生時の割り込みを有効にする0 = オーバーフロー発生時の割り込みを無効にする

bit 2 TEFFIE: 送信イベント FIFO フル割り込みイネーブルビット

1 = FIFO フル時の割り込みを有効にする0 = FIFO フル時の割り込みを無効にする

bit 1 TEFHIE: 送信イベント FIFO ハーフフル割り込みイネーブルビット

1 = FIFO ハーフフル時の割り込みを有効にする0 = FIFO ハーフフル時の割り込みを無効にする

bit 0 TEFNEIE: 送信イベント FIFO 非エンプティ割り込みイネーブルビット

1 = FIFO 非エンプティ時の割り込みを有効にする0 = FIFO 非エンプティ時の割り込みを無効にする

Note 1: これらのビットはコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ変更可能です。

DS70005340B_JP - p. 38 2019 Microchip Technology Inc.

Page 39: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-37: C1TEFSTA: CAN 送信イベント FIFO ステータス レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 HS/C R-0 R-0 R-0— — — — TEFOVIF TEFFIF(1) TEFHIF(1) TEFNEIF(1)

bit 7 bit 0

凡例 : C = クリア可能ビット HS = ハードウェア セット可能ビット

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

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

bit 15-4 未実装 : 「0」として読み出し

bit 3 TEFOVIF: 送信イベント FIFO オーバーフロー割り込みフラグビット

1 = オーバーフロー イベントが発生した0 = オーバーフロー イベントは発生しなかった

bit 2 TEFFIF: 送信イベント FIFO フル割り込みフラグビット (1)

1 = FIFO はフル0 = FIFO は非フル

bit 1 TEFHIF: 送信イベント FIFO ハーフフル割り込みフラグビット (1)

1 = FIFO ハーフフル0 = FIFO < ハーフフル

bit 0 TEFNEIF: 送信イベント FIFO 非エンプティ割り込みフラグビット (1)

1 = FIFO は非エンプティ0 = FIFO はエンプティ

Note 1: これらのビットは FIFO のステータスを示す読み出し専用ビットです。

2019 Microchip Technology Inc. DS70005340B_JP - p. 39

Page 40: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-38: C1FIFOUAxH: CAN FIFO ユーザアドレス レジスタ x (x = 1 ~ 31) High(1)

R-x R-x R-x R-x R-x R-x R-x R-xFIFOUA<31:24>bit 15 bit 8

R-x R-x R-x R-x R-x R-x R-x R-xFIFOUA[23:16]

bit 7 bit 0

凡例 :

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

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

bit 15-0 FIFOUA[31:16]: FIFO ユーザアドレス ビット

TXEN = 1 (FIFO が送信バッファとして設定されている場合 ):このレジスタを読み出すと、次のメッセージの書き込み先アドレス (FIFO ヘッド ) が返されます。

TXEN = 0 (FIFO が受信バッファとして設定されている場合 ):このレジスタを読み出すと、次のメッセージの読み出し元アドレス (FIFO テール ) が返されます。

Note 1: このレジスタは、コンフィグレーション モード中に正しく読み出せない場合があります。このレジスタには、コンフィグレーション モード中ではない時にアクセスする必要があります。

レジスタ 3-39: C1FIFOUAxL: CAN FIFO ユーザアドレス レジスタ x (x = 1 ~ 31) Low(1)

R-x R-x R-x R-x R-x R-x R-x R-xFIFOUA<15:8>

bit 15 bit 8

R-x R-x R-x R-x R-x R-x R-x R-xFIFOUA[7:0]

bit 7 bit 0

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

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

bit 15-0 FIFOUA[15:0]: FIFO ユーザアドレス ビット

TXEN = 1 (FIFO が送信バッファとして設定されている場合 ):このレジスタを読み出すと、次のメッセージの書き込み先アドレス (FIFO ヘッド ) が返されます。

TXEN = 0 (FIFO が受信バッファとして設定されている場合 ):このレジスタを読み出すと、次のメッセージの読み出し元アドレス (FIFO テール ) が返されます。

Note 1: このレジスタは、コンフィグレーション モード中に正しく読み出せない場合があります。このレジスタには、コンフィグレーション モード中ではない時にアクセスする必要があります。

DS70005340B_JP - p. 40 2019 Microchip Technology Inc.

Page 41: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-40: C1TEFUAH: CAN 送信イベント FIFO ユーザアドレス レジスタ High(1)

R-x R-x R-x R-x R-x R-x R-x R-xTEFUA[31:24]

bit 15 bit 8

R-x R-x R-x R-x R-x R-x R-x R-xTEFUA[23:16]

bit 7 bit 0

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

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

bit 15-0 TEFUA[31:16]: 送信イベント FIFO ユーザアドレス ビット

このレジスタを読み出すと、次のイベントの読み出し元アドレス (FIFO テール ) が返されます。

Note 1: このレジスタは、コンフィグレーション モード中に正しく読み出せない場合があります。このレジスタには、コンフィグレーション モード中ではない時にアクセスする必要があります。

レジスタ 3-41: C1TEFUAL: CAN 送信イベント FIFO ユーザアドレス レジスタ Low(1)

R-x R-x R-x R-x R-x R-x R-x R-xTEFUA[15:8]

bit 15 bit 8

R-x R-x R-x R-x R-x R-x R-x R-xTEFUA[7:0]

bit 7 bit 0

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

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

bit 15-0 TEFUA[15:0]: 送信イベント FIFO ユーザアドレス ビット

このレジスタを読み出すと、次のイベントの読み出し元アドレス (FIFO テール ) が返されます。

Note 1: このレジスタは、コンフィグレーション モード中に正しく読み出せない場合があります。このレジスタには、コンフィグレーション モード中ではない時にアクセスする必要があります。

2019 Microchip Technology Inc. DS70005340B_JP - p. 41

Page 42: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-42: C1TXQUAH: CAN 送信キュー ユーザアドレス レジスタ High(1)

R-x R-x R-x R-x R-x R-x R-x R-xTXQUA[31:24]

bit 15 bit 8

R-x R-x R-x R-x R-x R-x R-x R-xTXQUA[23:16]

bit 7 bit 0

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

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

bit 15-0 TXQUA[31:16]: TXQ ユーザアドレス ビット

このレジスタを読み出すと、次のメッセージの書き込み先アドレス (TXQ ヘッド ) が返されます。

Note 1: このレジスタは、コンフィグレーション モード中に正しく読み出せない場合があります。このレジスタには、コンフィグレーション モード中ではない時にアクセスする必要があります。

レジスタ 3-43: C1TXQUAL: CAN 送信キュー ユーザアドレス レジスタ Low(1)

R-x R-x R-x R-x R-x R-x R-x R-xTXQUA[15:8]

bit 15 bit 8

R-x R-x R-x R-x R-x R-x R-x R-xTXQUA[7:0]

bit 7 bit 0

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

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

bit 15-0 TXQUA[15:0]: 送信キュー ユーザアドレス ビット

このレジスタを読み出すと、次のメッセージの書き込み先アドレス (TXQ ヘッド ) が返されます。

Note 1: このレジスタは、コンフィグレーション モード中に正しく読み出せない場合があります。このレジスタには、コンフィグレーション モード中ではない時にアクセスする必要があります。

DS70005340B_JP - p. 42 2019 Microchip Technology Inc.

Page 43: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-44: C1TRECH: CAN 送受信エラー カウントレジスタ High

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 15 bit 8

U-0 U-0 R-1 R-0 R-0 R-0 R-0 R-0— — TXBO TXBP RXBP TXWARN RXWARN EWARN

bit 7 bit 0

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

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

bit 15-6 未実装 : 「0」として読み出し

bit 5 TXBO: トランスミッタ エラー : バス OFF ステート中ビット (TERRCNT[7:0] > 255)コンフィグレーション モード中はモジュールがバス上で認識されないため、TXBO ビットはセットされます。

bit 4 TXBP: トランスミッタ エラー : バスパッシブ ステート中ビット (TERRCNT[7:0] > 127)bit 3 RXBP: レシーバエラー : バスパッシブ ステート中ビット (RERRCNT[7:0] > 127)bit 2 TXWARN: トランスミッタ エラー : 警告ステート中ビット (128 > TERRCNT[7:0] > 95)bit 1 RXWARN: レシーバエラー : 警告ステート中ビット (128 > RERRCNT[7:0] > 95)bit 0 EWARN: トランスミッタ / レシーバ エラー : 警告ステート中ビット

レジスタ 3-45: C1TRECL: CAN 送受信エラー カウントレジスタ Low

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0TERRCNT[7:0]

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0RERRCNT[7:0]

bit 7 bit 0

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

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

bit 15-8 TERRCNT[7:0]: 送信エラー カウンタビット

bit 7-0 RERRCNT[7:0]: 受信エラー カウンタビット

2019 Microchip Technology Inc. DS70005340B_JP - p. 43

Page 44: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-46: C1BDIAG0H: CAN バス診断レジスタ 0 High

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0DTERRCNT[7:0]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0DRERRCNT[7:0]

bit 7 bit 0

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

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

bit 15-8 DTERRCNT[7:0]: データ ビットレート送信エラー カウンタビット

bit 7-0 DRERRCNT[7:0]: データ ビットレート受信エラー カウンタビット

レジスタ 3-47: C1BDIAG0L: CAN バス診断レジスタ 0 Low

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0NTERRCNT[7:0]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0NRERRCNT[7:0]

bit 7 bit 0

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

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

bit 15-8 NTERRCNT[7:0]: 定格ビットレート送信エラー カウンタビット

bit 7-0 NRERRCNT[7:0]: 定格ビットレート受信エラー カウンタビット

DS70005340B_JP - p. 44 2019 Microchip Technology Inc.

Page 45: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-48: C1BDIAG1H: CAN バス診断レジスタ 1 High

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0DLCMM ESI DCRCERR DSTUFERR DFORMERR — DBIT1ERR DBIT0ERR

bit 15 bit 8

R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0TXBOERR — NCRCERR NSTUFERR NFORMERR NACKERR NBIT1ERR NBIT0ERR

bit 7 bit 0

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

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

bit 15 DLCMM: DLC 不適合ビット

送信または受信中に、指定された DLC が FIFO エレメントの PLSIZEx よりも大きい

bit 14 ESI: 受信した CAN FD メッセージの ESI フラグがセットされていた

bit 13 DCRCERR: NCRCERR の定義と同じ

bit 12 DSTUFERR: NSTUFERR の定義と同じ

bit 11 DFORMERR: NFORMERR の定義と同じ

bit 10 未実装 : 「0」として読み出し

bit 9 DBIT1ERR: NBIT1ERR の定義と同じ

bit 8 DBIT0ERR: NBIT0ERR の定義と同じ

bit 7 TXBOERR: デバイス バス OFF 移行 / 自動リカバリ ビット

bit 6 未実装 : 「0」として読み出し

bit 5 NCRCERR: 受信メッセージ CRC チェックサム不正ビット

受信メッセージの CRC チェックサムが不正であった ( 受信メッセージの CRC が受信データから計算した CRC に一致しなかった )

bit 4 NSTUFERR: 受信メッセージ不正シーケンスビット

受信メッセージの一部において、連続する6個以上のビットの値が同じであった(これは許容されない)bit 3 NFORMERR: 受信フレーム固定フォーマット ビット

受信フレームの固定フォーマット部のフォーマットが不正

bit 2 NACKERR: 送信メッセージ ACK なしビット

送信メッセージに対して ACK が返されなかった

bit 1 NBIT1ERR: 送信メッセージ リセッシブレベル ビット

メッセージ ( アービトレーション フィールドは除く ) の送信中に、デバイスがリセッシブレベル ( 論理値 = 1のビット ) の送信を要求したが、検出されたバスの値はドミナントであった

bit 0 NBIT0ERR: 送信メッセージ ドミナントレベル ビット

メッセージ ( または ACK ビット、アクティブ エラーフラグ、オーバーロード フラグのいずれか ) の送信中に、デバイスがドミナントレベル ( 論理値 = 0のデータまたは ID ビット ) の送信を要求したが、検出されたバスの値はリセッシブであった 。バス OFF リカバリ中に、このステータスビットは連続する 11 個のリセッシブビットが検出されるたびにセットされます。これにより、CPU はバス OFF リカバリ シーケンスの進行 ( バスがドミナントで固着していないか、バス動作が常時妨げられていないか ) を監視できます。

2019 Microchip Technology Inc. DS70005340B_JP - p. 45

Page 46: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-49: C1BDIAG1L: CAN バス診断レジスタ 1 Low

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0EFMSGCNT[15:8]

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0EFMSGCNT[7:0]

bit 7 bit 0

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

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

bit 15-0 EFMSGCNT[15:0]: エラーなしメッセージ カウンタビット

DS70005340B_JP - p. 46 2019 Microchip Technology Inc.

Page 47: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-50: C1FLTCONxH: CAN フィルタ制御レジスタ x High (x = 0 ~ 7; c = 2、6、10、14、18、22、26、30; d = 3、7、11、15、19、23、27、31)

R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0FLTENd — — FdBP4 FdBP3 FdBP2 FdBP1 FdBP0

bit 15 bit 8

R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0FLTENc — — FcBP4 FcBP3 FcBP2 FcBP1 FcBP0

bit 7 bit 0

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

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

bit 15 FLTENd: メッセージ アクセプタンス フィルタ d イネーブルビット

1 = フィルタを有効にする0 = フィルタを無効にする

bit 14-13 未実装 : 「0」として読み出し

bit 12-8 FdBP[4:0]: フィルタ d 一致時の FIFO へのポインタ

11111 = フィルタに一致するメッセージを FIFO 31 に格納する11110 = フィルタに一致するメッセージを FIFO 30 に格納する...00010 = フィルタに一致するメッセージを FIFO 2 に格納する00001 = フィルタに一致するメッセージを FIFO 1 に格納する00000 = 予約済み (FIFO 0 は TXQ 用であるため、メッセージは受信できません )

bit 7 FLTENc: メッセージ アクセプタンス フィルタ c イネーブルビット

1 = フィルタを有効にする0 = フィルタを無効にする

bit 6-5 未実装 : 「0」として読み出し

bit 4-0 FcBP[4:0]: フィルタ c 一致時の FIFO へのポインタ

11111 = フィルタに一致するメッセージを FIFO 31 に格納する11110 = フィルタに一致するメッセージを FIFO 30 に格納する...00010 = フィルタに一致するメッセージを FIFO 2 に格納する00001 = フィルタに一致するメッセージを FIFO 1 に格納する00000 = 予約済み (FIFO 0 は TXQ 用であるため、メッセージは受信できません )

2019 Microchip Technology Inc. DS70005340B_JP - p. 47

Page 48: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-51: C1FLTCONxL: CAN フィルタ制御レジスタ x Low (x = 0 ~ 7; a = 0、4、8、12、16、20、24、28; b = 1、5、9、13、17、21、25、29)

R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0FLTENb — — FbBP4 FbBP3 FbBP2 FbBP1 FbBP0

bit 15 bit 8

R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0FLTENa — — FaBP4 FaBP3 FaBP2 FaBP1 FaBP0

bit 7 bit 0

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

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

bit 15 FLTENb: メッセージ アクセプタンス フィルタ b イネーブルビット

1 = フィルタを有効にする0 = フィルタを無効にする

bit 14-13 未実装 : 「0」として読み出し

bit 12-8 FbBP[4:0]: フィルタ b 一致時の FIFO へのポインタ

11111 = フィルタに一致するメッセージを FIFO 31 に格納する11110 = フィルタに一致するメッセージを FIFO 30 に格納する...00010 = フィルタに一致するメッセージを FIFO 2 に格納する00001 = フィルタに一致するメッセージを FIFO 1 に格納する00000 = 予約済み (FIFO 0 は TXQ 用であるため、メッセージは受信できません )

bit 7 FLTENa: メッセージ アクセプタンス フィルタ a イネーブルビット

1 = フィルタを有効にする0 = フィルタを無効にする

bit 6-5 未実装 : 「0」として読み出し

bit 4-0 FaBP[4:0]: フィルタ a 一致時の FIFO へのポインタ

11111 = フィルタに一致するメッセージを FIFO 31 に格納する11110 = フィルタに一致するメッセージを FIFO 30 に格納する...00010 = フィルタに一致するメッセージを FIFO 2 に格納する00001 = フィルタに一致するメッセージを FIFO 1 に格納する00000 = 予約済み (FIFO 0 は TXQ 用であるため、メッセージは受信できません )

DS70005340B_JP - p. 48 2019 Microchip Technology Inc.

Page 49: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

レジスタ 3-52: C1FLTOBJxH: CAN フィルタ オブジェクト レジスタ x High (x = 0 ~ 31)

U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— EXIDE SID11 EID17 EID16 EID15 EID14 EID13

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0EID12 EID11 EID10 EID9 EID8 EID7 EID6 EID5

bit 7 bit 0

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

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

bit 15 未実装 : 「0」として読み出し

bit 14 EXIDE: 拡張 ID イネーブルビット

MIDE = 1の場合 :1 = 拡張 ID アドレスを持つメッセージのみ一致する0 = 標準 ID アドレスを持つメッセージのみ一致する

bit 13 SID11: 標準 ID フィルタビット

bit 12-0 EID[17:5]: 拡張 ID フィルタビット DeviceNet™ モードでは、これらは最初の 2 個のデータバイトに対するフィルタビットです。

レジスタ 3-53: C1FLTOBJxL: CAN フィルタ オブジェクト レジスタ x Low (x = 0 ~ 31)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0EID4 EID3 EID2 EID1 EID0 SID10 SID9 SID8

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0SID7 SID6 SID5 SID4 SID3 SID2 SID1 SID0

bit 7 bit 0

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

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

bit 15-11 EID[4:0]: 拡張 ID フィルタビット DeviceNet™ モードでは、これらは最初の 2 個のデータバイトに対するフィルタビットです。

bit 10-0 SID[10:0]: 標準 ID フィルタビット

2019 Microchip Technology Inc. DS70005340B_JP - p. 49

Page 50: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 3-54: C1MASKxH: CAN マスクレジスタ x High (x = 0 ~ 31)

U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— MIDE MSID11 MEID17 MEID16 MEID15 MEID14 MEID13

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0MEID12 MEID11 MEID10 MEID9 MEID8 MEID7 MEID6 MEID5

bit 7 bit 0

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

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

bit 15 未実装 : 「0」として読み出し

bit 14 MIDE: ID 受信モードビット

1 =フィルタの EXIDE ビットに対応するメッセージタイプ ( 標準または拡張アドレス ) のみ一致する0 =フィルタが一致すれば、標準または拡張アドレス メッセージのどちらであっても一致する ( フィルタ SID = メッセージ SID、または、フィルタ SID/EID = メッセージ SID/EID の場合に一致 )

bit 13 MSID11: 標準 ID マスクビット

bit 12-0 MEID[17:5]: 拡張 ID マスクビット DeviceNet™ モードでは、これらは最初の 2 個のデータバイトに対するマスクビットです。

レジスタ 3-55: C1MASKxL: CAN マスクレジスタ x Low (x = 0 ~ 31)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0MEID4 MEID3 MEID2 MEID1 MEID0 MSID10 MSID9 MSID8

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0MSID7 MSID6 MSID5 MSID4 MSID3 MSID2 MSID1 MSID0

bit 7 bit 0

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

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

bit 15-11 MEID[4:0]: 拡張 ID マスクビット DeviceNet™ モードでは、これらは最初の 2 個のデータバイトに対するマスクビットです。

bit 10-0 MSID[10:0]: 標準 ID マスクビット

DS70005340B_JP - p. 50 2019 Microchip Technology Inc.

Page 51: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

4.0 動作モード CAN FD プロトコル モジュールは以下の 8 通りの動作モードを備えます。

• コンフィグレーション モード

• ノーマルCAN FDモード : CAN FDメッセージとCAN 2.0メッセージの両方をサポートします。

• ノーマルCAN 2.0モード : CAN FDメッセージを受信した時はエラーフレームを生成します。FDF ビットは「0」に固定されます。たとえ送信メッセージ オブジェクト内の FDF ビットがセットされていても、CAN 2.0 フレームだけが送信されます。

• 無効モード

• リッスンオンリー モード

• 制限動作モード • 内部ループバック モード

• 外部ループバック モード

動作モードは次の 4 つの主要グループに分類されます : コンフィグレーション、ノーマル、スリープ、デバッグ ( 図 4-1 参照 )

4.1 モードの移行

図 4-1 に、可能なモード間の移行を示します。動作モードの移行は、REQOP[2:0] (C1CONH[10:8])ビットへの書き込みによって要求します。動作モードは即座に移行しません。動作モードは、バスがアイドル中である時にのみ移行します。 現在の動作モードは OPMOD[2:0] (C1CONH[7:5]) ビットで示されます。アプリケーションは、OPMODx 変化時割り込みを有効にするか、OPMODx をポーリングできます。

4.1.1 ノーマルモード同士の間の移行

あるノーマルモードから別のノーマルモードへ直接移行する事はできません。一度コンフィグレーション モードを選択した後に、新しいノーマルモードを選択できます。

4.1.2 デバッグモード同士の間の移行

あるデバッグモードから別のデバッグモードへ直接移行する事はできません。一度コンフィグレーション モードを選択した後に、新しいデバッグモードを選択できます。

4.1.3 ノーマルモードの終了

現在のメッセージが送信されるまで、デバイスはコンフィグレーション モードまたはスリープモードに移行しません。

4.1.4 無効モードの開始と終了

CAN FD プロトコル モジュールは、無効モードが要求された時に無効モードに移行し、他のモードが要求された時に無効モードを終了します。

WAKIE ビットがセットされている場合、CxRX のドミナントエッジにより割り込みが生成されます。CPU は、ノーマルモードを要求する事によって CAN モジュールを有効にする必要があります。

4.1.5 バス Integrating モード

以下の条件において、CAN FD プロトコル モジュールは ISO11898-1:2015 仕様に従って (11 個の連続したリセッシブビットを検出した後に ) バスに Integrate します。

• コンフィグレーション モードからいずれかのノーマルモードまたはデバッグモードへの移行

• 無効モードからいずれかのノーマルモードへの移行

2019 Microchip Technology Inc. DS70005340B_JP - p. 51

Page 52: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 4-1: CAN トランシーバの動作モード

REQOPx = Restrictedand Bus Idle

No

Yes

REQOPx =“Normal”

REQOP=Listen OnlyAnd Bus Idle

REQOPx = Config(and Bus Idle)

REQOP=RestrictedAnd Bus Idle

Recessive bit = 1Received and PXEDIS = 0

Wait for Bus Idle

Wait for 128 Idle Conditions

TXBO

System ErrorREQOPx = “Normal”

REQOPx = Config(and Bus Idle) REQOPx = Listen Only

and Bus Idle

REQOPx = Configand Bus Idle

REQOPx = Loopback Int/Extand Bus Idle (Integrating)

WAKIF or OSCDIS = 0

REQOPx = Sleep and Bus Idle

REQOPx = Configand Bus Idle

REQOPx = “Normal”and Bus Idle(Integrating)

POR

ConfigurationMode

Sleep ModeClock Off

CxTX Recessive

“Normal”Modes

RX and TX

LoopbackModes

Listen OnlyMode

RX OnlyTX Pin High

TXREQ Ignored

Bus OffClear All TXREQx

bits (Reset TX FIFOs/TXQ)

Protocol Exception Event

No TX

Restricted OperationModeRX

TX: Only ACK,TXREQx Ignored

cSERRLOM = 1?

Normal FD

Mode

Normal 2.0

Mode

External/Internal

Loopback

Mode

Listen Only

Mode

“Normal” Modes “Debug” Modes

Restricted

Operation

Mode

DS70005340B_JP - p. 52 2019 Microchip Technology Inc.

Page 53: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

4.2 コンフィグレーション モード

リセット後に、CAN FD プロトコル モジュールはコンフィグレーション モードに設定されます。エラーカウンタはクリアされ、全てのレジスタにはリセット値が格納されます。 CAN FD プロトコル モジュールは動作前に初期化する必要があります。初期化はコンフィグレーション モード (OPMOD[2:0] = 100) 中にのみ可能です。コンフィグレーション モードは、REQOP[2:0] を「100」に設定する事により要求します。

CAN プロトコルに違反する設定が誤って書き込まれる事を防ぐため、CAN FD プロトコル モジュールの以下のレジスタとビットフィールドは、コンフィグレーション モード中にのみ書き込み可能です。

• C1CONL: WAKFIL、CLKSEL、PXEDIS、ISOCRCEN• C1CONH: TXQEN、STEF、SERRLOM、ESIGM、RTXAT• C1NBTCFGH/L、C1DBTCFGH/L、C1TDCH/L• C1TXQCONH: PLSIZE[2:0]、FSIZE[4:0]• C1TXQCONL• C1FIFOCONxL: TXEN、RXTSEN• C1FIFOCONxH: PLSIZE[2:0]、FSIZE[4:0]• C1TEFCONL: TEFTSEN• C1TEFCONH: FSIZE[4:0]• C1FIFOBAL/H

CAN バス上でのエラーを防ぐため、CAN FD プロトコル モジュールは送受信の実行中にコンフィグレーション モードへ移行しません。以下のレジスタは、コンフィグレーション モードの終了時にリセットされます。

• C1TRECH/L• C1BDIAG0H/L• C1BDIAG1H/L

コンフィグレーション モード中は、C1FIFOCONxL/C1TXQCONL/C1TEFCONL レジスタ内のFRESET がセットされ、全ての FIFO と TXQ がリセットされます。

4.3 ノーマルモード

4.3.1 ノーマル CAN FD モード

デバイスを設定した後に、REQOP[2:0] = 000に設定する事によってノーマルCAN FD動作モードへの移行を要求できます。 このモードでは、デバイスは CAN バス上で認識され、CAN FD モード ( ビットレートの切り換えが可能、最大 64 データバイトを送受信可能 ) でメッセージを送受信できます。

4.3.2 ノーマル CAN 2.0 モード

REQOP[2:0] = 110に設定する事によってノーマルCAN 2.0動作モードへの移行を要求できます。 このモードでは、デバイスは CAN バス上で認識されます。これは従来の CAN 2.0 モードです。モジュールは CAN FD フレームを受信しません。モジュールはバス上で CAN FD フレームを検出した場合にエラーフレームを送信する可能性があります。TX オブジェクト内の FDF、BRS、ESI ビットは無視され、「0」として送信されます。

2019 Microchip Technology Inc. DS70005340B_JP - p. 53

Page 54: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

4.4 無効モード

無効モードは、エラーカウンタがリセットされない点を除けば、コンフィグレーション モードと同様です。無効モードは、REQOP[2:0] = 001に設定する事により要求します。

CAN バス上でのエラーを防ぐため、CAN モジュールは送受信の実行中に無効モードに移行しません。本モジュールは、現在のメッセージが完了した時に無効モードに移行します。

OPMODx ビットは、モジュールが無効モードへ移行したかどうかを示します。アプリケーション ソフトウェアは、無効モードへの移行を要求した後に、このビット フィールドを使って無効モードへの移行が完了した事を確認する必要があります。

モジュールが無効モード中の時に不用意な CAN バスエラーを防ぐため、CxTX ピンはリセッシブ状態に保持されます。

4.5 デバッグモード

4.5.1 リッスンオンリー モード

リッスンオンリー モードはノーマル CAN FD 動作モードに基づきます。ただし、リッスンオンリー モードがアクティブな場合、CAN バス上のモジュールは受動的です ( すなわちメッセージは受信しますが、いかなるビットも送信しません )。TXREQx ビットは無視されます。エラーフラグも ACK 信号も送信しません。このモードではエラーカウンタは無効です。リッスンオンリー モードは、CAN バス上の baud レートを検出するために使えます。このモードを使うには、相互に通信するノードが少なくともあと 2 つ必要です。baud レートは、メッセージが受信できるようになるまで各種の値を試す事によって検出できます。このモードは、バス動作に影響を与える事なく CAN バスを監視する必要がある場合にも使えます。

4.5.2 制限動作モード

制限動作モードでは、ノードはデータとリモートフレームを受信して有効フレームに対してACK を返す事はできますが、データフレーム、リモートフレーム、エラーフレーム、オーバーロード フレームのいずれも送信しません。エラーまたはオーバーロード条件の場合、ノードはドミナントビットを送信せず、CAN 通信に自身を再同期させるためにバスがアイドル状態になるまで待機します。エラーカウンタはインクリメントしません。

4.5.3 ループバック モード

ループバック モードはノーマル CAN FD 動作モードに基づきます。このモードでは、メッセージを送信 FIFO から受信 FIFO へ内部で転送できます。モジュールはバスを介する外部からのACK を必要としません。CxRX ピンは切り離されるため、バスからメッセージを受信する事はできません。

4.5.3.1 内部ループバック モード

送信信号は内部接続を介して受信され、CxTX ピンは High に駆動されます。

4.5.3.2 外部ループバック モード

送信信号は内部接続を介して受信され、送信メッセージは CxTX ピンで監視できます。

DS70005340B_JP - p. 54 2019 Microchip Technology Inc.

Page 55: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

4.6 低消費電力モード

4.6.1 スリープモード

本 CAN モジュールでは、スリープモード向けに特別な条件を満たす必要があります。REQOPx = 001に設定する事により、最初に本モジュールを無効モードへ切り換える必要があります。OPMODx = 001 ( 無効モードへの移行が完了した事を示す ) の場合、スリープモード要求の後に CAN FD プロトコル モジュールはスリープモードに移行します。

スリープモード中はレジスタの内容が変更されないため、OPMODx ビットは変化しません。スリープの終了時に、モジュールはスリープへの移行前に OPMODx ビットによって指定されていたモード ( 無効モード (OPMODx = 001) である事が必要 ) を継続します。

ユーザが本モジュールを無効モードに切り換える事なく SLEEP命令を実行した場合、モジュールは RAM に対する読み書きに必要なクロックが利用可能であると見なします。

スリープモード中はシステムクロック入力が利用できないため、CAN モジュールは動作できません ( 送受信にはシステムクロックが必要であるため )。FIFO はシステム RAM 内にあるため、スリープモード中は FIFO にもクロックは供給されません。

推奨手順 : 1. REQOP[2:0] ビットに「001」を書き込みます ( モジュールは無効モードに移行します )。2. OPMOD[2:0] ビットをポーリングする事によって無効モードに移行した事を確認します

( モジュールが正常に無効モードに移行すると、このビットは「001」を示します )。3. SLEEP命令を実行します。

4.6.2 アイドルモード

アイドルモードと呼ぶ省電力モードで動作するようにシステムを設定できます。デバイスがアイドルモードに移行すると、CPU と大部分の周辺モジュールは停止します。

アイドルモード中の本モジュールの動作は、以下の通りに CAN SIDL ビットの設定に基づきます。

• SIDL = 0の場合、本モジュールはアイドルモード中も動作を継続します。アイドルモード中にモジュールが割り込みを生成する場合、割り込みによって復帰イベントを生成できます。

• SIDL = 1の場合、本モジュールはアイドルモード中に停止します。アイドルモード中に動作を停止する場合、モジュールは無効モード中と同じ手順を実行します ( 要件も無効モードと同じ )。

SIDL = 1の状態でCPUがアイドルモードに移行する場合、ユーザは本モジュールを非アクティブにする必要があります。この手順が守られなかった場合に CAN バスシステムが致命的状態になる事を防ぐため、本モジュールはアイドルモードでの停止時に TX ピンをリセッシブ状態に駆動します。

SIDL ビット = 1 の場合、デバイスをアイドルモードに移行させる前に本モジュールを無効モードに移行させる事を推奨します。

4.6.3 スリープからの復帰

図 4-2 に、CAN モジュールが SLEEP命令の実行によってスリープモードに移行し、バス アクティビティによって復帰する様子を示します。スリープモードからの復帰時に WAKIF フラグがセットされます。

2019 Microchip Technology Inc. DS70005340B_JP - p. 55

Page 56: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 4-2: プロセッサ スリープと CAN バス復帰割り込み

モジュールはスリープ中に CAN 受信ライン上のアクティビティを監視します。WAKIE が有効な場合、CxRX の立ち下がりエッジでデバイスは復帰割り込みを生成します。

デバイスは新しいモード要求またはCxRX立ち下がりエッジの後でスリープモードを終了します。

以下のどちらかが成立する場合、モジュールはスリープモードに移行します。

• モジュールが無効モードに移行した後にシステムがスリープモードに移行した

• SIDL = 1の状態でシステムがアイドルモードに移行した

TOST

Processor inSleep

2 3 4 5

OSC1

CAN Bus

Disabled

001

001000

000 000

000

Sleep

WAKIF

WAKIE

1

REQOP[2:0]

OPMOD[2:0]

CAN Module

– Processor executes SLEEP (PWRSAV #0) instruction.

– SOF of message wakes up processor. Oscillator start time begins. CAN message is lost. WAKIF bit is set. – Processor completes oscillator start time. Processor resumes program or interrupt, based on GIE bits.

accepting CAN bus activity. CAN message is lost. – Module detects 11 recessive bits. Module will begin to receive messages and transmits any pending messages.

– Processor requests and receives Module Disable mode. Wake-up interrupt is enabled.

Processor requests Normal Operating mode. Module waits for 11 recessive bits before

12

34

5

Note 1: WAKIEビット (C1INTH[14])がセットされている場合、モジュールはスリープモード中にバス アクティビティを検出すると割り込みを生成します。オシレータとCPU の起動時の遅延により、復帰をトリガしたメッセージ アクティビティは失われます。

2: 本モジュールは無効、スリープ、アイドルモード中に CAN 受信ラインに対してローパス フィルタを適用するよう設定できます。この機能により、CAN バスライン上のグリッチによる誤ったモジュールの復帰を防ぐ事ができます。スリープ中のこのフィルタ機能は、WAKFIL ビット (C1CONL[8]) で有効または無効にできます。

DS70005340B_JP - p. 56 2019 Microchip Technology Inc.

Page 57: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

5.0 設定

5.1 クロックの設定

CAN FD ネットワーク内の全てのノードのサンプルポイントは、同じ位置にある事が必要です。従って、全てのノードで同じクロック周波数とビット時間設定を使う事を推奨します。SYSCLKには 80 MHz、40 MHz、20 MHz を推奨します。

CLKSEL ビットにより、CAN FD モジュールへのクロック源を選択できます。

• CLKSEL = 1の場合、補助クロックがクロック源として選択されます。• CLKSEL = 0の場合、CAN クロック ジェネレータからのクロックが選択されます。

CAN クロック ジェネレータの設定には以下のレジスタを使います。

レジスタ 5-1: CANCLKCON: CAN クロック制御レジスタ (1)

R/W-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0CANCLKEN — — — CANCLKSEL[3:0](1)

bit 15 bit 8

U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— CANCLKDIV[6:0](2,3)

bit 7 bit 0

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

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

bit 15 CANCLKEN: CAN クロック ジェネレータ イネーブルビット

1 = CAN クロック生成回路を有効にする0 = CAN クロック生成回路を無効にする

bit 14-12 未実装 : 「0」として読み出し

bit 11-8 CANCLKSEL[3:0]: CAN クロック源選択ビット (1)

1011-1111 = 予約済み ( どのクロックも選択しない )1010 = AFVCO/41001 = AFVCO/31000 = AFVCO/20111 = AFVCO0110 = AFPLLO0101 = FVCO/40100 = FVCO/30011 = FVCO/20010 = FPLLO0001 = FVCO0000 = 0 ( どのクロックも選択しない )

bit 7 未実装 : 「0」として読み出し

bit 6-0 CANCLKDIV[6:0]: CAN クロック分周比選択ビット (2,3)

1111111 = 128 分周•••0000010 = 3 分周0000001 = 2 分周0000000 = 1 分周

Note 1: 入力クロック源の周波数は 640 MHz 以下である事が必要です。640 MHz を超える入力参照周波数を使った場合の動作は予測不可能です。

2: CANCLKDIVx 分周値は、CAN モジュールの動作中に変更されない事が必要です。

3: 分周器の最大出力クロック周波数は 80 MHz 以下である事が必要です。

2019 Microchip Technology Inc. DS70005340B_JP - p. 57

Page 58: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

5.2 CAN の設定

C1CONH/L レジスタは、コンフィグレーション モード中にのみ設定できる各種のビットを格納しています。

5.2.1 ISO CRC イネーブル

本モジュールは ISO CRC (ISO11898-1:2015 に準拠 ) と非 ISO CRC をサポートします(2.1「ISO CRC と非 ISO CRC」参照 )。ISO CRC は、ISOCRCEN ビットをセットする事により有効になります。

5.2.2 プロトコル例外イベント検出の無効化

CAN FD フレーム内の FDF ビットと予約 (res) ビットの間の立ち下がりエッジは、トランシーバ遅延の計算とハード同期にとって重要です。FDF ビットの後の予約 (res) ビットがリセッシブとして検出された場合、CAN FD プロトコル モジュールはこれをフォームエラーとして扱います。これは、プロトコル例外イベントの検出が無効な (PXEDIS ビットがセットされている )場合の動作です。 プロトコル例外イベントの検出は、PXEDIS ビットをクリアする事により有効にできます。プロトコル例外イベントが発生した場合、エラーカウンタは変化せず、ハード同期は有効であり、モジュールはリセッシブビットを送信して「bus integration」ステートに移行します。

5.2.3 復帰フィルタ – WFT[1:0]CxRX ピンのローパスフィルタは、WAKFIL ビットを使って有効または無効にします。このフィルタは、スリープモード中にのみ動作します。フィルタ時間は WFTx ビットを使って設定できます。

5.2.4 送信試行回数の制限

ISO11898-1:2015 は、調停に負けたフレーム、ACK が返されなかったフレーム、エラーによって破損したフレームが自動的に再送信される事を要求しています。オプションにより、再送信の試行回数を制限できます。 RTXAT ビットをセットした場合、FIFO 制御レジスタ内の TXAT[1:0] ビットを使って再送信の試行回数を制限できます。RTXAT ビットをクリアした場合、FIFO 制御レジスタ内の TXATxビットは無視され、再送信は無制限に試行されます。

5.2.5 ゲートウェイ モードでのエラーステート インジケータ (ESI)通常、送信メッセージ内の ESI ビットは、CAN FD プロトコル モジュールのエラーステータスを反映します。モジュールがエラーパッシブの時、ESI はリセッシブとして送信されます。本モジュールをゲートウェイ アプリケーションで使う場合、ゲートウェイ モジュールがエラーアクティブであっても、メッセージ内の ESI ビットをリセッシブとして送信する事が必要になる場合があります。これは、ESIGM ビットをセットする事により設定できます。

5.2.6 システムエラー時のモード選択

SERRLOM ビットは、システムエラー時にモジュールをどのモードに移行させるのか選択します。モジュールは制限動作モードまたはリッスンオンリー モードのどちらかに移行できます。

5.2.7 TXQ および TEF 向けのメッセージメモリの予約

TXQEN ビットをセットすると、TXQ 向けに RAM が予約されます。TXQEN ビットをクリアした場合、TXQ は使えません。

STEF ビットをセットすると、TEF 向けに RAM が予約され、全ての送信メッセージは TEF に保存されます。

DS70005340B_JP - p. 58 2019 Microchip Technology Inc.

Page 59: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

5.3 CAN FD ビット時間の設定

帯域幅を高めるため、CAN FD フレーム内のビットは 2 通りのビットレートで送信されます。

• 定格ビットレート (NBR): このビットレートは、アービトレーション フェイズ中 (SOF からBRS ビットのサンプルポイントまでと、CRC デリミタのサンプルポイントから EOF まで )に使われます。

• データ ビットレート (DBR): このビットレートは、データおよび CRC フィールド中に使われます。

NBR は CAN ネットワークの伝播遅延によって制限されます (5.3.2「伝播遅延」参照 )。データフェイズ中は 1 つのトランスミッタだけが送信するため、ビットレートを上げる事ができます。送信中のノードは、送信を試みたビットと CAN バス上の実際のビットを常に比較します。データフェイズ中の伝播遅延は、ビット時間より長くなる可能性があります。その場合、データビットはセカンダリ サンプルポイント (SSP) でサンプリングされます (5.3.3「伝播遅延補償 (TDC)」参照 )。NBR は、アービトレーション フェイズ中の毎秒ビット数です。これは定格ビット時間 (NBT)の逆数です ( 式 5-1 参照 )。

式 5-1: 定格ビットレート / 時間

DBR は、データフェイズ中の毎秒ビット数です。これはデータビット時間 (DBT) の逆数です( 式 5-2 参照 )。

式 5-2: データ ビットレート / 時間

baud レートプロセッサ (BRP) は、SYSCLK を分周するために使います。分周後の SYSCLK を使ってビット時間を生成します。 プリスケーラには、定格ビットレート用の NBRP と、データ ビットレート用の DBRP があります。各 TQ 値 (NTQ と DTQ) は、式 5-3 と式 5-4 により求まります。

式 5-3: 定格 TQ 値

式 5-4: データ TQ 値

CAN ビット時間は、ISO11898-1:2015 で規定された 4 つのセグメントで構成されます ( 図 5-1参照 )。同期セグメント (SYNC) - CAN バスに接続しているノードを同期させます。CAN コントローラは、このセグメント中にビットエッジが発生する事を期待します。同期セグメントは常に 1 TQです。 伝播セグメント (PRSEG) - バスの伝播遅延を補償します。PRSEG は最大伝播遅延より長い事が必要です。

位相セグメント 1 (PHSEG1) - エッジの位相シフトによって生じる誤差を修正します。位相シフトを修正するため、このセグメントは再同期中に自動的に延長可能です。

NBR 1NBT-----------=

DBR 1DBT------------=

NTQ NBRP TSYSCLK NBRPFSYSCLK--------------------------= =

DTQ DBRP TSYSCLK DBRPFSYSCLK--------------------------= =

2019 Microchip Technology Inc. DS70005340B_JP - p. 59

Page 60: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

位相セグメント 2 (PHSEG1) - エッジの位相シフトによって生じる誤差を修正します。位相シフトを修正するため、このセグメントは再同期中に自動的に短縮可能です。

PRSEG と PHSEG1 により TSEG1 が構成されます。PHSEG2 は TSEG2 と呼びます。各セグメントは複数の TQ により構成されます。サンプルポイントは TSEG1 と TSEG2 の境界に位置します。

表 5-1 と表 5-2 に、ビット時間設定パラメータのレンジを示します。

図 5-1: ビット時間の構成

1 ビット時間内の総 TQ 数は設定可能であり、式 5-5 と式 5-6 を使って計算できます。

式 5-5: NBT 内の NTQ 数

式 5-6: DBT 内の DTQ 数

表 5-1: 定格ビットレートの設定レンジ

表 5-2: データ ビットレートの設定レンジ

セグメント Min. Max.

NSYNC 1 1NTSEG1 2 256NTSEG2 1 128NSJW 1 128

ビットあたりの NTQ 4 385

セグメント Min. Max.

DSYNC 1 1DTSEG1 1 32DTSEG2 1 16DSJW 1 16

ビットあたりの DTQ 3 49

TBIT

SYNC PRSEG PHSEG1 PHSEG2

SYNC TSEG1 TSEG2

Sample Point

NBTNTQ------------ NSYNC NTSEG1 NTSEG2+ +=

DBTDTQ------------ DSYNC DTSEG1 DTSEG2+ +=

DS70005340B_JP - p. 60 2019 Microchip Technology Inc.

Page 61: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

5.3.1 サンプルポイント

ビットの論理レベルは、ビット時間内のサンプルポイントで読み出されて解釈されます。サンプルポイントの位置 ( ビット時間に対する百分率 ) は式 5-7 と式 5-8 を使って求まります。

式 5-7: 定格サンプルポイント (%)

式 5-8: データ サンプルポイント (%)

5.3.2 伝播遅延

図 5-2 に、 バス上の 2 つの CAN ノード間の伝播遅延を示します。この図では、ノード A が CANメッセージを送信します。送信ビットは、CAN ノード A から送信側 CAN トランシーバ、CANバス、受信側 CAN トランシーバを経て CAN ノード B に伝播します。

トランスミッタはCANメッセージのアービトレーション フェイズ中にCANバスをサンプリングし、送信ビットと受信ビットが一致するかどうかを確認します。送信ノードは、サンプルポイントを最大伝播遅延より後に配置する必要があります。 式5-9に、最大伝播遅延の式を示します。 式中の tTXD-RXDはトランシーバの伝播遅延 (ISO11898-1:2015 に従い最大 255 ns)、TBUS は CAN バスでの遅延 ( 約 5 ns/m) です。係数の 2 は、最悪条件 ( ノード A からからのビットがノード B に届くと同時にノード B が送信を開始した場合 ) に基づきます。

式 5-9: 最大伝搬遅延

図 5-2: 伝播遅延

NSP 1 NTSEG1+NBTNTQ------------

--------------------------------- 100=

DSP 1 DTSEG1+DBTDTQ------------

--------------------------------- 100=

TPROP 2 tTXD RXD– TBUS+ =

TPROP TPROPAB TPROPBA+ 2 tTXD RXD– TBUS+ = =

Node A

TXCAN

RXCAN

CANH

CANLNode B

RXCAN

TXCAN

CANH

CANL

Delay: Node A to B (TPROPAB)

CAN bus (TBUS)

Transceiver Propagation

Delay (tTXD-RXD)

Delay: Node B to A (TPROPBA)

Transceiver Propagation

Delay (tTXD-RXD)

CxTX

CxRX

Transceiver PropagationDelay (tTXD – RXD)

Transceiver PropagationDelay (tTXD – RXD)

CAN Bus (TBUS)

CxRX

CxTX

2019 Microchip Technology Inc. DS70005340B_JP - p. 61

Page 62: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

5.3.3 伝播遅延補償 (TDC)CAN FD 送信のデータフェイズ中は、1 つのノードだけが送信します ( 他のノードは受信 )。従って、最大データレートは伝播遅延によって制限されません。 CAN FD プロトコル モジュールは、モジュール内の CAN トランシーバが CxTX ピンを介して送信している時に、CxRX ピンを介してその送信データを受信します。受信データは、CAN トランシーバのループ遅延によって遅れます。この遅延が 1+DTSEG1 より大きい場合、エラーが検出されます。 トランシーバのループ遅延より短いデータフェイズ ビット時間を可能にするため、トランスミッタ遅延補償 (TDC) が実装されています。CAN FD メッセージのデータフェイズ中は、DTSEG1 の直後でサンプリングするのではなく、計算したセカンダリ サンプルポイント (SSP)でサンプリングします。

図 5-3 にトランシーバ ループ遅延の計測方法を示し、式 5-10 に SSP の計算式を示します。

式 5-10: セカンダリ サンプルポイント (SSP)

図 5-3: トランシーバ遅延 (TDCV) の計測

5.3.4 同期

CAN バス上のノードとノードの間のオシレータ周波数偏差によって生じる位相シフトを修正するため、各 CAN コントローラは受信信号の対応するエッジに同期できる必要があります。 CAN コントローラは、同期 (SYNC) セグメント中に受信信号でエッジが発生する事を期待します。リセッシブからドミナントへのエッジだけが同期用に使われます。

同期には以下の 2 通りの方式があります。

• ハード同期 - リセッシブからドミナントへのエッジが発生した時点を同期セグメントとして認識します。 ビット時間カウンタは、その同期セグメントからカウントを再開始します。

• 再同期 - リセッシブからドミナントへのエッジが同期セグメントの外で発生した場合、PHSEG1 または PHSEG2 の長さを調整します。

CAN 同期の詳細は ISO11898-1:2015 を参照してください。

SSP = TDCV[5:0] + TDCO[6:0]

CxTX

FDF res BRS ESI DLC

Arbitration Phase Data Phase

CxRX Arbitration Phase Data Phase

Transmitter Delay

Start Stop

Transmitter Delay

Measurement

TSEG1[4:0] (C1DBTCFGH[4:0])

Secondary Sample Point (SSP)

FDF

DS70005340B_JP - p. 62 2019 Microchip Technology Inc.

Page 63: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

5.3.5 同期ジャンプ幅

同期ジャンプ幅 (SJW) は、再同期中に許容する PHSEG1 と PHSEG2 の最大調整幅です。SJWは設定可能です ( 表 5-1 と表 5-2 参照 )。

5.3.6 オシレータ偏差

オシレータ周波数の許容レンジは、オシレータ偏差 (df) と公称周波数 (fnom) を使って式 5-11 の通りに定義されます。

式 5-12 ~式 5-16 に、オシレータ最大偏差の条件を示します。

式 5-11: オシレータ偏差

式 5-12: 条件 1

式 5-13: 条件 2

式 5-14: 条件 3

式 5-15: 条件 4

式 5-16: 条件 5

1 df– fnom FSYSCLK 1 df+ fnom

df NSJW

2 10 NBTNTQ------------

----------------------------------

df min NPHSEG1 NPHSEG2,

2 13 NBTNTQ------------ NPHSEG2–

-------------------------------------------------------------------------

df DSJW

2 10 DBTDTQ------------

----------------------------------

df min NPHSEG1 NPHSEG2,

2 6 DBTDTQ------------ DPHSEG2–

DBRPNBRP---------------- 7 NBT

NTQ------------+

--------------------------------------------------------------------------------------------------------------------------------

dfDSJW max 0 NBRP

DBRP---------------- 1– ,

2 2 NBTNTQ------------ HNSEGP2

NBRPDBRP---------------- DPHSEG2 4 DBT

DTQ------------+ +

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

2019 Microchip Technology Inc. DS70005340B_JP - p. 63

Page 64: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

5.3.7 ビット時間の推奨設定

ビット時間を設定する際は、以下の推奨事項を考慮する必要があります。

• できるだけ高い CAN クロック周波数を選択する

- TQ を短くする事で、サンプルポイントを高分解能で選択できます。

- SYSCLK には 20 MHz、40 MHz、80 MHz のいずれかを使います。

• NBRP と DBRP をできるだけ小さくする

- BRP を小さくするほど TQ は短くなります。

- NSYNC と DSYNC が短くなり、量子化誤差が減少します。

- 受信ノードはより正確に送信ノードに同期できます。

• NBRP と DBRP を同じ値に設定する

- 両方のフェイズの TQ を同じにする事で、ビットレート切り換え中の量子化誤差を防ぎます。

• CAN FDネットワーク上の全てのノードで同じ定格サンプルポイント (NSP)とデータ サンプルポイント (DSP) を使う

- ノードによってサンプルポイントが異なると、BRS および CRC デリミタビットの長さが異なるために、ビットレートの切り換え時に位相誤差が生じます。

- NSP と DSP は同じでなくても構いません。

- SSP は CAN FD ノードごとに異なっていても構いません。

• できるだけ大きな NSJW と DSJW を選択する

- オシレータの許容偏差を最大化します。

- 受信ノードが送信ノードに迅速に同期できるようにします。

• 1 Mbps 以上の DBR に対して自動 TDC を有効にする

- 自動 TDC 計測はトランスミッタ遅延の変動を補償します。

5.3.8 ビット時間の設定例

下の表に、CAN FD ビット時間レジスタの設定例を示します。この例では、車載 CAN FD ネットワーク向けに以下のパラメータを想定しています。

• NBR: 500 kbps ( サンプルポイント位置は 80%)• DBR: 2 Mbps ( サンプルポイント位置は 80%)• 最小バス長 : 40 m表 5-3 と表 5-4 に、ビット時間パラメータの計算方法を示します。パラメータは各種の制約と計算式によって決まり、試算を繰り返す必要があるため、スプレッドシートの使用を推奨します。

表 5-5 に、計算で求めた各パラメータ値に対応するレジスタ値を示します。CAN FD プロトコル モジュールでトランスミッタ遅延補償値 (TDCV) を計算する事を推奨します。そうするには、TDCMOD[1:0] (C1TDCH[1:0]) = 10 ( 自動モード ) に設定します。SSP を 80% に設定するため、TDCO[6:0] を 1 + DTSEG1 に設定します。

DS70005340B_JP - p. 64 2019 Microchip Technology Inc.

Page 65: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

表 5-3: 定格ビットレートの設定手順

表 5-4: データ ビットレートの設定手順

表 5-5: ビット時間レジスタの初期化 (500k/2M)

パラメータ 制約 値 単位 計算式と注釈

NBT NBT ≥ 1 µs 2 µs 式 5-1FSYSCLK FSYSCLK ≤ 80 MHz 80 MHz CAN クロック周波数 = 80 MHzNBRP 1 ~ 256 1 — 分解能を高くするため、できるだけ小さな BRP 値を選択します。

NTQ NBT、FSYSCLK 12.5 ns 式 5-3NBT/NTQ 4 ~ 385 160 — 式 5-5NSYNC 固定 1 NTQ ISO11898-1:2015 で定義

NPRSEG NPRSEG > TPROP 95 NTQ 式 5-9: TPROP = 910 ns、 最小 NPRSEG = TPROP/NTQ = 72.8 NTQ 95 を選択する事で、最大 60 m のバス長を許容します。

NTSEG1 2 ~ 256 NTQ 127 NTQ 式 5-7: 80% NSP が得られる NTSEG1 を選択します。

NTSEG2 1 ~ 128 NTQ 32 NTQ NBT/NTQ = 160 とするには、あと 32 NTQ が必要です。

NSJW 1 ~ 128 NTQ: SJW ≤ min (NPHSEG1, NPHSEG2)

32 NTQ NSJW を最大化する事でオシレータ偏差の要件を緩和します。

パラメータ 制約 値 単位 計算式と注釈

DBT DBT ≥ 125 ns 500 ns 式 5-2DBRP 1 ~ 256 1 — NBT と同じプリスケーラ値を選択します。そうする事で、

ビットレートの切り換え時に TQ 分解能は変化しません。

DTQ NBT、FSYSCLK 12.5 ns 式 5-4DBT/DTQ 3 ~ 49 40 — 式 5-6DSYNC 固定 1 DTQ ISO11898-1:2015 で定義

DTSEG1 1 ~ 32 DTQ 31 DTQ 式 5-7: 80% DSP が得られる DTSEG1 を選択します。

DTSEG2 1 ~ 16 DTQ 8 DTQ DBT/DTQ = 40 とするには、あと 8 DTQ が必要です。

DSJW 1 ~ 16 DTQ: SJW ≤ min (DPHSEG1, DPHSEG2)

8 DTQ DSJW を最大化する事でオシレータ偏差の要件を緩和し

ます。 オシレータ偏差

条件 1 ~ 5条件 1 ~ 5 の最小値 0.78 % 式 5-11 ~式 5-16

C1NBTCFGH/L 値 C1DBTCFGH/L 値 C1TDCH/L 値

BRP[7:0] 0 BRP[7:0] 0 TDCMOD[1:0] 2TSEG1[7:0] 126 TSEG1[4:0] 30 TDCO[6:0] 31TSEG2[6:0] 31 TSEG2[3:0] 7 TDCV[5:0] 0SJW[6:0] 31 SJW[3:0] 7 — —

2019 Microchip Technology Inc. DS70005340B_JP - p. 65

Page 66: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

5.4 メッセージメモリの設定

TEF、TXQ、送信 FIFO、受信 FIFO のメッセージ オブジェクトは RAM 内に配置されます( 図 5-4 参照 )。アプリケーションは、1 つの FIFO 内のメッセージ オブジェクトの数 (0 ~ 31)と、各 FIFO 内のメッセージ オブジェクトのペイロード サイズを設定する必要があります。この設定により、RAM 内のメッセージ オブジェクトの格納位置が決まります。RAM の割り当ては、コンフィグレーション モード中にのみ設定できます。

RAM の使用を最適化するため、アプリケーションは TFE から始めて TXQ、FIFO 1、FIFO 2、FIFO 3... の順番で RAM の割り当てを設定する必要があります。ユーザ アプリケーションがTEF、TXQ、16 個の FIFO を必要とする場合、TEF を最初に設定し、次に TXQ を設定し、その後に FIFO 1 ~ FIFO 16 を設定します。未使用の FIFO 17 ~ 31 を設定する必要はありません。

図 5-4: メッセージメモリの構成

5.4.1 送信イベント FIFO (TEF) の設定

TEF 向けに RAM 内の空間を予約するには、STEF ビット (C1CONH[3]) をセットする必要があります。TEF 内のメッセージ オブジェクトの数は、FSIZE[4:0] ビット (C1TEFCONH[12:8]) を使って設定します。TEFTSEN ビット (C1TEFCONL[5]) をセットする事により、送信メッセージにタイムスタンプを付ける事ができます。

5.4.2 送信キュー (TXQ) の設定

TXQ 向けに RAM 内の空間を予約するには、TXQEN ビット (C1CONH[4]) をセットする必要があります。TXQ 内のメッセージ オブジェクトの数は、FSIZE[4:0] ビット (C1TXQCONH[12:8]) を使って設定します。TXQ 内の全てのオブジェクトは同じペイロードサイズ ( データバイト数 ) を持ちます。このサイズは PLSIZE[2:0] ビット (C1TXQCONH[15:13]) 使って設定します。

5.4.3 送信 FIFO の設定

FIFO 1 ~ FIFO 31 は、 C1FIFOCONxL レジスタの TXEN をセットする事により送信 FIFO として設定できます。各送信 FIFO 内のメッセージ オブジェクトの数は、FSIZE[4:0] ビット(C1FIFOCONxH[12:8]) を使って設定します。1 つの送信 FIFO 内の全てのオブジェクトは同じペイロードサイズ ( データバイト数 ) を持ちます。このサイズは PLSIZE[2:0] ビット(C1FIFOCONxH[15:13]) 使って設定します。

TEF

TXQ

FIFO 1

FIFO 2:Message Object 0

FIFO 2:Message Object 1

FIFO 2:Message Object n

FIFO 31

FIFO 3

DS70005340B_JP - p. 66 2019 Microchip Technology Inc.

Page 67: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

5.4.4 受信 FIFO の設定

FIFO 1 ~ FIFO 31 は、C1FIFOCONxL レジスタの TXEN をクリアする事により受信 FIFO として設定できます。各受信 FIFO 内のメッセージ オブジェクトの数は、FSIZE[4:0] ビット(C1FIFOCONxH[12:8]) を使って設定します。1 つの受信 FIFO 内の全てのオブジェクトは同じペイロードサイズ ( データバイト数 ) を持ちます。このサイズは PLSIZE[2:0] ビット(C1FIFOCONxH[15:13]) 使って設定します。RXTSEN ビット (C1FIFOCONxL[5]) をセットする事により、受信メッセージにタイムスタンプを付ける事ができます。

5.4.5 メッセージメモリの必要サイズの計算

必要な RAM 容量は、各 FIFO の設定によって決まります。式 5-17 ~式 5-19 に TEF、TXQ、各FIFO のサイズ ( バイト数 ) の計算式を示します。TEF または TXQ を使わない場合、それらのサイズは 0 です。

内蔵 RAM の容量は限られているため、ユーザはメモリ設定が RAM に収まる事を確認する必要があります。RAM の総使用量 ( バイト数 ) は式 5-20 により求まります。

TEF オブジェクトのサイズは、タイムスタンプを有効にするかどうかによって異なります。TEFTSEN をセットした場合は tefts = 4、クリアした場合は tefts = 0 です。

PayLoad(i) はデータバイト数です。

RX FIFO のメッセージ オブジェクトのサイズは、タイムスタンプを有効にするかどうかによって異なります。FIFO(i) に対して RXTSEN = 1かつ TXEN = 0の場合は rxts(i) = 4、それ以外の場合は rxts(i) = 0です。

N は、TEF と TXQ に追加して使う FIFO の数です。

式 5-17: TEF のサイズ

式 5-18: TXQ のサイズ

式 5-19: FIFO のサイズ

式 5-20: RAM の総使用量

例 : • TEF の深さが 4 メッセージ (NElements (TEF) = 4) かつ TEFTSEN = 0 の場合、

TEF のサイズ = STEF = 4 x (0 + 8) = 32 バイト

• NElements (TXQ) = 1 かつ PayLoad (TXQ) = 12 の場合、 TXQ のサイズ = STXQ = 1 x (8 + 12) = 20 バイト

• NElements (FIFO) = 3 かつ PayLoad (FIFO) = 8 の場合、FIFO のサイズ = SFIFO = 3 x (8 + 8) = 48 バイト

RAM の総使用量 SRAM = STEF + STXQ + SFIFO = 32 + 20 + 48 = 100 バイト

STEF NElements TEF tefts 8+ =

STXQ NElements TXQ 8 PayLoad TXQ + =

SFIFO i NElements i rxts i 8 PayLoad i + + =

SRAM STEF STXQ SFIFO i

i 1=

N

+ +

=

2019 Microchip Technology Inc. DS70005340B_JP - p. 67

Page 68: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

6.0 メッセージの送信

アプリケーションは、FIFO または TXQ を送信用に使う前に、それらを設定する必要があります (5.4.3「送信 FIFO の設定」と 5.4.2「送信キュー (TXQ) の設定」参照 )。

6.1 送信メッセージ オブジェクト

表 6-1 に、TXQ と送信 FIFO によって使われる送信メッセージ オブジェクトの詳細を示します。送信オブジェクトはメッセージ ID、制御ビット、ペイロードを格納します。

• SID: 標準 ID またはベース ID• EID: 拡張 ID• DLC: データ長コード : 送信するデータバイトの数を指定します (2.1.1「DLC (Data Length

Code)」参照 )。• IDE: ID 拡張の選択 : このビットがクリアされていればベースフレームが送信され、セットされていれば拡張フレームが送信されます。

• RTR: リモート送信要求 : このビットは、CAN 2.0 フレーム内でのみ指定されます。このビットをセットする事で、受信中ノードに対して送信を要求します。

• FDF: FDフォーマットの選択 : このビットがセットされていればCAN FDフレームが送信され、クリアされていれば CAN 2.0 フレームが送信されます。ノーマル CAN 2.0 モードが選択されている場合、このビットは無視され、CAN 2.0 フレームのみが送信されます。

• BRS: ビットレート切り換え : このビットがセットされている場合、CAN FDフレームのデータフェイズは DBR を使って送信されます。このビットがクリアされている場合、フレーム全体が NBR を使って送信されます。

• ESI: エラーステート インジケータ : 通常、ESI ビットは送信中ノードのエラーステータスを反映します。CAN FD フレーム内のリセッシブ ESI ビットは送信中のノードがエラーパッシブである事を示し、ドミナント ESI ビットは送信中のノードがエラーアクティブである事を示します。 ESIGM (C1CONH[1]) = 0 の場合、オブジェクト内のこのビットは無視されます。ESIGM = 1 の場合、CAN FD プロトコル モジュールがエラーパッシブであるかメッセージオブジェクト内の ESI ビットがセットされていれば、送信メッセージ内の ESI ビットはリセッシブで送信されます。ゲートウェイ アプリケーションは、これを使って送信中ノードのESI ビットがセットされた事を示します。

• SEQ: シーケンス番号 : SEQ は CAN バス上へ送信されません。これは送信したメッセージを記録するために使われます。SEQ は TEF メッセージ オブジェクト内で保存されます。

• 送信バッファデータ : メッセージのペイロードを格納します。DLC によって指定された数のデータバイトだけが送信されます。バイト 0、バイト 1、バイト 2、.... の順番で送信されます。

6.2 送信 FIFO へのメッセージの書き込み

アプリケーションは、FIFO にメッセージを書き込む前に FIFO がフルではない事を確認する必要があります。TFNRFNIF (C1FIFOSTAx[0]) がセットされている場合、FIFO には空き位置があります。フルの FIFO にメッセージを書き込むと、送信中のメッセージを破壊する可能性があります。

FIFO ユーザアドレス (C1FIFOUAxH/L) は、次の送信メッセージ オブジェクトの RAM 内の位置を指します ( アプリケーションはその位置にメッセージを保存します )。送信メッセージ オブジェクトは T0、T1、T2... の順番で書き込まれます。データバイトの最大数は、設定されたペイロードによって制限されます。DLC によって指定された数のデータバイトだけを FIFO に書き込む必要があります。

メッセージ オブジェクトが RAM に書き込まれた後に、UINC ビット (C1FIFOCONxL[8]) をセットする事によって FIFO をインクリメントする必要があります。これにより、CAN FD プロトコル モジュールは FIFO のヘッドをインクリメントし、C1FIFOUAxH/L を更新します。

以上によりメッセージは送信可能となり、次のメッセージを新しいアドレスに書き込む事ができます。

DS70005340B_JP - p. 68 2019 Microchip Technology Inc.

Page 69: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

6.3 送信キュー (TXQ) へのメッセージの書き込み

TXQ への送信メッセージ オブジェクトの書き込み方法は、送信 FIFO へのメッセージ オブジェクトの書き込みと同様です。アプリケーションは、C1TXQSTA レジスタを使って TXQ 内に空き位置がある事を確認する必要があります。C1FIFOUAxH/L レジスタの代わりに C1TXQUAH/L レジスタを使ってメッセージの書き込み先アドレスを計算し、UINC ビット (C1TXQCONL[8])をセットして TXQ のヘッドをインクリメントします。

表 6-1: 送信メッセージ オブジェクト (TXQ、TX FIFO) ワード Bit Bit 15/7 Bit 14/6 Bit 13/5 Bit 12/4 Bit 11/3 Bit 10/2 Bit 9/1 Bit 8/0

T015:8 EID[4:0] SID[10:8]7:0 SID[7:0]

T115:8 — — SID11 EID[17:13]7:0 EID[12:5]

T215:8 SEQ[6:0] ESI7:0 FDF BRS RTR IDE DLC[3:0]

T315:8 SEQ[22:15]7:0 SEQ[14:7]

T4(1) 15:8 送信データバイト 17:0 送信データバイト 0

T5(1) 15:8 送信データバイト 37:0 送信データバイト 2

T615:8 送信データバイト 57:0 送信データバイト 4

T715:8 送信データバイト 77:0 送信データバイト 6

Ti -115:8 送信データバイト n-37:0 送信データバイト n-2

Ti15:8 送信データバイト n7:0 送信データバイト n-1

bit 15:11 (T0) EID[4:0]: 拡張 ID ビット

bit 10-0 (T0) SID[10:0]: 標準 ID ビット

bit 15-14 (T1) 未実装 : 「x」として読み出し

bit 13 (T1) SID11: CAN FD モードでは、r1 ビットを使って標準 ID を 12 ビットに拡張できます。

bit 12-0 (T1) EID[17:5]: 拡張 ID ビット

bit 15-9 (T2) SEQ[22:0]: 送信イベント FIFO 内の送信メッセージを追跡するためのシーケンス番号

bit 8 (T2) ESI: エラーステータス インジケータ ビット

CAN to CAN ゲートウェイ モード (ESIGM (C1CONH[1]) = 1) の場合、送信される ESI フラグは ESI(T1) と CAN コントローラのエラーパッシブ状態の論理和 (OR) です。

ノーマルモードの ESI は以下の通りにエラーステータスを示します。1 = 送信中のノードはエラーパッシブ0 = 送信中のノードはエラーアクティブ

bit 7 (T2) FDF: FD フレームビット

CAN フォーマットと CAN FD フォーマットを区別します。

bit 6 (T2) BRS: ビットレート切り換えビット

データ ビットレートを切り換えるかどうか選択します。

bit 5 (T2) RTR: リモート送信要求ビット (CAN FD では使いません )bit 4 (T2) IDE: ID 拡張ビット

ベース フォーマットと拡張フォーマットを区別します。

bit 3-0 (T2) DLC[3:0]: データ長コードビット

bit 15:0 (T3) 未実装 : 「x」として読み出し

Note 1: データバイト0~n: ペイロードサイズは、PLSIZE[2:0]ビット(C1FIFOCONxH[15:13])で個別に設定します。

2019 Microchip Technology Inc. DS70005340B_JP - p. 69

Page 70: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

6.4 送信 FIFO 内メッセージの送信要求

メッセージは、送信 FIFO に書き込まれた後に送信可能となります。アプリケーションは、TXREQ ビット (C1FIFOCONxL[9]) または C1TXREQH/L レジスタ内の対応するビットをセットする事によって FIFO 内の全てのメッセージの送信を開始します。全てのメッセージが送信されると、TXREQ はクリアされます。アプリケーションは同時に複数の FIFO と TXQ の送信を要求できます。最高優先度を持つ FIFO または TXQ が最初に送信を開始します。FIFO 内のメッセージは、先入れ先出しで送信されます。

FIFO が送信中であっても、その FIFO に新しいメッセージを書き込む事ができます。FIFO がエンプティになると TXREQ は自動的にクリアされるため、メッセージを追加した後にC1FIFOCONxL レジスタの UINC と TXREQ を同時にセットする必要があります。これにより、追加したメッセージを含む FIFO 内の全てのメッセージが確実に送信されます。

6.5 送信キュー (TXQ) 内メッセージの送信要求

メッセージは、TXQ に書き込まれた後に送信可能となります。アプリケーションは、TXREQ(C1TXQCONL[9]) をセットする事によってキュー内の全てのメッセージの送信を開始します。全てのメッセージが送信されると、TXREQ はクリアされます。アプリケーションは、TXQ と複数の FIFO の送信を同時に要求できます。C1TXQCONL レジスタで最高優先度に設定されている TXQ または FIFO が最初に送信を開始します。TXQ 内のメッセージは、それらの ID に基づいて送信されます。最高優先度の ID( 最低 ID 値 ) を持つメッセージが最初に送信されます。

TXQ がメッセージを送信中であっても、TXQ に新しいメッセージを書き込む事ができます。TXQ がエンプティになると TXREQ は自動的にクリアされるため、メッセージを追加した後にC1TXQCONL レジスタの UINC と TXREQ を同時にセットする必要があります。これにより、追加したメッセージを含む TXQ 内の全てのメッセージが確実に送信されます。

6.6 C1TXREQ レジスタ

C1TXREQH および C1TXREQL レジスタは TXQ と全ての TX FIFO の TXREQ ビットを格納します。これらのレジスタは、以下の目的で使います。

• ユーザ アプリケーションは、C1TXREQH/L レジスタ内の対応するビットをセットする事により、1 つの SPI 命令だけで TXQ と 1 つまたは複数の TX FIFO の送信を要求できます。 C1TXREQH/L レジスタ内のビットをクリアしても送信は中止されません。

• C1TXREQH および C1TXREQL レジスタを読み出す事で、どの送信 FIFO で送信が保留中なのか確認する事ができます。

C1TXREQL[0] は TXQ に割り当てられ、C1TXREQL[1] ~ [15] および C1TXREQH[0] ~ [15] はTX FIFO 1 ~ 31 に割り当てられています。

6.7 送信優先度

TXPRIx ビット (C1FIFOCONxH[4:0]、C1TXQCONH[4:0]) を使って、FIFO と TXQ の送信優先度を設定する必要があります。 メッセージを送信する前に、送信待ちの TXQ と TX FIFO の優先度が比較されます。最高優先度を持つ FIFO または TXQ が最初に送信されます。例えば、送信 FIFO 1 の優先度が FIFO 3 よりも高い場合、FIFO 1 内の全てのメッセージが最初に送信されます。複数の FIFO が同じ優先度を持つ場合、最も高い番号を持つ FIFO が送信されます。例えば、FIFO 1 と FIFO 3 の優先度が同じである場合、FIFO 3 内の全てのメッセージが最初に送信されます。TXQ と 1 つまたは複数の FIFO の優先度が同じである場合、TXQ 内の全てのメッセージが最初に送信されます。

送信の優先順位は、1 つのメッセージが送信されるたびに再計算されます。

6.7.1 1 つの FIFO 内のメッセージの送信優先順位

FIFO 内のメッセージは先入れ先出し (First-In-First-Out) 方式で送信されます。

DS70005340B_JP - p. 70 2019 Microchip Technology Inc.

Page 71: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

6.7.2 TXQ 内のメッセージの送信優先順位

TXQ 内のメッセージは、メッセージ ID に基づいて送信されます。最低メッセージ ID ( 最高優先度 ) を持つメッセージが最初に送信されます。

6.7.3 ID に基づく送信優先順位

ID に基づく CAN メッセージの送信の目的は、「内部での優先順位の逆転」を防ぐ事です。低優先度メッセージがバス トラフィック ( 調停 ) のために送信を待機中である場合、より高優先度のメッセージの送信が抑止される可能性があります。TXQ は、ID ( 優先度 ) に基づいてキュー内のメッセージの優先順序を付け直す事により、この問題を解消します。

6.8 送信帯域幅の共有

帯域幅の共有は以下の通りに働きます。

• 1 つのメッセージが正常に送信された後、本モジュールは次のメッセージの送信を開始する前に n アービトレーション ビット時間のアイドル期間を挿入します ( 次の送信をサスペンドします )。

• デバイスがメッセージを受信した後は、バスがアイドルになり次第、モジュールは直ちに次のメッセージを送信できます。

これにより、バス上の他のノードは、たとえそれらの優先度が低くてもメッセージを送信できます。

送信と送信の間に挿入するアービトレーション ビット時間は、TXBWS[3:0]ビット(C1CONH[15:12])を使って設定できます。

6.9 再送信の試行

再送信の試行回数は以下の通りに設定できます。

• 再送信の試行を無効にする

• 再送信を 3 回だけ試行する

• 再送信を無制限に試行する

再送信の試行はRTXAT (C1CONH[0])をセットする事により制限できます。各送信FIFOとTXQの再送信試行回数は、TXAT[1:0] (C1FIFOCONxH[6:5] と C1TXQCONH[6:5]) を使って別々に設定できます。

RTXAT = 0 の場合、全ての送信 FIFO と TXQ で再送信が無制限に試行され、TXATx は無視されます。

6.9.1 再送信の試行を無効にした場合

メッセージの送信が試行された後に TXREQ はクリアされます。調停に負けるかエラーによってメッセージの送信に失敗した場合、C1FIFOSTAx または C1TXQSTA レジスタ内の TXATIFがセットされます。

6.9.2 再送信を 3 回だけ試行する場合

送信中にエラーが検出されると、CAN FD プロトコル モジュールは残りの試行回数を 1 つデクリメントし、バスが次にアイドルになった時にメッセージの再送信を試行します。調停に負けた場合、残りの試行回数はデクリメントしません。試行回数を全て使い果たした場合、TXREQがクリアされ、C1FIFOSTAx または C1TXQSTA 内の TXATIF がセットされます。

メッセージを再送信する前に、送信優先度が再計算されます。別の TX FIFO または TXQ が送信用に選択された場合、または直近の送信試行の後にメッセージを受信した場合、再送信の試行回数は再初期化されます。

6.9.3 再送信を無制限に試行する場合

TX FIFO または TXQ 内の全てのメッセージの送信に成功した後にのみ TXREQ がクリアされます。

2019 Microchip Technology Inc. DS70005340B_JP - p. 71

Page 72: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

6.10 送信の中止

保留中の送信は、メッセージの送信が開始される前 (SOF の前 ) にのみ中止可能です。

各 FIFO の送信は、CAN 送信キュー制御レジスタ内の TXREQ をクリアする事によって中止できます。C1TXREQH/L レジスタ内のビットをクリアしても中止できません。C1TXREQH/L レジスタ内のビットに「0」を書き込んでも無視されます。中止に成功すると、CAN FIFO ステータス x レジスタ内の TXABT ビットがセットされます。TXREQ は、メッセージが中止または正常に送信されるまでセットされたままです。

ABAT (C1CONH[11]) をセットすると、全ての FIFO 内の全ての保留中メッセージの送信が中止されます。全ての TXREQx ビットがクリアされた後に新しいメッセージの送信を開始するには、ABAT をクリアする必要があります。

送信 FIFO の TXREQ をクリアすると、その FIFO 内の全ての送信の中止が試みられます。メッセージが送信された場合、FIFO インデックスは通常通りに更新されます。送信の中止に成功した場合、FIFO インデックスは変化しません。

ユーザは、FIFO メッセージ インデックス ビット FIFOCI[4:0] (C1FIFOSTAx[12:8]) を使って、次に送信されるメッセージを識別できます。FRESET ビットをセットすると、送信 FIFO のインデックスをリセットして全ての保留中メッセージを消去できます。その後に、FIFO に新しい送信メッセージを書き込む事ができます。

6.11 リモート送信要求 – RTRCAN バスシステムは、マスタノードから他のノードに対してデータの送信を要求するための手段を提供します。マスタは、RTR ビットをセットしたメッセージを送信します。このメッセージはデータを一切含まず、フィルタ一致をトリガするためのアドレスだけを格納します。 リモートフレームは CAN 2.0 フレーム向けにのみ定義されており、CAN FD フレームではサポートされません。

リモート送信要求に応答するよう設定されたフィルタのポインタは、送信用に設定された FIFOを指します ( その FIFO の RTREN はセットされている必要があります )。自動リモートデータ要求は、MCU の介入を必要とせずに処理可能です。FIFO が正しく設定されていれば、フィルタが一致してポインタがその FIFO を指した時に、その FIFO は送信待ちのキューに入ります。 FIFO は以下の通りに設定しておく必要があります。

• TXEN を「1」にセットします。

• フィルタを有効にして、照合するメッセージ ID を書き込みます。

• そのフィルタのバッファポインタは TX FIFO を指す必要があります ( 通常、フィルタは RXFIFO を指す )。

• RTR を有効にするために RTREN ビットを「1」にセットします。

• FIFO には、あらかじめ送信メッセージを少なくとも 1 つ書き込んでおく必要があります。

RTR メッセージが受信され、正しく設定された送信 FIFO を指しているフィルタにそのメッセージが一致した場合、TXREQ ビットがセットされます。これにより、そのオブジェクトは優先度に従って送信待ちのキューに入ります。

FIFO は、TXEN と RTREN がセットされ、かつ非エンプティである場合にのみ送信されます。FIFO がエンプティの時にリモート送信要求が発生した場合、そのイベントはオーバーフローとして扱われ、RXOVIF ビットがセットされます。

6.12 送信時の DLC とペイロードサイズの不一致

PLSIZEx ビットは、送信 FIFO 内で特定のバイト数を予約します。CAN FD プロトコル モジュールは、DLC ( データ長コード ) とペイロードサイズの不一致を以下の通りに処理します。

• DLC が予約されたペイロードより小さい場合、DLC が指定している数のデータバイトが送信されます。

• DLCが予約されたペイロードより大きい場合、モジュールはそのメッセージを送信しません。モジュールは IVMIF (C1INTL[15]) および DLCMM (C1BDIAG1H[15]) フラグをセットし、TXREQ フラグをクリアします。アプリケーションは TEF を使って、どのメッセージが送信されなかったか調べる事ができます。

DS70005340B_JP - p. 72 2019 Microchip Technology Inc.

Page 73: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

6.13 送信ステート図

図 6-1 に、メッセージが送信待ちのキューに入る様子を示します。この図は、重要な送信フラグの動作 ( セット / クリア ) を示しています。

1. TXREQ フラグのセットにより、メッセージは送信待ちのキューに入ります。

2. 送信順位が決定されます。最高優先度の TXPRIx フラグを持つ FIFO または TXQ が選択されます。FIFO または TXQ 内の TX メッセージのインデックスが計算されます。

3. TX メッセージの送信は保留されます。

4. 送信はバスがアイドルの時にのみ開始できます。

5. 保留中の送信は、SOF が送信される前にのみ中止可能です。

6. メッセージの送信中に、CAN FD プロトコル モジュールは以下を確認します。

a) アービトレーション フィールド中の調停結果

b) 送信エラー

7. TXREQ は、TX FIFO または TXQ 内の全てのメッセージが送信された後にのみクリアされます。各メッセージの送信後に、FIFO または TXQ のステータスフラグが更新されます。STEF (C1CONH[3]) がセットされている場合、メッセージは TEF に保存され、タイムスタンプ機能が有効であればメッセージにタイムスタンプが付けられます。

8. 調停に負けた場合、TX FIFO または TXQ の TXLARB がセットされ、デバイスはメッセージの受信動作に切り換わります (9.0「メッセージの受信」参照 )。

9. メッセージの送信中にエラーが検出された場合、エラーフレームが送信されると共に、適切なエラーフラグがセットされます。メッセージは、6.9「再送信の試行」の通りに再送信されます。

図 6-1: 送信ステート図

Yes

No

No

RX Done

Abort: Set ABAT

Yes No

Success

Yes

Error

Lost Arbitration

Abort: Clr TXREQ[Index]

Any TXREQ

Bus Idle and Waited for Suspend Time

IDLE

CalculateTX Priority

Result: Index

TX Pending[Index]

Wait for Suspend Time

TX In ProgressSOF

Transmit[Index]TX ERR

Set TXERRIF FlagTX Attempts--

TX SuccessfulSet TXIF[Index]

Clr TXREQ[Index]

cSTEF = 1?

Safe Msg to TEF

TX ABORTSet

TXABT[Index]

ABORT ALLClr All TXREQSet All TXABT

Lost ArbitrationSet

TXLARB[Index]

Clr TXREQ[Index]Set

TXATIF[Index]

RX Message

cTX Attempts Exhausted?

Re-Init TX Attempts

Based on New Index

c

New TX Index or Received a Message?

2019 Microchip Technology Inc. DS70005340B_JP - p. 73

Page 74: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

6.14 送信 FIFO のリセット

送信 FIFO は以下によりリセットできます。

• FRESET (C1FIFOCONxL[10]) をセットするまたは

• モジュールをコンフィグレーション モードにする (OPMOD[2:0] = 100)FIFO のリセットにより、ヘッドおよびテール ポインタと C1FIFOSTAx レジスタがリセットされます。C1FIFOCONxL および C1FIFOCONxH レジスタ内の設定は変更されません。

FRESET を使って TX FIFO をリセットする前に、保留中の送信が存在しない事を確認する必要があります。

6.15 送信キューのリセット

TXQ は以下によってリセットできます。

• FRESET (C1TXQCONL[10]) をセットするまたは

• モジュールをコンフィグレーション モードにする (OPMOD[2:0] = 100)TXQ のリセットにより、ヘッドおよびテール ポインタと C1TXQSTA レジスタがリセットされます。C1TXQCONL および C1TXQCONH レジスタ内の設定は変更されません。

FRESET を使って TXQ をリセットする前に、保留中の送信が存在しない事を確認する必要があります。

6.16 メッセージ送信のサンプルコード

例 6-1: メッセージ送信のサンプルコード #include <xc.h>/* This code example demonstrates a method to configure the CAN FD module to transmit Standard and Extended ID CAN FD messages.This uses CAN1, TXQ and FIFO1.TXQ size is 1 and FIFO1 size is 2.*/

/* Include fuse configuration code here.*/

#define MAX_WORDS 100unsigned int __attribute__((aligned(4)))CanTxBuffer[MAX_WORDS];

/*Data structure to implement a CANFD message buffer.*//* CANFD Message Time Stamp */typedef unsignedlong CANFD_MSG_TIMESTAMP;

/* CAN TX Message Object Control*/typedef struct_CANFD_TX_MSGOBJ_CTRL {

unsigned DLC:4;unsigned IDE:1;unsigned RTR:1;unsigned BRS:1;unsigned FDF:1;unsigned ESI:1;unsigned SEQ:23;unsigned unimplemented1:16;

} CANFD_TX_MSGOBJ_CTRL;

/* CANFD TX Message ID*/typedef struct_CANFD_MSGOBJ_ID {

unsigned SID:11;unsigned long EID:18;unsigned SID11:1;unsigned unimplemented1:2;

} CANFD_MSGOBJ_ID;

DS70005340B_JP - p. 74 2019 Microchip Technology Inc.

Page 75: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

例 6-2: メッセージ送信のサンプルコード ( 続き ) /* CAN TX Message Object*/typedef union _CANFD_TX_MSGOBJ {

struct {CANFD_MSGOBJ_ID id;CANFD_TX_MSGOBJ_CTRL ctrl;CANFD_MSG_TIMESTAMP timeStamp;

} bF;unsigned int word[4];unsigned char byte[8];

} CANFD_TX_MSGOBJ;

int main(void){ unsigned char index; /* Place code to set device speed here.For this example the device speed should be set at 40 MHz (i.e., the device is operating at 40 MIPS).*/ConfigureDeviceClockFor40MIPS(); // FCY = 40MIPS

/* The dsPIC33CH device features I/O remap.This I/O remap configuration for the CAN FD module can be performed here.*/SetIORemapForECANModule();

/* Set up the CAN clock generator for 40 MIPS and enable the CAN clock generator.*/ConfigureCanfdClockFor40MIPS();

/* Enable the CANFD module */C1CONLbits.ON = 1;

/* Place CAN module in configuration mode */C1CONHbits.REQOP = 4;while(C1CONHbits.OPMOD != 4);

/* Initialize the C1FIFOBA with the start address of the CAN FIFO message buffer area.*/ C1FIFOBAL = (unsigned int) &CanTxBuffer;

/* Set up the CANFD module for 1Mbps of Nominal bit rate speed and 2Mbps of Data bit rate.*/C1NBTCFGH = 0x001E;C1NBTCFGL = 0x0707;C1DBTCFGH = 0x000E;C1DBTCFGL = 0x0303;C1TDCH = 0x0002; //TDCMOD is AutoC1TDCL = 0x0F00; /* Configure CANFD module to enable Transmit Queue and BRS*/ C1CONLbits.BRSDIS = 0x0; C1CONHbits.STEF = 0x0; //Don't save transmitted messages in TEFC1CONHbits.TXQEN = 0x1;

/* Configure TXQ to transmit 1 message*/ C1TXQCONHbits.FSIZE = 0x0; // single messageC1TXQCONHbits.PLSIZE = 0x7; // 64 bytes of data

/* Configure FIFO1 to transmit 2 messages*/C1FIFOCON1Hbits.FSIZE = 0x1; //2 messagesC1FIFOCON1Hbits.PLSIZE = 0x2; //16 bytes of dataC1FIFOCON1Lbits.TXEN = 0x1; // Set TXEN bit ,transmit fifo/* Place the CAN module in Normal mode.*/C1CONHbits.REQOP = 0;while(C1CONHbits.OPMOD != 0);

2019 Microchip Technology Inc. DS70005340B_JP - p. 75

Page 76: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

例 6-3: メッセージ送信のサンプルコード ( 続き ) /* Get the address of the message buffer to write to.Load the buffer and then set the UINC bit.Set the TXREQ bit next to send the message.*/

CANFD_TX_MSGOBJ *txObj;

/* Transmit message from TXQ - CANFD base frame with BRS*/

/* SID = 0x100, 64 bytes of data */txObj = (CANFD_TX_MSGOBJ *)C1TXQUAL; txObj->bF.id.SID = 0x100;txObj->bF.id.EID = 0x0000;txObj->bF.ctrl.BRS = 1 ; //Switch bit ratetxObj->bF.ctrl.DLC = 0xF; //64 bytestxObj->bF.ctrl.FDF = 1; // CANFD frametxObj->bF.ctrl.IDE = 0; //Standard frame

for (index=0;index<0x40;index++ ){

txObj->byte[index+8] = 0x5A ; // 64 bytes of 0x5A}C1TXQCONLbits.UINC = 1; // Set UINC bitC1TXQCONLbits.TXREQ = 1; // Set TXREQ bit

/* Transmit message 0 from FIFO 1 - CANFD base frame with BRS*/

/* SID = 0x300 , 16 bytes of data */txObj = (CANFD_TX_MSGOBJ *)C1FIFOUA1L; txObj->bF.id.SID = 0x300;txObj->bF.id.EID = 0x0000;txObj->bF.ctrl.BRS = 1 ; //Switch bit ratetxObj->bF.ctrl.DLC = 0xA; //16 bytestxObj->bF.ctrl.FDF = 1; // CANFD frametxObj->bF.ctrl.IDE = 0; //Standard frame

for (index=0;index<0x10;index++ ){

txObj->byte[index+8] = 0xA5 ; // 16 bytes of 0xA5}C1FIFOCON1Lbits.UINC = 1; // Set UINC bitC1FIFOCON1Lbits.TXREQ = 1; // Set TXREQ bit

/* Transmit message 1 from FIFO 1 - CANFD base frame with BRS*/

/* SID = 0x500, EID = 0xC000, 12 bytes of data */txObj = (CANFD_TX_MSGOBJ *)C1FIFOUA1L; txObj->bF.id.SID = 0x500;txObj->bF.id.EID = 0xC000;txObj->bF.ctrl.BRS = 1 ; //Switch bit ratetxObj->bF.ctrl.DLC = 0x9; //12 bytestxObj->bF.ctrl.FDF = 1; // CANFD frametxObj->bF.ctrl.IDE = 1; //Extended frame

for (index=0;index<0xC;index++ ){

txObj->byte[index+8] = 0x55 ; // 12 bytes of 0x55}C1FIFOCON1Lbits.UINC = 1; // Set UINC bitC1FIFOCON1Lbits.TXREQ = 1; // Set TXREQ bit

while(1);}

DS70005340B_JP - p. 76 2019 Microchip Technology Inc.

Page 77: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

7.0 送信イベント FIFO – TEFTEF を使うと、メッセージが送信された順番と時刻を記録できます。TEF は受信 FIFO に似た動作をします。TEF は受信メッセージを保存する代わりに送信メッセージを保存します。メッセージは STEF (C1CONH[3]) がセットされている場合にのみ保存されます。送信メッセージのシーケンス番号 (SEQ) が TEF オブジェクトに保存されます。ペイロードデータは保存されません。TEFTSEN がセットされている場合、送信メッセージにタイムスタンプが付けられます。

表 7-1 に TEF オブジェクトの詳細を示します。TEF オブジェクトの最初の 2 ワードは、送信メッセージ オブジェクトの複製を格納します。オプションにより、メッセージが送信された時のタイムスタンプを TEF オブジェクトに格納できます。

7.1 TEF オブジェクトの読み出し

TEF オブジェクトを読み出す前に、アプリケーションは C1TEFSTA レジスタを読み出す事によって TEF がエンプティではない事を確認する必要があります。TEFNEIF がセットされていれば、TEF は非エンプティです。

TEF ユーザ アドレスは、次に読み出す TEF オブジェクトの RAM 内のアドレスを示します。RAM 内の実際のアドレスは、式 7-1 により求まります。TEF オブジェクトは TE0、TE1、TE2...の順番で読み出されます。

式 7-1: TEF オブジェクトの開始アドレス

RAM から TEF オブジェクトが読み出された後に、UINC (C1TEFCONL[8]) をセットする事によって TEF をインクリメントする必要があります。これにより、CAN FD プロトコル モジュールはテールポインタをインクリメントし、C1TEFUAH/L を更新します。

この時点で、TEF から次のメッセージを読み出せます。

7.1.1 TEF のリセット

TEF は以下によりリセットできます。

• FRESET (C1TEFCONL[10]) をセットするまたは

• モジュールをコンフィグレーション モードにする (OPMOD[2:0] = 100)TEF のリセットにより、ヘッドおよびテール ポインタと C1TEFSTA レジスタがリセットされます。C1TEFCONH および C1TEFCONL レジスタ内の設定は変更されません。

A = BaseAddress = C1FIFOBAH/L

2019 Microchip Technology Inc. DS70005340B_JP - p. 77

Page 78: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

表 7-1: 送信イベント FIFO (TEF) オブジェクト

ワード Bit Bit 15/7 Bit 14/6 Bit 13/5 Bit 12/4 Bit 11/3 Bit 10/2 Bit 9/1 Bit 8/0

TE015:8 EID[4:0] SID[10:8]7:0 SID[7:0]

TE115:8 — — SID11 EID[17:13]7:0 EID[12:5]

TE215:8 SEQ[6:0] ESI7:0 FDF BRS RTR IDE DLC[3:0]

TE315:8 SEQ[22:15]7:0 SEQ[14:7]

TE4(1) 15:8 TXMSGTS[15:8]7:0 TXMSGTS[7:0]

TE5(1) 15:8 TXMSGTS[31:24]7:0 TXMSGTS[23:16]

bit 15:11 (TE0) EID[4:0]: 拡張 ID ビット

bit 10-0 (TE0) SID[10:0]: 標準 ID ビット

bit 15-14 (TE1) 未実装 : 「x」として読み出し

bit 13 (TE1) SID11: CAN FD モードでは、r1 ビットを使って標準 ID を 12 ビットに拡張できます。

bit 12-0 (TE1) EID[17:5]: 拡張 ID ビット

bit 15-9 (TE2) SEQ[22:0]: 送信イベント FIFO 内の送信メッセージを追跡するためのシーケンス番号

bit 8 (TE2) ESI: エラーステータス インジケータ ビット

CAN to CAN ゲートウェイ モード (ESIGM (C1CONH[1]) = 1) の場合、送信される ESI フラグは ESI(TE2) と CAN コントローラのエラーパッシブ状態の論理和 (OR) です。

ノーマルモードの ESI は以下の通りにエラーステータスを示します。1 = 送信中のノードはエラーパッシブ0 = 送信中のノードはエラーアクティブ

bit 7 (TE2) FDF: FD フレームビット

CAN フォーマットと CAN FD フォーマットを区別します。

bit 6 (TE2) BRS: ビットレート切り換えビット

データ ビットレートを切り換えるかどうか選択します。

bit 5 (TE2) RTR: リモート送信要求ビット (CAN FD では使いません )bit 4 (TE2) IDE: ID 拡張ビット

ベース フォーマットと拡張フォーマットを区別します。

bit 3-0 (TE2) DLC[3:0]: データ長コードビット

bit 15-0 (TE3) 未実装 : 「x」として読み出し

bit 15-0 (TE4) TXMSGTS[15:0]: 送信メッセージ タイムスタンプ ビット

bit 15-0 (TE5) TXMSGTS[31:16]: 送信メッセージ タイムスタンプ ビット

Note 1: TE4 および TE5 (TXMSGTSx) は、TEFTSEN (C1TEFCONL[5]) がセットされているオブジェクト内にのみ存在します。

DS70005340B_JP - p. 78 2019 Microchip Technology Inc.

Page 79: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

7.2 送信イベント FIFO のサンプルコード

送信されたメッセージを TEF に保存するためのサンプルコードを例 7-1 に示します。

例 7-1: 送信イベント FIFO を使うためのサンプルコード #include <xc.h>/* This code example demonstrates a method to configure the CAN FD module to save the transmitted messages in the TEF.This example uses CAN1, FIFO1 and TEF */

/* Include fuse configuration code here.*/

#define MAX_WORDS 100unsigned int __attribute__((aligned(4)))CanTxBuffer[MAX_WORDS];//message buffer to be writtenunsigned int * currentMessageBuffer; // Points to message buffer to be read

/*data structure to implement a CANFD message buffer.*//* CANFD Message Time Stamp */typedef unsigned long CANFD_MSG_TIMESTAMP;/* CAN TX Message Object Control*/typedef struct _CANFD_TX_MSGOBJ_CTRL {

unsigned DLC:4;unsigned IDE:1;unsigned RTR:1;unsigned BRS:1;unsigned FDF:1;unsigned ESI:1;unsigned SEQ:23;unsigned unimplemented1:16;

} CANFD_TX_MSGOBJ_CTRL;/* CANFD TX Message ID*/typedef struct _CANFD_MSGOBJ_ID {

unsigned SID:11;unsigned long EID:18;unsigned SID11:1;unsigned unimplemented1:2;

} CANFD_MSGOBJ_ID;/* CAN TX Message Object*/typedef union _CANFD_TX_MSGOBJ {

struct {CANFD_MSGOBJ_ID id;CANFD_TX_MSGOBJ_CTRL ctrl;CANFD_MSG_TIMESTAMP timeStamp;

} bF;unsigned int word[4];unsigned char byte[8];

} CANFD_TX_MSGOBJ;/* CANFD TEF Message Object */typedef union _CAN_TEF_MSGOBJ {

struct {CANFD_MSGOBJ_ID id;CANFD_TX_MSGOBJ_CTRL ctrl;

CANFD_MSG_TIMESTAMP timeStamp;} bF;unsigned int word[4];

} CANFD_TEF_MSGOBJ;

2019 Microchip Technology Inc. DS70005340B_JP - p. 79

Page 80: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

例 7-2: 送信イベント FIFO を使うためのサンプルコード ( 続き ) int main(void){ unsigned char index,fifoSize;

/* Place code to set device speed here.For this example the device speed should be set at40 MHz (i.e., the device is operating at 40 MIPS).*/ConfigureDeviceClockFor40MIPS(); // FCY = 40MIPS

/* The dsPIC33CH device features I/O remap.This I/O remap configuration for the CAN FDmodule can be performed here.*/SetIORemapForECANModule();

/* Set up the CAN clock generater for 40 MIPS and enable the CAN clock generator.*/ConfigureCanfdClockFor40MIPS();

/* Enable the CANFD module */C1CONLbits.CON = 1;

/* Place CAN module in configuration mode */C1CONHbits.REQOP = 4;while(C1CONHbits.OPMOD != 4);/* Initialize the C1FIFOBA with the start address of the CAN FIFO message buffer area.*/ C1FIFOBAL = (unsigned int) &CanTxBuffer;

/* Set up the CANFD module for 1Mbps of Nominal bit rate speed and 2Mbps of Data bit rate.*/C1NBTCFGH = 0x001E;C1NBTCFGL = 0x0707;C1DBTCFGH = 0x000E;C1DBTCFGL = 0x0303;C1TDCH = 0x0002; //TDCMOD is AutoC1TDCL = 0x0F00;

/* Configure CANFD module to save transmitted messages in TEF and BRS*/ C1CONLbits.BRSDIS = 0x0; C1CONHbits.STEF = 0x1; C1CONHbits.TXQEN = 0x0; // Disable TXQ

/* Configure TEF to save 5 messages*/C1TEFCONHbits.FSIZE = 0x4; // save 5 messagesC1TEFCONLbits.TEFTSEN = 1;

/* Configure FIFO1 to transmit 5 messages*/C1FIFOCON1Hbits.FSIZE = 0x4; //5 messagesC1FIFOCON1Hbits.PLSIZE = 0x7; //64 bytes of dataC1FIFOCON1Lbits.TXEN = 0x1; // Set TXEN bit ,transmit fifo

/* Place the CAN module in Normal mode.*/C1CONHbits.REQOP = 0;while(C1CONHbits.OPMOD != 0);

/* Get the address of the message buffer to write to.Load the buffer and *//* then set the UINC bit.Set the TXREQ bit to send the message.*/

CANFD_TX_MSGOBJ *txObj;

/* Transmit 5 messages from FIFO 1 - CANFD base frame with BRS*//* SID = 0x300 , 64 bytes of data */for (fifoSize= 0; fifoSize < 5; fifoSize++){

DS70005340B_JP - p. 80 2019 Microchip Technology Inc.

Page 81: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

例 7-3: 送信イベント FIFO を使うためのサンプルコード ( 続き )txObj = (CANFD_TX_MSGOBJ *)C1FIFOUA1L; txObj->bF.id.SID = 0x300;txObj->bF.id.EID = 0x0000;txObj->bF.ctrl.BRS = 1 ; //Switch bit ratetxObj->bF.ctrl.DLC = 0xF; //64 bytestxObj->bF.ctrl.FDF = 1; // CANFD frametxObj->bF.ctrl.IDE = 0; //Standard frametxObj->bF.ctrl.SEQ = fifoSize ; // Sequence does not get transmitted, but stored in TEF for(index=0;index<0x40;index++ ){

txObj->byte[index+8] = 0xA5 ; // 64 bytes of 0xA5}C1FIFOCON1Lbits.UINC = 1; // Set UINC bit}

C1FIFOCON1Lbits.TXREQ = 1; // Set TXREQ bit while (C1FIFOCON1Lbits.TXREQ == 1);/* Keep reading the TEF objects until the last transmitted message*/for (fifoSize= 0; fifoSize < 5; fifoSize++){while(C1TEFSTAbits.TEFNEIF ==0);CANFD_TEF_MSGOBJ *tefObj; tefObj = (CANFD_TEF_MSGOBJ *)C1TEFUAL; //ProcessTEFMessages (currentMessageBuffer) ;C1TEFCONLbits.UINC = 1 ; // Set UINC bit} while(1);}

2019 Microchip Technology Inc. DS70005340B_JP - p. 81

Page 82: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

8.0 メッセージのフィルタ処理

CAN ネットワーク上の全てのメッセージは全てのノードによって受信されます。必要なメッセージだけを処理するために、ハードウェア フィルタ機能が実装されています。CAN FD プロトコル モジュールは、必要なメッセージのみ受信するよう設定できます。本モジュールは最大で 32 個のアクセプタンス フィルタを内蔵します。各アクセプタンス フィルタは、フィルタ オブジェクトとマスク オブジェクトを備えます。ユーザ アプリケーションは、フィルタ オブジェクトとマスク オブジェクトを設定する事により、特定の ID を持つメッセージだけを受信できます。

8.1 フィルタの設定

フィルタは C1FLTCONxL および C1FLTCONxH レジスタで制御します。フィルタまたはマスク オブジェクトを変更するには、あらかじめ FLTEN ビットをクリアする事によってフィルタを無効にしておく必要があります ( モジュールはコンフィグレーション モード中でなくても構いません )。フィルタ オブジェクトを変更した後に、バッファポインタ (FnBP) を初期化する必要があります。その後に、FLTEN ビットをセットする事によってフィルタを有効にできます。FnBP は、フィルタに一致した受信メッセージの保存先 FIFO を指します。

8.2 受信メッセージのフィルタ処理

CAN FD プロトコル モジュールは、メッセージのアービトレーション フィールドの後で最初の3 データバイトを受信した時にアクセプタンス フィルタ処理を開始します。図 8-1 に、メッセージのフィルタ処理のフローを示します。

本モジュールは、フィルタ 0 ( 最高優先度のフィルタ ) から順番に全てのフィルタを適用します。受信メッセージ アセンブリ バッファ (RXMAB) 内のメッセージがフィルタおよびマスクと比較されます。メッセージがフィルタに一致し、かつエラーなしで受信された場合、そのメッセージは FnBP が指している RX FIFO に保存されます。アクセプタンス フィルタ処理は停止し、対応する RFIF ビットがセットされます。

RTR を受信した場合、FnBPTX が指している TX FIFO の TXREQ ビットがセットされます。

フィルタ処理は次のフィルタを使って続行され、以下のいずれかが発生した場合にのみRXOVIF がセットされます。

• フィルタは一致したが RX FIFO がフルであった

• 同じメッセージに対して複数のフィルタが一致し、かつ対応する全ての RX FIFO がフルであった場合、最高優先度のフィルタが指している FIFO の RXOVIF のみがセットされます。

• RTR 中に TX FIFO (TXEN = 1、RTREN = 1) がエンプティであった場合、RXVOIF ビットがセットされます。

どのフィルタも一致しなかった場合、受信メッセージは破棄されます。

Note: フィルタに一致するメッセージを受信したものの、対応する FIFO が TX FIFO (TXEN = 1、RTREN = 0) であった場合、モジュールは受信メッセージを破棄します。

DS70005340B_JP - p. 82 2019 Microchip Technology Inc.

Page 83: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

図 8-1: メッセージ フィルタ処理のフロー

8.2.1 標準フレームまたは拡張フレームのフィルタ処理

図 8-2 に、1 つのフィルタ オブジェクトと RXMAB 内の受信メッセージの間の照合フローを示します。

フィルタ オブジェクトは標準フレームのみ、拡張フレームのみ、両方のフレームを受け入れるよう設定できます。MIDE がクリアされている場合、標準フレームと拡張フレームの両方を受け入れます。

標準フレームのみを受け入れる場合、MIDE をセットし、EXIDE をクリアする必要があります。拡張フレームのみを受け入れる場合、MIDE と EXIDE の両方をセットする必要があります。

8.2.2 マスクビット

マスク オブジェクトは、受信 ID の中の一部のビットを無視するために使います。RXMAB 内のマスクされたビット ( マスク値が「0」のビット ) は、フィルタ オブジェクト内のビットと比較されません。例えば、ID = 0/1/2/3 の全てのメッセージを受信する必要がある場合、ID の下位 2 ビットをマスクするためにマスク オブジェクトの対応するビットをクリアします。

Match Filter Object 0

Match Filter Object 1

No

FIFO Not Full?Index = F0BP

Yes and Not RTR

No

Accept Message:Receive Rest of Message

Store in FIFO [Index]

Yes

FIFO Not Full?Index = F1BP

Yes and Not RTR

No

Yes

Match Filter Object 31

FIFO Not Full?Index = F31BP

Yes and Not RTR

No

Yes

No

Discard Message

Done

No

Yes and RTR

FIFO Not Empty andTXEN = 1 and RTREN = 1?

Index = F0BPNo

Set TXREQ[Index]

Yes

Yes and RTR

FIFO Not Empty andTXEN = 1 and RTREN = 1?

Index = F1BP

Yes and RTR

FIFO Not Empty andTXEN = 1 and RTREN = 1?

Index = F31BP

No

No

Yes

Yes

Arbitration Done and Required Data Bytes Received

Match Filter Object 2-30Do the Same

2019 Microchip Technology Inc. DS70005340B_JP - p. 83

Page 84: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 8-2: フィルタ一致

Start Matching

C1MASKxH.MIDE Set?

Check IDE:C1FLTOBJxH.EXIDE == RXMAB.IDE?

Yes

No Match

Match

No

RXMAB.IDE == 0?

Base Format:C1FLTOBJx.SID == RXMAB.SID,

Don’t Care if C1MASKx.MSID[i] = 0

Yes

Extended Format:C1FLTOBJx.SID == RXMAB.SID,

Don’t Care if C1MASKx.MSID[i] = 0

No

No

Yes

NO Match No MatchNo No

C1FLTOBJx.EID == RXMAB.EID,Don’t Care if C1MASKx.MEID[i] = 0

Yes

No MatchNoSID11:

C1TDCH.SID11EN and C1MASKx.MSID11

Check SID11:C1FLTOBJxH.SID11 == RXMAB.SID11?

Yes

Yes

Yes

Data Bytes:C1CONL.DNCNTx > 0 ?

No

Yes No MatchNo

No

Calculate Number of Bits to Compare:N = DNCNTx

Calculate Index:M = 18-N

Assemble Receive Data Bytes:RXDB = {RXMAB.DB0, RXMAB.DB1, RXMAB.DB2[7:6]}

Compare:C1FLTOBJm.EID[0:N] == RXDB[17 : M] ?

Don’t Care if C1MASKm.MEID[i] = 0

Yes

No MatchNo

Match

Yes

DS70005340B_JP - p. 84 2019 Microchip Technology Inc.

Page 85: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

8.2.3 データバイトのフィルタ処理

標準フレームを受信するようフィルタを設定する場合、フィルタとマスク オブジェクトの EID部をデータバイトのフィルタ処理用に選択できます。C1CONL レジスタ内の DNCNT[4:0] ビットを使って、データバイト内で比較するデータビットの数を選択します。表 8-1 に、DNCNTの設定値の一覧を示します。この値により、比較されるデータビットの数 ( 比較されるフィルタビットとデータビット ) が決まります。

• DNCNTx = 0の場合、データバイトのフィルタ処理は無効です。

• DNCNTx が非 0 の場合、フィルタ処理は DNCNTx で指定された数のデータビットに対して適用されます。フィルタが一致するには、SIDx ビットが一致し、かつ n 個のデータビットがフィルタの EID[0:17] ビットと一致する必要があります。常にデータバイト 0[7] は EID[0]、データバイト 0[6] は EID[1]、データバイト 2[6] は EID[17] と比較されます。

• DNCNTx > 18 の場合、ユーザが選択したビットの数は EIDx ビットの総数を超えます。フィルタとの比較は、データの 18 番目のビットで終了します。

• DNCNTx > 16 かつ受信メッセージの DLC = 2 の場合、ペイロードは 2 データバイトです。フィルタとの比較は、データの 16 番目のビットで終了します。

• DNCNTx > 8 かつ受信メッセージの DLC = 1 の場合、ペイロードは 1 データバイトです。フィルタとの比較は、データの 8 番目のビットで終了します。

• DNCNTx > 0 かつ受信メッセージの DLC = 0 の場合、データ ペイロードはありません。 フィルタとの比較は ID で終了します。

8.2.4 12 ビット標準 ID SID11EN (C1TDCH[8]) をセットした場合、SRR を SIDx の bit 12 (LSb) として使う事ができます。12 ビット SID モードは、CAN FD ベースフレーム向けにのみ使えます。フィルタは SID11と MSID11 によって拡張されます。このモードでもデータバイトをフィルタ処理できます。

表 8-1: データバイト フィルタの設定

DNCNT[4:0] 比較される受信メッセージのデータビットデータバイト [ ビット ]

アクセプタンス フィルタに使われる EIDx ビット

00000 比較しない 比較しない

00001 データバイト 0[7] EID<0>00010 データバイト 0[7:6] EID[0:1]00011 データバイト 0[7:5] EID[0:2]00100 データバイト 0[7:4] EID[0:3]00101 データバイト 0[7:3] EID[0:4]00110 データバイト 0[7:2] EID[0:5]00111 データバイト 0[7:1] EID[0:6]01000 データバイト 0[7:0] EID[0:7]01001 データバイト 0[7:0] とデータバイト 1[7] EID[0:8]01010 データバイト 0[7:0] とデータバイト 1[7:6] EID[0:9]01011 データバイト 0[7:0] とデータバイト 1[7:5] EID[0:10]01100 データバイト 0[7:0] とデータバイト 1[7:4] EID[0:11]01101 データバイト 0[7:0] とデータバイト 1[7:3] EID[0:12]01110 データバイト 0[7:0] とデータバイト 1[7:2] EID[0:13]01111 データバイト 0[7:0] とデータバイト 1[7:1] EID[0:14]10000 データバイト 0[7:0] とデータバイト 1[7:0] EID[0:15]10001 データバイト 0[7:0]、データバイト 1[7:0]、

データバイト 2[7]EID[0:16]

10010~ 11111 データバイト 0[7:0]、データバイト 1[7:0]、データバイト 2[7:6]

EID[0:17]

2019 Microchip Technology Inc. DS70005340B_JP - p. 85

Page 86: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 8-3 に、受信メッセージ データペイロードの最初の 18 データビットがメッセージ アクセプタンス フィルタの対応する EIDx ビット (C1FLTOBJxH/L レジスタの EID[17:0] ビット ) と比較される様子を示します。受信メッセージの IDE ビットは「0」である事が必要です。

図 8-3: DeviceNet™ フィルタ処理を使った CAN 動作

Note: 図に示した EIDx ビットに対する DeviceNet™ フィルタ処理の設定は DNCNT[4:0] = 10010です。

SID10 SID9

SOF

IDENTIFIER11 Bits

EOF7 Bits 3 Bits

SID0

Accept/Reject Message

IFSDATA BYTE 0 DATA BYTE 1 DATA BYTE 2

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0Data Byte 0 Data Byte 1 Data Byte 2MESSAGE SID[10:0]

SID10 SID9 SID0 EID0 EID1 EID7 EID8 EID9 EID15 EID16 EID17

STANDARD MESSAGE DATA FRAME

MESSAGE ACCEPTANCE FILTERSID[10:0]

MESSAGE ACCEPTANCE FILTEREID[0:17]

DS70005340B_JP - p. 86 2019 Microchip Technology Inc.

Page 87: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

9.0 メッセージの受信

アプリケーションは、RX FIFO を受信用に使う前に、その FIFO を設定する必要があります(5.4.4「受信 FIFO の設定」と参照 )。加えて、アプリケーションは、少なくとも 1 つのフィルタを設定して有効にする必要があります (8.1「フィルタの設定」参照 )。CAN FDプロトコル モジュールはCANバスを絶えず監視します。フィルタに一致するメッセージは、フィルタのポインタが指す RX FIFO に保存されます (8.2「受信メッセージのフィルタ処理」参照 )。メッセージデータは、受信メッセージ オブジェクト内に保存されます。

9.1 受信メッセージ オブジェクト

表 9-1 に、RX FIFO が使う受信メッセージ オブジェクトの詳細を示します。受信オブジェクトはメッセージ ID、制御ビット、ペイロードにより構成されます。

• SID: 標準 ID ( またはベース ID)• EID: 拡張 ID• DLC: データ長コード : フレーム内のデータバイトの数を指定します (2.1.1「DLC (Data

Length Code)」参照 )。• IDE: ID 拡張 : IDE = 0 の場合、ベース ID フレームを受信します。IDE = 1 の場合、拡張 ID

フレームを受信します。

• RTR: リモート送信要求 : このビットは、CAN 2.0 フレーム内でのみ指定されます。このビットがセットされている場合、モジュールはフレームを送信する事で応答する必要があります。

• FDF: FD フレーム : このビットがセットされていれば CAN FD フレームが受信され、クリアされていれば CAN 2.0 フレームが受信されます。

• BRS: ビットレート切り換え : このビットがセットされている場合、DBR を使って CAN FDフレームが受信されます。このビットがクリアされている場合、NBR を使ってフレーム全体が受信されます。

• ESI: エラーステート インジケータ : ESIビットは送信ノードのエラーステータスを反映します。CAN FD フレーム内のリセッシブ ESI ビットは送信中のノードがエラーパッシブである事を示し、ドミナントESIビットは送信中のノードがエラーアクティブである事を示します。

• FILHIT: 受信メッセージが一致したフィルタの番号を示します。

• RXMSGTS: 受信メッセージのタイムスタンプ : RXTSEN (C1FIFOCONxL[5])を使って各RXFIFO 向けにタイムスタンプを個別に有効にできます。タイムスタンプが無効の場合、受信メッセージ オブジェクトは RXMSGTS を格納しません。

• 送信バッファデータ : メッセージのペイロードを格納します。最大ペイロードは PLSIZExビット (C1FIFOCONxH[15:13]) で設定します。

9.1.1 受信メッセージ オブジェクトの読み出し

受信メッセージ オブジェクトを読み出す前に、アプリケーションは C1FIFOSTAx レジスタを読み出す事によって RX FIFO がエンプティではない事を確認する必要があります。TFNRFNIFがセットされていれば、RX FIFO は非エンプティです。

RX FIFO ユーザ アドレス (C1FIFOUAxH/L) は、次に読み出す受信メッセージ オブジェクトのRAM 内のアドレスを示します。受信メッセージ オブジェクトは R0、R1、R2... の順番で読み出されます。

メッセージ オブジェクトが RAM から読み出された後に、UINC ビット (C1FIFOCONxL[8]) をセットする事によって RX FIFO をインクリメントする必要があります。これにより、CAN FDプロトコル モジュールは FIFO のテールをインクリメントし、C1FIFOUAxH/L を更新します。

この時点で、アプリケーションは RX FIFO から次のメッセージを読み出す事ができます。

2019 Microchip Technology Inc. DS70005340B_JP - p. 87

Page 88: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

表 9-1: 受信メッセージ オブジェクト

ワード Bit Bit 15/7 Bit 14/6 Bit 13/5 Bit 12/4 Bit 11/3 Bit 10/2 Bit 9/1 Bit 8/0

R015:8 EID[4:0] SID[10:8]7:0 SID[7:0]

R115:8 — — SID11 EID[17:6]7:0 EID[12:5]

R215:8 FILHIT[4:0] -— -— ESI7:0 FDF BRS RTR IDE DLC[3:0]

R315:8 — — — — — — — —7:0 — — — — — — — —

R4(2) 15:8 RXMSGTS[15:8]7:0 RXMSGTS[7:0]

R5(2) 15:8 RXMSGTS[31:24]7:0 RXMSGTS[23:16]

R6(1) 15:8 受信データバイト 17:0 受信データバイト 0

R7(1) 15:8 受信データバイト 37:0 受信データバイト 2

R815:8 受信データバイト 57:0 受信データバイト 4

R915:8 受信データバイト 77:0 受信データバイト 6

Ri-115:8 受信データバイト n-27:0 受信データバイト n-3

Ri15:8 受信データバイト n7:0 受信データバイト n-1

bit 15-11 (R0) EID[4:0]: 拡張 ID ビット

bit 10-0 (R0) SID[10:0]: 標準 ID ビット

bit 15-14 (R1) 未実装 : 「x」として読み出し

bit 13 (R1) SID11: CAN FD モードでは、r1 ビットを使って標準 ID を 12 ビットに拡張できます。

bit 12-0 (R1) EID[17:5]: 拡張 ID ビット

bit 15-11 (R2) FILHIT[4:0]: フィルタ一致ビット : 一致したフィルタの番号

bit 10-9 (R2) 未実装 : 「x」として読み出し

bit 8 (R2) ESI: エラーステータス インジケータ ビットCAN to CAN ゲートウェイ モード (ESIGM = 1) の場合、送信される ESI フラグは ESI (T1) と CAN コントローラのエラーパッシブ状態の論理和 (OR) です。ノーマルモードの ESI は以下の通りにエラーステータスを示します。1 = 送信中のノードはエラーパッシブ0 = 送信中のノードはエラーアクティブ

bit 7 (R2) FDF: FD フレームビット : CAN フォーマットと CAN FD フォーマットを区別します。

bit 6 (R2) BRS: ビットレート切り換えビット : データ ビットレートを切り換えるかどうか選択します。

bit 5 (R2) RTR: リモート送信要求ビット (CAN FD では使いません )bit 4 (R2) IDE: ID 拡張ビット : ベース フォーマットと拡張フォーマットを区別します。

bit 3-0 (R2) DLC[3:0]: データ長コードビット

bit 15:0 (R3) 未実装 : 「x」として読み出し

bit 15:0 (R4) RXMSGTS[15:0]: 受信メッセージ タイムスタンプ ビット

bit 15:0 (R5) RXMSGTS[31:16]: 受信メッセージ タイムスタンプ ビット

Note 1: 受信メッセージ オブジェクト : データバイト 0~ n: ペイロードサイズはPLSIZE[2:0]ビットを使って個別に設定します。

2: R2 (RXMSGTSx) は、RXTSEN がセットされているオブジェクト内にのみ存在します。

DS70005340B_JP - p. 88 2019 Microchip Technology Inc.

Page 89: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

9.2 受信ステート図

図 9-1 に、メッセージが受信される様子を示します。この図は、重要な受信フラグの動作 ( セット / クリア ) を示しています。

• SOF が検出されるまで、CAN FD プロトコル モジュールはアイドルのままです。

• SOF が検出された後に、モジュールはアービトレーション フィールドとコントロール フィールドを受信します。

• DNCNTx ビットと受信した DLC に基づいて、アクセプタンス フィルタ処理が始まります。詳細は図 8-1 を参照してください。

• どのフィルタも一致しない場合、メッセージは受信されますが保存されません。

• フィルタが一致した場合、デバイスはフィルタのポインタが指している受信オブジェクトがフルかどうかを確認します。

• 受信オブジェクトがフルであった場合、RXOVIF ビットがセットされます。

• 受信オブジェクトが非フルであった場合、残りのデータバイトが受信されて受信オブジェクトに保存されます。

• メッセージが完全に受信されて保存されると、タイムスタンプが付加され、受信フラグがセットされます。FIFO ステータスフラグは更新され、FIFO ヘッドがインクリメントします。

• メッセージの受信中にエラーが検出された場合、エラーフレームが送信され、適切なエラーフラグがセットされます。

図 9-1: 受信ステート図

Error

SuccessError

Success

Error

Success

Error

YesNo

Success

YesNo

Yes

No

Success

Error

SOF

Idle

ReceiveArbitration and

CTRL Field

Transmit Error Frame

Set Error Flags

cFilter Match?

Store Message to Object

Set RXIF

cObject Full?RXIF Set?

Set RXOVIF

cDNCNTx > 0 and DLC > 0?

ReceiveData Bytes 0-3

Receive RemainingData Bytes

and Store them

Receive Rest of Message

Receive Rest of Message

2019 Microchip Technology Inc. DS70005340B_JP - p. 89

Page 90: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

9.3 RX FIFO のリセット

受信 FIFO は以下によってリセットできます。

• FRESET (C1FIFOCONxL[10]) をセットするまたは

• モジュールをコンフィグレーション モードにする (OPMOD[2:0] = 100)FIFO のリセットにより、ヘッドおよびテール ポインタと C1FIFOSTAx レジスタがリセットされます。C1FIFOCONxH/L レジスタ内の設定は変更されません。

FRESET を使って RX FIFO をリセットする前に、有効などのフィルタもその FIFO を保存先として指定していない事を確認する必要があります。

9.4 受信中の DLC とペイロードサイズの不一致

PLSIZEx ビットは、受信メッセージ オブジェクト内で特定のバイト数を予約します。本モジュールは、DLC ( データ長コード ) とペイロードサイズの不一致を以下の通りに処理します。

• DLC の指定するバイト数が PLSIZEx の指定するバイト数より小さい場合、受信メッセージバイトはパディングなしでメッセージ オブジェクトに保存されます。

• DLC の指定するバイト数が PLSIZEx ビットの指定するバイト数より大きい場合、受信メッセージ オブジェクトに収まるデータバイトだけが保存され、残りは破棄されます。本モジュールは、RAM 内の次のメッセージ オブジェクトが上書きされる事を防ぎます。本モジュールはメッセージを受信オブジェクトに保存し、RX FIFO ステータスフラグが更新されます。加えて、IVMIF (C1INTL[15])およびDLCMMフラグ(C1BDIAG1H[15])がセットされます。

9.5 メッセージ受信のサンプルコード

フィルタ 0 を使って CAN FD 拡張フレームを受信し、メッセージを FIFO 1 に保存するためのサンプルコードを例 9-1 に示します。

例 9-1: メッセージ受信のサンプルコード#include <xc.h>/* This code example demonstrates a method to configure the CAN FD module to receive the extended ID CAN FD messages.This uses CAN1, FIFO1 and filter 0.FIFO1 is configured to receive 2 messages.*/

/* Include fuse configuration code here.*/#define MAX_WORDS 100unsigned int __attribute__((aligned(4)))CanRxBuffer[MAX_WORDS];

/*data structure to implement a CANFD message buffer.*//* CANFD Message Time Stamp */typedef unsigned long CANFD_MSG_TIMESTAMP;

/* CANFD RX Message Object Control*/typedef struct _CANFD_RX_MSGOBJ_CTRL {

unsigned DLC:4;unsigned IDE:1;unsigned RTR:1;unsigned BRS:1;unsigned FDF:1;unsigned ESI:1;unsigned unimplemented1:2;unsigned FilterHit:5;unsigned unimplemented2:16;

} CANFD_RX_MSGOBJ_CTRL;

DS70005340B_JP - p. 90 2019 Microchip Technology Inc.

Page 91: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

例 9-2: メッセージ受信のサンプルコード ( 続き ) /* CANFD RX Message ID*/typedef struct _CANFD_MSGOBJ_ID {

unsigned SID:11;unsigned long EID:18;unsigned SID11:1;unsigned unimplemented1:2;

} CANFD_MSGOBJ_ID;

/* CANFD RX Message Object */typedef union _CANFD_RX_MSGOBJ {

struct {CANFD_MSGOBJ_ID id;CANFD_RX_MSGOBJ_CTRL ctrl;CANFD_MSG_TIMESTAMP timeStamp;

} bF;unsigned int word[4];unsigned char byte[8];

} CANFD_RX_MSGOBJ;

int main(void){ /* Place code to set device speed here.For this example the device speed should be set at 40 MHz (i.e., the device is operating at 40 MIPS).*/ConfigureDeviceClockFor40MIPS(); // FCY = 40MIPS

/* The dsPIC33CH device features I/O remap.This I/O remap configuration for the CAN FD module can be performed here.*/SetIORemapForECANModule();

/* Set up the CAN clock generator for 40 MIPS and enable the CAN clock generator.*/ConfigureCanfdClockFor40MIPS();

/* Enable the CANFD module */C1CONLbits.CON = 1;

/* Place CAN module in configuration mode */C1CONHbits.REQOP = 4;while(C1CONHbits.OPMOD != 4);

/* Initialize the C1FIFOBA with the start address of the CAN FIFO message buffer area.*/ C1FIFOBAL = (unsigned int) &CanRxBuffer;

/* Set up the CANFD module for 1 Mbps of Nominal bit rate speed and 2 Mbps of Data bit rate.*/C1NBTCFGH = 0x001E;C1NBTCFGL = 0x0707;C1DBTCFGH = 0x000E;C1DBTCFGL = 0x0303;C1TDCH = 0x0002; //TDCMOD is AutoC1TDCL = 0x0F00;

/* Configure CANFD module to enable BRS */ C1CONLbits.BRSDIS = 0x0; C1CONHbits.STEF = 0x0; //Don't save transmitted messages in TEFC1CONHbits.TXQEN = 0x0; // No TXQ

/* Configure FIFO1 to Receive 2 messages*/C1FIFOCON1Hbits.FSIZE = 0x1; //2 messagesC1FIFOCON1Hbits.PLSIZE = 0x7; //64 bytes of dataC1FIFOCON1Lbits.TXEN = 0x0; //Receive fifo

2019 Microchip Technology Inc. DS70005340B_JP - p. 91

Page 92: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

例 9-3: メッセージ受信のサンプルコード ( 続き ) /* Configure filter 0 and MASK 0 to accept extended id messages with id = 2 and 3 */C1FLTCON0Lbits.F0BP = 1; // message stored in FIFO1C1FLTOBJ0L = 0x1000; // EID = 0x00002 C1FLTOBJ0H = 0x4000; // Match messages with extended identifier addressC1MASK0L = 0xF7FF; // MEID = 0x1FFFE - Last it is 0 C1MASK0H = 0xFFFF; // Match message typesC1FLTCON0Lbits.FLTEN0 = 1; // Enable the filter 0 /* Place the CAN module in Normal mode.*/C1CONHbits.REQOP = 0;while(C1CONHbits.OPMOD != 0);

/* Get the address of the message buffer to read the received messages.*/ /* set UINC bit to update the FIFO tail */CANFD_RX_MSGOBJ *rxObj; rxObj = (CANFD_RX_MSGOBJ *)C1FIFOUA1L; while(C1FIFOSTA1bits.TFNRFNIF ==0); //Process the received messagesC1FIFOCON1Lbits.UINC = 1; // Update the FIFO message pointer.while(1);}

DS70005340B_JP - p. 92 2019 Microchip Technology Inc.

Page 93: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

10.0 FIFO の動作

以下では、TEF と TXQ が有効な場合の FIFO の動作について説明します。ここでは、FIFO 1は TX FIFO として設定され、FIFO 2 は RX FIFO として設定されます。その他の FIFO は設定されません。

表 10-1: FIFO の設定例

10.1 FIFO ステータスフラグ

FIFO 1 ~ 31 は、送信 FIFO または受信 FIFO として設定できます。送信用にも受信用にもC1FIFOSTAx 内の同じステータスフラグが使われます。これらのステータスフラグの動作は、選択された設定に応じて異なります。

10.1.1 TX FIFO のステータスフラグ

送信ステータスフラグには以下の 3 つがあります。

• TFEIF (TFERFFIF): 送信 FIFO エンプティ割り込みフラグ - FIFO がエンプティの時にセット

• TFHIF (TFHRFHIF): 送信 FIFO ハーフエンプティ割り込みフラグ - FIFO が 1/2 フルに満たない時にセット

• TFNIF (TFNRFNIF): 送信 FIFO 非フル割り込みフラグ - FIFO がフルではない時にセット

送信 FIFO のステータスフラグは、FIFO に新しいメッセージ オブジェクトを書き込むための空き位置がある場合にセットされます。FIFO がリセットされた後、最初のメッセージ オブジェクトが書き込まれるまで、全てのステータスフラグはセットされています。FIFO がフルまで書き込まれると、全てのフラグがクリアされます。

10.1.2 RX FIFO のステータスフラグ

受信ステータスフラグには以下の 3 つがあります。

• RFFIF (TFERFFIF): 受信 FIFO フル割り込みフラグ - FIFO がフルの時にセット

• RFHIF (TFHRFHIF): 受信 FIFO ハーフフル割り込みフラグ - FIFOが 1/2 フル以上の時にセット

• RFNIF (TFNRFNIF): 受信FIFO非エンプティ割り込みフラグ - FIFO内に1つ以上のメッセージが存在する時にセット

受信 FIFO のステータスフラグは、FIFO 内に受信メッセージが存在する時にセットされます。FIFO がリセットされた後、最初のメッセージが受信されるまで、全てのステータスフラグはクリアされています。FIFO がフルになると、全てのフラグがセットされます。

10.1.3 TXQ ステータスフラグ

TXQ ステータスフラグには以下の 2 つがあります。

• TXQEIF: TXQ エンプティ割り込みフラグ - TXQ がエンプティの時にセット

• TXQNIF: TXQ 非フル割り込みフラグ - FIFO がフルではない時にセット

TXQ のステータスフラグは、TXQ に新しいメッセージ オブジェクトを書き込むための空き位置がある場合にセットされます。TXQ がリセットされた後、最初のメッセージ オブジェクトが書き込まれるまで、全てのステータスフラグはセットされています。TXQ がフルまで書き込まれると、全てのフラグがクリアされます。

Note 1: FIFO 内のオブジェクト数と PLSIZEx ビットに基づいて開始アドレスが計算されます。

2: 例として、TEF が 0x1400 から始まる場合の各 FIFO の開始アドレスを表 10-1 に示します。

FIFOFIFO 内の

オブジェクト数

オブジェクトあたりのペイロード

タイムスタンプ

オブジェクト内のバイト数

FIFO 内のバイト数

開始アドレス

TEF 12 N/A Yes 12 144 0x1400TXQ 8 32 N/A 40 320 0x1490FIFO 1 5 64 N/A 72 360 0x15D0FIFO 2 16 64 Yes 76 1216 0x1738FIFO 3 N/A — — — — 0x1BF8

2019 Microchip Technology Inc. DS70005340B_JP - p. 93

Page 94: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

10.1.4 TEF のステータスフラグ

TEF ステータスフラグには以下の 4 つがあります。

• TEFFIF: TEF フル割り込みフラグ - TEF がフルの時にセット

• TEFHIF: TEF ハーフフル割り込みフラグ - TEF が 1/2 フル以上の時にセット

• TEFNEIF: TEF非エンプティ割り込みフラグ - TEF内に1つ以上のメッセージが存在する時にセット

• TEFOVIF: TEF オーバーラン割り込みフラグ - オーバーフローが発生した時にセット

TEF のステータスフラグは、TEF 内に送信メッセージが存在する時にセットされます。TEF がリセットされた後、最初のメッセージが保存されるまで、全てのステータスフラグはクリアされています。TEF がフルになると、全てのフラグがセットされます。

10.2 送信 FIFO の動作

FIFO 1がTX FIFOとして設定されていると想定します。C1FIFOCON1LおよびC1FIFOCON1HがこのFIFOを制御します。このFIFOのステータスフラグとインデックス ビット (FIFOCI[4:0])は、C1FIFOSTA1 に格納されます。次に書き込まれる送信メッセージ オブジェクトのユーザアドレスは、C1FIFOUA1L および C1FIFOUA1H に格納されます。 図 10-1 ~図 10-6 に、FIFO 1 のステータスフラグ、ユーザアドレス、FIFO インデックスが更新される様子を示します。

図 10-1 は、リセット後の FIFO 1 の状態を示しています。メッセージ オブジェクト MO0 ~MO4 はエンプティです。全てのステータスフラグはセットされています。ユーザアドレスとFIFO インデックスは MO0 を指しています。

図 10-1: FIFO 1 - 初期状態

図 10-2 に、最初のメッセージ (MSG0) が書き込まれた後の FIFO 1 の状態を示します。この時点でMO0はMSG0を格納します。ユーザ アプリケーションがUINCビット (C1FIFOCON1L[8])をセットする事で、FIFO ヘッドが 1 つ進みます。この時点でユーザ アドレスは MO1 を指します。FIFO が非エンプティになったので、TFEIF はクリアされます。ユーザ アプリケーションは TXREQ をセットする事で MSG0 の送信を要求できます。

図 10-2: FIFO 1 - 最初のメッセージが書き込まれる

MO0

MO1

MO2

MO3

MO4

C1FIFOUA1L = 0x1D0C1FIFOSTA1:FIFOCIx = 0TFEIF = 1TFHIF = 1TFNIF = 1C1FIFOCON1L:TXREQ = 0

MO0/MSG0

MO1

MO2

MO3

MO4

C1FIFOUA1L = 0x218C1FIFOSTA1:FIFOCIx = 0TFEIF = 0TFHIF = 1TFNIF = 1C1FIFOCON1L:TXREQ = 1

DS70005340B_JP - p. 94 2019 Microchip Technology Inc.

Page 95: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

図 10-3 に、MSG0 が送信された後の FIFO 1 の状態を示します。FIFO は再びエンプティです。TFEIF はセットされ、TXREQ はクリアされます。FIFOCIx ビットは MO1 ( ユーザアドレス0x218) を指します。

図 10-3: FIFO 1 - 最初のメッセージが送信される

図 10-4 に、後続の 3 個のメッセージ (MSG1 ~ MSG3) が書き込まれた後の FIFO 1 の状態を示します。この時点でユーザ アドレスは MO4 を指します。FIFO は 1/2 フルを超えたため TFHIFはクリアされます。

図 10-4: FIFO 1 - 後続の 3 個のメッセージが書き込まれる

図 10-5 に、さらに 2 個のメッセージ (MSG4 と MSG5) が書き込まれた後の FIFO 1 の状態を示します。この時点で C1FIFOUA1L は MO1 を指します。FIFO がフルになったので、全てのステータスフラグはクリアされます。ユーザアドレスと FIFO インデックスは MO1 を指します。ユーザ アプリケーションは TXREQ をセットする事で MSG1 ~ MSG5 の送信を要求できます。

図 10-5: FIFO 1 - FIFO がフルになるまで書き込まれる

MO0

MO1

MO2

MO3

MO4

C1FIFOUA1L = 0x218C1FIFOSTA1:FIFOCIx = 1TFEIF = 1TFHIF = 1TFNIF = 1C1FIFOCON1L:TXREQ = 0

MO0

MO1/MSG1

MO2/MSG2

MO3/MSG3

MO4

C1FIFOUA1L = 0x2F0C1FIFOSTA1:FIFOCIx = 1TFEIF = 0TFHIF = 0TFNIF = 1C1FIFOCON1L:TXREQ = 0

MO0/MSG5

MO1/MSG1

MO2/MSG2

MO3/MSG3

MO4/MSG4

C1FIFOUA1L = 0x218C1FIFOSTA1:FIFOCIx = 1TFEIF = 0TFHIF = 0TFNIF = 0C1FIFOCON1L:TXREQ = 1

2019 Microchip Technology Inc. DS70005340B_JP - p. 95

Page 96: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 10-6 に、MSG1 ~ MSG5 が送信された後の FIFO 1 の状態を示します。FIFO は再びエンプティです。全てのステータスフラグがセットされ、TXREQ はクリアされます。ユーザアドレスと FIFO インデックスは再び MO1 を指します。

図 10-6: FIFO 1 - FIFO 内の全てのメッセージが送信される

10.3 受信 FIFO の動作

FIFO 2がRX FIFOとして設定されていると想定します。C1FIFOCON2LおよびC1FIFOCON2Hがこの FIFO を制御します。この FIFO のステータスフラグとインデックス (FIFOCIx) は、C1FIFOSTA2 に格納されます。次に読み出されるメッセージ オブジェクトのユーザアドレスは、C1FIFOUA2L および C1FIFOUA2H に格納されます。 図 10-7 ~図 10-14 にステータスフラグ、ユーザアドレス、FIFO インデックスが更新される様子を示します。

図 10-7 は、リセット後の FIFO 2 の状態を示しています。メッセージ オブジェクト MO0 ~MO15 はエンプティです。全てのステータスフラグはクリアされています。ユーザアドレスとFIFO インデックスは MO0 を指しています。

図 10-7: FIFO 2 - 初期状態

図 10-8 に、最初のメッセージ (MSG0) を受信した後の FIFO 2 の状態を示します。この時点でMO0 は MSG0 を格納します。FIFO インデックスは MO1 を指します。FIFO が非エンプティになったので、RFNIF はセットされます。

図 10-8: FIFO 2 - 最初のメッセージを受信する

MO0

MO1

MO2

MO3

MO4

C1FIFOUA1L = 0x218C1FIFOSTA1:FIFOCIx = 1TFEIF = 1TFHIF = 1TFNIF = 1C1FIFOCON1L:TXREQ = 0

MO0

MO1

MO2

MO15

C1FIFOUA2L = 0x338C1FIFOSTA2:FIFOCIx = 0RFFIF = 0RFHIF = 0RFNIF = 0RXOVIF = 0

MO0/MSG0

MO1

MO2

MO15

C1FIFOUA2L = 0x338C1FIFOSTA2:FIFOCIx = 1RFFIF = 0RFHIF = 0RFNIF = 1RXOVIF = 0

DS70005340B_JP - p. 96 2019 Microchip Technology Inc.

Page 97: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

図 10-9 に、MSG0 が読み出された後の FIFO 2 の状態を示します。ユーザ アプリケーションはRAM からメッセージを読み出して UINC ビット (C1FIFOCON2L[8]) をセットします。ユーザアドレスは 1 つインクリメントして MO1 を指します。FIFO インデックスは変化しません。FIFO は再びエンプティです。全てのフラグはクリアされます。

図 10-9: FIFO 2 - 最初のメッセージが読み出される

図 10-10 に、後続の 8 個のメッセージ (MSG1 ~ MSG8) を受信した後の FIFO 2 の状態を示します。ユーザ アドレスは MO1 を指したままです。FIFO が 1/2 フルになったので、RFNIF と RFHIFがセットされます。この時点で FIFO インデックスは MO9 を指します。

図 10-10: FIFO 2 - 1/2 フルになる

図 10-11 に、さらに 10 個のメッセージ (MSG5 ~ MSG15) を受信した後の FIFO 2 の状態を示します。ユーザ アドレスは MO1 を指したままです。FIFO インデックスは MO0 を指します。RFNIFと RFHIF はセットされたままです。

図 10-11: FIFO 2 - 空き位置があと 1 つになる

MO0

MO1

MO2

MO15

C1FIFOUA2L = 0x384C1FIFOSTA2:FIFOCIx = 1RFFIF = 0RFHIF = 0RFNIF = 0RXOVIF = 0

MO0

MO1/MSG1

MO2/MSG2

C1FIFOUA2L = 0x384C1FIFOSTA2:FIFOCIx = 0RFFIF = 0RFHIF = 1RFNIF = 1RXOVIF = 0

MO15

MO8/MSG8

MO9

MO10

MO0

MO1/MSG1

MO2/MSG2

MO15/MSG15

C1FIFOUA2L = 0x384C1FIFOSTA2:FIFOCIx = 0RFFIF = 0RFHIF = 1RFNIF = 1RXOVIF = 0

2019 Microchip Technology Inc. DS70005340B_JP - p. 97

Page 98: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 10-12 に、さらに 1 個のメッセージ (MSG16) を受信した後の FIFO 2 の状態を示します。FIFO がフルになったので、全てのステータスフラグがセットされます。ユーザアドレスと FIFOインデックスは MO1 を指します。

図 10-12: FIFO 2 - フルになる

図 10-13 に、さらに 1 個のメッセージを受信した後の FIFO 2 の状態を示します。FIFO 2 は既にフルであるため、オーバーフローが発生します。受信したメッセージは破棄され、RXOVIFがセットされます。ユーザアドレスと FIFO インデックスは変化しません。

図 10-13: FIFO 2 - オーバーフローが発生する

図 10-14 に、アプリケーションが RXOVIF をクリアして、2 個のメッセージを読み出した後のFIFO 2 の状態を示します。FIFO はフルではなくなったため、RFFIF はクリアされます。ユーザ アドレスは MO3 を指します。FIFO インデックスは変化しません。

図 10-14: FIFO 2 - 2 個のメッセージが読み出される

MO0/MSG16

MO1/MSG1

MO2/MSG2

MO15/MSG15

C1FIFOUA2L = 0x384C1FIFOSTA2:FIFOCIx = 1RFFIF = 1RFHIF = 1RFNIF = 1RXOVIF = 0

MO0/MSG16

MO1/MSG1

MO2/MSG2

MO15/MSG15

C1FIFOUA2L = 0x384C1FIFOSTA2:FIFOCIx = 1RFFIF = 1RFHIF = 1RFNIF = 1RXOVIF = 1

MO0/MSG16

MO1

MO2

MO15/MSG15

C1FIFOUA2L = 0x41CC1FIFOSTA2:FIFOCIx = 1RFFIF = 0RFHIF = 1RFNIF = 1RXOVIF = 0

MO3/MSG3

MO4/MSG4

DS70005340B_JP - p. 98 2019 Microchip Technology Inc.

Page 99: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

10.4 送信キュー (TXQ) の動作

C1TXQCONLおよびC1TXQCONHがTXQを制御します。TXQのステータスフラグとインデックス (TXQCIx) は、C1TXQSTA に格納されます。次に書き込まれる送信メッセージ オブジェクトのユーザアドレスは、C1TXQUAL および C1TXQUAH に格納されます。 CAN FD プロトコル モジュールは、TXQCI[4:0] を使って、次に送信するメッセージを決定します。TXQCIx ビットは直線的にインクリメントしません。TXQCIx ビットは、1 つのメッセージが送信されるか TXREQ がセットされるたびに再計算されます。

図 10-15 ~図 10-20 に、ステータスフラグとユーザアドレスが更新される様子を示します。ユーザ アプリケーションは TXQCIx を使う必要がないため、図には TXQCIx を示していません。

図 10-15 に、リセット後の TXQ の状態を示します。メッセージ オブジェクト MO0 ~ MO7 はエンプティです。全てのステータスフラグはセットされています。ユーザ アドレスは MO0 を指しています。

図 10-15: TXQ - 初期状態

図 10-16 に、最初のメッセージ (MSG0) が書き込まれた後の TXQ の状態を示します。この時点で MO0 は MSG0 を格納します。ユーザ アプリケーションが UINC ビットをセットする事で、FIFO ヘッドが 1 つ進みます。この時点でユーザ アドレスは MO1 を指します。TXQ はエンプティではなくなったため、TXQEIF はクリアされます。ユーザ アプリケーションは TXREQ をセットする事で MSG0 の送信を要求できます。

図 10-16: TXQ - 最初のメッセージが書き込まれる

図 10-17 に、MSG0 が送信された後の TXQ の状態を示します。TXQ は再びエンプティです。TFEIF はセットされ、TXREQ はクリアされます。UINC がセットされなかったため、ユーザアドレスは MO1 を指したままです。

図 10-17: TXQ - 最初のメッセージが送信される

MO0

MO1

MO2

MO7

C1TXQUAL = 0x090C1TXQSTA:TXQEIF = 1TXQNIF = 1C1TXQCONL:TXREQ = 0

MO0/MSG0

MO1

MO2

MO7

C1TXQUAL = 0x0B8C1TXQSTA:TXQEIF = 0TXQNIF = 1C1TXQCONL:TXREQ = 1

MO0

MO1

MO2

MO7

C1TXQUAL = 0x0B8C1TXQSTA:TXQEIF = 1TXQNIF = 1C1TXQCONL:TXREQ = 0

2019 Microchip Technology Inc. DS70005340B_JP - p. 99

Page 100: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 10-18 に、MSG1 が書き込まれ、UINC がセットされた後の TXQ の状態を示します。この時点でユーザアドレスは次の空きメッセージ オブジェクト (MO0) を指します。

図 10-18: TXQ - 次のメッセージが書き込まれる

図 10-19 に、さらに 6 個のメッセージ (MSG2-MSG7) が書き込まれた後の TXQ の状態を示します。ユーザアドレスは次の空きメッセージ オブジェクト (MO7) を指します。

図 10-19: TXQ - さらに 6 個のメッセージが書き込まれる

図 10-20 に、MSG8 が書き込まれ、UINC がセットされた後の TXQ の状態を示します。TXQはフルになり、全てのフラグがクリアされます。ユーザ アドレスは MO0 を指します。ユーザアプリケーションが TXREQ をセットします。各メッセージは、その ID の優先度に基づいて送信されます。

図 10-20: TXQ - フルになる

MO0

MO1/MSG1

MO2

MO7

C1TXQUAL = 0x090C1TXQSTA:TXQEIF = 0TXQNIF = 1C1TXQCONL:TXREQ = 0

MO0/MSG2

MO1/MSG1

MO2/MSG3

C1TXQUAL = 0x1A8C1TXQSTA:TXQEIF = 0TXQNIF = 1C1TXQCONL:TXREQ = 0

MO3/MSG4

MO4/MSG5

MO5/MSG6

MO6/MSG7

MO7

MO0/MSG2

MO1/MSG1

MO2/MSG3

C1TXQUAL = 0x090C1TXQSTA:TXQEIF = 0TXQNIF = 0C1TXQCONL:TXREQ = 1

MO3/MSG4

MO4/MSG5

MO5/MSG6

MO6/MSG7

MO7/MSG8

DS70005340B_JP - p. 100 2019 Microchip Technology Inc.

Page 101: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

10.5 送信イベント FIFO (TEF) の動作

C1TEFCONL および C1TEFCONH が TEF を制御します。ステータスフラグは C1TEFSTA に格納されます。次に読み出されるメッセージ オブジェクトのユーザアドレスは、C1TEFUALおよび C1TEFUAH に格納されます。 実際の RAM アドレスは式 7-1 を使って求まります。

図 10-21 ~図 10-28 に、ステータスフラグとユーザアドレスが更新される様子を示します。TEFは送信済みメッセージを保存するため、フラグの動作は RX FIFO に似ています。

図 10-21 に、リセット後の TEF の状態を示します。メッセージ オブジェクト MO0 ~ MO11 はエンプティです。全てのステータスフラグはクリアされています。ユーザ アドレスは MO0 を指しています。

図 10-21: TEF - 初期状態

図 10-22 に、最初の送信メッセージが保存された後の TEF の状態を示します。MO0 は ID0(MSG0 の ID) を格納します。TEF が非エンプティになったので、TEFNEIF はセットされます。ユーザ アドレスは MO0 を指します。

図 10-22: TEF - 最初の送信メッセージが保存される

図 10-23 に、ID0 が読み出された後の TEF の状態を示します。ユーザ アプリケーションは RAMから ID を読み出して UINC ビット (C1TEFCONL[8]) をセットします。ユーザ アドレスは 1 つインクリメントして MO1 を指します。TEF は再びエンプティです。全てのフラグはクリアされます。

図 10-23: TEF - 最初の ID を読み出す

MO0

MO1

MO2

MO11

C1TEFUAL = 0x000C1TEFSTA:TEFFIF = 0TEFHIF = 0TEFNEIF = 0TEFOVIF = 0

MO0/ID0

MO1

MO2

MO11

C1TEFUAL = 0x000C1TEFSTA:TEFFIF = 0TEFHIF = 0TEFNEIF = 1TEFOVIF = 0

MO0

MO1

MO2

MO11

C1TEFUAL = 0x00CC1TEFSTA:TEFFIF = 0TEFHIF = 0TEFNEIF = 0TEFOVIF = 0

2019 Microchip Technology Inc. DS70005340B_JP - p. 101

Page 102: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 10-24 に、後続の 6 個のメッセージ (MSG1 ~ MSG6) が送信された後の TEF の状態を示します。 ユーザ アドレスは MO0 を指します。TEF が 1/2 フルになったので、TEFNEIF と TEFHIFがセットされます。

図 10-24: TEF - 1/2 フルになる

図 10-25 に、さらに 5 個のメッセージ (MSG7 ~ MSG11) が送信された後の TEF の状態を示します。 ユーザ アドレスは MO1 を指したままです。TEFNEIF と TEFHIF はセットされたままです。

図 10-25: TEF - 空き位置があと 1 つになる

図 10-26 に、さらにもう 1 個のメッセージ (MSG12) が送信された後の TEF の状態を示します。TEF がフルになったので、全てのステータスフラグはセットされます。ユーザ アドレスは MO1を指します。

図 10-26: TEF - フルになる

MO0

MO1/ID1

MO2/ID2

C1TEFUAL = 0x00CC1TEFSTA:TEFFIF = 0TEFHIF = 1TEFNEIF = 1TEFOVIF = 0

MO11

MO6/ID6

MO7

MO8

MO0

MO1/ID1

MO2/ID2

MO11/ID11

C1TEFUAL = 0x00CC1TEFSTA:TEFFIF = 0TEFHIF = 1TEFNEIF = 1TEFOVIF = 0

MO0/ID12

MO1/ID1

MO2/ID2

MO11/ID11

C1TEFUAL = 0x00CC1TEFSTA:TEFFIF = 1TEFHIF = 1TEFNEIF = 1TEFOVIF = 0

DS70005340B_JP - p. 102 2019 Microchip Technology Inc.

Page 103: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

図 10-27 に、さらにもう 1 個のメッセージが送信された後の TEF の状態を示します。TEF は既にフルであるため、オーバーフローが発生します。ID は破棄され、TEFOVIF がセットされます。ユーザアドレスは変更されません。

図 10-27: TEF - オーバーフローが発生する

図 10-28 に、アプリケーションが TEFOVIF をクリアして、1 個のメッセージを読み出した後の TEF の状態を示します。TEF はフルではなくなったため、TEFFIF はクリアされます。ユーザ アドレスは MO2 を指します。

図 10-28: TEF - フルの状態から 1 個の ID を読み出す

MO0/ID12

MO1/ID1

MO2/ID2

MO11/ID11

C1TEFUAL = 0x00CC1TEFSTA:TEFFIF = 1TEFHIF = 1TEFNEIF = 1TEFOVIF = 1

MO1

MO2/ID2

MO3/ID3

MO11/ID11

C1TEFUAL = 0x018C1TEFSTA:TEFFIF = 0TEFHIF = 1TEFNEIF = 1TEFOVIF = 0

MO0/ID12

2019 Microchip Technology Inc. DS70005340B_JP - p. 103

Page 104: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

11.0 タイムスタンプ

CAN FD プロトコル モジュールはタイムベース カウンタ (TBC) を内蔵しています。TBC は32 ビットのフリーランニング カウンタであり、SYSCLK の整数倍の周期でインクリメントします。このカウンタは、以下の場合に 0 へロールオーバーします。

• TBCPRE[9:0] ビット (C1TSCONL[9:0]) を使って TBC 用のプリスケーラが設定された

• TBCEN (C1TSCONH[0]) がセットされて TBC が有効になった

• TBCEN がクリアされ TBC が停止およびリセットされた

C1TBCH/L に書き込む前に、TBCEN をクリアする事によって TBC を無効にしておく必要があります。

TEF 内のメッセージにタイムスタンプを付けるには、TEFTSEN (C1TEFCONL[5]) をセットする必要があります。

RX FIFO 内のメッセージにタイムスタンプを付けるには、対応する RXTSEN(C1FIFOCONxL[5]) をセットする必要があります。

アプリケーションはいつでも C1TBCH/L を読み出せます。どのようなマルチバイト カウンタでもそうですが、カウンタの 1 つのバイトを読み出してから次のバイトを読み出すまでの間にカウンタがインクリメントしてしまう可能性があるため、アプリケーションはこの事に配慮する必要があります。

全てのタイプスタンプは 32 ビットであるため、高分解能のシステム時刻同期用に使えます。

TBCIE がセットされている場合、TBC がロールオーバーすると割り込みが生成されます。 メッセージのタイムスタンプはフレームの開始時または終了時に付ける事ができます (TSEOFビット (C1TSCONH[1]) で選択 )。TSEOF = 0の場合、TSRES (C1TSCONH[2]) を使って CANFD フレームのタイムスタンプの位置 (SOF または予約ビット (res)) を選択します。表 11-1 リファレンス ポイントで TBC の値 (C1TBCH/L) がキャプチャされ、以下の通りにメッセージ オブジェクト内に保存されます。

• 受信メッセージ オブジェクト : TBC値はRXMSGTSxLビットに保存されます (表 9-1参照 )。• TEF オブジェクト : TBC 値は TXMSGTSx ビットに保存されます ( 表 7-1 参照 )。

表 11-1: タイムスタンプのリファレンス ポイント フレーム CAN 2.0 CAN FD

TX 開始時 SOF のサンプルポイント SOF のサンプルポイントまたは FDF の次のビットのサンプルポイント

RX 開始時 SOF のサンプルポイント SOF のサンプルポイントまたは FDF の次のビットのサンプルポイント

TX 有効時 EOF の最終ビットまでエラーなし EOF の最終ビットまでエラーなし

RX 有効時 EOF の最後から 2 番目のビットまでエラーなし

EOF の最後から 2 番目のビットまでエラーなし

DS70005340B_JP - p. 104 2019 Microchip Technology Inc.

Page 105: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

12.0 割り込み

割り込みは複数の階層に分類できます。下層の複数の割り込みは、上層で 1 つの割り込みに統合されます。図 12-1 に、割り込みの階層を示します。

• FIFO 個別割り込み (FIFO Individual Interrupts)• FIFO 統合割り込み (FIFO Combined Interrupts)• メイン割り込み (Main Interrupts)これらの割り込みは、以下の 3 つのモジュール割り込みに統合されます。

• 受信割り込み (RX Interrupt)• 送信割り込み (TX Interrupt)• 情報割り込み (Info Interrupt)全てのモジュール割り込みは保持されます。すなわち、割り込み要求を解除するには、割り込みの原因となった条件をモジュール内でクリアする必要があります。

2019 Microchip Technology Inc. DS70005340B_JP - p. 105

Page 106: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

図 12-1: 割り込みの階層

RX Interrupt

Interrupt PinsMain InterruptsFIFO CombinedInterrupts

FIFO IndividualInterruptsC1TXQCONL, C1TXQSTA

C1FIFOCONxL, C1FIFOSTAxRFFIE

RFFIFRFHIE

RFHIFRFNIE

RFNIFTXQEIE

TXQEIFTXQNIE

TXQNIFTFEIE

TFEIFTFHIE

TFHIFTFNIE

TFNIFRXOVIE

RXOVIFTXATIE

TXATIF

C1TEFCONLC1TEFSTA

TXATIE

TXATIF

TEFOVIE

TEFOVIFTEFFIE

TEFFIFTEFHIE

TEFHIFTEFNEIE

TEFNEIF

1 FIFO

31 FIFOs

1 TXQ

31 FIFOs

31x

1x

31x

RFIFH[15:0] (C1RXIFH)RFIFL[15:1] (C1RXIFL)

TFIF[0] (C1TXIFL)

C1TXIFH[15:0]C1TXIFL[15:1]

C1RXOVIFH[15:0]C1RXOVIFL[15:1]

C1TXATIFH[15:0]C1TXATIFL[15:1]

C1TXATIFL[0]

31 FIFOs

1 TXQ

31 FIFOs

31x1x

31x

32x

31x

32x

TXIE (C1INTH)

TXIF (C1INTL)

RXOVIE (C1INTH)

RXOVIF (C1INTL)

TXATIE (C1INTH)

TXATIF (C1INTL)

TEFIE (C1INTH)

TEFIF (C1INTL)

IVMIE (C1INTH)

IVMIF (C1INTL)

WAKIE (C1INTH)

WAKIF (C1INTL)

CERRIE (C1INTH)

CERRIF (C1INTL)

MODIE (C1INTH)

MODIF (C1INTL)

TBCIE (C1INTH)

TBCIF (C1INTL)

SERRIE (C1INTH)

SERRIF (C1INTL)

RXIE (C1INTH)

RXIF (C1INTL)31x

TX Interrupt

Info InterruptOR

DS70005340B_JP - p. 106 2019 Microchip Technology Inc.

Page 107: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

12.1 FIFO 個別割り込み

C1FIFOCONxL は各 FIFO の割り込みイネーブルフラグを格納し、C1FIFOSTAx は各 FIFO の割り込みフラグを格納します。各 FIFO は、これらのレジスタを別々に備えています。

12.1.1 送信キュー (TXQ) 割り込み

C1TXQCONL は TXQ の割り込みイネーブルフラグを格納し、C1TXQSTA は TXQ の割り込みフラグを格納します。

TXQ 割り込みは、TXQ のステータスが変化した時に生成されます。TXQ は以下の 2 つの割り込み要因を備えます。

• TXQ 非フル割り込みフラグ (TXQNIF)• TXQ エンプティ割り込みフラグ (TXQEIF)これらの割り込みは別々に有効にできます。アプリケーションによってこれらの割り込みをクリアする事はできません。これらの割り込みは、FIFO の割り込み条件が終了した時にクリアされます。

これらの割り込み要因の論理和 (OR) が TFIF0 フラグ (C1TXIFL[0]) に反映されます。

12.1.2 受信 FIFO 割り込み - RFIF受信 FIFO 割り込みは、受信 FIFO のステータスが変化した時に生成されます。受信 FIFO は以下の 3 つの割り込み要因を備えます。

• 受信 FIFO フル割り込みフラグ (RFFIF)• 受信 FIFO ハーフフル割り込みフラグ (RFHIF)• 受信 FIFO 非エンプティ割り込みフラグ (RFNIF)これらの割り込みは別々に有効にできます。アプリケーションによってこれらの割り込みをクリアする事はできません。これらの割り込みは、FIFO の割り込み条件が終了した時にクリアされます。

これらの割り込み要因の論理和 (OR) が RFIF[31:16] (C1RXIFH[15:0]) および RFIF[15:1](C1RXIFL[15:1]) フラグに反映されます。

12.1.3 送信 FIFO 割り込み - TFIF送信 FIFO 割り込みは、送信 FIFO のステータスが変化した時に生成されます。送信 FIFO は以下の 3 つの割り込み要因を備えます。

• 送信 FIFO 非フル割り込みフラグ (TFNIF)• 送信 FIFO ハーフエンプティ割り込みフラグ (TFHIF)• 送信 FIFO エンプティ割り込みフラグ (TFEIF)これらの割り込みは別々に有効にできます。アプリケーションによってこれらの割り込みをクリアする事はできません。これらの割り込みは、FIFO の割り込み条件が終了した時にクリアされます。 これらの割り込み要因の論理和 (OR) が C1TXIFL[15:1] および C1TXIFH[15:0] フラグに反映されます。

12.1.4 受信 FIFO オーバーラン割り込み - RXOVIFメッセージを正常に受信したものの FIFO がフルであった場合、その FIFO に対応する RXOVIFがセットされます。このフラグはアプリケーションによってクリアする必要があります。

12.1.5 送信 FIFO 再送信失敗割り込み - TXATIFメッセージの再送信がエラーによって失敗した場合、または設定された試行回数を使い果たしても再送信に成功しなかった場合、TXATIF フラグがセットされます。このフラグは、アプリケーションによってクリアする必要があります。

2019 Microchip Technology Inc. DS70005340B_JP - p. 107

Page 108: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

12.1.6 送信イベント FIFO 割り込み - TEFIFTEF 割り込みは、TEF のステータスが変化した時に生成されます。TEF は以下の 4 つの割り込み要因を備えます。

• TEF フル割り込みフラグ (TEFFIF)• TEF ハーフフル割り込みフラグ (TEFHIF)• TEF 非エンプティ割り込みフラグ (TEFNEIF)• TEF オーバーラン割り込みフラグ (TEFOVIF)TEF 割り込みは、受信 FIFO 割り込みに似た動作をします。これらの割り込みは別々に有効にできます。 TEFFIF、TEFHIF、TEFNEIF をアプリケーションによってクリアする事はできません。これらの割り込みは FIFO の割り込み条件が終了した時にクリアされます。

TEFOVIF は、アプリケーションによってクリアする必要があります。

これらの割り込み要因の論理和 (OR) が TEFIF フラグ (C1INTL[4]) に反映されます。

12.2 FIFO 統合割り込み

以下の割り込みは FIFO 個別割り込みです。

• 全ての FIFO/TXQ: RFIFx、TFIFx、RFOVIFx、TFATIFxこれらの割り込みは、それぞれ以下のステータス レジスタに統合されます。 • C1RXIFH/L、C1TXIFH/L、C1RXOVIFH/L、C1TXATIFH/Lこれらのステータス レジスタ内のビットは、以下の通りに各 FIFO に割り当てられます。

Bit 0: TXQ、Bit n: FIFO n (n = 1 ~ 31)Bit 0 は TXQ に割り当てられるため、C1RXIFL と C1RXOVIFL の Bit 0 は予約済みビットです。アプリケーションは 1 つのレジスタを読み出す事で、特定の割り込み ( 例 : RFIFx のペンディング ) に関する全ての FIFO のステータスを確認できます。

FIFO 割り込みは C1FIFOCONxL 内で有効にします。

TXQ 割り込みは C1TXQCONL 内で有効にします。

FIFO 割り込みのクリア方法は 12.1「FIFO 個別割り込み」に記載しています。

12.3 メイン割り込み

C1INTL レジスタは、全てのメイン割り込みを格納します。以下の割り込みは、全ての FIFO 割り込みを論理和 (OR) によって統合したメイン割り込みです。

RXIF、TXIF、RXOVIF、TXATIFこれらのフラグは読み出し専用であり、下層の割り込みを全てクリアする事によってのみクリアできます。

TEFIF は TEF で生成されます。このフラグは読み出し専用であり、下層の割り込みを全てクリアする事によってのみクリアできます。

C1INTH/L 内の全ての割り込みは別々に有効にできます。

12.3.1 無効メッセージ割り込み - IVMIFCAN バスエラーまたは DLC 不一致が直前のメッセージの送受信中に検出された場合、IVMIFビットがセットされます。C1BDIAG1H レジスタは、個々のエラーに対応するフラグを格納します。このフラグは、アプリケーションによってクリアする必要があります。

以下の CAN バスエラーは、エラーフレームが送信された場合に割り込みをトリガします。

CRC エラー、スタッフビット エラー、フォームエラー、ビットエラー、ACK エラー

受信メッセージの ESI がセットされていた場合、このフラグはセットされません。

12.3.2 復帰割り込み - WAKIFこのビットは、モジュールがスリープモード中の時にバス アクティビティが検出されるとセットされます。 このフラグは、アプリケーションによってクリアする必要があります。

DS70005340B_JP - p. 108 2019 Microchip Technology Inc.

Page 109: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

12.3.3 CAN バスエラー割り込み - CERRIFC1TRECH/L レジスタは、ISO11898-1:2015 に従って、送受信中のエラーをカウントします。CERRIF フラグは、エラーカウンタ値に基づいてセットされます。このフラグは、アプリケーションによってクリアする必要があります。

CERRIF は、以下の条件によって TEC/REC カウンタがしきい値を超えるたびにセットされます。

• TEC または REC がエラー警告ステートしきい値を超えた

• トランスミッタまたはレシーバがエラーパッシブ ステートへ移行した

• トランスミッタがバス OFF ステートへ移行した

• トランスミッタまたはレシーバがエラーパッシブからエラーアクティブ ステートへ移行した

• バス OFF リカバリ シーケンス後にモジュールがバス OFF からエラーアクティブ ステートへ移行した

ユーザが CERRIF をクリアすると、次にカウンタがしきい値を超えるまで、CERRIF はクリアされたままです。

12.3.4 CAN モード変化割り込み - MODIFOPMOD[2:0] ビットが変化すると、MODIF フラグがセットされます。このフラグは、アプリケーションによってクリアする必要があります。

12.3.5 CAN タイマ割り込み - TBCIFタイムベース カウンタがロールオーバーすると、TBCIF がセットされます。このフラグは、アプリケーションによってクリアする必要があります。

12.3.6 システムエラー割り込み - SERRIF• バス帯域幅エラー バス帯域幅エラーは送受信中に発生します。 次のメッセージが届く前にモジュールが受信済みCANメッセージをRAMに書き込めなかった場合、受信メッセージ アセンブリ バッファ (RX MAB) でオーバーフローが発生します。 モジュールが送信メッセージ アセンブリ バッファ(TX MAB) に十分高速に書き込めないためにビットストリーム プロセッサに対して一貫したデータを提供できない場合、TX MAB のアンダーフローが発生します。

SERRIFフラグがセットされ、ICODE[6:0]ビット(C1VECL[6:0])が100 0101に設定されます。

• RX MAB オーバーフロー エラーの処理 アプリケーションによっては、RX MAB オーバーフローが許容されない場合があります。オーバーフローを防ぐため、フレームフィルタ処理とデータ保存はできるだけ早期に ( 遅くとも受信メッセージの CRC フィールドが始まった時に ) 開始します。FIFO ステータスの更新は、EOF フィールドの 7 番目のビットが始まるまで待つ必要があります。なぜなら、受信フレームはこの時点で初めて有効となるからです。次のメッセージのアービトレーション フィールドが終わる前に、メッセージを完全に保存して FIFO を更新する必要があります。

RX MAB オーバーフローが発生した場合、その原因となった新しいメッセージは破棄されます。モジュールは、完全に受信されたフィルタ処理済みメッセージの保存動作を継続します。その後に、モジュールはバス上の新しいメッセージを受信できるようになります。エラーが発生した事は、SERRIF ビットを使ってアプリケーションに示されます。

SERRIF ビット (C1INTL[12]) は、ビットに「0」を書き込む事によってクリアします。これにより、ICODEx ビットから SERRIF 条件もクリアされます。

• TX MAB アンダーフロー エラーの処理 : ISO11898-1:2015 は、MAC データの一貫性を要求しています。すなわち、送信メッセージは一貫性のあるデータを格納している必要があります。ECC エラーまたは TX MAB アンダーフローによってデータエラーが発生した場合、送信は開始されません。送信が実行中である場合、送信は停止し、モジュールは制限動作モードまたはリッスンオンリー モード(SERRLOM ビット (C1CONH[2]) で選択可能 ) に移行します。

2019 Microchip Technology Inc. DS70005340B_JP - p. 109

Page 110: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

本モジュールは、送信を停止して制限動作モードまたはリッスンオンリー モードに移行する事により、これらのエラーに対処します。CxTX ピンは High に固定されます。加えて、全てのTXREQ が無視されます。SERRIF により、エラーの発生がアプリケーションに知らされます。モジュールはメッセージの受信を続けます。

12.4 割り込み処理

CAN FD プロトコル モジュールの割り込みは、以下の方法で効率的に処理できます。

• C1VECH/L レジスタを使ってルックアップ テーブルを実装する

• ステータス レジスタを使って最初に処理する割り込みを決定する

アプリケーションは、これら 2 つの方法を組み合わせて割り込みを処理する事もできます。

12.4.1 割り込みルックアップ テーブル

C1VECL レジスタの ICODEx および FILHITx ビットにより、アプリケーションはルックアップテーブルを使って割り込みサービスルーチン (ISR) を実装できます。

以下のビットフィールドにより、アプリケーションは 3 本の割り込みピンをフルに活用できます。

• TXCODE[6:0] ビット : どのオブジェクトで送信割り込みが保留中になっているのか示します。

• RXCODE[6:0] ビット : どのオブジェクトで受信割り込みが保留中になっているのか示します。

送信割り込みと受信割り込み用に別々のルックアップ テーブルを実装する事もできます。

複数のオブジェクトで割り込みが保留中である場合、番号の最も大きな割り込みまたは FIFOが RXCODEx、TXCODEx、ICODEx で示されます。最高優先度の割り込みがクリアされると、次に優先度の高い割り込みが C1VECH/L で示されます。RXCODEx、TXCODEx、ICODEx は複数の割り込みフラグを入力とする組み合わせロジックを使って実装されています。

12.4.2 割り込みステータス レジスタ

CAN FD プロトコル モジュールは 31 個の FIFO と 1 個の TXQ を備えています。割り込み優先度はモジュールによって決められているため、ICODEx を使うと複雑になる場合があります。従って、効率的な割り込み処理を可能にするため、本モジュールは以下の手段を提供します。

• C1INT および C1INTH は全てのメイン割り込み要因を格納します。アプリケーションは、どのカテゴリの割り込みが保留中なのか調べて、最初に処理する割り込み ( 例 : RXIF) を決定できます。

• 全ての FIFO の全てのカテゴリの割り込みは、以下のレジスタに統合されます。 C1RXIFH/L、C1TXIFH/L、C1RXOVIFH/L、C1TXATIFH/Lアプリケーションは 1 つのレジスタを読み出すだけで、保留中の RFIFx ビットを特定できます。これは TFIFx、RXOVIFx、TXATIFx でも同じです。

• レジスタマップでは、以下の割り込みステータス レジスタが 1 つのブロック内に配置されています。 C1VECH/L の後に C1INTH/L、C1RXIFH/L、C1TXIFH/L、C1RXOVIFH/L、C1TXATIFH/L

このため、1 回の読み出しアクセスで全てのステータス レジスタを読み出せます。

Note: アドレスエラーには 2 つのタイプがあり、どちらも dsPIC33CH 上で INTCON3 レジスタ内の CAN ビットをセットする事によってソフトトラップ エラーを生成します。

1 つ目のタイプのアドレスエラーは、FIFO が不正なアドレスを使って設定された場合に発生します。一般的にこのタイプのアドレスエラーは、FIFO が未実装アドレスを指した時に発生します。

2 つ目のタイプのアドレスエラーは、一般的にメッセージのデスティネーションが不正である場合 ( 例 : 直接書き込む事ができないプログラム フラッシュへの受信メッセージの書き込みが試みられた場合 ) に発生します。

DS70005340B_JP - p. 110 2019 Microchip Technology Inc.

Page 111: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

12.5 割り込みフラグ

表 12-1 に割り込みフラグの一覧を示します。この表は、割り込みのクリア方法も示しています。

表 12-1: 割り込みフラグ

フラグ レジスタ カテゴリモジュールによるクリア (1)

アプリケーションによる

クリア読み出し専用 (2) 概要

RFFIF、RFHIF、RFNIF

C1FIFOSTAx FIFO X — — RX FIFO

TFNIF、TFHIF、TFEIF

C1FIFOSTAx FIFO X — — TX FIFO

TXQNIF、TXQEIF

C1TXQSTA TXQ X — — 送信キュー

RXOVIF C1FIFOSTAx FIFO — X — RX オーバーラン

TXATIF C1FIFOSTAx、C1TXQSTA

FIFO、TXQ — X — TX 試行

TEFFIF、 TEFHIF、 TEFNEIF

C1TEFSTA FIFO X — — TEF

TEFOVIF C1TEFSTA FIFO — X — TEF オーバーラン

RFIF[31:1] C1RXIFH/L 統合 — — X 全 RX FIFOTFIF[31:1] C1TXIFH/L 統合 — — X 全 TX FIFORFOVIF[31:1] C1RXOVIFH/L 統合 — — X 全 RX FIFO の

オーバーラン

TFATIF[31:0] C1TXATIFH/L 統合 — — X 全 TX FIFO の試行

RXIF C1INTL メイン — — X RX TXIF C1INTL メイン — — X TX RXOVIF C1INTL メイン — — X RX オーバーラン

TXATIF C1INTL メイン — — X TX 試行

TEFIF C1INTL メイン — — X TEFIVMIF C1INTL メイン — X — 無効メッセージ

WAKIF C1INTL メイン — X — 復帰

CERRIF C1INTL メイン — X — CAN バスエラー

MODIF C1INTL メイン — X — モード変化

TBCIF C1INTL メイン — X — タイムベース カウンタ

SERRIF C1INTL メイン — X — システムエラー

Note 1: これらのフラグは、UINC ビット (C1FIFOCONxL[8]) によって生じた FIFO の割り込み条件が終了した時点でクリアされます。

2: これらのフラグは、下層の割り込みでクリアされる必要があります。

2019 Microchip Technology Inc. DS70005340B_JP - p. 111

Page 112: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

13.0 エラー対応

全ての CAN コントローラは、バス上のメッセージで以下のエラーを検出します。

ビットエラー、スタッフエラー、CRC エラー、フォームエラー、ACK エラー

コントローラがエラーを検出するとエラーフレームが送信され、バス上のメッセージが破損します。エラーフレームは、常に定格ビットレートを使って送信されます。

エラーの検出と障害の切り離しは ISO11898-1:2015 で規定されています。C1TRECL はエラーカウンタ TEC および REC (TERRCNTx、RERRCNTx) を格納します。C1TRECH はエラー警告ビットとエラーステートビットを格納します。TEC と REC は ISO11898-1:2015 仕様に従ってインクリメント / デクリメントします。 図 13-1 に、CAN FD プロトコル モジュールの各種エラーステートを示します。モジュールはエラーアクティブ ステートで起動します。TEC または REC が 127 を超えると、モジュールはエラーパッシブ ステートに移行します。TEC が 255 を超えると、モジュールはバス OFF ステートに移行します。

エラーアクティブ ステート中にモジュールはアクティブエラー フレームを送信します。エラーパッシブ ステート中にモジュールはパッシブエラー フレームを送信します。モジュールがバス OFF ステート中である場合、CxTX ピンは常時 High に駆動され、ドミナントビットは送信されません。

エラーパッシブ ステートへの移行を防ぐため、TEC または REC が 96 に達するとモジュールは CERRIF 割り込みフラグを使ってアプリケーションに警告します (12.3.3「CAN バスエラー割り込み - CERRIF」参照 )。これにより、アプリケーションはモジュールがエラーパッシブ ステートに移行する前に対応を取る事ができます。

図 13-1: エラーステート

バス診断レジスタは、CAN バスの状態に関する追加の情報を提供します。

• C1BDIAG0L および C1BDIAG0H は、受信 / 送信および定格 / データビットレート向けに個別のエラーカウンタを格納しています。これらのカウンタは、C1TRECH/L レジスタ内のカウンタとは異なった動作をします。これらのカウンタはエラーのたびに 1 つずつインクリメントするだけで、デクリメントはしません。 しかし、レジスタに「0」を書き込む事によってカウンタをクリアできます。

• C1BDIAG1H レジスタは、このレジスタが最後にクリアされた後に発生したエラーを追跡します。C1BDIAG1L レジスタは、エラーなしメッセージ カウンタを格納します。レジスタに

「0」を書き込む事によってフラグとカウンタをクリアできます。 エラーなしメッセージ カウンタは、エラーカウンタおよびエラーフラグと共に、バスの品質を判定するために使えます。

128 Occurrencesof the Idle Condition

TEC > 255

TEC > 127 orREC > 127

TEC < 128 andREC < 128

POR

ErrorActive

Error Passive Bus Off

DS70005340B_JP - p. 112 2019 Microchip Technology Inc.

Page 113: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

13.1 バス OFF ステートからのリカバリ

TEC が 255 を超えると、TXBO (C1TRECH[5]) および CERRIF (C1INTL[13]) ビットがセットされます。モジュールはバスOFFステートに移行し、バスOFFリカバリ シーケンスを開始します。 バス OFF リカバリ シーケンスは自動的に開始します。モジュールは、アイドル条件を 128 回検出した後にのみバス OFF ステートから復帰します (「ISO11898-1:2015: Bus Off Management」参照 )。モジュールは、バス OFF ステートへの移行時に全ての送信 FIFO の FRESET をセットする事で、再送信が無制限に試行される事を防ぎます。アプリケーションは CERRIF によってバス OFF ステートへの移行を検知し、必要に応じて新しいメッセージを送信待ちのキューに入れる事ができます。

モジュールは CERRIF ビットによって、および TXBOERR ビット (C1BDIAG1H[7]) のセットによって、バス OFF ステートの終了を知らせます。加えて、C1TRECH/L がリセットされます。

2019 Microchip Technology Inc. DS70005340B_JP - p. 113

Page 114: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

14.0 関連アプリケーション ノート

本書に関連するアプリケーション ノートの一覧を以下に記載します。一部のアプリケーションノートは dsPIC33/PIC24 デバイスファミリ向けではありません。ただし概念は共通しており、変更が必要であったり制限事項が存在するものの利用が可能です。CAN FD プロトコル モジュールに関連する最新のアプリケーション ノートは以下の通りです。

タイトル アプリケーション ノート番号

現在、関連するアプリケーション ノートはありません。 N/A

Note: dsPIC33/PIC24 デバイスファミリ関連アプリケーション ノートとサンプルコードは Microchip 社のウェブサイト (www.microchip.com) でご覧になれます。

DS70005340B_JP - p. 114 2019 Microchip Technology Inc.

Page 115: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

CAN FD プロトコル モジュール

15.0 改訂履歴

リビジョン A (2018 年 2 月 )本書の初版です。

リビジョン B (2019 年 1 月 )ビットの表現を変更しました ( 例 : bit<3:0> を bit[3:0] に変更 )。これは、SDL ソフトウェアで生成された文書と整合させるためです。加えて、以下の内容を変更しました。

• 項目 :- 5.3.7「ビット時間の推奨設定」を追加しました。

- 4.1.4「無効モードの開始と終了」、5.0「設定」、8.0「メッセージのフィルタ処理」を更新しました。

• 図 :- 図 1-2 と図 2-3 を更新しました。

• 表 :- 表 5-3、表 6-1、表 7-1 を更新しました。

• レジスタ :- レジスタ 3-1、レジスタ 3-2、レジスタ 3-44、レジスタ 3-50、レジスタ 3-51、レジスタ

5-1 を更新しました。

• サンプルコード :- 例 6-1、例 7-1、例 9-1 を更新しました。

2019 Microchip Technology Inc. DS70005340B_JP - p. 115

Page 116: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

dsPIC33/PIC24 ファミリ リファレンス マニュアル

NOTE:

DS70005340B_JP - p. 116 2019 Microchip Technology Inc.

Page 117: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

2019 Microchip Technology Inc. DS70005340B_JP - p. 117

本書に記載されているデバイス アプリケーション等に関する

情報は、ユーザの便宜のためにのみ提供されているものであ

り、更新によって無効とされる事があります。お客様のアプ

リケーションが仕様を満たす事を保証する責任は、お客様に

あります。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-4390-2

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 ==

Page 118: CAN FD (Flexible Data-Rate) プロトコル モジュールww1.microchip.com/downloads/jp/DeviceDoc/70005340B_JP.pdfOVERLOAD dsPIC33/PIC24ファミリ リファレンス マニュアル

DS70005340B_JP - p. 118 2019 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