Stellaris® LM3S9B96 Microcontroller

Stellaris® LM3S9B96 Microcontroller
18 章 コントローラ・エリア・ネットワーク(CAN)・モジュール
。
JAJU153
SPMS182D 翻訳版(18 章)
最新の英語版:
http://www.ti.com/lit/gpn/lm3s9b96
この資料は、Texas Instruments Incorporated(TI)が英文で記述した資料を、皆様のご理解の一助として頂くために日本テキサ
ス・インスツルメンツ(日本 TI)が英文から和文へ翻訳して作成したものです。資料によっては正規英語版資料の更新に対応して
いないものがあります。日本 TI による和文資料は、あくまでも TI 正規英語版をご理解頂くための補助的参考資料としてご使用下
さい。製品のご検討およびご採用にあたりましては必ず正規英語版の最新資料をご確認下さい。TI および日本 TI は、正規英語
版にて更新の情報を提供しているにもかかわらず、更新以前の情報に基づいて発生した問題や障害等につきましては如何なる
責任も負いません
JAJU153
18 コントローラ・エリア・ネットワーク(CAN)・モジュール
コントローラ・エリア・ネットワーク(CAN: Controller Area Network)は、電子制御ユニット(ECU: electronic control
unit)の接続用の、マルチキャストの共有シリアル・バス規格です。CAN は電磁ノイズ環境で堅牢性を持つように特化
して設計されており、RS-485 で使用するような平衡型差動ラインや、それ以上に堅牢なツイストペア・ワイヤを利用
することができます。CANは当初は車載用に作られ、 (産業用や医療用等の)多くの組み込み制御アプリケーション
にも利用されています。40 メートルより短いネットワーク長の場合は、最大 1Mbps のビット・レート(伝送速度)が実現
できます。ビット・レートを下げれば、ネットワーク距離をその分だけ長くする(例えば、500 メートルで 125Kbps)ことも
可能です。
Stellaris® LM3S9B96 マイクロコントローラには、次に示すような機能を持つ、2 つの CAN ユニットが組み込まれて
います。
■ CAN プロトコル Ver.2.0 のパート A/パート B
■ 最大 1Mbps のビット・レート
■ 個別の識別子マスクを持つ、32 個のメッセージ・オブジェクト
■ マスカブル割り込み
■ 自動再送信ディセーブル・モード (Time-Triggerd CAN (TTCAN)アプリケーション向け)
■ プログラム可能なループバック・モード(セルフテスト動作用)
■ プログラム可能な FIFO モードにより、複数のメッセージ・オブジェクトの格納が可能
■ CANnTX 信号と CANnRX 信号を介した、外部 CAN トランシーバへのグルーレス接続
Stellaris LM3S9B96 Microcontroller Data Sheet (Rev. D) 18 章 翻訳版
18.1 ブロック図
図 18-1. CAN コントローラのブロック図
18.2 信号の説明
P764 の表 18-1 と P764 の表 18-2 で CAN コントローラの外部信号の一覧を示し、それぞれの機能について説明
します。CAN コントローラ信号はいくつかの GPIO 信号の代替機能であり、リセット後は GPIO 信号として機能しま
す。以下の表中、「ピン・マルチプレクシング / ピン割り当て」の列に、CAN 信号用の GPIO ピンの可能な配置を示
します。CAN コントローラ機能を選択するには、GPIO 代替機能選択 (GPIOAFSEL) レジスタ (P 328)の AFSEL
ビットをセットする必要があります。括弧内の数値は、指定された GPIO ポート・ピンに CAN 信号を割り当てるため
に、GPIO ポート制御 (GPIOPCTL) レジスタ(P 346)の PMCn フィールドに設定する値を示しています。GPIO の
設定の詳細については、P 304 の「General-Purpose Input/Outputs (GPIOs) (汎用入出力 (GPIO))」を参照してく
ださい。
2
表 18-1.コントローラ・エリア・ネットワークの信号 (100LQFP)
CAN1Rx
10
30
34
92
11
31
35
91
47
ピン・マルチプレクシング /
ピン割り当て
PD0 (2)
PA4 (5)
PA6 (6)
PB4 (5)
PD1 (2)
PA5 (5)
PA7 (6)
PB5 (5)
PF0 (1)
CAN1Tx
61
PF1 (1)
ピン
名称
ピン番号
CAN0Rx
CAN0Tx
I
バッファの
タイプ a
TTL
CAN モジュール 0 受信
O
TTL
CAN モジュール 0 送信
I
TTL
CAN モジュール 1 受信
O
TTL
CAN モジュール 1 送信
入出力
説明
a. 「TTL」は、ピンが TTL 互換の電圧レベルを持つことを示します。
表 18-2. コントローラ・エリア・ネットワークの信号(108BGA)
CAN1Rx
G1
L5
L6
A6
G2
M5
M6
B7
M9
ピン・マルチプレクシング /
ピン割り当て
PD0 (2)
PA4 (5)
PA6 (6)
PB4 (5)
PD1 (2)
PA5 (5)
PA7 (6)
PB5 (5)
PF0 (1)
CAN1Tx
H12
PF1 (1)
ピン
名称
ピン番号
CAN0Rx
CAN0Tx
I
バッファの
タイプ a
TTL
CAN モジュール 0 受信
O
TTL
CAN モジュール 0 送信
I
TTL
CAN モジュール 1 受信
O
TTL
CAN モジュール 1 送信
入出力
説明
a. 「TTL」は、ピンが TTL 互換の電圧レベルを持つことを示します。
18.3 機能の説明
Stellaris® CAN コントローラは、CANプロトコルVer. 2.0 (パートAとパートB) に準拠しています。11 ビット識別子(標
準)または 29 ビット識別子(拡張)を使用した、データ・フレーム、リモート・フレーム、エラー・フレーム、オーバー
ロード・フレームのメッセージ転送がサポートされています。転送速度は、最高 1 Mbpsにプログラミング可能です。
CAN モジュールは次に示す 3 つの主要部分で構成されています。
■ CAN プロトコル・コントローラおよび CAN メッセージ・ハンドラ
■ メッセージ・メモリ
■ CAN レジスタ・インターフェイス
データ・フレームには送信データが入っています。これに対してリモート・フレームにはデータがなく、特定のメッセー
ジ・オブジェクトの送信を要求するために使用されます。CAN のデータ・フレーム/リモート・フレームの構成は図 18-2
に示す通りです。
3
図 18-2. CAN のデータ・フレーム/リモート・フレーム
プロトコル・コントローラは CAN バスからのシリアル・データの転送と受信を行い、メッセージ・ハンドラにそのデータを
渡します。次にメッセージ・ハンドラではこの情報を、メッセージ・オブジェクト・メモリにある現在のフィルタリング
(filtering)と識別子に基づいて、適切なメッセージ・オブジェクトにロードします。メッセージ・ハンドラは、CAN バス上
のイベントに基づいた割り込みの生成も担当しています。
メッセージ・オブジェクト・メモリは 同一のメモリ・ブロック 32 個のセットであり、各メッセージ・オブジェクトの現在の構
成、ステータス、実際のデータ(actual data)を保持しています。これらのメモリ・ブロックは、CAN メッセージ・オブジェ
クトのレジスタ・インターフェイスを介してアクセスされます。
Stellaris®メモリ・マップ内ではメッセージ・メモリに直接アクセスできないため、Stellaris® CANコントローラでは、メッ
セージ・オブジェクトとの通信用に 2 つのCAN インターフェイス・レジスタ・セットを介してメッセージ・メモリと通信を行
うためのインターフェイスを提供しています。メッセージ・オブジェクト・メモリに直接アクセスすることはできないため、
各メッセージ・オブジェクトの読み出しまたは書き込みには上記の 2 つのインターフェイスを使用する必要があり
ます。
複数のオブジェクトに新たに処理の必要がある情報がある場合には、2 つのメッセージ・オブジェクト・インターフェイ
スにより CAN コントローラのメッセージ・オブジェクトに並行してアクセスすることが可能です。通常、データの送信と
データの受信それぞれに対して、インターフェイスがひとつずつ使用されます。
18.3.1 初期化
CAN コントローラを使用するには、RCGC0 レジスタ(P 174 参照)を使用してペリフェラル・クロックをイネーブルにす
る必要があります。加えて、RCGC2 レジスタ(P 194 参照)を介して、適切な GPIO モジュールへのクロックをイネーブ
ルにする必要があります。どの GPIO ポートをイネーブルにするかを判断するには、P1151 の表 25-4 を参照してく
ださい。適切なピン用に GPIO AFSEL ビットをセットします(P 328 参照)。GPIOPCTL レジスタの PMCn フィールドを
構成して、CAN 信号を適切なピンに割り当てます。P 346 と、P 1160 の表 25-5 を参照してください。
4
ソフトウェアの初期化は、(ソフトウェアにより、またはハードウェア・リセットによって) CAN 制御 (CANCTL) レジスタ
の INIT ビットをセットするか、バスオフになることで開始されます。バスオフは、トランスミッタのエラー・カウンタが
255 カウントを超えた場合に発生します。INIT がセットされている間は、CAN バスとの間で行われるすべてのメッ
セージ転送が停止され、CANnTX 信号が High に保持されます。初期化状態(ステート)に入っても、CAN コントローラ、
メッセージ・オブジェクト、エラー・カウンタの構成は変化しません。ただし、いくつかの構成レジスタには初期化状態
の時でなければアクセスできません。
CAN コントローラを初期化するには、CAN ビット・タイミング (CANBIT) レジスタをセットして、各メッセージ・オブジェ
クトを構成します。メッセージ・オブジェクトが必要ない場合は、CAN IFn アービトレーション 2 (CANIFnARB2) レ
ジスタの MSGVAL ビットをクリアすることで、メッセージ・オブジェクトを「無効」とラベリングします。そうでない場合は、
メッセージ・オブジェクト全体を初期化する必要があります。これは、メッセージ・オブジェクトのフィールドに有効な情
報がないと、予期しない結果になる可能性があるためです。CANBIT レジスタと CAN ボー・レートのプリスケーラ拡
張(CANBRPE) レジスタにアクセスしてビット・タイミングを構成するには、CANCTL レジスタの INIT ビットと CCE
ビットの両方をセットする必要があります。初期化状態(ステート)を抜けるには、INIT ビットをクリアする必要があり
ます。その後、 (バスがアイドル状態であることを示す)連続した 11 個のリセッシブ・ビットのシーケンスが発生するの
を待機してから、、内部ビット・ストリーム・プロセッサ(BSP)が CAN バス上のデータ転送に同期し、バス・アクティビ
ティに参加してメッセージ転送を開始します。メッセージ・オブジェクトの初期化では CAN が初期化状態(ステート)に
ある必要はなく、オンザフライで初期化できます。ただし、メッセージ転送が開始される前に、すべてのメッセージ・オ
ブジェクトを特定の識別子に対して構成するか、無効と設定する必要があります。通常の動作中にメッセージ・オブ
ジェクトの構成を変更するには、CANIFnARB2 レジスタの MSGVAL ビットをクリアにして、変更中にはメッセージ・オ
ブジェクトが無効であることを示す必要があります。構成が完了したら再度 MSGVAL ビットをセットして、メッセージ・オ
ブジェクトが再び有効になったことを示します。
18.3.2 動作
メッセージ RAM 内のメッセージ・オブジェクトにアクセスするために、2 組の CAN インターフェイス・レジスタ
(CANIF1x および CANIF2x) が使用されます。CAN コントローラでは、メッセージ RAM とレジスタ間の転送(送受
信)を調整します。この 2 組は互いに独立した完全に同一のレジスタであり、トランザクションのキューイングに使用で
きます。通常、一方のインターフェイスをデータの送信、もう一方のインターフェイスをデータの受信に使用します。
CAN モジュールが初期化され、CANCTL レジスタの INIT ビットがクリアされると、CAN モジュールが CAN バスに
同期して、メッセージ転送を開始します。各メッセージは受信されるとメッセージ・ハンドラのフィルタ処理を受け、フィ
ルタを通過できた場合は CAN IFn コマンド要求(CANIFnCRQ) レジスタの MNUM ビットで指定されたメッセージ・
オブジェクトに格納されます。(すべてのアービトレーション・ビット、データ長コード、8 個のデータ・バイト等の)メッセー
ジ全体がメッセージ・オブジェクトに格納されます。識別子マスク(Identifier Mask)(CAN IFn マスク 1 レジスタと
CAN IFn マスク 2 (CANIFnMSKn) レジスタの MSK ビット)を使用している場合は、マスクされて「ドントケア(任意)」
になったアービトレーション・ビットがメッセージ・オブジェクト内で上書きされる可能性があります。
CPU では CAN インターフェイス・レジスタを介して、どの時点でも各メッセージの読み出しや書き込みを行うことがで
きます。メッセージ・ハンドラにより、同時アクセスの場合にもデータの一貫性が保証されます。
5
メッセージ・オブジェクトの送信は、CAN ハードウェアを管理しているソフトウェアに制御されています。メッセージ・オ
ブジェクトは、1 回限りのデータ転送に使用することも、1 回限りでなく定期的な応答に使用される永続的なメッセー
ジ・オブジェクトとして使用することもできます。永続的なメッセージ・オブジェクトはすべてのアービトレーションと制御
のセットアップを持っており、アップデートされるのはデータ・バイトのみです。送信の開始時には、CAN 送信要求 n
(CANTXRQn) レジスタの適切な TXRQST ビットと、CAN 新規データ n (CANNWDAn) レジスタの NEWDAT ビット
がセットされます。(メッセージ・オブジェクトの数が十分でない場合に)同じメッセージ・オブジェクトに数個の送信メッ
セージが割り当てられている場合は、このメッセージの送信要求が行われる前にメッセージ・オブジェクト全体を構成
する必要があります。
任意の数のメッセージ・オブジェクトの送信が同時に要求されることもありますが、その場合は各メッセージ・オブジェ
クトの内部優先度に従って送信されます。内部優先度はメッセージ・オブジェクトのメッセージ識別子 (MNUM) に基
づいており、1 が最高優先度、32 が最低優先度となります。メッセージはどの時点でもアップデートしたり、「無効」に
セットすることが可能です。これは、要求されたメッセージの送信が保留にされている場合でも同様です。保留にされ
ていたメッセージの送信が開始される前にそのメッセージがアップデートされると、更新前の古いデータは破棄されま
す。メッセージ・オブジェクトの構成によっては、マッチング識別子の付いたリモート・フレームを受信することで、自律
的にメッセージの送信が要求されることもあり、マッチング・リモート・フレームを受信することで、送信を自動的に開
始できます。このモードをイネーブルにするには、CAN IFn メッセージ制御 (CANIFnMCTL) レジスタの RMTEN
ビットをセットします。受信されたマッチング・リモート・フレームにより、TXRQST ビットがセットされ、メッセージ・オブジ
ェクトが自動的にそのデータを転送したり、リモート・フレームが要求されたことを通知する割り込みを生成したりしま
す。リモート・フレームは厳密な意味での単体のメッセージ識別子であることもあれば、メッセージ・オブジェクト内で
指定された範囲の値であることもあります。CAN マスク・レジスタ群 CANIFnMSKn では、どのフレーム・グループが
リ モ ー ト ・ フ レ ー ム 要 求 と し て 認 識 さ れ る か を 構 成 し ま す 。 CANIFnMCTL レ ジ ス タ の UMASK ビ ッ ト で は
CANIFnMSKn レジスタの MSK ビットをイネーブルにして、どのフレームがリモート・フレーム要求として認識されるか
についてのフィルタ処理を行います。リモート・フレーム要求が 29 ビットの拡張識別子によりトリガされるされる場合
は、CANIFnMSK2 レジスタの MXTD ビットをセットする必要があります。
18.3.3 メッセージ・オブジェクトを送信する
CAN モジュールの内部送信シフト・レジスタがロード可能であり、レジスタとメッセージ RAM 間でデータ転送が発生し
ていない場合は、有効なメッセージ・オブジェクトのうち最高優先度かつ未処理(保留中)の送信リクエストを持つもの
が、メッセージ・ハンドラによって送信シフト・レジスタにロードされ、送信が開始されます。CANNWDAn レジスタに
ある、メッセージ・オブジェクトの NEWDAT ビットがクリアされます。送信が正常に完了した後、かつ送信の開始以降に
メッセージ・オブジェクトに新規データが書き込まれなかった場合は、CANTXRQn レジスタの TXRQST ビットがクリア
されます。CAN コントローラが正常なメッセージ・オブジェクトの送信完了で割り込みを発生するように構成されてい
る場合は、(CAN IFn メッセージ制御 (CANIFnMCTL) レジスタの TXIE ビットがセットされます)、送信が正常に完
了した後に CANIFnMCTL レジスタの INTPND ビットがセットされます。CAN モジュールがアービトーレションで負け
るか、送信中にエラーが発生した場合は、CAN バスが再度フリーになった直後にメッセージが再送信されます。一方、
より高い優先度を持つメッセージの送信が要求された場合は、メッセージはそれぞれの優先度順に送信されます。
6
18.3.4 送信メッセージ・オブジェクトを構成する
次の手順は、送信メッセージ・オブジェクトの構成方法を解説しています。
1. CAN IFn コマンド・マスク (CANIFnCMASK) レジスタでは、次のような手順になります。
■ CANIFnCMASK レジスタへの書き込みの指定用に WRNRD ビットをセットし、MASK ビットを使用してメッセージ・オ
ブジェクトの IDMASK、DIR、MXTD を CAN IFn レジスタに転送するかどうかを指定します。
■ ARB ビットを使用して、メッセージ・オブジェクトの ID、DIR、XTD、MSGVAL をインターフェイス・レジスタに転送す
るかどうかを指定します。
■ CONTROL ビットを使用して、インターフェイス・レジスタに制御ビットを転送するかどうかを指定します。
■ CLRINTPND ビットを使用して、CANIFnMCTL レジスタの INTPND ビットをクリアするかどうかを指定します。
■ NEWDAT ビットを使用して、CANNWDAn レジスタの NEWDAT ビットをクリアするかどうかを指定します。
■ DATAA ビットと DATAB ビットを使用して、どちらのビットを転送するかを指定します。
2. CANIFnMSK1 レジスタでは、MSK[15:0] ビットを使用して、受容フィルタ処理用(acceptance filtering)に 29
ビットと 11 ビットどちらのメッセージ識別子のビットを使用するかを指定します。このレジスタの MSK[15:0]は 29
ビットのメッセージ識別子のビット [15:0]用に使用され、11 ビット識別子には使用されないことに注意してくださ
い。値を 0x00 にすると、すべてのメッセージが受容フィルタ処理を通過できるようになります。また、これらのビッ
トを受容フィルタ処理で使用するには、CANIFnMCTL レジスタの UMASK ビットをセットしてこれらのビットをイ
ネーブルにする必要があります。
3. CANIFnMSK2 レジスタでは、 MSK[12:0] ビットを使用して、受容フィルタ処理用に 29 ビットと 11 ビットどちらの
メッセージ識別子のビットを使用するかを指定します。MSK[12:0]が 29 ビットのメッセージ識別子のビット[28:16]
用に使用され、MSK[12:2]が 11 ビットのメッセージ識別子のビット[10:0]用に使用されることに注意してください。
MXTD ビットと MDIR ビットを使用して、XTD と DIR を受容フィルタ処理に使用するかどうかを指定します。値を
0x00 にすると、すべてのメッセージが受容フィルタ処理を通過できるようになります。また、これらのビットを受容
フィルタ処理で使用するには、CANIFnMCTL レジスタの UMASK ビットをセットしてこれらのビットをイネーブル
にする必要があります。
4. 29 ビット識別子の場合は、メッセージ識別子のビット[15:0]用に使用するために CANIFnARB1 レジスタの
ID[15:0]を構成し、メッセージ識別子のビット[28:16]用に使用するために CANIFnARB2 レジスタの ID[12:0]を
構成します。拡張識別子を示すために XTD ビットをセットし、送信を示すために DIR ビットをセットし、メッセー
ジ・オブジェクトが有効であることを示すために MSGVAL ビットをセットします。
5. 11 ビ ッ ト 識 別 子 の 場 合 は 、 CANIFnARB1 レ ジ ス タ を 無 視 し て 、 メ ッ セ ー ジ 識 別 子 の ビ ッ ト [10:0] 用 に
CANIFnARB2 レジスタの ID[12:2]を構成します。標準の識別子を示すために XTD ビットをクリアし、送信を示
すために DIR ビットをセットし、メッセージ・オブジェクトが有効であることを示すために MSGVAL ビットをセットし
ます。
6. CANIFnMCTL レジスタでは、次のような手順になります。
■ オプションで、受容フィルタ処理用に UMASK ビットをセットして、マスク(CANIFnMSK1 レジスタと CANIFnMSK2
レジスタで指定された MSK、MXTD、MDIR)をイネーブルにします。
■ オプションで、TXIE ビットをセットして、正常な送信完了後に INTPND ビットがセットされるようにします。
■ オプションで、RMTEN ビットをセットして、マッチング・リモート・フレームの受信時に TXRQST ビットがセットされ、
自動送信を可能にします。
7
■ 単一のメッセージ・オブジェクト用に EOB ビットをセットします。
■ DLC[3:0]フィールドを構成して、データ・フレームのサイズを指定します。この構成中には、NEWDAT ビット、
MSGLST ビット、INTPND ビット、TXRQST ビットをセットしないようにしてください。
7. 送信するデータを CAN IFn Data (CANIFnDA1、CANIFnDA2、CANIFnDB1、CANIFnDB2) レジスタにロー
ドします。CAN データ・フレームのバイト 0 は CANIFnDA1 レジスタの DATA[7:0]に格納されます。
8. 送信されるメッセージ・オブジェクトの番号を、CAN IFn コマンド要求(CANIFnCRQ) レジスタの MNUM フィー
ルドでプログラムします。
9. すべてが正しく構成されたら、CANIFnMCTL レジスタの TXRQST ビットをセットします。このビットがセットされ
ると、優先度とバスが使用できるかどうかに応じて、メッセージ・オブジェクトが送信可能になります。マッチング・
リモート・フレームが受信されている場合は、CANIFnMCTL レジスタの RMTEN ビットをセットすることによって
もメッセージの送信が開始できることに注意してください。
18.3.5 送信メッセージ・オブジェクトのアップデート
CPU では、CAN インターフェイス・レジスタを介していつでも、送信メッセージ・オブジェクトのデータ・バイトをアップ
デートできます。CANIFnARB2 レジスタの MSGVAL ビットと CANIFnMCTL レジスタの TXRQST ビットのどちらも、
アップデートの前にクリアする必要はありません。
アップデートの必要があるデータ・バイトがある場合でも、そのレジスタの内容がメッセージ・オブジェクトに転送され
る前に、対応する CANIFnDAn/CANIFnDBn レジスタの 4 バイトすべてが有効である必要があります。CPU が新
規データ・バイトを書き込む前に、CPU が 4 バイトすべてを CANIFnDAn/CANIFnDBn レジスタに書き込むか、メッ
セージ・オブジェクトが CANIFnDAn/CANIFnDBn レジスタに転送される必要があります。
メッセージ・オブジェクト内のデータをアップデートするのみの場合は、CANIFnMSKn レジスタの WRNRD ビット、
DATAA ビット、DATAB ビットがセットされた後、アップデートされたデータが CANIFnDA1 レジスタ、CANIFnDA2 レ
ジスタ、CANIFnDB1 レジスタ、CANIFnDB2 レジスタに書き込まれ、その後メッセージ・オブジェクトの番号が CAN
IFn コマンド要求(CANIFnCRQ) レジスタの MNUM フィールドに書き込まれます。可能な限り早期に新規データの
送信を開始するには、CANIFnMSKn レジスタに TXRQST ビットをセットします。
データがアップデートされている間にすでに進行している可能性のある送信の終わりに、CANIFnMCTL レジスタの
TXRQST ビットがクリアされないようにするには、CANIFnMCTL レジスタに NEWDAT ビットと TXRQST ビットを同
時にセットする必要があります。これらのビットが同時にセットされると、新規の送信が開始されてすぐに NEWDAT が
クリアされます。
18.3.6 受信メッセージ・オブジェクトの受容(Accepting)
着 信 メ ッ セ ー ジ の ア ー ビ ト レ ー シ ョ ン お よ び 制 御 フ ィ ー ル ド (CANIFnARB2 の ID ビ ッ ト と XTD ビ ッ ト と 、
CANIFnMCTL レジスタの RMTEN ビットと DLC[3:0] ビット)が完全に CAN コントローラにシフトされると、コントロー
ラのメッセージ処理機能がメッセージ RAM のスキャンを開始し、有効なマッチング・メッセージ・オブジェクトを検索し
ます。メッセージ RAM をスキャンしてマッチング・メッセージ・オブジェクトを検索するために、コントローラでは
CANIFnMSKn レジスタのマスク・ビットを介してプログラムされ、CANIFnMCTL レジスタの UMASK ビットを使用し
てイネーブルにされた受容フィルタ処理(acceptance filtering)を使用します。オブジェクト 1 から始まる有効な各メッ
8
セージ・オブジェクトが着信メッセージと比較され、メッセージ RAM 内のマッチング・メッセージ・オブジェクトを探しま
す(locate)。マッチング(一致)が発生すると、スキャニングが停止し、受信されたのがデータ・フレームかリモート・フ
レームかに従って、メッセージ・ハンドラが処理を開始します。
18.3.7 データ・フレームの受信
メッセージ・ハンドラは、CAN コントローラの受信シフト・レジスタからのメッセージをメッセージ RAM 内のマッチング・
メッセージ・オブジェクトに格納します。データ・バイトはすべてアービトレーション・ビットであり、DLC ビットはすべて対
応するメッセージ・オブジェクトに格納されます。このように、アービトレーション・マスクが使用されている場合でも、
データ・バイトは識別子に接続されています。CANIFnMCTL レジスタの NEWDAT ビットがセットされ、新規データが
受信されたことを通知します。メッセージが受信されたことをコントローラに通知するためのメッセージ・オブジェクトを
読み出した時点で、CPU ではこのビットをクリアする必要があります。これにより、バッファが以降のメッセージを受信
できるようになります。CAN コントローラがメッセージを受信し、かつ NEWDAT ビットがすでにセットされている場合は、
CANIFnMCTL レジスタの MSGLST ビットがセットされ、直前のデータが失われた(lost)ことが通知されます。フ
レームが正常に受信された時にシステムが割り込みを要求する場合は、CANIFnMCTL レジスタの RXIE ビットを
セットする必要があります。これにより、同じレジスタの INTPND ビットがセットされ、メッセージを受信した直後のメッ
セージ・オブジェクトを CANINT レジスタがポイントするようにします。リモート・フレームの送信が行われないように
するには、このメッセージ・オブジェクトの TXRQST ビットをクリアする必要があります。
18.3.8 リモート・フレームの受信
リモート・フレームはデータを保持しておらず、どのオブジェクトを送信する必要があるかを指定します。リモート・フ
レームが受信された場合は、次に示すマッチング・メッセージ・オブジェクトの 3 つの異なる構成を考慮する必要があ
ります。
表 18-3. メッセージ・オブジェクトの構成
CANIFnMCTL での構成
説明
■ DIR = 1 (方向(direction) = 送信); CANIFnARB2 レジス マッチング・リモート・フレームの受信時に、このメッセージ・
タでプログラミングされる
オブジェクトの TXRQST ビットがセットされます。メッセージ・
オブジェクトの残りは変更されないままであり、コントローラ
■ RMTEN = 1 (フレームの受信時に CANIFnMCTL レジスタ が自動的にメッセージ・オブジェクト内のデータを可能な限り
早期に転送します。
の TXRQST ビットをセットして、送信をイネーブルにする)
■ UMASK = 1 か 0
■ DIR = 1 (方向(direction) = 送信; CANIFnARB2 レジスタ マッチング・リモート・フレームの受信時に、このメッセージ・
でプログラミングされる
オブジェクトの TXRQST ビット は変更されないままになり、
リモート・フレームは無視されます。このリモート・フレームは
■ RMTEN = 0 (フレームの受信時に CANIFnMCTL レジスタ ディセーブルになり、データは転送されず、リモート・フレー
ムが発生したことも通知されません。
の TXRQST ビットを変更しない)
■ UMASK = 0 (CANIFnMSKn レジスタのマスクを無視)
■ DIR = 1 (方向(direction) = 送信); CANIFnARB2 レジス マッチング・リモート・フレームの受信時に、このメッセージ・
タでプログラミングされる
オブジェクトの TXRQST ビットはクリアされます。シフト・レジ
スタからのアービトレーションと制御フィールド(ID + XTD +
■ RMTEN = 0 (フレームの受信時に CANIFnMCTL レジスタ RMTEN + DLC)はメッセージ RAM 内のメッセージ・オブジェク
トに格納され、このメッセージ・オブジェクトの NEWDAT ビット
の TXRQST ビットを変更しない)
がセットされます。メッセージ・オブジェクトのデータ・フィール
ドは変更されないままになり、リモート・フレームは受信され
■ UMASK = 1 (受容フィルタ処理用に(CANIFnMSKn レジス
たデータ・フレームと同様に処理されます。このモードは、
9
タの MSK、MXTD、MDIR) を使用)
Stellaris®コントローラが使用可能なデータを準備していない
CAN デバイスからの、リモート・データ要求を受ける際に役
立ちます。ソフトウェアでデータを書き込んで(fill)、フレーム
に手動で答える必要があります。
18.3.9 受信/送信の優先度
メッセージ・オブジェクトの受信/送信の優先度は、メッセージの番号によって制御されます。メッセージ・オブジェクト 1
の優先度が最高であり、メッセージ・オブジェクト 32 の優先度が最低になります。複数の送信要求が保留になってい
る場合は、メッセージ番号の最も小さいメッセージ・オブジェクトから順番にメッセージ・オブジェクトが送信されます。
この優先度の付け方は、CAN バスによって実施される、メッセージ識別子の優先度の付け方とは別のものです。そ
の結果、メッセージ・オブジェクト 1 とメッセージ・オブジェクト 2 の両方が有効な送信対象メッセージを持っている場合
は、メッセージ・オブジェクト自体の中のメッセージ識別子に関係なく、メッセージ・オブジェクト 1 が常に最初に送信さ
れます。
18.3.10 受信メッセージ・オブジェクトを構成する
次に示す手順は、受信メッセージ・オブジェクトを構成する方法を解説しています。
1. CAN IFn コマンド・マスク (CANIFnCMASK) レジスタを、メッセージ RAM への書き込みを指定するために
WRNRD ビットをセットするという点以外は、P 767 のセクションに記載の“Configuring a Transmit Message
Object” で説明している通りにプログラムします。
2. CANIFnMSK1 レジスタと CANIFnMSK2 レジスタを page 767 のセクションに記載の“Configuring a Transmit
Message Object” で説明している通りにプログラムして、受容フィルタ処理にどのビットが使用されるかを構成
します。これらのビットが受容フィルタ処理で使用されるためには、CANIFnMCTL レジスタの UMASK ビットを
セットすることでこれらのビットをイネーブルにする必要があることに注意してください。
3. CANIFnMSK2 レジスタで、MSK[12:0] ビットを使用して、29 ビットまたは 11 ビットのメッセージ識別子のどの
ビットが受容フィルタ処理に使用されるかを指定します。11 ビットのメッセージ識別子のビット[10:0]用に
MSK[12:2] が使用されるのに対して、MSK[12:0]が 29 ビットのメッセージ識別子のビット[28:16]用に使用される
ことに注意してください。MXTD ビットと MDIR ビットを使用して、XTD と DIR を受容フィルタ処理に使用するかど
うかを指定します。値を 0x00 にすると、すべてのメッセージが受容フィルタ処理を通過できるようになります。ま
た、これらのビットが受容フィルタ処理で使用されるためには、CANIFnMCTL レジスタの UMASK ビットをセット
することにより、これらのビットをイネーブルにする必要があることにも注意してください。
4. CANIFnARB1 レジスタと CANIFnARB2 レジスタを、P 767 のセクションに記載の“Configuring a Transmit
Message Object”で説明している通りにプログラムして、受信されるメッセージ識別子用に XTD ビットと ID ビット
をプログラムします。MSGVAL ビットをセットして有効なメッセージを示し、DIR ビットをクリアして受信を指定し
ます。
5. CANIFnMCTL レジスタでは、次のようにします。
■ オプションで、UMASK ビットをセットして、受容フィルタ処理用にマスク(CANIFnMSK1 レジスタと CANIFnMSK2
レジスタに指定されている MSK、MXTD、MDIR)をイネーブルにします。
■ オプションで、RXIE ビットをセットして、正常な受信完了後に INTPND ビットをセットできるようにします。
■ RMTEN ビットをクリアして、TXRQST ビットが変更されないようにします。
■ 単一のメッセージ・オブジェクト用に、EOB ビットをセットします。
■ DLC[3:0]フィールドを構成して、データ・フレームのサイズを指定します。
10
この構成中には、NEWDAT、MSGLST、INTPND、TXRQST ビットをセットしないように注意してください。
6. CAN IFn コマンド要求(CANIFnCRQ) レジスタの MNUM フィールドで受信されるメッセージ・オブジェクトの番
号をプログラムします。マッチング・フレームが CAN バスで使用可能になるとすぐ、メッセージ・オブジェクトの受
信が始まります。
メッセージ・ハンドラがデータ・フレームをメッセージ・オブジェクトに格納する際には、受信されたデータ長コードを
DLC に 、 8 個 の デ ー タ ・ バ イ ト を CANIFnDA1 レ ジ ス タ 、 CANIFnDA2 レ ジ ス タ 、 CANIFnDB1 レ ジ ス タ 、
CANIFnDB2 レジスタに格納します。CAN データ・フレームのバイト 0 は、CANIFnDA1 レジスタの DATA[7:0]に格
納されます。データ長コードが 8 より少ない場合は、メッセージ・オブジェクトの残りのバイトが未指定の値により上書
きされます。
CAN マスク・レジスタを使用すると、データ・フレームのグループをメッセージ・オブジェクトで受信することが可能にな
ります。CAN マスク・レジスタ群 CANIFnMSKn では、どのフレーム・グループがメッセージ・オブジェクトで受信され
るかを構成します。CANIFnMCTL レジスタの UMASK ビットでは、CANIFnMSKn レジスタの MSK ビットをイネーブ
ルにして、どのフレームを受信するかをフィルタリングします。このメッセージ・オブジェクトが 29 ビット拡張識別子の
みを想定している場合は、CANIFnMSK2 レジスタの MXTD ビットをセットする必要があります。
18.3.11 受信されたメッセージ・オブジェクトの処理
データの一貫性がメッセージ・ハンドラのステート・マシンによって保証されているため、CPU では受信されたメッセー
ジを、CAN インターフェイス・レジスタを介していつでも読み出すことができます。
通常、CPU では最初に 0x007F を CANIFnCMSK レジスタに書き込み、メッセージ・オブジェクトの番号を
CANIFnCRQ レジスタに書き込みます。その組み合わせでは、受信されたメッセージ全体が、メッセージ RAM から
メッセージ・バッファ・レジスタ(CANIFnMSKn、CANIFnARBn、CANIFnMCTL)に転送されます。さらに、NEWDAT
ビットと INTPND ビットがメッセージ RAM 内でクリアされ、メッセージが読み出されたことを認証(アクノリッジ)し、メッ
セージ・オブジェクトに生成された、未処理(保留)の割り込みをクリアします。
メッセージ・オブジェクトが受容フィルタ処理にマスクを使用する場合は、CANIFnARBn レジスタでは受信されたメッ
セージ用に完全な、マスキングされていない(unmasked) ID を示します。
CANIFnMCTL レジスタの NEWDAT ビットは、このメッセージ・オブジェクトが最後に読み出されて以降、新規メッ
セージが受信されたかどうかを示します。CANIFnMCTL レジスタの MSGLST ビットでは、このメッセージ・オブジェ
クトが最後に読み出されて以降、複数のメッセージが受信されたかどうかを示します。MSGLST は自動的にはクリア
されないため、ソフトウェアが MSGLST のステータスを読み出してからクリアされる必要があります。
リモート・フレームを使用すると、CPU が CAN バス上の別の CAN ノードからの新規データを要求することができま
す。受信されたオブジェクトの TXRQST ビットをセットすると、受信されたオブジェクトの識別子を使用してリモート・フ
レームが送信されます。このリモート・フレームは他の CAN ノードをトリガして、マッチング・データ・フレームの送信を
開始します。リモート・フレームが送信できるようになる前にマッチング・データ・フレームが受信された場合は、
TXRQST ビットは自動的にリセットされます。これにより、CAN バス上の他のデバイスが想定よりわずかに早くデー
タを送信していた場合でも、データの損失(loss)が発生しないようになります。
11
18.3.11.1 FIFO バッファの構成
CANIFnMCTL レジスタの EOB ビットという例外を除けば、FIFO バッファ中の受信メッセージ・オブジェクトの構成
は単一の受信メッセージ・オブジェクトと同じです(P 770 の“Configuring a Receive Message Object”を参照)。2 つ
以上のメッセージ・オブジェクトを連結して FIFO バッファに入れるには、これらのメッセージ・オブジェクトの識別子と
マスク(使用する場合)をプログラムして、マッチングする値にする必要があります。メッセージ・オブジェクトの暗黙の
優先度により、メッセージ・オブジェクトの番号が最も小さいメッセージ・オブジェクトが FIFO バッファでの最初のメッ
セージ・オブジェクトになります。FIFO バッファのすべてのメッセージ・オブジェクトの EOB ビットは、最後の一つを除
いてクリアする必要があります。FIFO バッファの最後のメッセージ・オブジェクトの EOB ビットがセットされ、バッファ
の最後のエントリであることを示します。
18.3.11.2 FIFO バッファを使用したメッセージの受信
FIFO バッファ内の一致する識別子を使用して受信されたメッセージは、最もメッセージ番号の小さいメッセージ・オブ
ジェクトから始まるように格納されます。 FIFO バッファのメッセージ・オブジェクトにメッセージが格納された場合は、
このメッセージ・オブジェクトの CANIFnMCTL レジスタ・ビットの NEWDAT がセットされます。 EOB がクリアされてい
る間に NEWDAT がセットされると、メッセージ・オブジェクトがロックされ、CPU が NEWDAT ビットをクリアするまでメッ
セージ・ハンドラによる書き込みができなくなります。この FIFO バッファの最後のメッセージ・オブジェクトに達するま
で、メッセージは FIFO バッファに格納されます。 NEWDAT ビットのクリアにより、先行するメッセージ・オブジェクトす
べてが解放されるまで、この FIFO バッファに追加されるすべてのメッセージは FIFO バッファの最後のメッセージ・オ
ブジェクトに書き込まれます。したがって、直前のメッセージは上書きされます。
18.3.11.3 FIFO バッファからの読み出し
CPU が、メッセージ・オブジェクトの番号を CANIFnCRQ レジスタに書き込むことにより、メッセージ・オブジェクトの
内容を FIFO バッファから転送する場合は、CANIFnMCTL レジスタの NEWDAT ビットと INTPEND ビットが読み出し
後にクリアされるように CANIFnCMSK レジスタの TXRQST ビットと CLRINTPND ビットをセットする必要があります。
CANIFnMCTL レジスタのこれらのビットの値は常に、ビットがクリアされる前のメッセージ・オブジェクトのステータ
スを反映しています。FIFO バッファを確実に正しく機能させるために、CPU ではメッセージ・オブジェクトの読み出し
を、最も小さいメッセージ番号を持つメッセージ・オブジェクトから開始する必要があります。FIFO バッファから読み出
す場合は、新規に受信されたメッセージが、CANIFnMCTL レジスタの NEWDAT ビットのクリアが必要になる任意の
メッセージ・オブジェクトの位置に置かれる可能性があることを、ユーザー側で認識しておかないと、その結果、FIFO
内の受信されたメッセージの順番が保証されなくなります。
P 773 の図 18-3 は、FIFO バッファに連結されたメッセージ・オブジェクトのセットが CPU によってどのように処理さ
れる可能性があるかを示しています。
図 18-3. FIFO バッファ内のメッセージ・オブジェクト
12
18.3.12 割り込みの処理
いくつかの割り込みが保留になっている場合は、CAN 割り込み (CANINT) レジスタはそれらの割り込みの時系列
的な順番を考慮せずに、最高の優先度を持つ保留(未処理)の割り込みをポイントします。ステータス割り込みの優
13
先度が最高となります。メッセージ割り込み間では、メッセージ・オブジェクトの、最も小さいメッセージ番号を持つ割り
込みの優先度が最高となります。メッセージ割り込みは、CANIFnMCTL レジスタにあるメッセージ・オブジェクトの
INTPND ビットをクリアするか、CAN ステータス (CANSTS) レジスタを読み出すことによってクリアされます。ス
テータス割り込みは、CANSTS レジスタを読み出すことでクリアされます。
CANINT レジスタの割り込み識別子 INTID は、割り込み要因を示します。保留の割り込みがない場合は、レジス
タは 0x0000 として読み出されます。INTID フィールドの値が 0 とは異なる場合は、割mり込みが保留になっていま
す。IE ビットが CANCTL レジスタにセットされている場合は、割り込みコントローラへの割り込みラインがアクティブ
になります。割り込みラインは、すべての割り込み要因がクリアされることにより INTID フィールドが 0 になる(このと
き割り込み要因はリセットされます)か、IE がクリアされて CAN コントローラからの割り込みがディセーブルになるまで
アクティブのままになります。
CANINT レジスタの INTID フィールドは、最高の割り込み優先度を持つ保留のメッセージ割り込みをポイントします。
CANCTL レジスタの SIE ビットは、CANSTS レジスタの RXOK ビット、TXOK ビット、LEC ビットの変更が割り込み
を発生させるかどうかを制御します。CANCTL レジスタの EIE ビットは、CANSTS レジスタの BOFF ビットと EWARN
ビットの変更が割り込みを発生させるかどうかを制御します。CANCTL レジスタの IE ビットでは、CAN コントローラ
からの任意の割り込みが、割り込みコントローラに対して実際に割り込みを生成するかどうかを制御します。
CANCTL レジスタの IE ビットがクリアされた場合でも、CANINT レジスタはアップデートされますが、割り込みは
CPU に通知されません。
CANINT レジスタの 0x8000 という値は、CAN モジュールが CANSTS レジスタを変更したかに関わらず、アップ
デートしたために割り込みが保留になっていることを通知します。これは、エラー割り込みまたはステータス割り込み
が生成されたことを示しています。CANSTS レジスタへの書き込みアクセスにより、同じレジスタの RXOK ビット、
TXOK ビット、LEC ビットをクリアできます。ただし、ステータス割り込みのソースをクリアするには、CANSTS レジス
タを読み出す方法しかありません。
割り込みのソースは、割り込み処理中に 2 つの方法で判定できます。第一の方法は、CANINT レジスタの INTID
ビットを読み出して保留になっている最高優先度の割り込みを判定することであり、第二の方法は、CAN メッセージ
割り込み保留 (CANMSGnINT) レジスタを読み出して保留の割り込みを持つすべてのメッセージ・オブジェクトを見
ることです。
割り込みのソースであるメッセージを読み出す割り込みサービス・ルーチンでは、CANIFnCMSK レジスタの
CLRINTPND ビットをセットすることにより、メッセージを読み出して、同時にメッセージ・オブジェクトの INTPND ビット
をクリアにできます。INTPND ビットがクリアにされると、CANINT レジスタでは、保留の割り込みを持つ次のメッ
セージ・オブジェクト用のメッセージ番号を持ちます。
18.3.13 テスト・モード
提供されるテスト・モードを使用すると、各種方式の診断が実行できるようになります。CANCTL レジスタの TEST
ビットをセットすることにより、テスト・モードに入ります。テスト・モードでは、CAN テスト (CANTST)・レジスタの
TX[1:0] ビット、LBACK ビット、SILENT ビット、BASIC ビットを使用して、CAN コントローラを各種診断モードにす
14
ることができます。CANTST レジスタの RX ビットを使用すると、CANnRX 信号のモニターが可能になります。すべて
の CANTST レジスタ機能は、TEST ビットがクリアになるとディセーブルになります。
18.3.13.1 サイレント・モード
サイレント・モードは、ドミナント・ビット(アクノリッジ・ビット、エラー・フレーム)を送信することにより、CAN バスに影響
を与えずに CAN バス上のトラフィックを解析するために使用できます。CANTST レジスタの SILENT ビットをセット
することにより、CAN コントローラがサイレント・モードになります。 サイレント・モードでは、CAN コントローラは有効
なデータ・フレームと有効なリモート・フレームを受信できますが、CAN コントローラが CAN バス上で送信するのはリ
セッシブ・ビットのみであり、送信を開始することはできません。CAN コントローラにドミナント・ビット (ACK ビット、
オーバーロード・フラグ、アクティブなエラー・フラグ)の送信要求がある場合は、CAN コントローラがこのドミナント・
ビットをモニターできるように、そのビットが内部的にルーティングされます(rerouted)。ただし、CAN バスはリセッシブ
状態のままになります。
18.3.13.2 ループバック・モード
ループバック・モードは、セルフテスト機能に役立ちます。ループバック・モードでは、CAN コントローラが内部的に
CANnTX 信号を CANnRX 信号にルーティングし、送信されたメッセージを受信されたメッセージとして処理し、(受容
フィルタ処理を通過できた場合は)それらをメッセージ・バッファに格納します。CAN コントローラは、CANTST レジス
タの LBACK ビットをセットすることにより、ループバック・モードになります。外部からの影響を受けないように、CAN
コントローラは、ループバック・モードではアクノリッジ・エラー(データ/リモート・フレームのアクノリッジ・スロットでサン
プリングされたリセッシブ・ビット)を無視します。CANnRX 信号の実際の値は、CAN コントローラでは無視されます。
送信されたメッセージは、CANnTX 信号上でモニターできます。
18.3.13.3 サイレント・モードと結合したループバック・モード
ループバック・モードとサイレント・モードを結合して、CANnTX 信号と CANnRX 信号に接続した稼働中の CAN システ
ムに影響を与えずに、CAN コントローラをテストすることができます。このモードでは、CANnRX 信号が CAN コント
ローラから切断されて、CANnTX 信号がリセッシブに保持されます。このモードは、CANTST レジスタの LBACK ビッ
トと SILENT ビットの両方をセットすることでイネーブルになります。
18.3.13.4 基本モード
基本モードでは、メッセージ RAM を使用せずに CAN コントローラを動作させることが可能になります。基本モードで
は、CANIF1 レジスタが送信バッファとして使用されます。IF1 レジスタの内容の送信は、CANIF1CRQ レジスタの
BUSY ビットをセットすることにより要求されます。BUSY ビットがセットされている間、CANIF1 レジスタはロックされま
す。BUSY ビットは、送信が保留になっていることを示します。 CAN バスがアイドルになるとすぐ、CANIF1 レジスタ
が CAN コントローラのシフト・レジスタにロードされ、送信が開始されます。送信が完了すると、BUSY ビットがクリアさ
れ、ロックされていた CANIF1 レジスタがリリースされます。保留になっている送信は、CANIF1 レジスタがロックさ
れている間に、CANIF1CRQ レジスタの BUSY ビットをクリアすることで、任意の時点でアボートできます。CPU が
BUSY ビットをクリアした場合は、アービトレーションに負けた場合やエラーの場合に行われる可能性のある再送信が
ディセーブルになります。
CANIF2 レジスタは、受信バッファとして使用されます。メッセージの受信後、どのような受容フィルタ処理も受けず
15
に、シフト・レジスタの内容が CANIF2 レジスタに格納されます。さらに、メッセージ転送中にシフト・レジスタの実際
の内容をモニターすることができます。CANIF2CRQ レジスタの BUSY ビットをセットすることにより、メッセージ・オ
ブジェクトの読み出しが開始されるごとに、シフト・レジスタの内容が CANIF2 レジスタに格納されます。
基本モードでは、メッセージ・オブジェクト関連の制御ビットとステータス・ビットのすべて、および CANIFnCMSK レ
ジスタの制御ビットすべてが評価されるわけではありません。また、CANIFnCRQ レジスタのメッセージ番号も評価
されません。CANIF2MCTL レジスタでは、NEWDAT ビットと MSGLST ビットはその機能を保持し(retain)、DLC[3:0]
フィールドが受信された DLC を示し、その他の制御ビットがクリアされます。
基本モードは、CANTST レジスタの BASIC ビットをセットすることでイネーブルになります。
18.3.13.5 送信の制御
ソフトウェアでは、次に示す 4 つの方法で CANnTX 信号の制御を直接オーバーライドできます。
■ CANnTX を CAN コントローラで制御する
■ CANnTX 信号上でサンプル・ポイントを駆動して、ビット・タイミングをモニターする
■ CANnTX が Low の値(low value)を駆動する
■ CANnTX が High の値(high value)を駆動する
最後の 2 つの機能は、読み出し可能な CAN 受信ピン CANnRX と組み合わせて、CAN バスの物理レイヤをチェック
するために使用できます。
送信制御機能は、CANTST レジスタの TX[1:0]フィールドをプログラムすることでイネーブルになります。CANnTX
信号用の 3 つのテスト機能は、すべての CAN プロトコル・インターフェイスで機能します。CAN メッセージ転送または
ループバック・モード、サイレント・モード、ベーシック・モードが選択された場合には、TX[1:0]をクリアする必要があ
ります。
18.3.14 ビット・タイミング構成のエラーに関する考慮事項
即座に障害という結果につながるわけではなくても、CAN ビット・タイミングの構成での小さなエラーにより、CAN
ネットワークのパフォーマンスが著しく低下する可能性があります。多くの場合、CAN ビット同期を使用することによ
り、不適切な CAN ビット・タイミングの構成においても、エラー・フレームが時々生成される程度にまで改善すること
ができます。ただし、アービトレーションの場合は、2 つ以上の CAN ノードが同時にフレームを送信しようとすると、
誤ったサンプル・ポイントによって、トランスミッタのどれかがエラー・パッシブになる可能性があります。このように散
発的に発生するエラーの解析には、CAN ノード内部の CAN ビット同期と、CAN バス上での CAN ノード間の相互
作用(通信)についての詳細な知識が必要になります。
18.3.15 ビット時間とビット・レート
CAN システムでは、1 Kbps 以下から最大 1000Kbps までの範囲のビット・レートをサポートしています。CAN ネット
ワークの各メンバーは、専用のクロック・ジェネレータを持っています。ビット時間のタイミング・パラメータは、各 CAN
ノード用に独立して構成することが可能であり、これにより、各 CAN ノードのオシレータ周期が異なる場合でも共通
のビット・レートが生成されます。
16
温度や電圧の変化、およびコンポーネントの劣化によって周波数がわずかに変動するために、これらのオシレータ
は絶対的に安定しているわけではありません。オシレータの許容偏差範囲が同じではないことから、CAN ノードでは、
ビット・ストリームを定期的に再同期することで、様々なビット・レートを補償することが可能です。
CANの仕様では、ビット時間は同期化セグメント、伝播時間セグメント、フェーズ・バッファ・セグメント 1、フェーズ・
バッファ・セグメント 2 の 4 つのセグメントに分けられます(P 777 の図 18-4 参照)。各セグメントは固有の、プログラム
可能なタイムカンタムの数から構成されます(P 777 の表 18-4)。タイムカンタム(tq)の長さは、ビット時間の基準時間
であり、CANコントローラのシステム・クロック (fsys)とボー・レート・プリスケーラ (BRP)によって次のように定義さ
れます。
tq = BRP / fsys
CAN モジュールのシステム・クロック fsys は、CAN モジュールのクロック入力の周波数です。
同期セグメント Sync は、CAN バス・レベルのエッジが発生することが想定されるビット時間部分です。Sync 以外の
場所で発生するエッジと Sync 間の距離は、そのエッジのフェーズ誤差(フェーズ・エラー)と呼ばれます。
伝播時間セグメント Prop は、CAN ネットワーク内の物理的な遅延時間を補償することを意図したものです。
フェーズ・バッファ・セグメントのフェーズ 1 とフェーズ 2 は、サンプル・ポイントを囲んでいます。
(再)同期ジャンプ幅(SJW: (Re-)Synchronization Jump Width)は、エッジのフェーズ誤差を補償するために、フェー
ズ・バッファ・セグメントが定義した限界内でサンプル・ポイントが再同期によりどこまで移動する可能性があるかを定
義します。
任意のビット・レートには様々なビット時間構成を対応させることが可能ですが、CAN ネットワークを正しく機能させる
ためには、物理的な遅延時間とオシレータの許容範囲を考慮する必要があります。
17
図 18-4. CAN ビット時間
a. TSEG1 = Prop + フェーズ 1
b. TSEG2 = フェーズ 2
c. フェーズ 1 = フェーズ 2 または フェーズ 1 + 1 = フェーズ 2
表 18-4. CANのプロトコル範囲a
パラメータ
BRP
範囲
[1 .. 64]
コメント(Remark)
タイムカンタム tqの長さを定義します。CANBRPE レジスタを使
用して、範囲を 1024 に拡張できます。
Sync
1 tq
固定長、バス入力をシステム・クロックに同期
Prop
[1 .. 8] tq
物理的な遅延時間を補償
Phase1
[1 .. 8] tq
同期化により一時的に延長可能
Phase2
[1 .. 8] tq
同期化により一時的に短縮可能
SJW
[1 .. 4] tq
どちらかのフェーズ・バッファ・セグメントよりも長くなってはいけ
ない
a. この表は、CAN プロトコルに要求される、プログラム可能な最小限の範囲について説明しています。
ビット・タイミングの構成は、CANBIT レジスタの 2 つのレジスタ・バイトでプログラムされます。CANBIT レジスタでは、
4 つのコンポーネント TSEG2、TSEG1、SJW、BRP をプログラムして、その機能値より 1 小さい数値にプログラムする
必要があります。 したがって、範囲[1..n]の値ではなく、範囲[0..n-1]の値がプログラムされます。このようにして、例
えば、SJW ビット・フィールドのわずか 2 つのビットで SJW (機能範囲[1..4])を表すことができます。表 18-5 は、
CANBIT レジスタ値とパラメータの関係です。
表 18-5. CANBIT レジスタ値
CANBIT レジスタのフィールド
セッティング
TSEG2
フェーズ 2 – 1
TSEG1
Prop + フェーズ 1 – 1
SJW
SJW – 1
BRP
BRP
したがって、ビット時間の長さは次のように(プログラムされた値に)なります。
[TSEG1 + TSEG2 + 3] × tq
または (機能値):
18
[Sync + Prop + フェーズ 1 + フェーズ 2] × tq
CANBIT レジスタのデータは、CAN プロトコル・コントローラの構成入力です。(BRP フィールドにより構成される)
ボー・レート・プリスケーラでは、ビット時間の基本時間単位であるタイムカンタムを定義し、(TSEG1、TSEG2、SJW に
より構成される)ビット・タイミング・ロジックではビット時間のタイムカンタム数を定義します。
ビット時間の処理、サンプル・ポイントの位置の計算、不定期に行われる()同期は、CAN コントローラにより制御され、
タイムカンタムごとに一度評価されます。
CAN コントローラでは、メッセージをフレームに(そしてフレームをメッセージに)変換します。加えて、コントローラでは
含まれてる固定形式ビットの生成と破棄を行い、スタッフ・ビットの挿入と抽出を行い、CRC コードの計算とチェックを
行い、エラー管理を実行し、どのタイプの同期を使用するかを決定します。ビット値は、サンプル・ポイントで受信また
は送信されます。情報処理時間(IPT: information processing time) は、サンプル・ポインで CAN バス上で送信され
る次のビットを計算する必要が生じた後の時間です。IPT には、次のデータ・ビットの検索、CRC ビットの処理、ビッ
ト・スタッフィングが必要かどうかの決定、エラー・フラグの生成、アイドル状態への単なる移行のどれかが含まれ
ます。
IPTはアプリケーション固有ですが、2 tqより長くなることはありません。CANのIPTは 0 tqです。その長さはプログラム
された、フェーズ 2 の長さの下限となります。同期化に備えて、フェーズ 2 をIPTの値よりも短くすることが可能です。
このことは、バス・タイミングには影響しません。
18.3.16 ビット・タイミング・パラメータの計算
通常、ビット・タイミング構成の計算は、必要なビット・レートかビット時間を使用して開始されます。結果のビット時間
(1/ビット・レート)は、システムのクロック周期の整数倍(integer multiple)になる必要があります。
ビット時間は、4~25 タイムカンタムで構成できます。いくつかの組み合わせにより、必要なビット時間が求められ、次
に示すステップが反復できるようになります。
最初に定義する必要のあるビット時間の部分は、Propです。その長さは、システムで測定された遅延時間に依存し
ます。最大ノード遅延同様、最大バス長も拡張可能なCANバス・システム用に定義する必要があります。結果として
求められるPropの時間は、 (tqの値に最も近い整数倍に切り上げられた)タイムカンタムに変換されます。
Syncの長さは 1 tq(固定)であり、これにより 2 つのフェーズ・バッファ・セグメントは(ビット時間 - Prop - 1) tq となりま
す。残ったtqの数が偶数であれば、フェーズ・バッファ・セグメントの長さは同じになります。つまり、フェーズ 2 =
フェーズ 1、そうでない場合はフェーズ 2 = フェーズ 1 + 1 となります。
フェーズ 2 の最小公称長も考慮する必要があります。フェーズ 2 は、CANコントローラの情報処理時間よりも短くする
ことはできません。CANコントローラの情報処理時間は、実際の実装にもよりますが、 [0..2] tqの範囲の値になりま
す。
19
同期ジャンプ幅の長さは、4、フェーズ1、フェーズ2のうち最も小さい値に設定されます。
結果として求められる構成に必要なオシレータの許容偏差範囲は、次に示す数式で計算されます。
ここで、
■ df = オシレータ周波数の最大許容値
■ fosc = 実際のオシレータ周波数
■ fnom = オシレータ周波数のノミナル値
周波数の最大許容値の場合は、次の数式を考慮に入れる必要があります。
ここで、
■ フェーズ 1 とフェーズ 2 は、P 777 の表 18-4 の値
■ tbit = ビット時間
■ dfmax = 2 つのオシレータの最大差分値
複数の構成が可能な場合は、オシレータの許容偏差範囲が最も高い値になる構成を選ぶ必要があります。
各 CAN ノードのシステム・クロックは様々に異なるため、構成が異なる場合でもビット・レートが同一になるようにする
必要があります。CAN ネットワークでの伝播時間の計算は、遅延時間の最も長いノードを基準にして、ネットワーク
全体に一度行われます。
CAN システムのオシレータの許容偏差範囲は、許容偏差範囲の最も小さいノードによって制限されます。
計算により、バス長またはビット・レートを減少させる必要があるか、オシレータの周波数の安定性を増加させる必要
があるかを判断して、CAN ビット・タイミング用の、プロトコルに準拠した構成を求めることができます。
18.3.16.1 高いボー・レートでのビット・タイミング例
この例では、CAN クロックの周波数が 25 MHz、ビット・レートが 1Mbps です。
20
上記の例では、CANBIT レジスタのビット・フィールド値は次のようになります。
ボー・レートのプリスケーラ - 1
CANBIT レジスタにプログラムされる最終的な値 = 0x0204 となります。
18.3.16.2 低いボー・レートでのビット・タイミング例
この例では、CAN クロックの周波数は 50 MHz、ビット・レートは 100 Kbps です。
21
ボー・レートのプリスケーラ - 1
CANBIT レジスタにプログラムされる最終的な値= 0x34F1 となります。
18.4 レジスタ・マップ
P781 の表 18-6 は、レジスタのリストです。記載されたすべてのアドレスは、次に示す CAN ベース・アドレスからのオ
フセットです。
■ CAN0: 0x4004.0000
■ CAN1: 0x4004.1000
CAN コントローラのクロックは、レジスタがプログラム可能になる前にイネーブルにする必要があることに注意してく
22
ださい。(P174 参照)
表 18-6. CANのレジスタ・マップ
オフセット
名前
タイプ
リセット
説明
参照 P
0x000
CANCTL
R/W
0x0000.0001
CAN 制御
783
0x004
CANSTS
R/W
0x0000.0000
CAN ステータス
785
0x008
CANERR
RO
0x0000.0000
CAN エラー・カウンタ
788
0x00C
CANBIT
R/W
0x0000.2301
CAN ビット・タイミング
789
0x010
CANINT
RO
0x0000.0000
CAN 割り込み
791
0x014
CANTST
R/W
0x0000.0000
CAN テスト
792
0x018
CANBRPE
R/W
0x0000.0000
CAN ボー・レートのプリスケーラ拡張
794
0x020
CANIF1CRQ
R/W
0x0000.0001
CAN IF1 コマンド要求
795
0x024
CANIF1CMSK
R/W
0x0000.0000
CAN IF1 コマンド・マスク
797
0x028
CANIF1MSK1
R/W
0x0000.FFFF
CAN IF1 マスク 1
800
0x02C
CANIF1MSK2
R/W
0x0000.FFFF
CAN IF1 マスク 2
801
0x030
CANIF1ARB1
R/W
0x0000.0000
CAN IF1 アービトレーション 1
803
0x034
CANIF1ARB2
R/W
0x0000.0000
CAN IF1 アービトレーション 2
804
0x038
CANIF1MCTL
R/W
0x0000.0000
CAN IF1 メッセージ制御
806
0x03C
CANIF1DA1
R/W
0x0000.0000
CAN IF1 データ A1
809
0x040
CANIF1DA2
R/W
0x0000.0000
CAN IF1 データ A2
809
0x044
CANIF1DB1
R/W
0x0000.0000
CAN IF1 データ B1
809
0x048
CANIF1DB2
R/W
0x0000.0000
CAN IF1 データ B2
809
0x080
CANIF2CRQ
R/W
0x0000.0001
CAN IF2 コマンド要求
795
0x084
CANIF2CMSK
R/W
0x0000.0000
CAN IF2 コマンド・マスク
797
0x088
CANIF2MSK1
R/W
0x0000.FFFF
CAN IF2 マスク 1
800
0x08C
CANIF2MSK2
R/W
0x0000.FFFF
CAN IF2 マスク 2
801
0x090
CANIF2ARB1
R/W
0x0000.0000
CAN IF2 アービトレーション 1
803
0x094
CANIF2ARB2
R/W
0x0000.0000
CAN IF2 アービトレーション 2
804
0x098
CANIF2MCTL
R/W
0x0000.0000
CAN IF2 メッセージ制御
806
0x09C
CANIF2DA1
R/W
0x0000.0000
CAN IF2 データ A1
809
0x0A0
CANIF2DA2
R/W
0x0000.0000
CAN IF2 データ A2
809
0x0A4
CANIF2DB1
R/W
0x0000.0000
CAN IF2 データ B1
809
0x0A8
CANIF2DB2
R/W
0x0000.0000
CAN IF2 データ B2
809
0x100
CANTXRQ1
RO
0x0000.0000
CAN 送信要求 1
810
0x104
CANTXRQ2
RO
0x0000.0000
CAN 送信要求 2
810
0x120
CANNWDA1
RO
0x0000.0000
CAN 新規データ 1
811
0x124
CANNWDA2
RO
0x0000.0000
CAN 新規データ 2
811
0x140
CANMSG1INT
RO
0x0000.0000
CAN メッセージ 1 割り込み保留
812
0x144
CANMSG2INT
RO
0x0000.0000
CAN メッセージ 2 割り込み保留
812
23
0x160
CANMSG1VAL
RO
0x0000.0000
CAN メッセージ 1 有効
813
0x164
CANMSG2VAL
RO
0x0000.0000
CAN メッセージ 2 有効
813
18.5 CAN レジスタの説明
このセクションの以降のページでは、CAN のレジスタをアドレス・オフセットの番号順に記載し、説明します。メッセー
ジ RAM 内のメッセージ・オブジェクトにアクセスするために、CANIF1x および CANIF2x という 2 組のインターフェ
イス・レジスタを使用します。2 つのセットの機能は同じであり、トランザクションのキューイングに使用されます。
24
レジスタ 1: CAN 制御 (CANCTL)、オフセット 0x000
この制御レジスタは、モジュールを初期化し、テスト・モードと割り込みをイネーブルにします。
バスオフ・リカバリ・シーケンス(CAN Specification Rev. 2.0 を参照)は、INIT のセットやクリア操作自体では終了し
ません。デバイスはバスオフ状態になると、すべてのバス活動(activities)を停止して INIT をセットします。INIT が
CPU によりクリアされると、デバイスではバス・アイドル(129 * 11 の連続した High ビット)が 129 回発生するのを待
機してから、通常の動作を再開します。バスオフ・リカバリ・シーケンスの終わりに、エラー管理カウンタがリセットされ
ます。
INIT がクリアされた後の待機時間中に、連続した 11 個の High ビットがモニターされるごとに、BITERROR0 コード
が CANSTS レジスタ (LEC フィールド = 0x5)に書き込まれ、CPU から CAN バスが Low にスタックされているか、
継続的に妨げられているかを容易にチェックしたり、バスオフ・リカバリ・シーケンスの進捗をモニターしたりすること
が可能になります。
CAN 制御 (CANCTL)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x000
タイプ R/W、リセット 0x0000.0001
表 1
ビット /
フィールド
名称
タイプ
リセット
説明
31:8
予約
RO
0x0000.00
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
7
TEST
R/W
0
値
説明
0
CAN コントローラはノーマル動作です。
1
CAN コントローラはテスト・モードに入っています。
6
CCE
R/W
0
構成変更のイネーブル
値
説明
0
CANBIT レジスタへの書き込みアクセスが許可さ
れていません。
1
INIT ビットが 1 の場合は、CANBIT レジスタへの
書き込みアクセスが許可されます。
25
5
DAR
R/W
0
自動再送信のディセーブル
値
説明
0
妨害されたメッセージの自動再送信がイネーブルで
す。
1
自動再送信がディセーブルです。
4
予約
RO
0
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
3
EIE
R/W
0
エラー割り込みのイネーブル
2
1
0
26
SIE
IE
INIT
R/W
R/W
R/W
0
0
1
値
説明
0
エラー・ステータス割り込みは生成されていませ
ん。
1
CANSTS レジスタの BOFF ビットか EWARN ビット
が変化すると、割り込みが生成されます。
ステータス割り込みのイネーブル
値
説明
0
エラー・ステータス割り込みは生成されていませ
ん。
1
メッセージが正常に送信または受信されるか、CAN
バス・エラーが検出された場合に割り込みが生成さ
れます。CANSTS レジスタの TXOK ビット、RXOK
ビット、LEC ビットに変化があった場合に割り込みが
生成されます。
CAN 割り込みのイネーブル
値
説明
0
割り込みがディセーブルです。
1
割り込みがイネーブルです。
初期化
値
説明
0
通常の動作
1
初期化開始
レジスタ 2: CAN ステータス (CANSTS)、オフセット 0x004
重要: このレジスタを読み出す場合は注意が必要です。読み出しを実行すると、ビットのステータスが変化する可能
性があります。
このステータス・レジスタにはバスオフ、エラー・カウント閾値、エラー・タイプ等の割り込みサービス用の情報が入っ
ています。
LEC フィールドでは、CAN バスで発生した最新のエラーのタイプを示すコードを保持しています。このフィールドは、
メッセージが (受信または送信で) エラーなしで転送された場合にクリアされます。未使用のエラー・コード 0x7 を
CPU が書き込むことにより、無効なエラーに対してこのフィールドを手動でセットして、変更の有無を後でチェックでき
るようにすることが可能です。
BOFF ビットと EWARN ビットによりエラー割り込みが生成され、CAN 制御 (CANCTL) レジスタの対応するイネーブ
ル・ビットがセットされている場合は RXOK ビット、TXOK ビット、LEC ビットによりステータス割り込みが生成されます。
EPASS ビットの変更または RXOK ビット、TXOK ビット、LEC ビットへの書き込みは、割り込みを生成しません。
CAN ステータス (CANSTS) レジスタを読み出すと、CAN 割り込み (CANINT) レジスタがの保留になっている
フィールドはクリアされます。
CAN ステータス (CANSTS)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x004
タイプ R/W、リセット 0x0000.0000
表 2
ビット /
フィールド
名称
タイプ
リセット
説明
31:8
予約
RO
0x0000.00
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
7
BOFF
RO
0
バスオフ・ステータス
値
説明
0
CAN コントローラはバスオフ状態(ステート)ではあ
りません。
1
CAN コントローラはバスオフ状態(ステート)です。
27
6
5
4
EWARN
EPASS
RXOK
RO
RO
R/W
0
0
0
警告ステータス
値
説明
0
両方のエラー・カウンタが、エラー警告限界値であ
る 96 より低くなっています。
1
少なくとも一方のエラー・カウンタがエラー警告限界
値である 96 に達しています。
エラー・パッシブ
値
説明
0
CAN モジュールがエラー・アクティブ状態(ステー
ト)、すなわち受信エラーまたは送信エラーのカウン
ト数が 127 以下です。
1
CAN モジュールがエラー・パッシブ状態(ステート)、
すなわち受信エラーまたは送信エラーのカウント数
が 127 より大きくなっています。
メッセージを正常に受信しました
値
説明
0
このビットが最後にクリアされて以降、正常に受信
されたメッセージはありません。
1
このビットが最後にクリアされて以降、受容フィルタ
処理の結果とは関係なく、一つのメッセージが正常
に受信されました。
このビットは、0 を書き込むことでクリアする必要があります。
3
TXOK
R/W
0
メッセージを正常に送信しました
値
説明
0
このビットが最後にクリアされて以降、正常に送信
されたメッセージはありません。
1
このビットが最後にクリアされて以降、一つのメッセ
ージがエラーなしで正常に送信され、少なくともひと
つの他のノードによってアクノリッジされました。
このビットは、0 を書き込むことでクリアする必要があります。.
2:0
LEC
R/W
0x0
最新のエラー・コード
これは、CAN バス上で発生最後に発生したエラーのタイプで
す。
28
値
説明
0x0
エラーなし
0x1
スタッフ・エラー
受信されたメッセージの、ひとつのシーケンス中に
5 つ以上の等価ビットが存在できない部分で、ひと
つのシーケンス中に 5 つ以上の等価ビットが発生し
ました。
0x2
形式エラー
受信されたフレームの固定形式の部分に誤った形
式があります。
0x3
ACK エラー
送信されたメッセージが、別のノードによってアクノ
リッジされませんでした。
0x4
ビット 1 エラー
メッセージが送信されると、CAN コントローラでは競
合を検出するためにデータ・ラインをモニターしま
す。 アービトレーション・フィールドが送信された場
合は、データの競合はアービトレーション・プロトコ
ルの一部となります。他のフレーム・フィールドが送
信された場合は、 データの競合はエラーとみなさ
れます。
ビット 1 エラーは、デバイスが High レベル(論理 1)
を送信する必要があるのに、モニターされているバ
スの値が Low (論理 0)であることを示します。
0x5
ビット 0 エラー
ビット 0 エラーは、デバイスが Low レベル(論理 0)
を送信する必要があるのに、モニターされているバ
スの値が High (論理 1)であることを示します。
バスオフ・リカバリ中に、連続した 11 個の High ビッ
トがモニターされるごとにこのステータスがセットさ
れます。このステータスをチェックすることにより、ソ
フトウェアではバスの動作を妨げることなく、バスオ
フ・リカバリ・シーケンスの進捗をモニターできます。
0x6
CRC エラー
受信されたメッセージで CRC チェックサムが正しく
行われませんでした。このことは、受信された値の
計算結果がデータの CRC の計算結果と一致しな
いことを示しています。
0x7
イベントなし
LEC ビットがこの値を示す場合は、この値が LEC
フィールドに書き込まれて以降に CAN バス・イベン
トが検出されていません。
29
レジスタ 3: CAN エラー・カウンタ (CANERR)、オフセット 0x008
このレジスタには、エラー・カウンタの値が入っています。エラー・カウンタの値はエラーの原因を解析するために使
用できます。
CAN エラー・カウンタ (CANERR)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x008
タイプ RO、リセット 0x0000.0000
表 3
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15
RP
RO
0
受信されたエラー・パッシブ
14:8
REC
RO
0x00
値
説明
0
受信エラー・カウンタの値が、エラー・パッシブ・レベ
ル(127 以下)よりも低くなっています。
1
受信エラー・カウンタの値が、エラー・パッシブ・レベ
ル(128 以上)に達しました。
受信エラー・カウンタ
このフィールドには、レシーバのエラー・カウンタのステート(0~
127)が入っています。
7:0
TEC
RO
0x00
送信エラー・カウンタ
このフィールドには、送信のエラー・カウンタのステート(0~
255)が入っています。
30
レジスタ 4: CAN ビット・タイミング (CANBIT)、オフセット 0x00C
このレジスタは、ビット幅とビット量をプログラムするのに使用されます。値は、システム・クロックの周波数に対してプ
ログラムされます。このレジスタは、CANCTL レジスタの CCE ビットと INIT ビットをセットすることで書き込み可能
(write-enabled)になります。詳細については、P776 の “Bit Time and Bit Rate” を参照してください。
CAN ビット・タイミング (CANBIT)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x00C
タイプ R/W、リセット 0x0000.2301
表 4
ビット /
フィールド
名称
タイプ
リセット
説明
31:15
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
14:12
TSEG2
R/W
0x2
サンプル・ポイント後のタイム・セグメント
0x00-0x07: ハードウェアによるこの値の実際の解釈は、プロ
グラムされた値よりも 1 大きい値がここでは使用されるというも
のです。
したがって、例えば 0x2 のリセット値というと、Phase2 (P 777
の図 18-4 参照)に 3 (2+1) ビットタイムカンタムが定義される
ことになります。ビットタイムカンタムは、BRP フィールドによって
定義されます。
11:8
TSEG1
R/W
0x3
サンプル・ポイント前のタイム・セグメント
0x00-0x0F: ハードウェアによるこの値の実際の解釈は、プロ
グラムされた値よりも 1 大きい値がここでは使用されるというも
のです。
したがって、例えば 0x3 のリセット値というと、Phase1 (P 777
の図 18-4 参照)に 4 (3+1)ビットタイムカンタムが定義されるこ
とになります。ビットタイムカンタムは、BRP フィールドによって
定義されます。
7:6
SJW
R/W
0x0
(再)同期化ジャンプ幅
0x00-0x03: ハードウェアによるこの値の実際の解釈は、プロ
グラムされた値よりも 1 大きい値がここでは使用されるというも
のです。
フレーム開始期間(SOF: start of frame)中、CAN コントローラ
がフェーズ誤差(ずれ))を検出した場合は、TSEG2 または
TSEG1 の長さを SJW の値によって CAN コントローラで補正で
きます。したがって、0 というリセット値では、1 ビットタイムカン
31
タムにより長さを補正します。
5:0
BRP
R/W
0x1
ボー・レートのプリスケーラ
ビットタイムカンタムを生成するために、オシレータの周波数を
分周する値です。ビット時間は、この量の倍数から生成され
ます。
0x00-0x03F: ハードウェアによるこの値の実際の解釈は、プ
ログラムされた値よりも 1 大きい値がここでは使用されるという
ものです。
BRP では、1 ビット時間を構成する CAN のクロック周期の数を
定義します。したがって、リセット値は 2 ビットタイムカンタム
(1+1)となります。
CANBRPE レジスタを使用して、ビット時間をさらに分周する
こともできます。
32
レジスタ 5: CAN 割り込み (CANINT)、オフセット 0x010
このレジスタは、割り込みのソースを示します。
いくつかの割り込みが保留になっている場合は、CAN 割り込み (CANINT) レジスタが、割り込みの発生する順番
を無視して、最高の優先度を持つ保留中の割り込みをポイントします。割り込みは、CPU がその割り込みをクリアす
るまで保留のままになります。INTID フィールドが 0x0000 (デフォルト)ではなく、CANCTL レジスタの IE ビットが
セットされている場合は、割り込みがアクティブになります。CANSTS レジスタの読み出しにより INTID フィールドが
クリアされるか、CANCTL レジスタの IE ビットがクリアされるまで、割り込みラインはアクティブのままになります。
注: CAN ステータス (CANSTS) レジスタを読み出すと、CAN 割り込み(CANINT) レジスタが保留中の場合は、
CAN 割り込み(CANINT) レジスタがクリアされます。
CAN 割り込み (CANINT)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x010
タイプ RO、リセット 0x0000.0000
表 5
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15:0
INTID
RO
0x0000
割り込み識別子
このフィールドに示される番号(数)は、割り込みのソースを表し
ています。
値
説明
0x0000
保留中の割り込みはありません
0x0001-0x0020
割り込みを発生させたメッセージ・オブジ
ェクトの番号
0x0021-0x7FFF
予約
0x8000
ステータス割り込み
0x8001-0xFFFF
予約
33
レジスタ 6: CAN テスト (CANTST)、オフセット 0x014
このレジスタは、セルフテストと外部ピンのアクセスに使用されます。CANCTL レジスタの TEST ビットをセットするこ
とで、書き込み可能になります。様々なテスト機能を組み合わせることが可能ですが、このレジスタの TX ビットがゼロ
でない場合は、CAN 転送が影響を受けます。
CAN テスト (CANTST)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x014
タイプ R/W、リセット 0x0000.0000
表 6
ビット /
フィールド
名称
タイプ
リセット
説明
31:8
予約
RO
0x0000.00
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
7
RX
RO
0
受信の観測(Observation)
6:5
TX
R/W
0x0
値
説明
0
CANnRx ピンは Low です。
1
CANnRx ピンは High です。
送信の制御
CANnTx ピンの制御をオーバーライドします。
34
値
説明
0x0
CAN モジュールの制御
CANnTx は CAN モジュールに制御されます(デフォ
ルトの動作)
0x1
サンプル・ポイント
サンプル・ポイントは、CANnTx 信号上で駆動されま
す。このモードは、ビット・タイミングのモニタリングに
役立ちます。
0x2
Low で駆動
CANnTx は Low 値を駆動します。このモードは、
CAN バスの物理層をチェックするのに役立ちます。
0x3
High で駆動
CANnTx は High 値を駆動します。このモードは、
CAN バスの物理層をチェックするのに役立ちます。
4
3
2
1:0
LBACK
SILENT
BASIC
予約
R/W
R/W
R/W
RO
0
0
0
0x0
ループバック・モード
値
説明
0
ループバック・モードがディセーブルです。
1
ループバック・モードがイネーブルです。ループバッ
ク・モードでは、トランスミッタからのデータがレシー
バへ内部ループバックされます。受信入力のデータ
はすべて無視されます。
サイレント・モード
値
説明
0
サイレント・モードがディセーブルです。
1
サイレント・モードがイネーブルです。サイレント・モ
ードでは、CAN コントローラはデータを送信せず、
バスをモニターします。このモードは、バス・モニタ・
モードとしても知られています。
基本モード
値
説明
0
基本モードがディセーブルです。
1
基本モードがイネーブルです。基本モードでは、ソ
フトウェアが CANIF1 レジスタを送信バッファとして
使用し、CANIF2 レジスタを受信バッファとして使用
する必要があります。
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
35
レジスタ 7: CAN ボー・レートのプリスケーラ拡張(CANBRPE)、オフセット 0x018
このレジスタは、CANBIT レジスタの BRP ビットを使用してセットしたビット時間をさらに分周するために使用されます。
CANCTL レジスタの CCE ビットをセットすることで書き込み可能になります。
CAN ボー・レートのプリスケーラ拡張(CANBRPE)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x018
タイプ R/W、リセット 0x0000.0000
表 7
ビット /
フィールド
名称
タイプ
リセット
説明
31:4
予約
RO
0x0000.000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
3:0
BRPE
R/W
0x0
ボー・レートのプリスケーラの拡張
0x00-0x0F
36
CANBIT レジスタの BRP ビットを拡張して、値を
最大 1023 にします。ハードウェアによる実際の
解釈は、BRPE(MSBs)と BRP(LSBs)によりプロ
グラムされた値よりも 1 大きくなっています。
レジスタ 8: CAN IF1 コマンド要求(CANIF1CRQ)、オフセット 0x020
レジスタ 9: CAN IF2 コマンド要求(CANIF2CRQ)、オフセット 0x080
CANIF1MCTL レジスタの TXRQST ビットがセットされた場合は、メッセージ・オブジェクトの番号が MNUM フィールド
へ書き込まれた直後にメッセージ転送が開始されます。この書き込み動作で、BUSY ビットが自動的にセットされ、
CAN インターフェイス・レジスタと内部メッセージ RAM 間で転送が進行中であることを示します。3~6CAN_CLK 周
期という待機時間後に、インターフェイス・レジスタとメッセージ RAM 間の転送が完了します。転送が完了すると、
BUSY ビットがクリアされます。
CAN IF1 コマンド要求(CANIF1CRQ)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x020
タイプ R/W、リセット 0x0000.0001
表 8
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15
BUSY
RO
0
Busy フラグ
値
説明
0
このビットは、読み出し/書き込みアクションが完了
した時点でクリアされます。
1
このビットは、このレジスタにあるメッセージ番号へ
の書き込みが発生した時点でセットされます。
14:6
予約
RO
0x00
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
5:0
MNUM
R/W
0x01
メッセージ番号
メッセージ RAM 内の 32 個のメッセージ・オブジェクトの中か
ら、データ転送用に 1 つを選択します。メッセージ・オブジェクト
には、1~32 の番号が付けられています。
値
説明
0x00
予約
0 は有効なメッセージ番号ではなく、0x20、すなわ
ちオブジェクト 32 と解釈されます。
0x01-0x20
メッセージ番号
指定された 1~32 のメッセージ・オブジェクトを示し
37
ます。
0x21-0x3F
予約
有効なメッセージ番号ではないため、値はシフトさ
れて 0x01-0x1F と解釈されます。
38
レジスタ 10: CAN IF1 コマンド・マスク (CANIF1CMSK)、オフセット 0x024
レジスタ 11: CAN IF2 コマンド・マスク (CANIF2CMSK)、オフセット 0x084
コマンド・マスク・レジスタを読み出すことにより、各種機能のステータスが提供されます。コマンド・マスク・レジスタへ
の書き込みは、転送の方向を指定し、どのバッファ・レジスタがデータ転送のソースまたはターゲットになるかを選択
します。
WRNRD ビットがクリアの時にメッセージ・オブジェクト・バッファからの読み出しが発生し、CLRINTPND ビットおよび/
または NEWDAT ビットがセットされると、メッセージ・オブジェクト・バッファにある保留中の割り込みおよび/または新規
データ・フラグがクリアされることに注意してください。
CAN IF1 コマンド・マスク (CANIF1CMSK)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x024
タイプ R/W、リセット 0x0000.0000
表 9
ビット /
フィールド
名称
タイプ
リセット
説明
31:8
予約
RO
0x0000.00
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
7
WRNRD
R/W
0
値の読み出しでなく書き込み(Write、Not Read Value)
値
説明
0
CANIFnCRQ レジスタの MNUM フィールドにより
指定された CAN メッセージ・オブジェクトのデータ
を CANIFn レジスタに転送します。
1
CANIFn レジスタの値を、CAN コマンド要求
(CANIFnCRQ)の MNUM フィールドにより指定され
た CAN メッセージ・オブジェクトへ転送します。
注:
CLRINTPND および/または NEWDAT ビットがセット
されているると、バッファ(WRNRD = 0) からの読み
出しにより、メッセージ・バッファ内の割り込み保留
条件と新規データ条件をクリアできます。
39
6
5
4
3
MASK
ARB
CONTROL
CLRINTPND
R/W
R/W
R/W
R/W
0
0
0
0
マスク・ビットへのアクセス
値
説明
0
マスク・ビットは変化しません。
1
メッセージ・オブジェクトの IDMASK + DIR + MXTD
をインターフェイス・レジスタに転送します。
アービトレーション・ビットヘのアクセス
値
説明
0
アービトレーション・ビットは変化しません。
1
メッセージ・オブジェクトの ID + DIR + XTD +
MSGVAL をインターフェイス・レジスタに転送します。
制御ビットヘのアクセス
値
説明
0
制御ビットは変化しません。
1
CANIFnMCTL レジスタの制御ビットを、インターフ
ェイス・レジスタに転送します。
割り込み保留ビットのクリア
このビットの機能は、WRNRD ビットの構成に依存します。
2
NEWDAT/TXRQ
ST
40
R/W
0
値
説明
0
WRNRD がクリアの場合は、割り込み保留ステータス
がメッセージ・バッファから CANIFnMCTL レジスタ
へ転送されます。
WRNRD がセットされている場合は、メッセージ・オブ
ジェクト内の INTPND ビットは変化しません。
1
WRNRD がクリアの場合は、割り込み保留ステータ
スがメッセージ・バッファ内でクリアされます。
CANIFnMCTL レジスタに転送されるこのビットの
値は常に、クリア前のビットのステータスを反映する
ことに注意してください。
WRNRD がセットされている場合は、INTPND ビット
がメッセージ・オブジェクト内でクリアされます。
NEWDAT ビット / TXRQST ビット
このビットの機能は、WRNRD ビットの構成に依存します。
値
説明
0
WRNRD がクリアの場合は、新規データ・ステータス
の値がメッセージ・バッファから CANIFnMCTL レジ
スタへ転送されます。
WRNRD がセットされている場合は、送信は要求され
ません。
1
WRNRD がクリアの場合は、新規データ・ステータス
がメッセージ・バッファ内でクリアされます。
CANIFnMCTL レジスタに転送されるこのビットの
値は常に、クリア前のビットのステータスを反映する
ことに注意してください。
WRNRD がセットされている場合は、送信が要求され
ます。このビットがセットされると、CANIFnMCTL レ
ジスタの TXRQST ビットが無視されることに注意し
てください。
1
DATAA
R/W
0
データ・バイト 0~3 へのアクセス
このビットの機能は、WRNRD ビットの構成に依存します。
0
DATAB
R/W
0
値
説明
0
データ・バイト 0~3 は変化しません。
1
WRNRD がクリアの場合は、CANIFnDA1 と
CANIFnDA2 のデータ・バイト 0~3 をメッセージ・オ
ブジェクトに転送します。
WRNRD がセットされている場合は、メッセージ・オブ
ジェクト内のデータ・バイト 0~3 を CANIFnDA1 と
CANIFnDA2 へ転送します。
データ・バイト 4~7 へのアクセス
このビットの機能は、次に示すように WRNRD ビットの構成に依
存します。
値
説明
0
データ・バイト 4~7 は変化しません。
1
WRNRD がクリアの場合は、CANIFnDA1 と
CANIFnDA2 のデータ・バイト 4~7 をメッセージ・オ
ブジェクトへ転送します。
WRNRD がセットされている場合は、メッセージ・オブ
ジェクト内のデータ・バイト 4~7 を CANIFnDA1 と
CANIFnDA2 へ転送します。
41
レジスタ 12: CAN IF1 マスク 1 (CANIF1MSK1)、オフセット 0x028
レジスタ 13: CAN IF2 マスク 1 (CANIF2MSK1)、オフセット 0x088
こ の レ ジス タで 提 供さ れる マ ス ク情 報に は 、 メッ セー ジ RAM 内 の メ ッ セ ージ ・ オ ブジ ェ ク ト に 対 す る デ ー タ
(CANIFnDAn)、アービトレーション情報(CANIFnARBn)、制御情報(CANIFnMCTL)が付随しています。マスクは
CANIFnARBn レ ジ ス タ の ID ビ ッ ト と と も に 、 受 容 フ ィ ル タ 処 理 に 使 用 さ れ ま す 。 追 加 の マ ス ク 情 報 が 、
CANIFnMSK2 レジスタ内に入っています。
CAN IF1 マスク 1 (CANIF1MSK1)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x028
タイプ R/W、リセット 0x0000.FFFF
表 10
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15:0
MSK
R/W
0xFFFF
識別子のマスク
29 ビット識別子を使用している場合は、これらのビットは ID の
ビット[15:0]用に使用されます。CANIFnMSK2 レジスタの
MSK フィールドは、ID のビット[28:16]用に使用されます。11
ビット識別子を使用している場合は、これらのビットは無視され
ます。
42
値
説明
0
メッセージ・オブジェクト内の対応する識別子フィー
ルド(ID)は、フィルタ処理時のマッチングに使用さ
れません。
1
対応する識別子フィールド(ID)が受容フィルタ処理
用に使用されます。
レジスタ 14: CAN IF1 マスク 2 (CANIF1MSK2)、オフセット 0x02C
レジスタ 15: CAN IF2 マスク 2 (CANIF2MSK2)、オフセット 0x08C
このレジスタは、CANIFnMSK1 レジスタに付随する拡張マスク情報を保持しています。
CAN IF1 マスク 2 (CANIF1MSK2)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x02C
タイプ R/W、リセット 0x0000.FFFF
表 11
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15
MXTD
R/W
1
拡張識別子のマスキング
14
MDIR
R/W
1
値
説明
0
拡張識別子ビット(CANIFnARB2 レジスタの XTD)
は、受容フィルタ処理に影響しません。
1
拡張識別子ビット XTD が受容フィルタ処理に使用
されます。
メッセージ宛先(Direction)のマスキング
値
説明
0
メッセージ宛先ビット(CANIFnARB2 レジスタの
DIR)は、受容フィルタ処理に影響しません。
1
メッセージ宛先ビット DIR が受容フィルタ処理に使
用されます。
13
予約
RO
1
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
12:0
MSK
R/W
0xFF
識別子のマスキング
29 ビット識別子を使用する場合は、これらのビットが ID のビッ
ト[28:16]に使用されます。CANIFnMSK1 レジスタの MSK
フィールドは、ID のビット[15:0]に使用されます。11 ビット識別
子を使用する場合は、MSK[12:2]が ID のビット [10:0]に使用さ
れます。
値
説明
0
メッセージ・オブジェクト内の対応する識別子フィー
ルド(ID)は、フィルタ処理時のマッチングに使用さ
れません。
1
対応する識別子フィールド(ID)が受容フィルタ処理
用に使用されます。
43
レジスタ 16: CAN IF1 アービトレーション 1 (CANIF1ARB1)、オフセット 0x030
レジスタ 17: CAN IF2 アービトレーション 1 (CANIF2ARB1)、オフセット 0x090
これらのレジスタは、受容フィルタ処理用の識別子を保持しています。
CAN IF1 アービトレーション 1 (CANIF1ARB1)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x030
タイプ R/W、リセット 0x0000.0000
表 12
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15:0
ID
R/W
0x0000
メッセージ識別子
このビット・フィールドは、CANIFnARB2 レジスタの ID フィー
ルドとともに、メッセージ識別子の生成に使用されます。
29 ビット識別子を使用している場合は、CANIFnARB1 レジス
タのビット 15:0 が ID の[15:0]であり、CANIFnARB2 レジスタ
のビット 12:0 が ID の[28:16]です。
11 ビット識別子を使用している場合は、これらのビットは使用さ
れません。
44
レジスタ 18: CAN IF1 アービトレーション 2 (CANIF1ARB2)、オフセット 0x034
レジスタ 19: CAN IF2 アービトレーション 2 (CANIF2ARB2)、オフセット 0x094
これらのレジスタは、受容フィルタ処理用の情報を保持しています。
CAN IF1 アービトレーション 2 (CANIF1ARB2)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x034
タイプ R/W、リセット 0x0000.0000
表 13
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15
MSGVAL
R/W
0
有効なメッセージ
値
説明
0
メッセージ・オブジェクトは、メッセージ・ハンドラから
無視されます。
1
メッセージ・オブジェクトは CAN コントローラ内のメッ
セージ・ハンドラにより構成され、処理対象となる準
備ができます。
初期化中、および CANCTL レジスタの INIT ビットをクリアす
る前には、すべての未使用メッセージ・オブジェクトでこのビット
をクリアしておく必要があります。CANIFnARBn レジスタの ID
フィールド、CANIFnARB2 レジスタの XTD ビットと DIR ビット、
CANIFnMCTL レジスタの DLC フィールドのどれかのビットが変
更される前には、あるいはメッセージ・オブジェクトが要求され
なくなった場合には、MSGVAL ビットもクリアしておく必要があり
ます。
14
13
XTD
DIR
R/W
R/W
0
0
拡張識別子
値
説明
0
このメッセージ・オブジェクト用に、11 ビットの標準
的な識別子が使用されます。
1
このメッセージ・オブジェクト用に、29 ビットの拡張
識別子が使用されます。
メッセージ宛先
値
説明
0
受信。CANIFnMCTL レジスタの TXRQST ビット
がセットされていると、このメッセージ・オブジェクト
45
の識別子を伴うリモート・フレームが受信されます。
マッチング識別子の付いたデータ・フレームを受信
したメッセージは、このメッセージ・オブジェクトに格
納されます。
1
12:0
ID
R/W
0x000
送信。CANIFnMCTL レジスタの TXRQST ビットが
セットされていると、各メッセージ・オブジェクトはデ
ータ・フレームとして送信されます。マッチング識別
子の付いたリモート・フレームが受信されると、この
メッセージ・オブジェクトの TXRQST ビットがセットさ
れます(RMTEN=1 の場合)。
メッセージ識別子
このビット・フィールドは、メッセージ識別子を生成するために
CANIFnARB2 レジスタの ID フィールドとともに使用され
ます。
29 ビット識別子を使用している場合は、CANIFnARB1 レジス
タの ID[15:0]が ID の[15:0]であり、これらのビット、つまり
ID[12:0]が ID の[28:16]です。
11 ビット識別子を使用している場合は、ID[12:2]が ID のビット
[10:0]用に使用されます。CANIFnARB1 レジスタの ID フィー
ルドは無視されます。
46
レジスタ 20: CAN IF1 メッセージ制御 (CANIF1MCTL)、オフセット 0x038
レジスタ 21: CAN IF2 メッセージ制御 (CANIF2MCTL)、オフセット 0x098
このレジスタは、メッセージ RAM へ送信される予定のメッセージ・オブジェクト関連の制御情報を保持しています。
CAN IF1 メッセージ制御 (CANIF1MCTL)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x038
タイプ R/W、リセット 0x0000.0000
表 14
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15
NEWDAT
R/W
0
新規データ
14
MSGLST
R/W
0
値
説明
0
最後にこのフラグが CPU によりクリアされて以降、
メッセージ・ハンドラによりこのメッセージ・オブジェ
クトのデータ部分に書き込まれた新規データはあり
ません。
1
メッセージ・ハンドラまたは CPU が、新規データをこ
のメッセージ・オブジェクトのデータ部分に書き込み
ました。
メッセージロスト
値
説明
0
最後にこのビットが CPU によりクリアされて以降、
失われたメッセージはありません。
1
NEWDAT がセットされた時点で、メッセージ・ハンドラ
がこのオブジェクトに新規メッセージを格納し、CPU
がメッセージを失いました。
このビットは、CANIFnARB2 レジスタの DIR ビットがクリアさ
れている場合(受信)のメッセージ・オブジェクトについてのみ有
効です。
13
INTPND
R/W
0
保留の割り込み
値
説明
0
このメッセージ・オブジェクトは、割り込みのソースで
はありません。
1
このメッセージ・オブジェクトは、割り込みのソースで
47
す。より優先度の高い割り込みソースが他に存在し
ない場合は、CANINT レジスタの割り込み識別子
がこのメッセージ・オブジェクトをポイントします。
12
11
10
9
8
7
48
UMASK
TXIE
RXIE
RMTEN
TXRQST
EOB
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
受容マスクの使用
値
説明
0
マスクは無視されます。
1
受容フィルタ処理にマスク(CANIFnMSKn レジスタ
の MSK ビット、MXTD ビット、MDIR ビット)を使用し
ます。
送信割り込みのイネーブル
値
説明
0
フレームの送信が正常に完了した後も、
CANIFnMCTL レジスタの INTPND ビットは変更さ
れません。
1
フレームの送信が正常に完了した後、
CANIFnMCTL レジスタの INTPND ビットがセット
されます。
受信割り込みのイネーブル
値
説明
0
フレームの受信が正常に完了した後も、
CANIFnMCTL レジスタの INTPND ビットは変更さ
れません。
1
フレームの受信が正常に完了した後、
CANIFnMCTL レジスタの INTPND ビットがセット
されます。
リモートのイネーブル
値
説明
0
リモート・フレームの受信時に、CANIFnMCTL レ
ジスタの TXRQST ビットは変更されません。
1
リモート・フレームの受信時に、CANIFnMCTL レ
ジスタの TXRQST ビットがセットされます。
送信の要求
値
説明
0
このメッセージ・オブジェクトは、送信を待機してい
ません。
1
このメッセージ・オブジェクトの送信が要求されてい
ますが、まだ行われていません。
注:
CANIFnCMSK レジスタの WRNRD ビットと
TXRQST ビットがセットされている場合は、このビッ
トは無視されます。
エンド・オブ・バッファ
値
説明
0
メッセージ・オブジェクトは FIFO バッファに属してお
り、FIFO バッファの最後のメッセージ・オブジェクト
ではありません。
1
単一メッセージ・オブジェクト、もしくは FIFO バッファ
の最後のメッセージ・オブジェクトです。
このビットは、2 個以上のメッセージ・オブジェクト(最大 32 個)を
連結して、FIFO バッファを構築するために使用されます。メッ
セージ・オブジェクトがひとつだけ(したがって FIFO バッファに
属していない)の場合には、このビットをセットする必要がありま
す。
6:4
予約
RO
0x0
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
3:0
DLC
R/W
0x0
データ長コード
値
説明
0x0-0x8
データ・フレーム内のバイト数を指定します。
0x9-0xF
デフォルトの、8 バイトを持つデータ・フレームになり
ます。
メッセージ・オブジェクトの CANIFnMCTL レジスタの DLC フィ
ールドは、他のノードにある、同じ識別子を持つ対応するすべ
てのオブジェクトと同様に定義される必要があります。メッセー
ジ・ハンドラはデータ・フレームを格納すると、受信されたメッセ
ージにより与えられた値を DLC を書き込みます。
49
レジスタ
レジスタ
レジスタ
レジスタ
レジスタ
レジスタ
レジスタ
レジスタ
22: CAN IF1 データ A1 (CANIF1DA1)、オフセット 0x03C
23: CAN IF1 データ A2 (CANIF1DA2)、オフセット 0x040
24: CAN IF1 データ B1 (CANIF1DB1)、オフセット 0x044
25: CAN IF1 データ B2 (CANIF1DB2)、オフセット 0x048
26: CAN IF2 データ A1 (CANIF2DA1)、オフセット 0x09C
27: CAN IF2 データ A2 (CANIF2DA2)、オフセット 0x0A0
28: CAN IF2 データ B1 (CANIF2DB1)、オフセット 0x0A4
29: CAN IF2 データ B2 (CANIF2DB2)、オフセット 0x0A8
これらのレジスタには、送信予定のデータか、受信されたデータが入っています。CAN のデータ・フレームでは、デー
タ・バイト 0 が送信または受信される最初のバイトであり、データ・バイト 7 が送信または受信される最後のバイトにな
ります。CAN のシリアル・ビット・ストリームでは、各バイトの MSB が最初に送信されます。
CAN IF1 データ A1 (CANIF1DA1)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x03C
タイプ R/W、リセット 0x0000.0000
表 15
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15:0
DATA
R/W
0x0000
データ
CANIFnDA1 レジスタには、データ・バイト 1 と 0 が入っていま
す。CANIFnDA2 にはデータ・バイト 3 と 2、CANIFnDB1 には
データ・バイト 5 と 4、CANIFnDB2 にはデータ・バイト 7 と 6 が
入っています。
50
レジスタ 30: CAN 送信要求 1 (CANTXRQ1)、オフセット 0x100
レジスタ 31: CAN 送信要求 2 (CANTXRQ2)、オフセット 0x104
CANTXRQ1 レジスタと CANTXRQ2 レジスタは、32 個のメッセージ・オブジェクトの TXRQST ビットを保持していま
す。これらのビットを読み出すことで、CPU ではどのメッセージ・オブジェクトが保留の送信要求を持っているかをチェ
ックできます。個別のメッセージ・オブジェクトの TXRQST ビットは、 (1) CANIFnMCTL レジスタを介した CPU (2) リ
モート・フレームを受信した後の、メッセージ・ハンドラのステート・マシン (3) 正常に完了した送信後の、メッセージ・
ハンドラのステート・マシンという、3 つのソースによって変更可能です。
CANTXRQ1 レジスタには、メッセージ RAM にある前半 16 個のメッセージ・オブジェクトの TXRQST ビットが入って
おり、CANTXRQ2 レジスタには後半 16 個のメッセージ・オブジェクトの TXRQST ビットが入っています。
CAN 送信要求 1 (CANTXRQ1)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x100
タイプ RO、リセット 0x0000.0000
表 16
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15:0
TXRQST
RO
0x0000
送信要求ビット
値
説明
0
対応するメッセージ・オブジェクトは、送信を待機し
ていません。
1
対応するメッセージ・オブジェクトの送信が要求され
ましたが、まだ行われていません。
51
レジスタ 32: CAN 新規データ 1 (CANNWDA1)、オフセット 0x120
レジスタ 33: CAN 新規データ 2 (CANNWDA2)、オフセット 0x124
CANNWDA1 レジスタと CANNWDA2 レジスタは、32 個のメッセージ・オブジェクトの NEWDAT ビットを保持していま
す。これらのビットを読み出すことで、CPU ではどのメッセージ・オブジェクトのデータ部分がアップデートされたかを
チェックできます。個別のメッセージ・オブジェクトの NEWDAT ビットは、(1) CANIFnMCTL レジスタを介した CPU (2)
データ・フレームを受信した後の、メッセージ・ハンドラのステート・マシン (3) 正常に完了した送信後の、メッセージ・
ハンドラのステート・マシンという、3 つのソースによって変更可能です。
CANNWDA1 レジスタには、メッセージ RAM にある前半 16 個のメッセージ・オブジェクトの NEWDAT ビットが入って
おり、CANNWDA2 レジスタには後半 16 個のメッセージ・オブジェクトの NEWDAT ビットが入っています。
CAN 新規データ 1 (CANNWDA1)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x120
タイプ RO、リセット 0x0000.0000
表 17
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15:0
NEWDAT
RO
0x0000
新規データ・ビット
52
値
説明
0
このフラグが最後に CPU にクリアされて以降、メッ
セージ・ハンドラにより、対応するメッセージ・オブジ
ェクトのデータ部分に書き込まれた新規データはあ
りません。
1
メッセージ・ハンドラまたは CPU が、対応するメッ
セージ・オブジェクトのデータ部分に新規データを
書き込みました。
レジスタ 34: CAN メッセージ 1 割り込み保留 (CANMSG1INT)、オフセット 0x140
レジスタ 35: CAN メッセージ 2 割り込み保留 (CANMSG2INT)、オフセット 0x144
CANMSG1INT レジスタと CANMSG2INT レジスタは、32 個のメッセージ・オブジェクトの INTPND ビットを保持して
います。これらのビットを読み出すことで、CPU ではどのメッセージ・オブジェクトが保留中の割り込みを持っているか
をチェックできます。個別のメッセージ・オブジェクトの INTPND ビットは、(1) CANIFnMCTL レジスタを介した CPU
(2) フレームの受信または送信後の、メッセージ・ハンドラのステート・マシンという、2 つのソースを介して変更可能
です。
このフィールドは、CANINT レジスタでもエンコードされます。
CANMSG1INT レジスタには、メッセージ RAM にある前半 16 個のメッセージ・オブジェクトの INTPND ビットが入っ
ており、CANMSG2INT レジスタには後半 16 個のメッセージ・オブジェクトの INTPND ビットが入っています。
CAN メッセージ 1 割り込み保留 (CANMSG1INT)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x140
タイプ RO、リセット 0x0000.0000
表 18
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15:0
INTPND
RO
0x0000
割り込み保留ビット
値
説明
0
対応するメッセージ・オブジェクトは、割り込みの
ソースではありません。
1
対応するメッセージ・オブジェクトは、割り込みの
ソースです。
53
レジスタ 36: CAN メッセージ 1 有効 (CANMSG1VAL)、オフセット 0x160
レジスタ 37: CAN メッセージ 2 有効 (CANMSG2VAL)、オフセット 0x164
CANMSG1VAL レジスタと CANMSG2VAL レジスタは、32 個のメッセージ・オブジェクトの MSGVAL ビットを保持し
ています。これらのビットを読み出すことで、CPU ではどのメッセージ・オブジェクトが有効かをチェックできます。個別
のメッセージ・オブジェクトのメッセージ有効ビットは、CANIFnARB2 レジスタを使用して変更可能です。
CANMSG1VAL レジスタには、メッセージ RAM にある前半 16 個のメッセージ・オブジェクトの MSGVAL ビットが入っ
ており、CANMSG2VAL レジスタには、メッセージ RAM にある後半 16 個のメッセージ・オブジェクトの MSGVAL ビッ
トが入っています。
CAN メッセージ 1 有効 (CANMSG1VAL)
CAN0 ベース: 0x4004.0000
CAN1 ベース: 0x4004.1000
オフセット 0x160
タイプ RO、リセット 0x0000.0000
表 19
ビット /
フィールド
名称
タイプ
リセット
説明
31:16
予約
RO
0x0000
予約ビットの値はソフトウェアで使用しないでください。将来の
製品との互換性のため、予約ビットの値はリード・モディファ
イ・ライト処理から保護する必要があります。
15:0
MSGVAL
RO
0x0000
メッセージ有効ビット
54
値
説明
0
対応するメッセージ・オブジェクトは構成されず、メッ
セージ・ハンドラから無視されます。
1
対応するメッセージ・オブジェクトが構成され、メッ
セージ・ハンドラの処理対象になります。