Skip to content

Latest commit

 

History

History
677 lines (526 loc) · 93.6 KB

can_controller.org

File metadata and controls

677 lines (526 loc) · 93.6 KB

CAN Controller

CAN Controllerは、 ISO 11898-1, CAN2.0A および CAN2.0Bに準拠した CAN通信 IPコアです。 1 Mbpsのビットレートをサポートしています。

レジスタ詳細

CAN Controllerは、Base Address 0x4040_0000に配置されています。

OffsetSymbolRegisterInitial
0x0000CAN_ENRCAN Enable Register0x00000000
0x0008CAN_TQPRCAN Time Quantum Prescaler Register0x00000000
0x000CCAN_BTSRCAN Bit Timing Setting Register0x00000000
0x0010CAN_ECNTRCAN Error Count Register0x00000000
0x0018CAN_STSRCAN Status Register0x00000000
0x0020CAN_ISRCAN Interrupt Status Register0x00000000
0x0024CAN_IERCAN Interrupt Enable Register0x00000000
0x0030CAN_TMR1CAN TX Message Register10x00000000
0x0034CAN_TMR2CAN TX Message Register20x00000000
0x0038CAN_TMR3CAN TX Message Register30x00000000
0x003CCAN_TMR4CAN TX Message Register40x00000000
0x0040CAN_THPMR1CAN TX High Priority Message Register10x00000000
0x0044CAN_THPMR2CAN TX High Priority Message Register20x00000000
0x0048CAN_THPMR3CAN TX High Priority Message Register30x00000000
0x004CCAN_THPMR4CAN TX High Priority Message Register40x00000000
0x0050CAN_RMR1CAN RX Message Register10x00000000
0x0054CAN_RMR2CAN RX Message Register20x00000000
0x0058CAN_RMR3CAN RX Message Register30x00000000
0x005CCAN_RMR4CAN RX Message Register40x00000000
0x0060CAN_AFERCAN Acceptance Filter Enable Register0x00000000
0x0070CAN_AFIMR1CAN Acceptance Filter ID Mask Register10x00000000
0x0074CAN_AFIVR1CAN Acceptance Filter ID Value Register10x00000000
0x0090CAN_AFIMR2CAN Acceptance Filter ID Mask Register20x00000000
0x0094CAN_AFIVR2CAN Acceptance Filter ID Value Register20x00000000
0x00B0CAN_AFIMR3CAN Acceptance Filter ID Mask Register30x00000000
0x00B4CAN_AFIVR3CAN Acceptance Filter ID Value Register30x00000000
0x00D0CAN_AFIMR4CAN Acceptance Filter ID Mask Register40x00000000
0x00D4CAN_AFIVR4CAN Acceptance Filter ID Value Register40x00000000
0x00F0CAN_FIFORRCAN FIFO and Buffer Reset Register0x00000000
0x0100CAN_STMCRCAN Self Test Mode Control Register0x00000000
0x0200CAN_PSLMCRCAN PHY Sleep Mode Control Register0x00000000
0xF000CAN_VERCAN Controller IP Version Register-

CAN Enable Register (Offset 0x0000)

CAN Enable Registerは、CAN通信におけるEnable設定を行うレジスタです。

CAN_ENが Disableの時、CAN Controllerは CANバスに Recessive (High level)を出力し、メッセージの送受信を行いません。 CAN_ENが Enableになると、CANバス上に連続する 11bitの Recessiveを 1回検出した後にエラーアクティブ状態となり、メッセージの送受信が可能となります。

bitSymbolFieldDescriptionR/W
31:1-ReservedReserved-
0CAN_ENCAN EnableCAN通信のEnableを設定します。0: Disable 1: EnableR/W

CAN Time Quantum Prescaler Register (Offset 0x0008)

CAN Time Quantum Prescaler Registerは、Time Quantum Clock周期の設定を行うレジスタです。 このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:16-ReservedReserved-
15:0CAN_TQPSETTime Quantum CycleTime 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 (Offset 0x000C)

CAN Bit Timing Setting Registerは、サンプリングや同期制御に必要なビット時間の設定を行うレジスタです。 このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:9-ReservedReserved-
8:7CAN_SJWSynchronization Jump Width同期ジャンプ幅の最大時間(Tsjw)を設定します。このフィールドには、Tqのサイクル数を設定します。R/W
6:4CAN_TS2Time Segment 2Phase Segment2の時間(Tts2)を設定します。このフィールドには、Tqのサイクル数を設定します。R/W
3:0CAN_TS1Time Segment 1Phase 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 (Offset: 0x0010)

