一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

AUTOSAR中CAN通信協(xié)議棧配置詳解

 Kuai2012 2022-04-26
AUTOSAR的通信協(xié)議棧是由BSW通信服務(wù),通信硬件抽象和通信驅(qū)動程序組成。
圖1 AUTOSAR 通信協(xié)議棧的組件
COM模塊
AUTOSAR COM是位于RTE和PduR之間的服務(wù)層模塊,主要用于與RTE之間的信號交互,對信號進行打包和解包。另外在該模塊中還可以配置IPDU的通信周期、通信周期偏移量、IPDU Group等。
PduR模塊
PduR的作用是為通信協(xié)議棧中的不同總線的IPDU提供路由路徑。例如它將接收的IPDU路由至COM、Dcm等模塊,或者將COM模塊需要發(fā)送的IPDU路由至CanIf模塊,最后傳送至芯片的CAN Driver,將信號發(fā)送至總線。
CanTp模塊
Tp表示傳輸協(xié)議。該模塊是特定于總線,其配置取決于基礎(chǔ)總線協(xié)議,可以是CAN、LIN、CANFD等總線。該模塊主要用于長報文的分段發(fā)送,以及對分段報文進行重組。
Bus SM 模塊
總線狀態(tài)管理模塊負(fù)責(zé)相應(yīng)總線狀態(tài)機的管理和總線故障的處理。它可以基于CAN總線的CanSM,或者是基于LIN總線的LinSM等。
Bus Trcv Driver模塊
它是ECU抽象層的一部分。它可以是用于CAN收發(fā)器的CanTrcv,用于以太網(wǎng)收發(fā)器的EthTrcv,用于Flexray收發(fā)器的FrTrcv等。此模塊用于對收發(fā)器進行初始化配置,它提供獨立于控制器硬件的用于啟動傳輸?shù)姆?wù)和用于通知接收事件的回調(diào)函數(shù)。
Bus Driver
該模塊是AUTOSAR MCAL層的一部分(例如:CanDrv,LinDrv,F(xiàn)rDrv),它實際上與ECU的底層硬件進行交互,并為其上層提供獨立于硬件的接口。此模塊取決于硬件,并且驅(qū)動程序代碼可能會根據(jù)基礎(chǔ)硬件而有所不同。BusIf是唯一可以訪問此總線驅(qū)動程序的模塊。

CAN總線的COM配置實施

下面我們來看看CAN通信協(xié)議棧,如下圖2所示,包括Com、PduR、CanTp、CanSm、CanIf、CAN Driver等模塊,其中COM與PduR模塊是通用的,其功能與總線銅線協(xié)議無關(guān)。

