CAN Controllerは、 ISO 11898-1, CAN2.0A および CAN2.0Bに準拠した CAN通信 IPコアです。 1 Mbpsのビットレートをサポートしています。
CAN Controllerは、Base Address 0x4040_0000に配置されています。
Offset | Symbol | Register | Initial |
---|---|---|---|
0x0000 | CAN_ENR | CAN Enable Register | 0x00000000 |
0x0008 | CAN_TQPR | CAN Time Quantum Prescaler Register | 0x00000000 |
0x000C | CAN_BTSR | CAN Bit Timing Setting Register | 0x00000000 |
0x0010 | CAN_ECNTR | CAN Error Count Register | 0x00000000 |
0x0018 | CAN_STSR | CAN Status Register | 0x00000000 |
0x0020 | CAN_ISR | CAN Interrupt Status Register | 0x00000000 |
0x0024 | CAN_IER | CAN Interrupt Enable Register | 0x00000000 |
0x0030 | CAN_TMR1 | CAN TX Message Register1 | 0x00000000 |
0x0034 | CAN_TMR2 | CAN TX Message Register2 | 0x00000000 |
0x0038 | CAN_TMR3 | CAN TX Message Register3 | 0x00000000 |
0x003C | CAN_TMR4 | CAN TX Message Register4 | 0x00000000 |
0x0040 | CAN_THPMR1 | CAN TX High Priority Message Register1 | 0x00000000 |
0x0044 | CAN_THPMR2 | CAN TX High Priority Message Register2 | 0x00000000 |
0x0048 | CAN_THPMR3 | CAN TX High Priority Message Register3 | 0x00000000 |
0x004C | CAN_THPMR4 | CAN TX High Priority Message Register4 | 0x00000000 |
0x0050 | CAN_RMR1 | CAN RX Message Register1 | 0x00000000 |
0x0054 | CAN_RMR2 | CAN RX Message Register2 | 0x00000000 |
0x0058 | CAN_RMR3 | CAN RX Message Register3 | 0x00000000 |
0x005C | CAN_RMR4 | CAN RX Message Register4 | 0x00000000 |
0x0060 | CAN_AFER | CAN Acceptance Filter Enable Register | 0x00000000 |
0x0070 | CAN_AFIMR1 | CAN Acceptance Filter ID Mask Register1 | 0x00000000 |
0x0074 | CAN_AFIVR1 | CAN Acceptance Filter ID Value Register1 | 0x00000000 |
0x0090 | CAN_AFIMR2 | CAN Acceptance Filter ID Mask Register2 | 0x00000000 |
0x0094 | CAN_AFIVR2 | CAN Acceptance Filter ID Value Register2 | 0x00000000 |
0x00B0 | CAN_AFIMR3 | CAN Acceptance Filter ID Mask Register3 | 0x00000000 |
0x00B4 | CAN_AFIVR3 | CAN Acceptance Filter ID Value Register3 | 0x00000000 |
0x00D0 | CAN_AFIMR4 | CAN Acceptance Filter ID Mask Register4 | 0x00000000 |
0x00D4 | CAN_AFIVR4 | CAN Acceptance Filter ID Value Register4 | 0x00000000 |
0x00F0 | CAN_FIFORR | CAN FIFO and Buffer Reset Register | 0x00000000 |
0x0100 | CAN_STMCR | CAN Self Test Mode Control Register | 0x00000000 |
0x0200 | CAN_PSLMCR | CAN PHY Sleep Mode Control Register | 0x00000000 |
0xF000 | CAN_VER | CAN Controller IP Version Register | - |
CAN Enable Registerは、CAN通信におけるEnable設定を行うレジスタです。
CAN_ENが Disableの時、CAN Controllerは CANバスに Recessive (High level)を出力し、メッセージの送受信を行いません。 CAN_ENが Enableになると、CANバス上に連続する 11bitの Recessiveを 1回検出した後にエラーアクティブ状態となり、メッセージの送受信が可能となります。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:1 | - | Reserved | Reserved | - |
0 | CAN_EN | CAN Enable | CAN通信のEnableを設定します。0: Disable 1: Enable | R/W |
CAN Time Quantum Prescaler Registerは、Time Quantum Clock周期の設定を行うレジスタです。 このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:16 | - | Reserved | Reserved | - |
15:0 | CAN_TQPSET | Time Quantum Cycle | Time Quantum Clockの時間(Tq)を設定します。この設定は、CANクロックのサイクル数を設定します。CANクロックは システムクロックの周波数によらず、常に 24 MHzです。 | R/W |
Time Quantum Clock(Tq)に設定する値は、次の式で計算できます。
$Tq[s] = CANクロック\ period[s] × \left(CAN\_TQPSET+1\right)$
CAN Bit Timing Setting Registerは、サンプリングや同期制御に必要なビット時間の設定を行うレジスタです。 このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:9 | - | Reserved | Reserved | - |
8:7 | CAN_SJW | Synchronization Jump Width | 同期ジャンプ幅の最大時間(Tsjw)を設定します。このフィールドには、Tqのサイクル数を設定します。 | R/W |
6:4 | CAN_TS2 | Time Segment 2 | Phase Segment2の時間(Tts2)を設定します。このフィールドには、Tqのサイクル数を設定します。 | R/W |
3:0 | CAN_TS1 | Time Segment 1 | Phase Segment1の時間(Tts1)を設定します。このフィールドには、Tqのサイクル数を設定します。 | R/W |
Phase Segment1(Tts1)、Phase Segment2(Tts2)、同期ジャンプ幅(Tsjw)に設定する値は、次の式で計算できます。
$Tts1[s] = Tq[s] × \left(CAN\_TS1+1\right)$
$Tts2[s] = Tq[s] × \left(CAN\_TS2+1\right)$
$Tsjw[s] = Tq[s] × \left(CAN\_SJW+1\right)$
CAN Error Count Registerは、CAN通信におけるエラーの検出回数を表示するレジスタです。 エラー検出時に、カウンターをエラー要因に応じ決められた数のインクリメントを行います。
Transmit Error Counter 及び Receive Error Counterは、以下の条件でリセットされます。
- CAN Enable Registerの CAN_ENビットに “0”が書き込まれた時
- CAN Controllerが Bus OFF状態になってから 11Bitの Recessiveビットを 128回検出した時
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:16 | - | Reserved | Reserved | - |
15:8 | CAN_RXECNT | Receive Error Counter | 受信エラーをカウントする 8bitのカウンタです。 | RO |
7:0 | CAN_TXECNT | Transmit Error Counter | 送信エラーをカウントする 8bitのカウンタです。 | RO |
CAN Status Registerは、CAN Controllerのステータスを表示するレジスタです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:8 | - | Reserved | Reserved | - |
7 | CAN_RXFFL | RX FIFO Full | RX FIFOの Full状態を示すビットです。0: RX FIFOは Not Full状態 1: RX FIFOは Full状態 | RO |
6 | CAN_TXFFL | TX FIFO Full | TX FIFOの Full状態を示すビットです。0: TX FIFOは Not Full状態 1: TX FIFOが Full状態 | RO |
5 | CAN_TXHBFL | TX High Priority Buffer Full | TX High Priority Bufferの Full状態を示すビットです。0: TX High Priority Bufferは Not Full状態 1: TX High Priority BufferはFull状態 | RO |
4 | CAN_TXFNEP | TX FIFO Not Empty | TX FIFOの Empty状態を示すビットです。0: TX FIFOは Empty状態 1: TX FIFOは Not Empty状態 | RO |
3:2 | CAN_ESTS | Error Status | Errorステータスを示すビットです。0b00: CAN_EN Disable 0b01: Error Active状態 0b10: Error Passive状態 0b11: Bus OFF状態 | RO |
1 | CAN_EWRN | Error Warning | Error Warningステータスを示すビットです。Transmit Error Counterまたは Receive Error Counterが 96以上の値を示すとき、Error Warning状態と認識します。0: 非Error Warning状態 1: Error Warning状態 | RO |
0 | CAN_BBUSY | Bus Busy | CANバスのステータスを示すビットです。0: Bus Idle状態 または CAN_ENが Disable状態 1: Bus Busy状態 (CANバスの通信が行われている状態) | RO |
CAN Interrupt Status Registerは、CAN Controllerの動作における割り込みステータスレジスタです。 それぞれのビットは 1をセットすると、該当の割り込みをクリアする事ができます。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:14 | - | Reserved | Reserved | - |
13 | CAN_BUSOFF | Bus Off | Bus Offが発生したことを示すビットです。送信エラーカウント値が 255を超える状態を検出した場合に本ビットが “1”にセットされます。 | R/WC |
12 | CAN_ACKER | ACK Error | ACK Errorが発生したことを示すビットです。データフレーム、リモートフレームの送信中に ACK Slotビットで Recessive (“1”)を検出した場合に本ビットが “1”にセットされます。 | R/WC |
11 | CAN_BITER | BIT Error | BIT Errorが発生したことを示すビットです。送信中の値と異なる受信値を検出した場合に本ビットが “1”にセットされます。 | R/WC |
10 | CAN_STFER | Stuff Error | Stuff Errorが発生したことを示すビットです。受信中に CANバス上で同一の値を連続 6回検出した場合に本ビットが “1”にセットされます。 | R/WC |
9 | CAN_FMER | Form Error | Form Errorが発生したことを示すビットです。受信中フレームの固定フィールド内で異なる Formatを検出した場合に本ビットが “1”にセットされます。 | R/WC |
8 | CAN_CRCER | CRC Error | CRC Errorが発生したことを示すビットです。受信したデータフレーム、リモートフレームの CRC値の期待不一致を検出した場合に本ビットが “1”にセットされます。 | R/WC |
7 | CAN_RXFOVF | RX FIFO Overflow | RX FIFOの Overflowが発生したことを示すビットです。RX FIFO容量を超えるメッセージを受信した場合に本ビットが “1”にセットされます。 | R/WC |
6 | CAN_RXFUDF | RX FIFO Underflow | RX FIFOの Underflowが発生したことを示すビットです。RX FIFOが Empty状態の時に、CAN RX Message Registerから読み出しを行った場合に本ビットが “1”にセットされます。 | R/WC |
5 | CAN_RXFVAL | RX FIFO Data Valid | RX FIFOにデータが格納されていることを示すビットです。RX FIFOが Not Empty状態となった場合に本ビットが “1”にセットされます。本ビットはクリアしても RX FIFOが Empty状態になるまで、セットされます。RX FIFOに複数のメッセージが格納されている場合、CAN RX Message Registerを読み出した時に、このビットがセットされます。 | R/WC |
4 | CAN_RCVDN | CAN Message Receive Done | 新しいメッセージを受信した事を示すビットです。データフレームまたはリモートフレームを正常に受信し、RX FIFOへの受信メッセージの格納が完了した時、本ビットが “1”にセットされます。 | R/WC |
3 | CAN_TXFOVF | TX FIFO Overflow | TX FIFOの Overflowが発生したことを示すビットです。TX FIFO容量を超えるメッセージを CAN TX Message Registerにメッセージを書き込んだ場合、本ビットが “1”にセットされます。 | R/WC |
2 | CAN_TXHBOVF | TX High Priority Buffer Overflow | TX High Priority Bufferの Overflowが発生したことを示すビットです。TX High Priority Bufferにメッセージが格納されている状態で CAN TX High Priority Message Registerにメッセージを書き込んだ場合、本ビットが “1”にセットされます。 | R/WC |
1 | CAN_ARBLST | CAN Arbitration Lost | 送信メッセージの Arbitration Lostが発生した事を示すビットです。データフレーム、リモートフレームの送信中に他ノードとの送信競合が発生し、調停制御により送信を停止した時、本ビットが “1”にセットされます。 | R/WC |
0 | CAN_TRNSDN | CAN Message Transmit Done | メッセージを送信した事を示すビットです。データフレームまたはリモートフレームの送信が正常に完了した時、本ビットが “1”にセットされます。 | R/WC |
CAN Interrupt Enable Registerは、CAN Controllerの動作において発生した割り込みイベントを割り込み出力信号に通知するか設定するためのレジスタです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:14 | - | Reserved | Reserved | - |
13 | CAN_BUSOFFENB | Bus Off Enable | CAN Controllerの動作においてCAN_BUSOFFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
12 | CAN_ACKERENB | ACK Error Enable | CAN Controllerの動作においてCAN_ACKERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
11 | CAN_BITERENB | BIT Error Enable | CAN Controllerの動作においてCAN_BITERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
10 | CAN_STFERENB | Stuff Error Enable | CAN Controllerの動作においてCAN_STFERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
9 | CAN_FMERENB | Form Error Enable | CAN Controllerの動作においてCAN_FMERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
8 | CAN_CRCERENB | CRC Error Enable | CAN Controllerの動作においてCAN_CRCERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
7 | CAN_RXFOVFENB | RX FIFO Overflow Enable | CAN Controllerの動作においてCAN_RXFOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
6 | CAN_RXFUDFENB | RX FIFO Underflow Enable | CAN Controllerの動作においてCAN_RXFUDFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
5 | CAN_RXFVALENB | RX FIFO Data Valid Enable | CAN Controllerの動作においてCAN_RXFVALイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
4 | CAN_RCVDNENB | CAN Message Receive Done Enable | CAN Controllerの動作においてCAN_RCVDNイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
3 | CAN_TXFOVFENB | TX FIFO Overflow Enable | CAN Controllerの動作においてCAN_TXFOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
2 | CAN_TXHBOVFENB | TX High Priority Buffer Overflow Enable | CAN Controllerの動作においてCAN_TXHBOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
1 | CAN_ARBLSTENB | CAN Arbitration Lost Enable | CAN Controllerの動作においてCAN_ARBLSTイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
0 | CAN_TRNSDNENB | CAN Message Transmit Done Enable | CAN Controllerの動作においてCAN_TRNSDNイベントが発生した時に割り込み信号を発生させるかどうかを設定します。 | R/W |
CAN TX Message Register 1は、送信する CANフレームのメッセージ識別子 (IDR)を TX FIFOに書き込むためのレジスタです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_TXID1 | TX Standard Message ID | ID[28:18]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。 | WO |
20 | CAN_TXSRTR | TX Standard Remote Transmission Request | RTR、SRRビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。- RTR(標準フレーム): 0: データフレーム 1: リモートフレーム - SRR(拡張フレーム): 1に設定する必要があります。 | WO |
19 | CAN_TXIDE | TX Identifier Extension | IDEビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。0: 標準フレーム 1: 拡張フレーム | WO |
18:1 | CAN_TXID2 | TX Extended Message ID | ID[17:0]を TX FIFOに書き込むためのフィールドです。拡張フレーム送信時のみ使用されます。CAN_TXIDEビットを “0”に設定した場合、このフィールドに書き込んだデータは使用されません。 | WO |
0 | CAN_TXERTR | TX Extended Remote Transmission Request | 拡張フレーム送信でのみ使用されるRTRビット値を設定します。0: データフレーム 1: リモートフレーム CAN_TXIDEビットを0に設定した場合は、このビットの書き込み値は使用されません。 | WO |
CAN TX Message Register 2は、送信する CANフレームのデータ長コード (DLC)を TX FIFOに書き込むためのレジスタです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:4 | - | Reserved | Reserved | - |
3:0 | CAN_TXDLC | TX Data Length Code | DCL[3:0]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。このフィールドには データフレームの送信 Byte数や リモートフレームの送信時に要求するデータの Byte数を設定します。設定可能な値は 0〜8です。 | WO |
CAN TX Message Register 3は、CANのデータフレームを送信する場合において、データフィールドの Byte 0から Byte 3 (Data Word 1)を書き込むためのレジスタです。 データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:24 | CAN_TXDB0 | TX Data Byte 0 | データフィールドの Byte 0を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 1以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
23:16 | CAN_TXDB1 | TX Data Byte 1 | データフィールドの Byte 1を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 2以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
15:8 | CAN_TXDB2 | TX Data Byte 2 | データフィールドの Byte 2を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 3以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
7:0 | CAN_TXDB3 | TX Data Byte 3 | データフィールドの Byte 3を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 4以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
CAN TX Message Register 4は、CANのデータフレームを送信する場合において、データフィールドの Byte 4から Byte 7 (Data Word 2)を書き込むためのレジスタです。 データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:24 | CAN_TXDB4 | TX Data Byte 4 | データフィールドの Byte 4を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 5以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
23:16 | CAN_TXDB5 | TX Data Byte 5 | データフィールドの Byte 5を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 6以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
15:8 | CAN_TXDB6 | TX Data Byte 6 | データフィールドの Byte 6を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 7以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
7:0 | CAN_TXDB7 | TX Data Byte 7 | データフィールドの Byte 7を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 8以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
CAN TX High Priority Message Register 1は、高優先で送信する CANフレームのメッセージ識別子 (IDR)を TX FIFOに書き込むためのレジスタです。
CAN TX High Priority Message Register 1、2、3、4にデータを書き込むと、TX FIFOに格納されているデータの有無に関わらず、優先して CAN TX High Priority Message Registerに書き込まれたデータが CANフレームとして送信されます。 このRegisterの仕様は CAN TX Message Register 1と同じです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_TXHPID1 | TX High Priority Standard Message ID | ID[28:18]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。 | WO |
20 | CAN_TXHPSRTR | TX High Priority Standard Remote Transmission Request | RTR、SRRビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。- RTR(標準フレーム): 0: データフレーム 1: リモートフレーム - SRR(拡張フレーム): 1に設定する必要があります。 | WO |
19 | CAN_TXHPIDE | TX High Priority Identifier Extension | IDEビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。0: 標準フレーム 1: 拡張フレーム | WO |
18:1 | CAN_TXHPID2 | TX High Priority Extended Message ID | ID[17:0]を TX FIFOに書き込むためのフィールドです。拡張フレーム送信時のみ使用されます。CAN_TXIDEビットを “0”に設定した場合、このフィールドに書き込んだデータは使用されません。 | WO |
0 | CAN_TXHPERTR | TX High Priority Extended Remote Transmission Request | 拡張フレーム送信でのみ使用されるRTRビット値を設定します。0: データフレーム 1: リモートフレーム CAN_TXIDEビットを0に設定した場合は、このビットの書き込み値は使用されません。 | WO |
CAN TX High Priority Message Register 2は、高優先で送信する CANフレームのデータ長コード (DLC)を TX FIFOに書き込むためのレジスタです。
CAN TX High Priority Message Register 1、2、3、4にデータを書き込むと、TX FIFOに格納されているデータの有無に関わらず、優先して CAN TX High Priority Message Registerに書き込まれたデータが CANフレームとして送信されます。 このRegisterの仕様は CAN TX Message Register 2と同じです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:4 | - | Reserved | Reserved | - |
3:0 | CAN_TXHPDLC | TX High Priority Data Length Code | DCL[3:0]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。このフィールドには データフレームの送信 Byte数や リモートフレームの送信時に要求するデータの Byte数を設定します。設定可能な値は 0〜8です。 | WO |
CAN TX High Priority Message Register 3は、CANのデータフレームを送信する場合において、データフィールドの Byte 0から Byte 3 (Data Word 1)を書き込むためのレジスタです。
データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。
CAN TX High Priority Message Register 1、2、3、4にデータを書き込むと、TX FIFOに格納されているデータの有無に関わらず、優先して CAN TX High Priority Message Registerに書き込まれたデータが CANフレームとして送信されます。 このRegisterの仕様は CAN TX Message Register 3と同じです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:24 | CAN_TXHPDB0 | TX High Priority Data Byte 0 | データフィールドの Byte 0を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 1以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
23:16 | CAN_TXHPDB1 | TX High Priority Data Byte 1 | データフィールドの Byte 1を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 2以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
15:8 | CAN_TXHPDB2 | TX High Priority Data Byte 2 | データフィールドの Byte 2を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 3以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
7:0 | CAN_TXHPDB3 | TX High Priority Data Byte 3 | データフィールドの Byte 3を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 4以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
CAN TX High Priority Message Register 4は、CANのデータフレームを送信する場合において、データフィールドの Byte 4から Byte 7 (Data Word 2)を書き込むためのレジスタです。
データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。
CAN TX High Priority Message Register 1、2、3、4にデータを書き込むと、TX FIFOに格納されているデータの有無に関わらず、優先して CAN TX High Priority Message Registerに書き込まれたデータが CANフレームとして送信されます。 このRegisterの仕様は CAN TX Message Register 4と同じです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:24 | CAN_TXHPDB4 | TX High Priority Data Byte 4 | データフィールドの Byte 4を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 5以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
23:16 | CAN_TXHPDB5 | TX High Priority Data Byte 5 | データフィールドの Byte 5を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 6以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
15:8 | CAN_TXHPDB6 | TX High Priority Data Byte 6 | データフィールドの Byte 6を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 7以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
7:0 | CAN_TXHPDB7 | TX High Priority Data Byte 7 | データフィールドの Byte 7を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 8以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。 | WO |
CAN RX Message Register 1は、受信した CANフレームのメッセージ識別子 (IDR)を RX FIFOから読み出すためのレジスタです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_RXID1 | RX Standard Message ID | 受信した標準フレーム または、拡張フレームの ID[28:18]フィールドを RX FIFOから読み出すためのフィールドです。 | RO |
20 | CAN_RXSRTR | RX Standard Remote Transmission Request | 受信した標準フレームの RTRビット または、拡張フレームの SRRビットを RX FIFOから読み出すためのビットです。- 標準フレーム 0: データフレーム 1: リモートフレーム - 拡張フレーム: 1が読み出されます | RO |
19 | CAN_RXIDE | RX Identifier Extension | 受信した標準フレーム または、拡張フレームの IDEビットを RX FIFOから読み出すためのビットです。0: 標準フレーム 1: 拡張フレーム | RO |
18:1 | CAN_RXID2 | RX Extended Message ID | 受信した拡張フレームの ID[17:0]フィールドを RX FIFOから読み出すためのフィールドです。標準フレームの場合は、0が読み出されます。 | RO |
0 | CAN_RXERTR | RX Extended Remote Transmission Request | 受信した拡張フレームの RTRビットを RX FIFOから読み出すためのビットです。0: データフレーム 1: リモートフレーム 標準フレームの場合は、0が読み出されます。 | RO |
CAN RX Message Register 2は、受信した CANフレームの受信データ長コード (DLC)を RX FIFOから読み出すためのレジスタです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:4 | - | Reserved | Reserved | - |
3:0 | CAN_RXDLC | RX Data Length Code | 受信した標準フレーム または、拡張フレームの DLC[3:0]フィールドを RX FIFOから読み出すためのフィールドです。このフィールドから読み出される値は、リモートフレームの受信時を除き CAN RX Message Register 3、4に格納されたデータの有効 Byte数を示します。 | RO |
CAN RX Message Register 3は、受信した CANフレームのデータフィールドの Byte 0から Byte 3 (Data Word 1)を RX FIFOから読み出すためのレジスタです。
データフレームを受信していない場合でも、このレジスタは読み出しを行う必要があります。 データフレームを受信していない場合、読み出される値は無効であるため破棄してください (読み出し値は 0となります)。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:24 | CAN_RXDB0 | RX Data Byte 0 | データフィールドの Byte 0を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 1以上を示す時、このフィールドのデータは有効データとなります。 | RO |
23:16 | CAN_RXDB1 | RX Data Byte 1 | データフィールドの Byte 1を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 2以上を示す時、このフィールドのデータは有効データとなります。 | RO |
15:8 | CAN_RXDB2 | RX Data Byte 2 | データフィールドの Byte 2を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 3以上を示す時、このフィールドのデータは有効データとなります。 | RO |
7:0 | CAN_RXDB3 | RX Data Byte 3 | データフィールドの Byte 3を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 4以上を示す時、このフィールドのデータは有効データとなります。 | RO |
CAN RX Message Register 4は、受信した CANフレームのデータフィールドの Byte 4から Byte 7 (Data Word 2)を RX FIFOから読み出すためのレジスタです。
データフレームを受信していない場合でも、このレジスタは読み出しを行う必要があります。 データフレームを受信していない場合、読み出される値は無効であるため破棄してください (読み出し値は 0となります)。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:24 | CAN_RXDB4 | RX Data Byte 4 | データフィールドの Byte 4を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 5以上を示す時、このフィールドのデータは有効データとなります。 | RO |
23:16 | CAN_RXDB5 | RX Data Byte 5 | データフィールドの Byte 5を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 6以上を示す時、このフィールドのデータは有効データとなります。 | RO |
15:8 | CAN_RXDB6 | RX Data Byte 6 | データフィールドの Byte 6を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 7以上を示す時、このフィールドのデータは有効データとなります。 | RO |
7:0 | CAN_RXDB7 | RX Data Byte 7 | データフィールドの Byte 7を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 8以上を示す時、このフィールドのデータは有効データとなります。 | RO |
CAN Acceptance Filter Enable Registerは、CAN Acceptance Filterの設定を行うレジスタです。 このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:4 | - | Reserved | Reserved | - |
3 | CAN_UAF4 | Use Acceptance Filter4 | Acceptance Filter 4の使用有無を設定するためのビットです。このビットが “1”に設定されている時、CAN Acceptance Filter ID Value Register 4と CAN Acceptance Filter ID Mask Register 4の設定値が Acceptance Filterとして使用されます。 | R/W |
2 | CAN_UAF3 | Use Acceptance Filter3 | Acceptance Filter 3の使用有無を設定するためのビットです。このビットが “1”に設定されている時、CAN Acceptance Filter ID Value Register 3と CAN Acceptance Filter ID Mask Register 3の設定値が Acceptance Filterとして使用されます。 | R/W |
1 | CAN_UAF2 | Use Acceptance Filter2 | Acceptance Filter 2の使用有無を設定するためのビットです。このビットが “1”に設定されている時、CAN Acceptance Filter ID Value Register 2と CAN Acceptance Filter ID Mask Register 2の設定値が Acceptance Filterとして使用されます。 | R/W |
0 | CAN_UAF1 | Use Acceptance Filter1 | Acceptance Filter 1の使用有無を設定するためのビットです。このビットが “1”に設定されている時、CAN Acceptance Filter ID Value Register 1と CAN Acceptance Filter ID Mask Register 1の設定値が Acceptance Filterとして使用されます。 | R/W |
CAN Acceptance Filter ID Mask Register 1は、CAN Acceptance Filter 1で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで “1”がセットされたビットは、受信フレームとの比較対象となります。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_ID1AFM1 | Standard Message ID Mask 1 | CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。 | R/W |
20 | CAN_SRTRAFM1 | Standard Remote Transmission Request Mask 1 | CAN Acceptance Filter 1において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。 | R/W |
19 | CAN_IDEAFM1 | Identifier Extension Mask 1 | CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。 | R/W |
18:1 | CAN_ID2AFM1 | Extended Message ID Mask 1 | CAN Acceptance Filter 1において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。 | R/W |
0 | CAN_ERTRAFM1 | Extended Remote Transmission Request Mask 1 | CAN Acceptance Filter 1において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。 | R/W |
CAN Acceptance Filter ID Value Register 1は、Acceptance Filter 1で受信フレームとの比較を行う値を設定するためのレジスタです。 CAN Acceptance Filter ID Mask Register 1で “1”がセットされているビットが、受信フレームと CAN Acceptance FIlter ID Value Register 1の間で一致した場合、その受信フレームが RX FIFOに格納されます。 従って、CAN Acceptance Filter ID Mask Register 1でセットされていないビットは、フィルターの対象となりません。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_ID1AFV1 | Standard Message ID Value 1 | CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。 | R/W |
20 | CAN_SRTRAFV1 | Standard Remote Transmission Request Value 1 | CAN Acceptance Filter 1において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。 | R/W |
19 | CAN_IDEAFV1 | Identifier Extension Value 1 | CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。 | R/W |
18:1 | CAN_ID2AFV1 | Extended Message ID Value 1 | CAN Acceptance Filter 1において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。 | R/W |
0 | CAN_ERTRAFV1 | Extended Remote Transmission Request Value 1 | CAN Acceptance Filter 1において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。 | R/W |
CAN Acceptance Filter ID Mask Register 2は、CAN Acceptance Filter 2で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで “1”がセットされたビットは、受信フレームとの比較対象となります。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_ID1AFM2 | Standard Message ID Mask 2 | CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。 | R/W |
20 | CAN_SRTRAFM2 | Standard Remote Transmission Request Mask 2 | CAN Acceptance Filter 2において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。 | R/W |
19 | CAN_IDEAFM2 | Identifier Extension Mask 2 | CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。 | R/W |
18:1 | CAN_ID2AFM2 | Extended Message ID Mask 2 | CAN Acceptance Filter 2において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。 | R/W |
0 | CAN_ERTRAFM2 | Extended Remote Transmission Request Mask 2 | CAN Acceptance Filter 2において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。 | R/W |
CAN Acceptance Filter ID Value Register 2は、Acceptance Filter 2で受信フレームとの比較を行う値を設定するためのレジスタです。 CAN Acceptance Filter ID Mask Register 2で “1”がセットされているビットが、受信フレームと CAN Acceptance FIlter ID Value Register 2の間で一致した場合、その受信フレームが RX FIFOに格納されます。 従って、CAN Acceptance Filter ID Mask Register 2でセットされていないビットは、フィルターの対象となりません。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_ID1AFV2 | Standard Message ID Value 2 | CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。 | R/W |
20 | CAN_SRTRAFV2 | Standard Remote Transmission Request Value 2 | CAN Acceptance Filter 2において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。 | R/W |
19 | CAN_IDEAFV2 | Identifier Extension Value 2 | CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。 | R/W |
18:1 | CAN_ID2AFV2 | Extended Message ID Value 2 | CAN Acceptance Filter 2において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。 | R/W |
0 | CAN_ERTRAFV2 | Extended Remote Transmission Request Value 2 | CAN Acceptance Filter 2において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。 | R/W |
CAN Acceptance Filter ID Mask Register 3は、CAN Acceptance Filter 3で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで “1”がセットされたビットは、受信フレームとの比較対象となります。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_ID1AFM3 | Standard Message ID Mask 3 | CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。 | R/W |
20 | CAN_SRTRAFM3 | Standard Remote Transmission Request Mask 3 | CAN Acceptance Filter 3において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。 | R/W |
19 | CAN_IDEAFM3 | Identifier Extension Mask 3 | CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。 | R/W |
18:1 | CAN_ID2AFM3 | Extended Message ID Mask 3 | CAN Acceptance Filter 3において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。 | R/W |
0 | CAN_ERTRAFM3 | Extended Remote Transmission Request Mask 3 | CAN Acceptance Filter 3において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。 | R/W |
CAN Acceptance Filter ID Value Register 3は、Acceptance Filter 3で受信フレームとの比較を行う値を設定するためのレジスタです。 CAN Acceptance Filter ID Mask Register 3で “1”がセットされているビットが、受信フレームと CAN Acceptance FIlter ID Value Register 3の間で一致した場合、その受信フレームが RX FIFOに格納されます。 従って、CAN Acceptance Filter ID Mask Register 3でセットされていないビットは、フィルターの対象となりません。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_ID1AFV3 | Standard Message ID Value 3 | CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。 | R/W |
20 | CAN_SRTRAFV3 | Standard Remote Transmission Request Value 3 | CAN Acceptance Filter 3において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。 | R/W |
19 | CAN_IDEAFV3 | Identifier Extension Value 3 | CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。 | R/W |
18:1 | CAN_ID2AFV3 | Extended Message ID Value 3 | CAN Acceptance Filter 3において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。 | R/W |
0 | CAN_ERTRAFV3 | Extended Remote Transmission Request Value 3 | CAN Acceptance Filter 3において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。 | R/W |
CAN Acceptance Filter ID Mask Register 4は、CAN Acceptance Filter 4で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで “1”がセットされたビットは、受信フレームとの比較対象となります。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_ID1AFM3 | Standard Message ID Mask 4 | CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。 | R/W |
20 | CAN_SRTRAFM3 | Standard Remote Transmission Request Mask 4 | CAN Acceptance Filter 4において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。 | R/W |
19 | CAN_IDEAFM3 | Identifier Extension Mask 4 | CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。 | R/W |
18:1 | CAN_ID2AFM3 | Extended Message ID Mask 4 | CAN Acceptance Filter 4において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。 | R/W |
0 | CAN_ERTRAFM3 | Extended Remote Transmission Request Mask 4 | CAN Acceptance Filter 4において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。 | R/W |
CAN Acceptance Filter ID Value Register 4は、Acceptance Filter 3で受信フレームとの比較を行う値を設定するためのレジスタです。 CAN Acceptance Filter ID Mask Register 4で “1”がセットされているビットが、受信フレームと CAN Acceptance FIlter ID Value Register 3の間で一致した場合、その受信フレームが RX FIFOに格納されます。 従って、CAN Acceptance Filter ID Mask Register 4でセットされていないビットは、フィルターの対象となりません。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:21 | CAN_ID1AFV4 | Standard Message ID Value 4 | CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。 | R/W |
20 | CAN_SRTRAFV4 | Standard Remote Transmission Request Value 3 | CAN Acceptance Filter 4において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。 | R/W |
19 | CAN_IDEAFV4 | Identifier Extension Value 4 | CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。 | R/W |
18:1 | CAN_ID2AFV4 | Extended Message ID Value 4 | CAN Acceptance Filter 4において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。 | R/W |
0 | CAN_ERTRAFV4 | Extended Remote Transmission Request Value 4 | CAN Acceptance Filter 4において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。 | R/W |
CAN FIFO and Buffer Reset Registerは、TX FIFO, RX FIFO, TX High Priority Bufferのリセットを行うためのレジスタです。 何らかの理由により FIFOおよび Bufferのクリアを行いたい場合にこのレジスタを使用します。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:18 | - | Reserved | Reserved | - |
17 | CAN_TXHPBRST | TX High Priority Buffer Reset | TX High Priority Bufferをリセットするためのビットです。本ビットに “1”をセットすると TX High Priority Bufferをリセットします。 | WO |
16 | CAN_TXFIFORST | TX FIFO Reset | TX FIFOをリセットするためのビットです。本ビットに “1”をセットすると TX FIFOをリセットします。 | WO |
15:1 | - | Reserved | Reserved | - |
0 | CAN_RXFIFORST | RX FIFO Reset | RX FIFOをリセットするためのビットです。本ビットに “1”をセットすると RX FIFOをリセットします。 | WO |
CAN Self Test Mode Control Registerは、CAN Controllerの Self Testを行うための、デバッグ用レジスタです。
Self Test Modeを Enableにすることで、自送信フレームに対する受信動作の有効化と返信 ACK確認の停止制御が行われ、CANバスを使用した Loopback動作が可能となります。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:1 | - | Reserved | Reserved | - |
0 | CAN_STM | Self Test Mode | CAN通信の Self Test Modeを設定します。0: Self Test Mode Disable 1: Self Test Mode Enable | R/W |
CAN PHY Sleep Mode Control Registerは、OBC Module上に実装される CAN Tranceverの動作を制御するためのレジスタです。
Sleep Modeを Enableにすると、CAN Transceiverの送受信回路を OFF (低消費電力状態)にすることができます。
このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:1 | - | Reserved | Reserved | - |
0 | CAN_PSLM | PHY Sleep Mode | CAN Transceiverの Sleep Modeを設定します。0: Sleep Mode Disable 1: Sleep Mode Enable | R/W |
CAN Controller IPのバージョン管理用レジスタです。
bit | Symbol | Field | Description | R/W |
---|---|---|---|---|
31:24 | CAN_MAJVER | CAN Controller IP Major Version | CAN Controller IPの Major Versionを示します。 | RO |
23:16 | CAN_MINVER | CAN Controller IP Minor Version | CAN Controller IPの Minor Versionを示します。 | RO |
15:0 | CAN_PATVER | CAN Controller IP Patch Version | CAN Controller IPの Patch Versionを示します。 | RO |
この章では、CAN Controllerを使用するために必要な、ソフトウェアによる設定および確認手順の例について説明します。 ※各レジスタの詳細は、CAN Controllerの”レジスタ詳細”の章を参照してください。
CAN Controllerの起動後に行う必要がある初期設定の手順について説明します。
1: CAN Time Quantum Prescaler Registerに Time Quantum Clock周期の設定を行います。ここで設定した値に1を加算した数のクロックサイクル数が、Time Quantum Clock周期として設定されます。
2: CAN Bit Timing Setting Registerに Time Segment 1、 Time Segment 2、Synchronization Jump Width周期の設定を行います。ここで設定した値に1を加算した数の Tq数が、各区間の周期として設定され、1ビットの周期、受信ビットのサンプリングポイント、再同期の最大ジャンプ幅が決定されます。
受信メッセージのアクセプタンスフィルタリングを使用する場合は、必要なフィルタ数に応じて、CAN Acceptance Filter ID Mask Register 1、2、3、4、CAN Acceptance Filter ID Value Register 1、2、3、4、CAN Acceptance Filter Enable Registerの設定(3: ~ 5:)を行います。
3: 使用するフィルタ数の CAN Acceptance Filter ID Mask Registerに受信メッセージと比較に使用するビット設定します。受信メッセージが標準フレームだった場合は、ID2[17:0]、ERTRフィールドのフィルタリング設定は無視されます。
4: 使用するフィルタ数のCAN Acceptance Filter ID Value Registerに受信メッセージのフィルター値を設定します。CAN Acceptance Filter ID Mask Registerに設定した比較対象ビットが CAN Acceptance Filter ID Value Registerの値と一致しない場合、受信したメッセージは RX FIFOへ格納しません。
5: CAN Acceptance Filter Enable Registerに使用する Acceptance Filterを設定します。CAN Acceptance Filter ID Register 1の設定を使用する場合は CAN_UAF1ビット、CAN Acceptance Filter ID Register 2の設定を使用する場合は CAN_UAF2ビット、CAN Acceptance Filter ID Register 3の設定を使用する場合は CAN_UAF3ビット、CAN Acceptance Filter ID Register 4の設定を使用する場合は CAN_UAF4ビットを “1”に設定します。
6: 必要に応じて CAN Interrupt Enable Registerの割り込みステータスのイネーブルビットを “1”に設定します。
7: CAN Enable Registerの CAN_ENビットを “1”に設定し、CAN通信を開始(CAN Busへ接続)します。
CAN通信における 1ビット時間は、Time Segment (Tq)の単位で分割された、Sync Segment、Time Segment 1、Time segment 2の 3つのセグメントフェーズの Total時間によって決まります。
Time Segment (Tq)の周期は CAN Time Quantum Prescaler Registerの TQPSETフィールドに CANクロックのクロックサイクル数を設定します。 Time Segment 1、Time segment 2の長さは、CAN Bit Timing Setting Registerの TS1、TS2フィールドに Tqサイクル数を設定します。 Sync Segmentの長さは Tq 1Cycle固定です。
送信ビットの遷移はTime segment 2と Sync Segmentの間で行われます。 受信ビットのサンプリングは Time segment 1とTime segment 2の間で行われるため、Time segment 1の時間と Time segment 2の時間の比率によりサンプリングポイントを調整します。
例として、TQPSET[15:0]=0x0003、TS1[3:0]=0x5、TS2[2:0]=0x2にレジスタ設定した時に生成されるビットタイミングを以下に示します。
SC_OBC_FPGAでは、CANクロックの周波数は24MHz固定となります。 ビットタイミング設定値の一例として、ビットレートを 1Mbps、サンプリングポイントを 75%、同期ジャンプ幅の最大時間を 4Tqサイクルする場合の各レジスタの設定値は、CAN Time Quantum Prescaler Registerが 0x0000_0001 (TQPSET=0x1)、CAN Bit Timing Setting Registerが 0x0000_01A7 (TS1=0x7, TS2=0x2, SWJ=0x3)となります。
制限事項:Bit Stream Processorモジュールでのフレーム処理に必要な時間として、Time segment 2の長さは、必ず CANクロックの 3Cycle以上となるように設定する必要があります。
TX_FIFOを使用したメッセージ送信の手順について説明します。
1: CAN Interrupt Enable Registerの TRNSDNENBビットを “1”に設定します。必要に応じて使用する他の割り込みステータスのイネーブルビットもあわせて設定します。
2: CAN Status Registerの TXFFLビットが “0”の場合は送信メッセージを TX FIFOに書き込むことが出来ます。 TXFFLビットが “1”の状態の時は TX FIFOが Full状態であるため、新たな送信メッセージを書き込む場合は TX FIFOが Not Full状態になるまで待つ必要があります。
3: CAN TX Message Register 1へ送信メッセージの Standard Message ID (ID1[10:0]), Standard Remote Transmission Request (SRTR), Identifier Extension (IDE), Extended Message ID (ID2[17:0]), Extended Remote Transmission Request (ERTR)フィールドの設定を行います。 標準フレームを送信する場合はIDEビットを “0”に、拡張フレームを送信する場合は SRTRビットと IDEビットをそれぞれ “1”に設定する必要があります。 標準フレームを送信する場合は、ID2フィールド、ERTRビットに設定した値は使用されません。
4: CAN TX Message Register 2へ送信メッセージのData Length Code (DLC)フィールドの設定を行います。
5: CAN TX Message Register 3へ送信メッセージの Byte 0から Byte 3までの データフィールドの設定を行います。 リモートフレームまたは DLCフィールドを 0Byteに設定したデータフレームを送信する場合でもこのレジスタに書き込みを行う必要がありますが、書き込まれた値自体は使用されません。
6: CAN TX Message Register 4へ送信メッセージの Byte 4から Byte 7までの データフィールドの設定を行います。 リモートフレームまたは DLCフィールドを 4Byte以下に設定したデータフレームを送信する場合でもこのレジスタに書き込みを行う必要がありますが、書き込まれた値自体は使用されません。
CAN TX Message Register 1~4全ての書き込みが行われると、CANバスが Idle状態の時にメッセージの送信を開始します。 TX FIFOは最大 64のメッセージを格納することができ、FIFOが Fullになるまで送信するメッセージを続けて書き込む事が出来ます。
7: 割り込み信号 CAN_INTがアサートした後、CAN Interrupt Status Registerの TRNSDNビットが “1”にセットされていることを確認することで、メッセージ送信が完了したことを知ることができます。
8: メッセージ送信完了の確認後に、CAN Interrupt Status Registerの TRNSDNビットに “1”を書き込んでから、TRNSDNビットがクリアされたことを確認します。
他の送信メッセージを TX_FIFOに設定した場合は、同様の手順でメッセ―ジ送信の完了の度に繰り返し割り込みの確認を行うことで、全てのメッセージの送信が完了したことを知ることができます。 TX_FIFOに未送信のメッセージが残っていないかは、CAN Status Registerの TXFNEPビットが “0”になっていることで確認することができます。
CAN TX Message Register 1~4は、CAN Enable Registerの CAN_ENビットが “0”の状態でも書き込む事が出来ます。この場合、メッセージの送信は CAN_ENビットに “1”が書き込まれた後に行われます。
CAN Controllerでは、TX Message Priority Management機能により、TX FIFOに複数のメッセージが格納されている時に優先度の高い送信メッセージから順に送信を行います。
動作の一例を含めた、TX Message Priority Management機能の構成を以下に示します。
送信メッセージの送信順序は、TX FIFOのメッセージ格納位置を優先順位に並べて管理する Priority Management Tableで管理されます。
AXI BusからCAN TX Message Registerへの書き込みが行われると、TX FIFOの空いている位置へ送信メッセージを格納し、Priority検索が開始されます。
Priority検索の概要は以下の通りです。
A. Priority検索が未了の送信メッセージの IDR Fieldのデータを TX FIFOから読み出します。
B. Priority検索が完了している最も優先度の高い送信メッセージの IDR Fieldのデータを TX FIFOから読み出します。
C. Aの読み出し値と Bの読み出し値の比較を行います。
D. 比較した結果、Aの読み出し値の方がBの読み出し値より小さかった場合は、Priority Management Tableへ、Bのメッセージの一つ上の優先位置に Aのメッセージの TX_FIFO格納位置の Entryを行い、Priority検索を終了します。 逆に、Aの読み出し値の方が Bの読み出し値より大きかった場合は、Bで読み出したデータの一つ下の優先度の送信メッセージの IDR Fieldのデータを TX FIFOから読み出し、Aの読み出し値との比較を行います。 この動作を、Aの値の方が小さい比較結果が得られるか、Priority管理テーブルにEntryされている全てのデータとの比較が終わるまで繰り返し行います。
CANバスには、メッセージの送信を開始する時点で、Priority管理テーブルに Entryされている高優先の送信メッセージから順に TX FIFOから読み出され送信されます。 但し、TX High Priority Bufferに送信メッセージが格納されている場合は、TX High Priority Bufferの格納メッセージを最優先で送信します。
TX High Priority Bufferを使用したメッセージ送信の手順について説明します。 TX High Priority Bufferに書き込まれたメッセージは、TX FIFO内のメッセージよりも優先して送信されます。
CAN Status Registerの TXHBFLビットが “0”の場合は送信メッセージを TX High Priority Bufferに書き込むことが出来ます。 TXHBFLビットが “1”の状態の時は TX High Priority Bufferが Full状態であるため、新たな送信メッセージを書き込む場合は TX High Priority Bufferが Not Full状態になるまで待つ必要があります。 TX High Priority Bufferは 1つのメッセージのみ格納することができます。
TX High Priority Bufferを使用する場合は、CAN TX High Priority Message Register 1~4へメッセージを書き込みます。 書き込みを行う手順やフォーマットは TX_FIFO (CAN TX Message Register 1~4)と同様です。
メッセージの送信完了も TX FIFOのメッセージ送信時と同様、TRNSDNビットの割り込みにより知ることができます。 他の送信メッセージを TX_FIFOに設定した場合も、同様の手順でメッセ―ジ送信の完了の度に繰り返し割り込みの確認を行うことで、全てのメッセージの送信が完了したことを知ることができます。
CAN TX High Priority Message Register 1~4は、CAN Enable Registerの CAN_ENビットが “0”の状態でも書き込む事が出来ます。 この場合、メッセージの送信は CAN_ENビットに “1”が書き込まれた後に行われます。
メッセージ受信の手順について説明します。
1: CAN Interrupt Enable Registerの RCVDNENBビットと RXFVALENBビットを “1”に設定します。 必要に応じて使用する他の割り込みステータスのイネーブルビットもあわせて設定します。
2: メッセージの受信が完了すると、割り込み信号 CAN_INTがアサートし、CAN Interrupt Status Registerの RCVDNビットと RXFVALビットが”1”にセットされます。
3: CAN RX Message Register 1から受信メッセージの Standard Message ID (ID1[10:0])、Standard Remote Transmission Request (SRTR)、Identifier Extension (IDE)、Extended Message ID (ID2[17:0])、 Extended Remote Transmission Request (ERTR)フィールドを読み出します。 標準フレームを受信した場合は IDEビットが “0”に、拡張フレームを受信した場合は IDEビットに “1”が表示されます。標準フレームを受信した場合は、ID2フィールド、ERTRビットからは全て 0が読み出されます。
4: CAN RX Message Register 2から受信メッセージの Data Length Code (DLC)フィールドを読み出します。
5: CAN RX Message Register 3から受信メッセージの Byte 0から Byte 3までのデータフィールドを読み出します。 リモートフレームまたは データ長が 0 Byteのデータフレームを受信した場合でもこのレジスタの読み出しを行う必要がありますが、読み出したデータは無効データであるため破棄してください。
6: CAN RX Message Register 4から受信メッセージの Byte 4から Byte 7までの データフィールドを読み出します。 リモートフレームまたはデータ長が 4 Byte以下のデータフレームを受信した場合でもこのレジスタの読み出しを行う必要がありますが、読み出したデータは無効データであるため破棄してください。
7: 受信メッセージの確認完了後に、CAN Interrupt Status Registerの RCVDNビットと RXFVALビットに “1”を書き込みます。
8: CAN Interrupt Status Registerを読み出し、RCVDNビットと RXFVALビットがクリアされたことを確認します。 RXFVALビットがクリアされていない場合は、他の受信メッセージが RX FIFOに格納されていることを示します。 RX FIFOは最大 64個のメッセージを格納することができ、FIFOが Emptyになるまで受信したメッセージを続けて読み出すことが出来ます。
新しいメッセージの受信を待つ場合は、RCVDNビットの割り込みによりメッセージを受信したことを知ることができます。
CAN RX Message Register 1~4は、CAN Enable Registerの CAN_ENビットが “0”の状態でも読み出す事が出来ます。 但し、この時は新しいメッセージの受信は行われません。