CAN Error Count Registerは、CAN通信におけるエラーの検出回数を表示するレジスタです。 エラー検出時に、カウンターをエラー要因に応じ決められた数のインクリメントを行います。

Transmit Error Counter 及び Receive Error Counterは、以下の条件でリセットされます。

  • CAN Enable Registerの CAN_ENビットに “0”が書き込まれた時
  • CAN Controllerが Bus OFF状態になってから 11Bitの Recessiveビットを 128回検出した時
bitSymbolFieldDescriptionR/W
31:16-ReservedReserved-
15:8CAN_RXECNTReceive Error Counter受信エラーをカウントする 8bitのカウンタです。RO
7:0CAN_TXECNTTransmit Error Counter送信エラーをカウントする 8bitのカウンタです。RO

CAN Status Register (Offset: 0x0018)

CAN Status Registerは、CAN Controllerのステータスを表示するレジスタです。

bitSymbolFieldDescriptionR/W
31:8-ReservedReserved-
7CAN_RXFFLRX FIFO FullRX FIFOの Full状態を示すビットです。0: RX FIFOは Not Full状態 1: RX FIFOは Full状態RO
6CAN_TXFFLTX FIFO FullTX FIFOの Full状態を示すビットです。0: TX FIFOは Not Full状態 1: TX FIFOが Full状態RO
5CAN_TXHBFLTX High Priority Buffer FullTX High Priority Bufferの Full状態を示すビットです。0: TX High Priority Bufferは Not Full状態 1: TX High Priority BufferはFull状態RO
4CAN_TXFNEPTX FIFO Not EmptyTX FIFOの Empty状態を示すビットです。0: TX FIFOは Empty状態 1: TX FIFOは Not Empty状態RO
3:2CAN_ESTSError StatusErrorステータスを示すビットです。0b00: CAN_EN Disable 0b01: Error Active状態 0b10: Error Passive状態 0b11: Bus OFF状態RO
1CAN_EWRNError WarningError Warningステータスを示すビットです。Transmit Error Counterまたは Receive Error Counterが 96以上の値を示すとき、Error Warning状態と認識します。0: 非Error Warning状態 1: Error Warning状態RO
0CAN_BBUSYBus BusyCANバスのステータスを示すビットです。0: Bus Idle状態 または CAN_ENが Disable状態 1: Bus Busy状態 (CANバスの通信が行われている状態)RO

CAN Interrupt Status Register (Offset: 0x0020)

CAN Interrupt Status Registerは、CAN Controllerの動作における割り込みステータスレジスタです。 それぞれのビットは 1をセットすると、該当の割り込みをクリアする事ができます。

