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 対応するメッセージ・オブジェクトが構成され、メッ セージ・ハンドラの処理対象になります。
© Copyright 2024