圖2 AUTOSAR CAN通信協(xié)議棧
下面來詳細(xì)聊聊各個模塊的配置選項。
COM模塊
配置的COM模塊基本目的是在上層RTE層和下層PDU路由器之間建立系統(tǒng)通信,而不考慮通信協(xié)議。這可以通過定義和配置四個不同的對象來完成。
1、I-PDU
I-PDU包含從通信棧中某一模塊接收到的消息或需要發(fā)送給某一模塊的消息。
2、I-PDU組
如果我們有大量的I-PDU,則可以將它們分為不同的組,通常至少分為兩個組,一個為TxGroup,一個為RxGroup。
3、信號
I-DPU可以包含一個或多個信號,可以理解為一個I-PDU為一幀CAN消息,信號就是dbc中定義的。
4、信號組
如果需要將多個信號發(fā)送到同一I-PDU,則信號可以進一步形成信號組。
COM模塊包含兩個主要的部分,分別為ComGeneral和ComConfig。
ComGeneral(多重性:1)
1、ComConfigurationUseDet:如果此布爾參數(shù)設(shè)置為ON,則任何當(dāng)COM模塊出現(xiàn)錯誤時,會調(diào)用Det_ReportError函數(shù),記錄在DET模塊中(多重性:0.1)。
2、ComCancellationSupport:這是一個布爾參數(shù),用于啟用/禁用用于取消PDU傳輸請求的取消功能。(多重性:0.1)。
3、ComEnableSignalGroupArrayApi:這是一個布爾參數(shù),用于激活/禁用信號組陣列訪問API。(多重性:1)。
4、ComSupportedIPduGroups:它是一個整數(shù)參數(shù),用于說明所支持的IPDU組的最大數(shù)量。(多重性:1)。
5、ComVersionInfoApi:布爾參數(shù),用于激活/禁用版本信息API Com_GetVersionInfo。(多重性:1)。
6、ComRetryFailedTransmitRequests:如果此參數(shù)設(shè)置為true,則啟用重試失敗的傳輸請求。(多重性:0.1)。
7、ComEnableMDTForCyclicTransmission:如果啟用此選項,則它將在I-PDU的循環(huán)傳輸和重復(fù)傳輸之間提供最小延遲時間監(jiān)視。(多重性:0.1)。
ComConfig(多重性:0.1)
它包含四個容器,分別為ComSignals、ComIPdus、ComIPduGroups、ComSignalGroups。它還具有用于傳輸模式配置,信號網(wǎng)關(guān)配置,時基配置和過濾器參數(shù)配置的配置參數(shù)。
ComIpdu(多重性:1)
該容器用于為不同的IPDU參數(shù)提供定義,如果沒有該參數(shù),則無法通過COM模塊進行通信。ComIPdu也通過ComPduIdRef鏈接到PDU。I-PDU包含一個或多個信號和/或信號組。以下是ComIpdu的一些基本屬性。
1、ComIPduHandleId:這是分配為該IPDU的ID的數(shù)字值。此ID用于在各種發(fā)送和接收API調(diào)用以及相應(yīng)的回調(diào)API中引用此IPDU。(多重性:0.1)。
2、ComPduIdRef:它提供對COM棧的全局PDU結(jié)構(gòu)的引用。(多重性:1)。
3、ComIPduGroupRef:它是指IPDU所屬的IPDU組。(多重性:0 ... *)。
4、ComIPduSignalRef:提供對該IPDU中包含的所有信號的引用。一個IPDU可以包含一個或多個單獨的信號。(多重性:0 ... *)。、
5、ComIPduSignalGroupRef:提供對此IPDU中包含的所有信號組的引用(多重性:0 ... *)
6、ComIPduCallout:此參數(shù)可定義相應(yīng)I-PDU的callout函數(shù)的名稱,該函數(shù)在接收IPDU時或在發(fā)送PDU之前調(diào)用。(多重性:0 ... 1)。
7、ComIPduDirection:定義I-PDU是為發(fā)送(SEND)PDU還是為接收(RECEIVE)PDU。(多重性:1)。
8、ComIPduSignalProcessing: 用于配置信號是立即處理還是周期性處理,分別對應(yīng)immediate或DEFERRED模式。(多重性:1)。
如果將ComIPduDirection設(shè)置為SEND,則需要設(shè)置其他參數(shù),例如傳輸是周期的還是混合型的等等。這是通過添加ComTxIPdu對象來添加的。
ComIpduGroup(多重性:1)
它包含COM模塊的IPDU組的配置參數(shù)。如果不包含ComIPduGroup容器,則未定義IPDU組。在這種情況下,無法通過COM模塊進行通信。(多重性:1)
1、ComIPduGroupHandleId:用作此IPDU組ID的數(shù)值。API調(diào)用需要它來啟動和停止IPDU組。(多重性:1)
2、ComIPduGroupGroupRef:它提供對包括該IPDU組的所有IPDU組的引用。(多重性:0 ... *)
ComSignal
IPDU可以由一個或多個信號組成。來自RTE不同應(yīng)用程序的這些信號在被傳輸?shù)絇duR之前被打包到PDU中。該容器提供各種參數(shù)來配置PDU中的信號位位置,信號位大小和其他屬性。
1、ComHandleId:這是分配給每個信號ID的數(shù)字值。與信號操作有關(guān)的不同API調(diào)用需要它。(多重性:0 ... 1)。
2、ComTimeoutFactor:它定義了監(jiān)視的超時時間。(多重性:0..1)
3、ComTransferProperty:以下選項定義此信號是否可以觸發(fā)相應(yīng)IPDU的傳輸;(多重性:0 ... 1)
我們可以設(shè)置以下五個選項之一:
TRIGGERED
PENDING
TRIGGERED_ON_CHANGE,
TRIGGERED_WITHOUT_REPETITION TRIGGERED_ON_CHANGE_WITHOUT_REPETITION
4、ComBitPosition:指出信號在IPDU中的開始位置,(多重性:1)。
5、ComBitSize:它定義信號的大小(以位為單位)。(多重性:0 ... 1)
6、ComSignalEndianess:定義信號網(wǎng)絡(luò)表示的字節(jié)排序??梢允荁IG_ENDIAN,LITTLE_ENDIAN,OPAQUE。(多重性:0 ... 1)
7、ComSignalInitValue:用于設(shè)置信號的初始值。(多重性:0 ... 1)
8、ComSignalLength:它指定UINT8 [n]類型的n(以字節(jié)為單位:1 ... 8)。對于其他類型,它將被忽略。(多重性:0 ... 1)
9、ComSignalType:它指定符合BOOTEAN,SINT8,UINT8等。(多重性:1)
10、ComTimeoutNotification:定義發(fā)生超時時在發(fā)送方或接收方要調(diào)用的函數(shù)的名稱(多重性:0 ... 1)
ComSignalGroup
然后,當(dāng)我們需要向同一IPDu發(fā)送或接收多個信號時,可以將這些信號組合在一起以形成一個信號組。
此容器包含名稱與ComSignal容器相似的參數(shù),并且對信號組具有完全相同的作用。因此,在本節(jié)中,我僅提及參數(shù)名稱,要了解其行為,請參閱ComSignal部分。
  1. ComHandleId(多重性:0 ... 1)
  2. ComTimeoutFactor(多重性:0 ... 1)
  3. ComFirstTimeoutFactor(多重性:0 ... 1)
  4. ComTransferProperty(多重性:0 ... 1)
  5. ComNotification(多重性:0 ... 1)
  6. ComInvalidNotification(多重性:0 ... 1)
  7. ComErrorNotification(多重性:0 ... 1)
  8. ComTimeoutNotification(多重性:0 ... 1)