bitSymbolFieldDescriptionR/W
31:14-ReservedReserved-
13CAN_BUSOFFBus OffBus Offが発生したことを示すビットです。送信エラーカウント値が 255を超える状態を検出した場合に本ビットが “1”にセットされます。R/WC
12CAN_ACKERACK ErrorACK Errorが発生したことを示すビットです。データフレーム、リモートフレームの送信中に ACK Slotビットで Recessive (“1”)を検出した場合に本ビットが “1”にセットされます。R/WC
11CAN_BITERBIT ErrorBIT Errorが発生したことを示すビットです。送信中の値と異なる受信値を検出した場合に本ビットが “1”にセットされます。R/WC
10CAN_STFERStuff ErrorStuff Errorが発生したことを示すビットです。受信中に CANバス上で同一の値を連続 6回検出した場合に本ビットが “1”にセットされます。R/WC
9CAN_FMERForm ErrorForm Errorが発生したことを示すビットです。受信中フレームの固定フィールド内で異なる Formatを検出した場合に本ビットが “1”にセットされます。R/WC
8CAN_CRCERCRC ErrorCRC Errorが発生したことを示すビットです。受信したデータフレーム、リモートフレームの CRC値の期待不一致を検出した場合に本ビットが “1”にセットされます。R/WC
7CAN_RXFOVFRX FIFO OverflowRX FIFOの Overflowが発生したことを示すビットです。RX FIFO容量を超えるメッセージを受信した場合に本ビットが “1”にセットされます。R/WC
6CAN_RXFUDFRX FIFO UnderflowRX FIFOの Underflowが発生したことを示すビットです。RX FIFOが Empty状態の時に、CAN RX Message Registerから読み出しを行った場合に本ビットが “1”にセットされます。R/WC
5CAN_RXFVALRX FIFO Data ValidRX FIFOにデータが格納されていることを示すビットです。RX FIFOが Not Empty状態となった場合に本ビットが “1”にセットされます。本ビットはクリアしても RX FIFOが Empty状態になるまで、セットされます。RX FIFOに複数のメッセージが格納されている場合、CAN RX Message Registerを読み出した時に、このビットがセットされます。R/WC
4CAN_RCVDNCAN Message Receive Done新しいメッセージを受信した事を示すビットです。データフレームまたはリモートフレームを正常に受信し、RX FIFOへの受信メッセージの格納が完了した時、本ビットが “1”にセットされます。R/WC
3CAN_TXFOVFTX FIFO OverflowTX FIFOの Overflowが発生したことを示すビットです。TX FIFO容量を超えるメッセージを CAN TX Message Registerにメッセージを書き込んだ場合、本ビットが “1”にセットされます。R/WC
2CAN_TXHBOVFTX High Priority Buffer OverflowTX High Priority Bufferの Overflowが発生したことを示すビットです。TX High Priority Bufferにメッセージが格納されている状態で CAN TX High Priority Message Registerにメッセージを書き込んだ場合、本ビットが “1”にセットされます。R/WC
1CAN_ARBLSTCAN Arbitration Lost送信メッセージの Arbitration Lostが発生した事を示すビットです。データフレーム、リモートフレームの送信中に他ノードとの送信競合が発生し、調停制御により送信を停止した時、本ビットが “1”にセットされます。R/WC
0CAN_TRNSDNCAN Message Transmit Doneメッセージを送信した事を示すビットです。データフレームまたはリモートフレームの送信が正常に完了した時、本ビットが “1”にセットされます。R/WC

CAN Interrupt Enable Register (Offset: 0x0024)

CAN Interrupt Enable Registerは、CAN Controllerの動作において発生した割り込みイベントを割り込み出力信号に通知するか設定するためのレジスタです。

bitSymbolFieldDescriptionR/W
31:14-ReservedReserved-
13CAN_BUSOFFENBBus Off EnableCAN Controllerの動作においてCAN_BUSOFFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
12CAN_ACKERENBACK Error EnableCAN Controllerの動作においてCAN_ACKERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
11CAN_BITERENBBIT Error EnableCAN Controllerの動作においてCAN_BITERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
10CAN_STFERENBStuff Error EnableCAN Controllerの動作においてCAN_STFERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
9CAN_FMERENBForm Error EnableCAN Controllerの動作においてCAN_FMERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
8CAN_CRCERENBCRC Error EnableCAN Controllerの動作においてCAN_CRCERイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
7CAN_RXFOVFENBRX FIFO Overflow EnableCAN Controllerの動作においてCAN_RXFOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
6CAN_RXFUDFENBRX FIFO Underflow EnableCAN Controllerの動作においてCAN_RXFUDFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
5CAN_RXFVALENBRX FIFO Data Valid EnableCAN Controllerの動作においてCAN_RXFVALイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
4CAN_RCVDNENBCAN Message Receive Done EnableCAN Controllerの動作においてCAN_RCVDNイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
3CAN_TXFOVFENBTX FIFO Overflow EnableCAN Controllerの動作においてCAN_TXFOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
2CAN_TXHBOVFENBTX High Priority Buffer Overflow EnableCAN Controllerの動作においてCAN_TXHBOVFイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
1CAN_ARBLSTENBCAN Arbitration Lost EnableCAN Controllerの動作においてCAN_ARBLSTイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
0CAN_TRNSDNENBCAN Message Transmit Done EnableCAN Controllerの動作においてCAN_TRNSDNイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W

CAN TX Message Register 1 (Offset 0x0030)

CAN TX Message Register 1は、送信する CANフレームのメッセージ識別子 (IDR)を TX FIFOに書き込むためのレジスタです。

