{{{ #!html
CAN Driver
}}} [[BR]] = 概要 = * COMスタックのMCALで、CANプロトコルを扱う * 送受信に使用するメッセージボックスを、HOH(Hardware Object Handle)と呼ぶ * 送信のHOHをHTH、受信のHOHをHRHと区別する * CANに関する解説サイト * [https://vector.com/vj_beginners-can_jp.html はじめてのCAN(ベクター・ジャパン株式会社)] * API一覧 ||= API =||= ID[[BR]][Dec] =||= ID[[BR]][Hex] =|| || [#Can_Init Can_Init] || 0|| 0x00|| || [#Can_GetVersionInfo Can_GetVersionInfo] || 7|| 0x07|| || [#Can_CheckBaudrate Can_CheckBaudrate] || 14|| 0x0E|| || [#Can_ChangeBaudrate Can_ChangeBaudrate] || 13|| 0x0D|| || [#Can_SetControllerMode Can_SetControllerMode] || 3|| 0x03|| || [#Can_DisableControllerInterrupts Can_DisableControllerInterrupts] || 4|| 0x04|| || [#Can_EnableControllerInterrupts Can_EnableControllerInterrupts] || 5|| 0x05|| || [#Can_CheckWakeup Can_CheckWakeup] || 11|| 0x0B|| || [#Can_Write Can_Write] || 6|| 0x06|| || [#Can_MainFunction_Write Can_MainFunction_Write] || 1|| 0x01|| || [#Can_MainFunction_Read Can_MainFunction_Read] || 8|| 0x08|| || [#Can_MainFunction_BusOff Can_MainFunction_BusOff] || 9|| 0x09|| || [#Can_MainFunction_Wakeup Can_MainFunction_Wakeup] || 10|| 0x0A|| || [#Can_MainFunction_Mode Can_MainFunction_Mode] || 12|| 0x0C|| * コンフィギュレーション一覧 * [#CanConfigSet CanConfigSet] * [#CanController CanController] * [#CanBusoffProcessing CanBusoffProcessing] * [#CanControllerActivation CanControllerActivation] * [#CanControllerBaseAddress CanControllerBaseAddress] * [#CanControllerId CanControllerId] * [#CanRxProcessing CanRxProcessing] * [#CanTxProcessing CanTxProcessing] * [#CanWakeupProcessing CanWakeupProcessing] * [#CanWakeupSupport CanWakeupSupport] * [#CanControllerDefaultBaudrate CanControllerDefaultBaudrate] * [#CanCpuClockRef CanCpuClockRef] * [#CanWakeupSourceRef CanWakeupSourceRef] * [#CanControllerBaudrateConfig CanControllerBaudrateConfig] * [#CanControllerBaudRate CanControllerBaudRate] * [#CanControllerPropSeg CanControllerPropSeg] * [#CanControllerSeg1 CanControllerSeg1] * [#CanControllerSeg2 CanControllerSeg2] * [#CanControllerSyncJumpWidth CanControllerSyncJumpWidth] * [#CanFilterMask CanFilterMask] * [#CanFilterMaskValue CanFilterMaskValue] * [#CanTTController CanTTController] * [#CanHardwareObject CanHardwareObject] * [#CanHandleType CanHandleType] * [#CanIdType CanIdType] * [#CanIdValue CanIdValue] * [#CanObjectId CanObjectId] * [#CanObjectType CanObjectType] * [#CanControllerRef CanControllerRef] * [#CanFilterMaskRef CanFilterMaskRef] * [#CanMainFunctionRWPeriodRef CanMainFunctionRWPeriodRef] * [#CanTTHardwareObjectTrigger CanTTHardwareObjectTrigger] * [#CanGeneral CanGeneral] * [#CanChangeBaudrateApi CanChangeBaudrateApi] * [#CanDevErrorDetection CanDevErrorDetection] * [#CanHardwareCancellation CanHardwareCancellation] * [#CanIdenticalIdCancellation CanIdenticalIdCancellation] * [#CanIndex CanIndex] * [#CanLPduReceiveCalloutFunction CanLPduReceiveCalloutFunction] * [#CanMainFunctionBusoffPeriod CanMainFunctionBusoffPeriod] * [#CanMainFunctionModePeriod CanMainFunctionModePeriod] * [#CanMainFunctionWakeupPeriod CanMainFunctionWakeupPeriod] * [#CanMultiplexedTransmission CanMultiplexedTransmission] * [#CanTimeoutDuration CanTimeoutDuration] * [#CanVersionInfoApi CanVersionInfoApi] * [#CanCounterRef CanCounterRef] * [#CanSupportTTCANRef CanSupportTTCANRef] * [#CanMainFunctionRWPeriods CanMainFunctionRWPeriods] * [#CanMainFunctionReadPeriod CanMainFunctionReadPeriod] * [#CanMainFunctionWritePeriod CanMainFunctionWritePeriod] * エラーコード一覧 ||= エラーコード =||= Dec =||= Hex =|| || CAN_E_PARAM_POINTER || 1|| 0x01|| || CAN_E_PARAM_HANDLE || 2|| 0x02|| || CAN_E_PARAM_DLC || 3|| 0x03|| || CAN_E_PARAM_CONTROLLER || 4|| 0x04|| || CAN_E_UNINIT || 5|| 0x05|| || CAN_E_TRANSITION || 6|| 0x06|| || CAN_E_DATALOST || 7|| 0x07|| ---- = API仕様 = == Can_Init == {{{ void Can_Init(const Can_ConfigType* Config) }}} * Canモジュールの初期化を行う * 引数Configで与えたポインタが指すコンフィギュレーションデータを使用して初期化される * [wiki:tips_configuration_class#%E3%83%9D%E3%82%B9%E3%83%88%E3%83%93%E3%83%AB%E3%83%89%E3%82%BF%E3%82%A4%E3%83%A0 ポストビルド]のパラメータは本初期化により設定値を変更できる * 引数にNULLを与えた場合、デフォルトのコンフィギュレーションが設定される(本仕様はR4.1系で削除された) * [wiki:spec_CANInterface#CanIf_Init CanIfのCanIf_Init]では、引数にNULLを与えた場合、デフォルトのコンフィギュレーションが設定される仕様となっていることから、TOPPERS/A-CANではCan_Initも同様にNULLが与えられた場合、デフォルトのコンフィギュレーションを設定するように実装している == Can_GetVersionInfo == {{{ void Can_GetVersionInfo(Std_VersionInfoType* versioninfo) }}} == Can_CheckBaudrate == {{{ Std_ReturnType Can_CheckBaudrate(uint8 Controller, const uint16 Baudrate) }}} * 引数Controllerで与えたCANコントローラが、引数Baudrateで与えたボーレートg使用可能かチェックする == Can_ChangeBaudrate == {{{ Std_ReturnType Can_ChangeBaudrate(uint8 Controller, const uint16 Baudrate) }}} * 引数Controllerで与えたCANコントローラを、引数Baudrateで与えたボーレートへ変更する == Can_SetControllerMode == {{{ Can_ReturnType Can_SetControllerMode(uint8 Controller, Can_StateTransitionType Transition) }}} * 引数Controllerで与えたCANコントローラを、引数Transitionで与えた状態へ変更する == Can_DisableControllerInterrupts == {{{ void Can_DisableControllerInterrupts(uint8 Controller) }}} * 引数Controllerで与えたCANコントローラに関連する割込みを禁止する == Can_EnableControllerInterrupts == {{{ void Can_EnableControllerInterrupts(uint8 Controller) }}} * 引数Controllerで与えたCANコントローラに関連する割込みを許可する == Can_CheckWakeup == {{{ Can_ReturnType Can_CheckWakeup(uint8 Controller) }}} == Can_Write == {{{ Can_ReturnType Can_Write(Can_HwHandleType Hth, const Can_PduType* PduInfo) }}} * 引数Hthで与えたHTHから、引数PduInfoで与えたデータを送信する == Can_MainFunction_Write == {{{ void Can_MainFunction_Write(void) }}} == Can_MainFunction_Read == {{{ void Can_MainFunction_Read(void) }}} == Can_MainFunction_BusOff == {{{ void Can_MainFunction_BusOff(void) }}} == Can_MainFunction_Wakeup == {{{ void Can_MainFunction_Wakeup(void) }}} == Can_MainFunction_Mode == {{{ void Can_MainFunction_Mode(void) }}} ---- = コンフィギュレーション仕様 = == CanConfigSet == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet }}} * 型:Container * 多重度:1 * [#Can_Init Can_Init]により設定されるコンフィギュレーション全体のコンテナ * TOPPERS/A-CANでは、[wiki:tips_configuration_class#%E3%83%9D%E3%82%B9%E3%83%88%E3%83%93%E3%83%AB%E3%83%89%E3%82%BF%E3%82%A4%E3%83%A0 ポストビルド]による複数のコンフィギュレーション定義に対応するため、多重度を1..*として本コンテナを複数定義可能としている == CanController == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController }}} * 型:Container * 多重度:1..* * CANコントローラを設定するコンテナ == CanBusoffProcessing == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanBusoffProcessing }}} * 型:EnumerationParam * INTERRUPT:割込みによって行う * POLLING:ポーリングによって行う * 多重度:1 * バスオフ検知方法を設定する == CanControllerActivation == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerActivation }}} * 型:BooleanParam * 多重度:1 * CANコントローラの使用有無 == CanControllerBaseAddress == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerBaseAddress }}} * 型:IntegerParam * 多重度:1 * CANコントローラのベースアドレス == CanControllerId == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerId }}} * 型:IntegerParam * 多重度:1 * CANコントローラのID * TOPPERS/A-CANでは、処理速度向上のため、0から連番とする制約を設けている == CanRxProcessing == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanRxProcessing }}} * 型:EnumerationParam * INTERRUPT:割込みによって行う * POLLING:ポーリングによって行う * 多重度:1 * メッセージ受信検知方法を設定する == CanTxProcessing == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanTxProcessing }}} * 型:EnumerationParam * INTERRUPT:割込みによって行う * POLLING:ポーリングによって行う * 多重度:1 * メッセージ送信完了検知方法を設定する == CanWakeupProcessing == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanWakeupProcessing }}} * 型:EnumerationParam * INTERRUPT:割込みによって行う * POLLING:ポーリングによって行う * 多重度:1 * ウェイクアップ検知方法を設定する == CanWakeupSupport == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanWakeupSupport }}} * 型:BooleanParam * 多重度:1 * ウェイクアップのサポート有無 == CanControllerDefaultBaudrate == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerDefaultBaudrate }}} * 型:Reference * 多重度:1 * [#CanControllerBaudrateConfig CanControllerBaudrateConfig]への参照 * デフォルトのボーレートを設定する == CanCpuClockRef == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanCpuClockRef }}} * 型:Reference * 多重度:1 == CanWakeupSourceRef == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanWakeupSourceRef }}} * 型:Reference * 多重度:0..1 == CanControllerBaudrateConfig == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerBaudrateConfig }}} * 型:Container * 多重度:1..* * ボーレートを設定するコンテナ == CanControllerBaudRate == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerBaudrateConfig/CanControllerBaudRate }}} * 型:IntegerParam * 多重度:1 * ボーレートの値 == CanControllerPropSeg == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerBaudrateConfig/CanControllerPropSeg }}} * 型:IntegerParam * 多重度:1 * 伝播時間セグメントを設定する * 参考:http://monoist.atmarkit.co.jp/mn/articles/0809/10/news140_2.html == CanControllerSeg1 == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerBaudrateConfig/CanControllerSeg1 }}} * 型:IntegerParam * 多重度:1 * 位相バッファセグメント1を設定する * 参考:http://monoist.atmarkit.co.jp/mn/articles/0809/10/news140_2.html == CanControllerSeg2 == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerBaudrateConfig/CanControllerSeg2 }}} * 型:IntegerParam * 多重度:1 * 位相バッファセグメント2を設定する * 参考:http://monoist.atmarkit.co.jp/mn/articles/0809/10/news140_2.html == CanControllerSyncJumpWidth == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanControllerBaudrateConfig/CanControllerSyncJumpWidth }}} * 型:IntegerParam * 多重度:1 * 再同期ジャンプ幅を設定する * 参考:http://monoist.atmarkit.co.jp/mn/articles/0809/10/news140_3.html == CanFilterMask == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanFilterMask }}} * 型:Container * 多重度:0..* * フィルタマスクを設定するコンテナ == CanFilterMaskValue == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanFilterMask/CanFilterMaskValue }}} * 型:IntegerParam * 多重度:1 * 受信したCAN-IDに対して適用するフィルタマスクを設定する == CanTTController == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanController/CanTTController }}} * 型:Container * 多重度:0..1 * 本コンテナに所属するパラメータ仕様は、[wiki:spec_TTCANDriver TTCAN Driver]の仕様書に規定されている == CanHardwareObject == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject }}} * 型:Container * 多重度:1..* * HOHを設定するコンテナ == CanHandleType == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject/CanHandleType }}} * 型:EnumerationParam * BASIC:ベーシックCAN * FULL:フルCAN * 多重度:1 * メッセージマネジメントを設定する * 参考:http://monoist.atmarkit.co.jp/mn/articles/0809/10/news140_2.html == CanIdType == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject/CanIdType }}} * 型:EnumerationParam * EXTENDED:拡張フォーマット * MIXED:混在 * STANDARD:標準フォーマット * 多重度:1 * データフレームの形式 == CanIdValue == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject/CanIdValue }}} * 型:IntegerParam * 多重度:1 * [#CanFilterMaskValue CanFilterMaskValue]によるマスク後の値と比較する値を設定する == CanObjectId == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject/CanObjectId }}} * 型:IntegerParam * 多重度:1 * HOHのID * 0から連番とする制約がある == CanObjectType == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject/CanObjectType }}} * 型:EnumerationParam * RECEIVE:受信 * TRANSMIT:送信 * 多重度:1 * HOHが、受信(HRH)か送信(HTH)かを設定する == CanControllerRef == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject/CanControllerRef }}} * 型:Reference * 多重度:1 * [#CanController CanController]への参照 * HRHを送受信するCANコントローラを関連付ける == CanFilterMaskRef == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject/CanFilterMaskRef }}} * 型:Reference * 多重度:0..1 * [#CanFilterMask CanFilterMask]への参照 * HRHで使用するフィルタマスクを指定する == CanMainFunctionRWPeriodRef == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject/CanMainFunctionRWPeriodRef }}} * 型:Reference * 多重度:0..1 * [#CanMainFunctionRWPeriods CanMainFunctionRWPeriods]への参照 * 送受信をポーリングで行う場合のポーリング周期を設定する == CanTTHardwareObjectTrigger == {{{ /AUTOSAR/EcucDefs/Can/CanConfigSet/CanHardwareObject/CanTTHardwareObjectTrigger }}} * 型:Container * 多重度:0..* * 本コンテナに所属するパラメータ仕様は、[wiki:spec_TTCANDriver TTCAN Driver]の仕様書に規定されている == CanGeneral == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral }}} * 型:Container * 多重度:1 * Canモジュールの全体的な設定を行うコンテナ == CanChangeBaudrateApi == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanChangeBaudrateApi }}} * 型:BooleanParam * 多重度:1 * [#Can_ChangeBaudrate Can_ChangeBaudrate]の使用有無 == CanDevErrorDetection == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanDevErrorDetection }}} * 型:BooleanParam * 多重度:1 * DETエラー通知の使用有無 == CanHardwareCancellation == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanHardwareCancellation }}} * 型:BooleanParam * 多重度:1 * ハードウェアによる送信キャンセルの使用有無 * 本パラメータはR4.2系で削除された == CanIdenticalIdCancellation == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanIdenticalIdCancellation }}} * 型:BooleanParam * 多重度:1 * 送信を保留しているPDUの送信キャンセルの使用有無 * 本パラメータはR4.2系で削除された == CanIndex == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanIndex }}} * 型:IntegerParam * 多重度:1 * CanモジュールのインスタンスID * 1つしか使用しない場合0を指定する == CanLPduReceiveCalloutFunction == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanLPduReceiveCalloutFunction }}} * 型:FunctionName * 多重度:0..1 * CANバスからデータを受信し、PDUを上位レイヤへ送信する際のコールバック使用有無 == CanMainFunctionBusoffPeriod == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanMainFunctionBusoffPeriod }}} * 型:FloatParam * 多重度:0..1 * バスオフ検知をポーリングで行う場合のポーリング周期を設定する == CanMainFunctionModePeriod == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanMainFunctionModePeriod }}} * 型:FloatParam * 多重度:1 * CANコントローラのモード変更通知検知のポーリング周期を設定する == CanMainFunctionWakeupPeriod == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanMainFunctionWakeupPeriod }}} * 型:FloatParam * 多重度:0..1 * ウェイクアップ検知をポーリングで行う場合のポーリング周期を設定する == CanMultiplexedTransmission == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanMultiplexedTransmission }}} * 型:BooleanParam * 多重度:1 == CanTimeoutDuration == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanTimeoutDuration }}} * 型:FloatParam * 多重度:1 * ハードウェア上のモードが切り替わるのを待機するタイムアウトの上限値 * 秒単位で指定する == CanVersionInfoApi == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanVersionInfoApi }}} * 型:BooleanParam * 多重度:1 * [#Can_GetVersionInfo Can_GetVersionInfo]の使用有無 == CanCounterRef == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanCounterRef }}} * 型:Reference * 多重度:1 * [wiki:spec_OS#OsCounter OsモジュールのOsCounter]への参照 * Canモジュール内で時間を計測するために使用するOSカウンタを指定する == CanSupportTTCANRef == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanSupportTTCANRef }}} * 型:Reference * 多重度:1 == CanMainFunctionRWPeriods == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanMainFunctionRWPeriods }}} * 型:Container * 多重度:1 * メッセージ受信検知とメッセージ送信完了検知をポーリングで行う場合のポーリング周期を設定するコンテナ == CanMainFunctionReadPeriod == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanMainFunctionRWPeriods/CanMainFunctionReadPeriod }}} * 型:FloatParam * 多重度:0..* * メッセージ受信検知のポーリング周期を設定する * 秒単位で指定する == CanMainFunctionWritePeriod == {{{ /AUTOSAR/EcucDefs/Can/CanGeneral/CanMainFunctionRWPeriods/CanMainFunctionWritePeriod }}} * 型:FloatParam * 多重度:0..* * メッセージ送信完了検知のポーリング周期を設定する * 秒単位で指定する