PDU路由器(PduR)
PduR負(fù)責(zé)將PDU路由到特定的總線接口。在PduR之上的所有層中,所有PDU都是獨立于協(xié)議的。在PduR之下的所有PDU都屬于特定的協(xié)議接口模塊,PduR模塊為主要容器提供以下參數(shù)配置。
PduRBswModules(多重性:0 ... *)
每個容器都描述了PDU路由器必須連接的特定BSW模塊。添加PduRBswModule時,容器的簡稱必須與Bsw模塊的名稱匹配,例如CanIf。
PdurGeneral(多重性:1)
這是PduR模塊的子容器,它指定PDU路由器的常規(guī)配置參數(shù)。以下是一些基本配置參數(shù)。
1、PduRDevErrorDetect:如果啟用,它將默認(rèn)錯誤跟蹤器(Det)檢測和通知打開。(多重性:1)
2、PduRVersionInfoApi:如果設(shè)置為true,則PduR_GetVersionInfo API可用。(多重性:1)
PduRRoutingTables(多重性:1)
它表示路由路徑表。此路由表允許使用多個配置,這些配置用于在同一配置中創(chuàng)建多個路由表。
1、PduRConfigurationId:它提供了使用PduR API讀取的PduR配置的配置的標(biāo)識。(多重性:1)
2、PduRMaxRoutingPathCnt:給出所有路由表中最大路由路徑數(shù)。(多重性:1)
3、PduRMaxRoutingTableCnt:它給出了路由表的最大數(shù)量。(多重性:1)
PduRSrcPdu
這是PduRRoutingPath容器的子容器,它指定要路由的PDU的源。
1、PduRSourcePduHandleId:這是PDU路由器分配的PDU標(biāo)識符。(多重性:1)
2、PduRSrcPduRef:此參數(shù)提供對唯一PDU標(biāo)識符的引用,該標(biāo)識符表示PDU的源地址。(多重性:1)
PduRDestPdu
這是PduRRoutingPath容器的子容器,并為要路由的PDU指定一個目的地。
1、PduRDestPduHandleId:由PDU路由器分配的PDU標(biāo)識符,通信接口和傳輸協(xié)議模塊使用該PDU標(biāo)識符進行確認(rèn)。(多重性:0 ... 1)
2、PduRDestPduDataProvision:此參數(shù)指定如何以
PDU_DIRECT或PDUR_TRIGGERTRANSMIT提供數(shù)據(jù)。(多重性:0 ... 1)
3、PduRDestPduRef:它提供參考唯一的PDU標(biāo)識符,表示PDU路由的目的地(多重性:1)
4、PduRDestTxBufferRef:提供對用于單幀路由的通信接口網(wǎng)關(guān)和傳輸協(xié)議網(wǎng)關(guān)所需的緩沖區(qū)的引用。(多重性:0 ... 1)
CAN狀態(tài)管理器(CanSM)
CAN狀態(tài)管理器(CanSM)是通信服務(wù)層的成員,該層與通信硬件抽象層和系統(tǒng)服務(wù)層進行交互。CanSM模塊負(fù)責(zé)CAN狀態(tài)機的管理,包括CanTrcv、CanIf、CAN Driver的狀態(tài)機切換。CanSM模塊具有以下容器用于其配置。
CanSMGeneral(多重性:1)
它包含CanSM模塊的通用預(yù)配置參數(shù)。
1、CanSMDevErrorDetect:用于打開或關(guān)閉開發(fā)錯誤檢測API是否可以調(diào)用。(多重性:1)
2、CanSMMainFunctionTimePeriod:它定義MainFunction的循環(huán)周期(單位為秒)(多重性:1)
3、CanSMVersionInfoApi:用于打開或關(guān)閉版本信息API CanSM_GetVersionInfo。(多重性:1)
CanSMManagerNetwork(多重性:1 ... *)
該容器包含用于確定底層CanController(即每個CAN網(wǎng)絡(luò))處理方式的CAN網(wǎng)絡(luò)特定參數(shù)。
1、CanSMModeRequestRepetitionTime:它確定CanSM模塊將使用CanIf模塊的API重復(fù)模式更改請求的持續(xù)時間。(多重性:1)
2、CanSMModeRequestRepetitionMax:它確定模式請求重復(fù)的最大次數(shù),如果超過次數(shù)CanSM模塊向Det報告開發(fā)錯誤。(多重性:1)
每個CAN網(wǎng)絡(luò)的CanSMConfiguration容器都有一個CanSMManagerNetwork。
它包含每個CAN網(wǎng)絡(luò)的CAN網(wǎng)絡(luò)特定參數(shù)。
1、CanSMBorCounterL1ToL2:它定義總線斷開錯誤的計數(shù),從快恢復(fù)切換到慢恢復(fù)的門檻值。(多重性:1)
2、CanSMBorTimeL1:以秒為單位,定義快恢復(fù)的持續(xù)時間。(多重性:1)
2、CanSMBorTimeL2:以秒為單位,定義慢恢復(fù)的持續(xù)時間。(多重性:1)
CanSMController(多重性:1 ... *
每個容器引用一個唯一的CAN控制器。
1、CanSMControllerId:引用一個特定CAN控制器的唯一標(biāo)識符。(多重性:1)
CanIf模塊
CANIf模塊位于通信棧中的通信服務(wù)層和通信驅(qū)動程序?qū)又g。它負(fù)責(zé)控制CAN驅(qū)動程序模塊的初始化,并在消息的接收(CanIf_RxIndication)或傳輸(CanIf_TxConfirmation)時為CAN驅(qū)動程序模塊提供通知服務(wù)。CANIf模塊獨立于硬件。
CanIfPublicCfg(多重性:1)
該容器包含CanIf的公共配置參數(shù)。
1、CanIfDevErrorDetect:如果設(shè)置為true,它將打開開發(fā)錯誤檢測和通知功能。如果設(shè)置為false,則關(guān)閉。(多重性:1)
2、CanIfPublicVersionInfoApi:啟用或禁用用于讀取版本信息的API。(多重性:1)
該容器包含CanIf的專用配置參數(shù)。
1、CanIfPrivateDlcCheck:選擇是否支持DLC檢查。如果啟用,則如果該幀的DLC小于配置的DLC,則該幀將不會轉(zhuǎn)發(fā)到上層。如果接收到的幀的DLC大于或等于配置的DLC,則將幀轉(zhuǎn)發(fā)到上層。
CanIfCtrlDrvCfg(多重性:1 ... *)
1、它提供了基礎(chǔ)CAN驅(qū)動程序模塊的配置參數(shù)。一個CanIfDrvCfg引用一個Can Driver模塊。
CanIfInitCfg(多重性:)
它包含CanIf的所有初始化參數(shù)。此容器至少有一個實例。它定義了所有與PDU相關(guān)的配置。
CanIfBufferCfg(多重性:0 ... *)
它是CanIfInitCfg的子容器。此容器包含傳輸緩沖區(qū)配置。必須為將用于傳輸幀的每個CanController添加此容器的一個實例。
CanIfTxPduCfg(多重性:0 ... *)
它是CanIfInitCfg的子容器。它包含發(fā)送CAN L-PDU的配置參數(shù)。每次需要發(fā)送CAN L-PDU時都要對其進行配置。
1、CanIfTxPduCanId:定義發(fā)送CAN標(biāo)識符,11位標(biāo)準(zhǔn)幀或29位擴展幀。(多重性:1)
2、CanIfTxPduCanIdType:定義發(fā)送CAN標(biāo)識符的類型,是標(biāo)準(zhǔn)格式(11位)還是擴展格式(29位)。(多重性:1)
3、CanIfTxPduDlc:定義發(fā)送L-PDU的數(shù)據(jù)長度(以字節(jié)為單位)。范圍是0到8個字節(jié)。(多重性:1)
CanIfRxPduCfg(多重性:0 ... *)
它是CanIfInitCfg的子容器。它包含每個接收到的CAN L PDU的配置參數(shù)。
  1. CanIfRxPduCanId:定義接收CAN標(biāo)識符,11位標(biāo)準(zhǔn)幀或29位擴展幀。(多重性:1)
  2. CanIfRxPduCanIdType:定義接收CAN標(biāo)識符的類型,是標(biāo)準(zhǔn)格式(11位)還是擴展格式(29位)。(多重性:1)
  3. CanIfRxPduDlc:定義接收L-PDU的數(shù)據(jù)長度(以字節(jié)為單位)。范圍是0到8個字節(jié)。(多重性:1)