bitSymbolFieldDescriptionR/W
31:21CAN_TXID1TX Standard Message IDID[28:18]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。WO
20CAN_TXSRTRTX Standard Remote Transmission RequestRTR、SRRビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。- RTR(標準フレーム): 0: データフレーム 1: リモートフレーム - SRR(拡張フレーム): 1に設定する必要があります。WO
19CAN_TXIDETX Identifier ExtensionIDEビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。0: 標準フレーム 1: 拡張フレームWO
18:1CAN_TXID2TX Extended Message IDID[17:0]を TX FIFOに書き込むためのフィールドです。拡張フレーム送信時のみ使用されます。CAN_TXIDEビットを “0”に設定した場合、このフィールドに書き込んだデータは使用されません。WO
0CAN_TXERTRTX Extended Remote Transmission Request拡張フレーム送信でのみ使用されるRTRビット値を設定します。0: データフレーム 1: リモートフレーム CAN_TXIDEビットを0に設定した場合は、このビットの書き込み値は使用されません。WO

CAN TX Message Register 2 (Offset 0x0034)

CAN TX Message Register 2は、送信する CANフレームのデータ長コード (DLC)を TX FIFOに書き込むためのレジスタです。

bitSymbolFieldDescriptionR/W
31:4-ReservedReserved-
3:0CAN_TXDLCTX Data Length CodeDCL[3:0]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。このフィールドには データフレームの送信 Byte数や リモートフレームの送信時に要求するデータの Byte数を設定します。設定可能な値は 0〜8です。WO

CAN TX Message Register 3 (Offset 0x0038)

CAN TX Message Register 3は、CANのデータフレームを送信する場合において、データフィールドの Byte 0から Byte 3 (Data Word 1)を書き込むためのレジスタです。 データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。

bitSymbolFieldDescriptionR/W
31:24CAN_TXDB0TX Data Byte 0データフィールドの Byte 0を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 1以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
23:16CAN_TXDB1TX Data Byte 1データフィールドの Byte 1を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 2以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
15:8CAN_TXDB2TX Data Byte 2データフィールドの Byte 2を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 3以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
7:0CAN_TXDB3TX Data Byte 3データフィールドの Byte 3を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 4以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO

CAN TX Message Register 4 (Offset 0x003C)

CAN TX Message Register 4は、CANのデータフレームを送信する場合において、データフィールドの Byte 4から Byte 7 (Data Word 2)を書き込むためのレジスタです。 データフレームを送信しない場合でも、このレジスタは書き込みを行う必要があります。 データフレームを送信しない場合は、この値に書き込む値は無効であるため、どんな値を書き込んでも構いません。

bitSymbolFieldDescriptionR/W
31:24CAN_TXDB4TX Data Byte 4データフィールドの Byte 4を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 5以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
23:16CAN_TXDB5TX Data Byte 5データフィールドの Byte 5を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 6以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
15:8CAN_TXDB6TX Data Byte 6データフィールドの Byte 6を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 7以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
7:0CAN_TXDB7TX Data Byte 7データフィールドの Byte 7を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX Message Register 2の DLCフィールドを 8以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO

CAN TX High Priority Message Register 1 (Offset 0x0040)

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と同じです。

bitSymbolFieldDescriptionR/W
31:21CAN_TXHPID1TX High Priority Standard Message IDID[28:18]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。WO
20CAN_TXHPSRTRTX High Priority Standard Remote Transmission RequestRTR、SRRビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。- RTR(標準フレーム): 0: データフレーム 1: リモートフレーム - SRR(拡張フレーム): 1に設定する必要があります。WO
19CAN_TXHPIDETX High Priority Identifier ExtensionIDEビットを TX FIFOに書き込むためのビットです。標準フレーム、拡張フレームの両方の送信時に使用されます。0: 標準フレーム 1: 拡張フレームWO
18:1CAN_TXHPID2TX High Priority Extended Message IDID[17:0]を TX FIFOに書き込むためのフィールドです。拡張フレーム送信時のみ使用されます。CAN_TXIDEビットを “0”に設定した場合、このフィールドに書き込んだデータは使用されません。WO
0CAN_TXHPERTRTX High Priority Extended Remote Transmission Request拡張フレーム送信でのみ使用されるRTRビット値を設定します。0: データフレーム 1: リモートフレーム CAN_TXIDEビットを0に設定した場合は、このビットの書き込み値は使用されません。WO

CAN TX High Priority Message Register 2 (Offset 0x0044)

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と同じです。

bitSymbolFieldDescriptionR/W
31:4-ReservedReserved-
3:0CAN_TXHPDLCTX High Priority Data Length CodeDCL[3:0]を TX FIFOに書き込むためのフィールドです。標準フレーム、拡張フレームの両方の送信時に使用されます。このフィールドには データフレームの送信 Byte数や リモートフレームの送信時に要求するデータの Byte数を設定します。設定可能な値は 0〜8です。WO

