PDU模式控制服務(wù)
每個L-PDU分配給一個專用的物理CAN通道,該通道連接CAN控制器和CAN網(wǎng)絡(luò)。通過這種方式,所有屬于物理通道的L-PDU都可以在處理邏輯上,單一的L-PDU通道組上進(jìn)行控制。這些邏輯組表示ECU連接到底層CAN網(wǎng)絡(luò)的所有I-PDU。圖 展示了L-PDU信道組與上層或網(wǎng)絡(luò)的關(guān)系。
圖5 PDU組的通道
一個L-PDU只能分配給一個信道組。PduR或網(wǎng)絡(luò)管理等典型用戶負(fù)責(zé)控制PDU的操作模式。CanIf提供了服務(wù)CanIf_SetPduMode()和CanIf_GetPduMode()來防止處理:
- 所有的I-PDU都屬于一個邏輯通道,
- 所有發(fā)送I-PDU和接收I-PDU屬于一個邏輯通道。
只允許在對應(yīng)的控制器模式等于CAN_CS_STARTED時,更改PDU通道模式。而CANIF_ONLINE和CANIF_OFFLINE在PDU信道模式下影響整個通信,分別啟用和禁用CANIF_TX_OFFLINE和CANIF_TX_OFFLINE_ACTIVE傳輸路徑。CanIf通過服務(wù)CanIf_GetPduMode()提供關(guān)于當(dāng)前PDU通道模式的信息。
圖6 PDU組的通道模式控制
在初始化期間,CanIf應(yīng)該將每個通道切換到CANIF_OFFLINE。如果調(diào)用CanIf_SetControllerMode(),則CanIf會將對應(yīng)通道的PDU通道模式設(shè)置為CANIF_OFFLINE。
對于切換到CANIF_OFFLINE模式的物理通道,CanIf應(yīng)該:
- 防止將相關(guān)L-PDU的傳輸請求CanIf_Transmit()轉(zhuǎn)發(fā)給CanDrv,
- 清除相應(yīng)的CanIf傳輸緩沖區(qū),
- 防止調(diào)用上層模塊的接收指示回調(diào)服務(wù),
- 防止調(diào)用上層模塊的傳輸確認(rèn)回調(diào)服務(wù)。
如果調(diào)用CanIf_SetControllerMode()或CanIf_ControllerBusOff(),則CanIf應(yīng)將相應(yīng)通道的PDU通道模式設(shè)置為CANIF_TX_OFFLINE。
對于切換到CANIF_TX_OFFLINE模式的物理通道,CanIf應(yīng)該:
- 防止將相關(guān)L-PDU的傳輸請求CanIf_Transmit()轉(zhuǎn)發(fā)給CanDrv,
- 清除相應(yīng)的CanIf傳輸緩沖區(qū),
- 防止調(diào)用上層模塊的傳輸確認(rèn)回調(diào)服務(wù)。
- 支持調(diào)用上層模塊的接收指示回調(diào)服務(wù)。
在CANIF_OFFLINE和CANIF_TX_OFFLINE的情況下,BusOff通知被隱式地抑制,因為沒有I-PDU可以被傳輸,因此CAN控制器不能通過新請求的L-PDU進(jìn)入BusOff模式進(jìn)行傳輸。
如果已經(jīng)在CAN transmission硬件對象中等待傳輸?shù)腖-PDU在切換到CANIF_TX_OFFLINE或CANIF_OFFLINE模式并發(fā)生后續(xù)BusOff事件后立即被傳輸,那么CanIf不禁止執(zhí)行BusOff通知。喚醒通知不受PDU通道模式更改的影響。
對于切換到CANIF_ONLINE模式的物理信道,CanIf應(yīng)該:
- 允許將相關(guān)L-PDU的傳輸請求CanIf_Transmit()轉(zhuǎn)發(fā)到CanDrv,
- 支持調(diào)用上層模塊的接收指示回調(diào)服務(wù),
- 允許調(diào)用上層模塊的傳輸確認(rèn)回調(diào)服務(wù)。
如果CanIfTxOfflineActiveSupport為TRUE,CanIf提供通過CANIF_TX_OFFLINE_ACTIVE模式成功傳輸?shù)?a href="http://www.wenjunhu.com/analog/" target="_blank">模擬。該模式是通過調(diào)用CanIf_SetPduMode()來啟用的,并且只影響傳輸路徑。
對于每個被分配到CANIF_TX_OFFLINE_ACTIVE模式信道的L-PDU, CanIf會立即調(diào)用上層模塊的傳輸確認(rèn)回調(diào)服務(wù),而不是在調(diào)用CanIf_Transmit()時將L-PDU緩沖或轉(zhuǎn)發(fā)到CanDrv。
在CANIF_TX_OFFLINE_ACTIVE模式下,上層必須處理傳輸確認(rèn)的執(zhí)行。發(fā)送確認(rèn)處理在發(fā)送請求結(jié)束時立即執(zhí)行。這個功能對于實現(xiàn)特殊的操作模式(如診斷無源模式)是有用的,以避免總線流量而不影響通知機(jī)制。此模式通常用于診斷。
5 API
API這里羅列一下,就不展開贅述了,后續(xù)有機(jī)會再串起來介紹。
- CanIf_Init
- CanIf_DeInit
- CanIf_SetControllerMode
- CanIf_GetControllerMode
- CanIf_GetControllerErrorState
- CanIf_Transmit
- CanIf_ReadRxPduData
- CanIf_ReadTxNotifStatus
- CanIf_ReadRxNotifStatus
- CanIf_SetPduMode
- CanIf_GetPduMode
- CanIf_GetVersionInfo
- CanIf_SetDynamicTxId
- CanIf_SetTrcvMode
- CanIf_GetTrcvMode
- CanIf_GetTrcvWakeupReason
- CanIf_SetTrcvWakeupMode
- CanIf_CheckWakeup
- CanIf_CheckValidation
- CanIf_GetTxConfirmationState
- CanIf_ClearTrcvWufFlag
- CanIf_CheckTrcvWakeFlag
- CanIf_SetBaudrate
- CanIf_SetIcomConfiguration
- CanIf_GetControllerRxErrorCounter
- CanIf_GetControllerTxErrorCounter
- CanIf_EnableBusMirroring
回調(diào)函數(shù)
- CanIf_TriggerTransmit
- CanIf_TxConfirmation
- CanIf_RxIndication
- CanIf_ControllerBusOff
- CanIf_ConfirmPnAvailability
- CanIf_ClearTrcvWufFlagIndication
- CanIf_CheckTrcvWakeFlagIndication
- CanIf_ControllerModeIndication
- CanIf_TrcvModeIndication
- CanIf_CurrentIcomConfiguration
總****結(jié)
CanIf位于底層CAN驅(qū)動、CAN收發(fā)器和上層通信服務(wù)層、CanTp、PduR之間。它表示上層通信層的CAN驅(qū)動程序服務(wù)接口。其中涉及眾多API函數(shù)和回調(diào)函數(shù),具體功能最好結(jié)合函數(shù)的定義和應(yīng)用場景理解。
縮略詞:
L-PDU : CAN Protocol Data Unit,
CAN協(xié)議數(shù)據(jù)單元
L-SDU : CAN Service Data Unit,
CAN服務(wù)數(shù)據(jù)單元
CanDrv : CAN Driver module,
CAN驅(qū)動模塊
CAN FD : CAN with Flexible Data-Rate
CanId : CAN Identifier,
CAN標(biāo)識符
CanIf: CAN Interface module,
CAN接口模塊
Can Nm : CAN Network Management module,
CAN網(wǎng)絡(luò)管理模塊
CanSm : CAN State Manager module,
CAN狀態(tài)管理模塊
CanTp : CAN Transport Layer module,
CAN傳輸層模塊
CanTrcv : CAN Transceiver Driver module,
CAN收發(fā)器驅(qū)動模塊
CanTSyn : Global Time Synchronization overCAN,
ComM : Communication Manager module,
通信管理模塊
DCM: Diagnostic Communication Manager module,診斷通信管理模塊
EcuM : ECU State Manager module,
ECU狀態(tài)管理模塊
HOH : CAN hardware object handle,
硬件對象句柄
HRH : CAN hardware receive handle,
硬件接收句柄
HTH: CAN hardware transmit handle,
硬件發(fā)送句柄
PduR : PDU Router module,
PDU路由模塊
SchM : Scheduler Module,
進(jìn)程模塊
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3440瀏覽量
106110 -
CAN
+關(guān)注
關(guān)注
57文章
2762瀏覽量
464007 -
路由器
+關(guān)注
關(guān)注
22文章
3738瀏覽量
114129 -
PDU
+關(guān)注
關(guān)注
0文章
94瀏覽量
17005
發(fā)布評論請先 登錄
相關(guān)推薦
評論