CAN驅(qū)動
該容器保存單個CAN驅(qū)動程序的配置參數(shù)。
CanGeneral(多重性:1)
提供模塊范圍的配置,其中包含常規(guī)的CanDevErrorDetection和CanVersionInfoApi。
1、CanDevErrorDetectio:啟用/禁用開發(fā)錯誤檢測和通知。(多重性:1)
2、CanVersionInfoApi:啟用/禁用版本信息的API。(多重性:1)
CanConfigSet(多重性:1)
它包含CAN控制器和CAN硬件對象的配置。它是CAN驅(qū)動程序的多配置集容器。
CanController(多重性:1)
  1. CanBusoffProcessing:設(shè)置busoff的處理方式,是中斷還是輪詢。=。(多重性:1)
  2. CanControllerActivation:定義CAN控制器是否處于激活狀態(tài)以進行配置。(多重性:1)
  3. CanControllerId:它提供每個CAN驅(qū)動程序唯一的控制器ID。(多重性:1)
  4.  CanRxProcessing:設(shè)置接收的處理方式,是中斷還是輪詢。(多重性:1)
  5. CanTxProcessing:設(shè)置發(fā)送的處理方式,是中斷還是輪詢。(多重性:1)
  6. CanWakeupProcessing:設(shè)置喚醒的處理方式,是中斷還是輪詢。(多重性:1)
  7. CanControllerDefaultBaudrate:提供對Can Controller的波特率配置容器的引用。