CAN TX High Priority Message Register 3 (Offset 0x0048)

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と同じです。

bitSymbolFieldDescriptionR/W
31:24CAN_TXHPDB0TX High Priority Data Byte 0データフィールドの Byte 0を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 1以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
23:16CAN_TXHPDB1TX High Priority Data Byte 1データフィールドの Byte 1を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 2以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
15:8CAN_TXHPDB2TX High Priority Data Byte 2データフィールドの Byte 2を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 3以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
7:0CAN_TXHPDB3TX 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 (Offset 0x004C)

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と同じです。

bitSymbolFieldDescriptionR/W
31:24CAN_TXHPDB4TX High Priority Data Byte 4データフィールドの Byte 4を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 5以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
23:16CAN_TXHPDB5TX High Priority Data Byte 5データフィールドの Byte 5を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 6以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
15:8CAN_TXHPDB6TX High Priority Data Byte 6データフィールドの Byte 6を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 7以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO
7:0CAN_TXHPDB7TX High Priority Data Byte 7データフィールドの Byte 7を TX FIFOに書き込むためのフィールドです。データフレームを送信する場合で 且つ、CAN TX High Priority Message Register 2の DLCフィールドを 8以上に設定した場合、このフィールドに書き込んだデータがデータフレームとして送信されます。WO

CAN RX Message Register 1 (Offset 0x0050)

CAN RX Message Register 1は、受信した CANフレームのメッセージ識別子 (IDR)を RX FIFOから読み出すためのレジスタです。

bitSymbolFieldDescriptionR/W
31:21CAN_RXID1RX Standard Message ID受信した標準フレーム または、拡張フレームの ID[28:18]フィールドを RX FIFOから読み出すためのフィールドです。RO
20CAN_RXSRTRRX Standard Remote Transmission Request受信した標準フレームの RTRビット または、拡張フレームの SRRビットを RX FIFOから読み出すためのビットです。- 標準フレーム 0: データフレーム 1: リモートフレーム - 拡張フレーム: 1が読み出されますRO
19CAN_RXIDERX Identifier Extension受信した標準フレーム または、拡張フレームの IDEビットを RX FIFOから読み出すためのビットです。0: 標準フレーム 1: 拡張フレームRO
18:1CAN_RXID2RX Extended Message ID受信した拡張フレームの ID[17:0]フィールドを RX FIFOから読み出すためのフィールドです。標準フレームの場合は、0が読み出されます。RO
0CAN_RXERTRRX Extended Remote Transmission Request受信した拡張フレームの RTRビットを RX FIFOから読み出すためのビットです。0: データフレーム 1: リモートフレーム 標準フレームの場合は、0が読み出されます。RO

CAN RX Message Register 2 (Offset 0x0054)

CAN RX Message Register 2は、受信した CANフレームの受信データ長コード (DLC)を RX FIFOから読み出すためのレジスタです。

bitSymbolFieldDescriptionR/W
31:4-ReservedReserved-
3:0CAN_RXDLCRX Data Length Code受信した標準フレーム または、拡張フレームの DLC[3:0]フィールドを RX FIFOから読み出すためのフィールドです。このフィールドから読み出される値は、リモートフレームの受信時を除き CAN RX Message Register 3、4に格納されたデータの有効 Byte数を示します。RO

CAN RX Message Register 3 (Offset 0x0058)

CAN RX Message Register 3は、受信した CANフレームのデータフィールドの Byte 0から Byte 3 (Data Word 1)を RX FIFOから読み出すためのレジスタです。

データフレームを受信していない場合でも、このレジスタは読み出しを行う必要があります。 データフレームを受信していない場合、読み出される値は無効であるため破棄してください (読み出し値は 0となります)。

bitSymbolFieldDescriptionR/W
31:24CAN_RXDB0RX Data Byte 0データフィールドの Byte 0を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 1以上を示す時、このフィールドのデータは有効データとなります。RO
23:16CAN_RXDB1RX Data Byte 1データフィールドの Byte 1を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 2以上を示す時、このフィールドのデータは有効データとなります。RO
15:8CAN_RXDB2RX Data Byte 2データフィールドの Byte 2を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 3以上を示す時、このフィールドのデータは有効データとなります。RO
7:0CAN_RXDB3RX Data Byte 3データフィールドの Byte 3を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 4以上を示す時、このフィールドのデータは有効データとなります。RO

CAN RX Message Register4 (Offset 0x005C)

CAN RX Message Register 4は、受信した CANフレームのデータフィールドの Byte 4から Byte 7 (Data Word 2)を RX FIFOから読み出すためのレジスタです。

データフレームを受信していない場合でも、このレジスタは読み出しを行う必要があります。 データフレームを受信していない場合、読み出される値は無効であるため破棄してください (読み出し値は 0となります)。

bitSymbolFieldDescriptionR/W
31:24CAN_RXDB4RX Data Byte 4データフィールドの Byte 4を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 5以上を示す時、このフィールドのデータは有効データとなります。RO
23:16CAN_RXDB5RX Data Byte 5データフィールドの Byte 5を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 6以上を示す時、このフィールドのデータは有効データとなります。RO
15:8CAN_RXDB6RX Data Byte 6データフィールドの Byte 6を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 7以上を示す時、このフィールドのデータは有効データとなります。RO
7:0CAN_RXDB7RX Data Byte 7データフィールドの Byte 7を RX FIFOから読み出すためのフィールドです。受信データがデータフレームで 且つ、CAN RX Message Register 2の CAN_RXDLCフィールドが 8以上を示す時、このフィールドのデータは有効データとなります。RO

CAN Acceptance Filter Enable Register (Offset 0x0060)

CAN Acceptance Filter Enable Registerは、CAN Acceptance Filterの設定を行うレジスタです。 このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:4-ReservedReserved-
3CAN_UAF4Use Acceptance Filter4Acceptance Filter 4の使用有無を設定するためのビットです。このビットが “1”に設定されている時、CAN Acceptance Filter ID Value Register 4と CAN Acceptance Filter ID Mask Register 4の設定値が Acceptance Filterとして使用されます。R/W
2CAN_UAF3Use Acceptance Filter3Acceptance Filter 3の使用有無を設定するためのビットです。このビットが “1”に設定されている時、CAN Acceptance Filter ID Value Register 3と CAN Acceptance Filter ID Mask Register 3の設定値が Acceptance Filterとして使用されます。R/W
1CAN_UAF2Use Acceptance Filter2Acceptance Filter 2の使用有無を設定するためのビットです。このビットが “1”に設定されている時、CAN Acceptance Filter ID Value Register 2と CAN Acceptance Filter ID Mask Register 2の設定値が Acceptance Filterとして使用されます。R/W
0CAN_UAF1Use Acceptance Filter1Acceptance 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 (Offset 0x0070)

CAN Acceptance Filter ID Mask Register 1は、CAN Acceptance Filter 1で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで “1”がセットされたビットは、受信フレームとの比較対象となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:21CAN_ID1AFM1Standard Message ID Mask 1CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。R/W
20CAN_SRTRAFM1Standard Remote Transmission Request Mask 1CAN Acceptance Filter 1において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。R/W
19CAN_IDEAFM1Identifier Extension Mask 1CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。R/W
18:1CAN_ID2AFM1Extended Message ID Mask 1CAN Acceptance Filter 1において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。R/W
0CAN_ERTRAFM1Extended Remote Transmission Request Mask 1CAN Acceptance Filter 1において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。R/W

CAN Acceptance Filter ID Value Register 1 (Offset 0x0074)

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”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:21CAN_ID1AFV1Standard Message ID Value 1CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。R/W
20CAN_SRTRAFV1Standard Remote Transmission Request Value 1CAN Acceptance Filter 1において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。R/W
19CAN_IDEAFV1Identifier Extension Value 1CAN Acceptance Filter 1において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。R/W
18:1CAN_ID2AFV1Extended Message ID Value 1CAN Acceptance Filter 1において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。R/W
0CAN_ERTRAFV1Extended Remote Transmission Request Value 1CAN Acceptance Filter 1において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。R/W

CAN Acceptance Filter ID Mask Register 2 (Offset 0x0090)

CAN Acceptance Filter ID Mask Register 2は、CAN Acceptance Filter 2で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで “1”がセットされたビットは、受信フレームとの比較対象となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:21CAN_ID1AFM2Standard Message ID Mask 2CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。R/W
20CAN_SRTRAFM2Standard Remote Transmission Request Mask 2CAN Acceptance Filter 2において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。R/W
19CAN_IDEAFM2Identifier Extension Mask 2CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。R/W
18:1CAN_ID2AFM2Extended Message ID Mask 2CAN Acceptance Filter 2において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。R/W
0CAN_ERTRAFM2Extended Remote Transmission Request Mask 2CAN Acceptance Filter 2において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。R/W