CanControllerBaudrateConfig(多重性:1 ... *)
該容器包含每個CAN控制器與位時序相關(guān)的配置參數(shù)。
  1. CanControllerBaudRate:設(shè)置控制器的波特率,以kbps為單位。(多重性:1)
  2. CanControllerPropSeg:它定義時間量中的傳播延遲。(多重性:1)
  3. CanControllerSeg1:它定義時間段中的相位段1。(多重性:1)
  4. CanControllerSeg2:定義時間段中的相位段2。(多重性:1)
  5. CanControllerSyncJumpWidth:它定義控制器在時間量上的同步跳轉(zhuǎn)寬度。(多重性:1)。 
CanFilterMask(多重性:0 ... *)
此容器包含CANFilterMask的配置參數(shù)。為CAN控制器設(shè)置了ID掩碼,以基于CAN id字段過濾出接收到的CAN消息。總線上的所有ECU都接收總線上傳輸?shù)乃蠧AN數(shù)據(jù)包,但是它會根據(jù)其過濾器掩碼過濾掉無關(guān)的數(shù)據(jù)包。
1、CanFilterMaskValue:它描述用于基于硬件的CAN標(biāo)識符過濾的掩碼值。如果EXTENDED或MIXED類型的CAN幀,則使用29位掩碼,而對于STANDARD CAN幀類型,則使用11位掩碼。(多重性:1)

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产一区二区精品丝袜| 青青操日老女人的穴穴 | 久久亚洲国产视频三级黄| 国产成人综合亚洲欧美日韩| 一区二区三区日本高清| 在线欧美精品二区三区| 日本少妇中文字幕不卡视频| 国产又粗又长又大的视频| 亚洲精品有码中文字幕在线观看| 伊人网免费在线观看高清版| 国产自拍欧美日韩在线观看| 日韩欧美好看的剧情片免费| 亚洲一区二区三区一区| 欧洲精品一区二区三区四区| 亚洲第一视频少妇人妻系列| 午夜视频在线观看日韩| 国产美女精品午夜福利视频| 在线视频免费看你懂的| 自拍偷拍福利视频在线观看| 久久99精品日韩人妻| 日本人妻丰满熟妇久久| 亚洲一区二区三区日韩91| 国产欧美亚洲精品自拍| 国产欧美日韩不卡在线视频| 国产日韩欧美在线播放| 国产成人精品99在线观看| 黄色国产自拍在线观看| 亚洲永久一区二区三区在线| 操白丝女孩在线观看免费高清 | 搡老熟女老女人一区二区| 国产a天堂一区二区专区| 日本深夜福利视频在线| 日本精品中文字幕在线视频 | 久久亚洲精品中文字幕| 国产传媒精品视频一区| 国产精品欧美一区二区三区不卡 | 日韩一区二区三区观看| 日韩精品一区二区三区四区| 国产一区二区精品高清免费| 亚洲专区一区中文字幕| 日本91在线观看视频|