CAN Acceptance Filter ID Value Register 2 (Offset 0x0094)

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”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:21CAN_ID1AFV2Standard Message ID Value 2CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。R/W
20CAN_SRTRAFV2Standard Remote Transmission Request Value 2CAN Acceptance Filter 2において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。R/W
19CAN_IDEAFV2Identifier Extension Value 2CAN Acceptance Filter 2において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。R/W
18:1CAN_ID2AFV2Extended Message ID Value 2CAN Acceptance Filter 2において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。R/W
0CAN_ERTRAFV2Extended Remote Transmission Request Value 2CAN Acceptance Filter 2において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。R/W

CAN Acceptance Filter ID Mask Register 3 (Offset 0x00B0)

CAN Acceptance Filter ID Mask Register 3は、CAN Acceptance Filter 3で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで “1”がセットされたビットは、受信フレームとの比較対象となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:21CAN_ID1AFM3Standard Message ID Mask 3CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。R/W
20CAN_SRTRAFM3Standard Remote Transmission Request Mask 3CAN Acceptance Filter 3において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。R/W
19CAN_IDEAFM3Identifier Extension Mask 3CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。R/W
18:1CAN_ID2AFM3Extended Message ID Mask 3CAN Acceptance Filter 3において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。R/W
0CAN_ERTRAFM3Extended Remote Transmission Request Mask 3CAN Acceptance Filter 3において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。R/W

CAN Acceptance Filter ID Value Register 3 (Offset 0x00B4)

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”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:21CAN_ID1AFV3Standard Message ID Value 3CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。R/W
20CAN_SRTRAFV3Standard Remote Transmission Request Value 3CAN Acceptance Filter 3において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。R/W
19CAN_IDEAFV3Identifier Extension Value 3CAN Acceptance Filter 3において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。R/W
18:1CAN_ID2AFV3Extended Message ID Value 3CAN Acceptance Filter 3において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。R/W
0CAN_ERTRAFV3Extended Remote Transmission Request Value 3CAN Acceptance Filter 3において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。R/W

CAN Acceptance Filter ID Mask Register 4 (Offset 0x00D0)

CAN Acceptance Filter ID Mask Register 4は、CAN Acceptance Filter 4で受信フレームとの比較を行うフィールドを設定するためのレジスタです。 このレジスタで “1”がセットされたビットは、受信フレームとの比較対象となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:21CAN_ID1AFM3Standard Message ID Mask 4CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの ID[28:18]フィールドのうち比較に使用するビットを設定するためのフィールドです。R/W
20CAN_SRTRAFM3Standard Remote Transmission Request Mask 4CAN Acceptance Filter 4において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットを比較に使用するかを設定するためのビットです。R/W
19CAN_IDEAFM3Identifier Extension Mask 4CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの IDEビットを比較に使用するかを設定するためのビットです。R/W
18:1CAN_ID2AFM3Extended Message ID Mask 4CAN Acceptance Filter 4において、拡張フレームの ID[17:0]フィールドのうち比較に使用するビットを設定するためのフィールドです。R/W
0CAN_ERTRAFM3Extended Remote Transmission Request Mask 4CAN Acceptance Filter 4において、拡張フレームの RTRビットを比較に使用するかを設定するためのビットです。R/W

CAN Acceptance Filter ID Value Register 4 (Offset 0x00D4)

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”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:21CAN_ID1AFV4Standard Message ID Value 4CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの ID[28:18]フィールドのフィルター値を設定するためのフィールドです。R/W
20CAN_SRTRAFV4Standard Remote Transmission Request Value 3CAN Acceptance Filter 4において、標準フレームの RTRビット または、拡張フレームから受信する SRRビットのフィルター値を設定するためのビットです。R/W
19CAN_IDEAFV4Identifier Extension Value 4CAN Acceptance Filter 4において、標準フレーム または、拡張フレームの IDEビットのフィルター値を設定するためのビットです。R/W
18:1CAN_ID2AFV4Extended Message ID Value 4CAN Acceptance Filter 4において、拡張フレームの ID[17:0]フィールドのフィルター値を設定するためのフィールドです。R/W
0CAN_ERTRAFV4Extended Remote Transmission Request Value 4CAN Acceptance Filter 4において、拡張フレームの RTRビットのフィルター値を設定するためのビットです。R/W

CAN FIFO and Buffer Reset Register (Offset 0x00F0)

CAN FIFO and Buffer Reset Registerは、TX FIFO, RX FIFO, TX High Priority Bufferのリセットを行うためのレジスタです。 何らかの理由により FIFOおよび Bufferのクリアを行いたい場合にこのレジスタを使用します。

bitSymbolFieldDescriptionR/W
31:18-ReservedReserved-
17CAN_TXHPBRSTTX High Priority Buffer ResetTX High Priority Bufferをリセットするためのビットです。本ビットに “1”をセットすると TX High Priority Bufferをリセットします。WO
16CAN_TXFIFORSTTX FIFO ResetTX FIFOをリセットするためのビットです。本ビットに “1”をセットすると TX FIFOをリセットします。WO
15:1-ReservedReserved-
0CAN_RXFIFORSTRX FIFO ResetRX FIFOをリセットするためのビットです。本ビットに “1”をセットすると RX FIFOをリセットします。WO

CAN Self Test Mode Control Register (Offset 0x0100)

CAN Self Test Mode Control Registerは、CAN Controllerの Self Testを行うための、デバッグ用レジスタです。

Self Test Modeを Enableにすることで、自送信フレームに対する受信動作の有効化と返信 ACK確認の停止制御が行われ、CANバスを使用した Loopback動作が可能となります。

このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:1-ReservedReserved-
0CAN_STMSelf Test ModeCAN通信の Self Test Modeを設定します。0: Self Test Mode Disable 1: Self Test Mode EnableR/W

CAN PHY Sleep Mode Control Register (Offset 0x0200)

CAN PHY Sleep Mode Control Registerは、OBC Module上に実装される CAN Tranceverの動作を制御するためのレジスタです。

Sleep Modeを Enableにすると、CAN Transceiverの送受信回路を OFF (低消費電力状態)にすることができます。

このレジスタは、CAN Enable Registerの CAN_ENビットが “0”の時のみ書き込みが可能です。

bitSymbolFieldDescriptionR/W
31:1-ReservedReserved-
0CAN_PSLMPHY Sleep ModeCAN Transceiverの Sleep Modeを設定します。0: Sleep Mode Disable 1: Sleep Mode EnableR/W

CAN Controller IP Version Register (Offset: 0xF000)

CAN Controller IPのバージョン管理用レジスタです。

bitSymbolFieldDescriptionR/W
31:24CAN_MAJVERCAN Controller IP Major VersionCAN Controller IPの Major Versionを示します。RO
23:16CAN_MINVERCAN Controller IP Minor VersionCAN Controller IPの Minor Versionを示します。RO
15:0CAN_PATVERCAN Controller IP Patch VersionCAN Controller IPの Patch Versionを示します。RO

CANアクセス手順

この章では、CAN Controllerを使用するために必要な、ソフトウェアによる設定および確認手順の例について説明します。 ※各レジスタの詳細は、CAN Controllerの”レジスタ詳細”の章を参照してください。

初期設定操作手順例

CAN Controllerの起動後に行う必要がある初期設定の手順について説明します。

./images/can_init_config_seq.png

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にレジスタ設定した時に生成されるビットタイミングを以下に示します。

./images/can_gen_bit_timing.png

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を使用するフレーム送信操作手順例

TX_FIFOを使用したメッセージ送信の手順について説明します。

./images/can_trans_txf_seq.png

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”が書き込まれた後に行われます。

TX Message Priority Management

CAN Controllerでは、TX Message Priority Management機能により、TX FIFOに複数のメッセージが格納されている時に優先度の高い送信メッセージから順に送信を行います。

動作の一例を含めた、TX Message Priority Management機能の構成を以下に示します。

./images/can_tx_prio_mgmt.png

送信メッセージの送信順序は、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 High Priority Bufferに書き込まれたメッセージは、TX FIFO内のメッセージよりも優先して送信されます。

./images/can_trans_txhb_seq.png

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”が書き込まれた後に行われます。

フレーム受信操作手順例

メッセージ受信の手順について説明します。

./images/can_rcv_rxf_seq.png

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”の状態でも読み出す事が出来ます。 但し、この時は新しいメッセージの受信は行われません。