DEENESPTFRRUARHIKOZHNL

CAN Driver (Can)

ModulCan (CAN Driver)
BSW-Modul-ID80
Standard-Header#include "Can.h"
SWS-SpezifikationAUTOSAR_SWS_CANDriver.pdf
ClusterCAN

मॉड्यूल गाइडएआई जनित

CAN नियंत्रक हार्डवेयर को नियंत्रित करता है और CAN Interface तक ट्रांसमिशन, रिसेप्शन और स्थिति परिवर्तनों की मध्यस्थता करता है।
एआई-जनित असत्यापित मॉडल: claude-opus-5-5 · प्रयास: high · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: b6833c934a77 उद्गम खुले प्रश्न (2)
कारणात्मक एंकर: R20-11 R20-11 से मान्य इस विनिर्देश संस्करण के लिए नए सिरे से संश्लेषित।
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

CAN नियंत्रक हार्डवेयर को नियंत्रित करता है और CAN Interface तक ट्रांसमिशन, रिसेप्शन और स्थिति परिवर्तनों की मध्यस्थता करता है।

CAN ड्राइवर एक हार्डवेयर यूनिट के CAN नियंत्रकों को नियंत्रित करता है और CAN Interface के अंतर्गत हार्डवेयर परत है। यह कॉलबैक [SWS_Can_00234] के माध्यम से रिसेप्शन, ट्रांसमिशन पुष्टि, बस-ऑफ़ और मोड परिवर्तनों की रिपोर्ट करता है। Can_Init के अनुसार सभी नियंत्रक STOPPED में होते हैं। प्रत्येक नियंत्रक को Can_SetControllerMode के साथ व्यक्तिगत रूप से और एसिंक्रोनस रूप से प्रारंभ किया जाता है; सफलता की सूचना बाद में ही दी जाती है [SWS_Can_00230]। ट्रांसमिशन हार्डवेयर ट्रांसमिट हैंडल के माध्यम से Can_Write के साथ होता है। यदि कोई ट्रांसमिट ऑब्जेक्ट उपलब्ध नहीं है, तो ड्राइवर CAN_BUSY लौटाता है, और CanIf अनुरोध को बफ़र करता है।

CAN ड्राइवर किसी हार्डवेयर यूनिट के CAN नियंत्रकों तक प्रत्येक पहुँच को एनकैप्सुलेट करता है। यह CAN Interface को एकमात्र उपयोगकर्ता के रूप में सेवा प्रदान करता है और पूर्व-निर्धारित CanIf कॉलबैक [SWS_Can_00234] के माध्यम से रिसेप्शन, ट्रांसमिशन पुष्टि, बस-ऑफ़ और मोड परिवर्तनों की रिपोर्ट करता है। ECU State Manager इसे Can_Init और एक हार्डवेयर-विशिष्ट Can_ConfigType [SWS_Can_00223] के साथ इनिशियलाइज़ करता है। इसके बाद ड्राइवर CAN_READY में और सभी नियंत्रक STOPPED SWS CANDriver पृ. 29 में होते हैं।

kontext EcuM EcuM Can Can (CAN-Treiber) EcuM->Can Can_Init / Can_DeInit SchM BSW Scheduler SchM->Can Can_MainFunction_* CanSM CanSM CanIf CanIf CanSM->CanIf मोड अनुरोध CanIf->CanSM मोड और Bus-off संदेश CanIf->Can Can_Write, Can_SetControllerMode, Can_CheckWakeup, Abfragen Can->EcuM EcuM_CheckWakeup, EcuM_SetWakeupEvent Can->CanIf CanIf_RxIndication, CanIf_TxConfirmation, CanIf_ControllerBusOff, CanIf_ControllerModeIndication HW CAN-Controller (Hardware) Can->HW Registerzugriff Det Det Can->Det Det_ReportError / Det_ReportRuntimeError Os Os Can->Os GetCounterValue HW->Can Interrupts / Statusflags

संदर्भ आरेख: EcuM, BSW Scheduler, CanIf, DET, Os और नियंत्रक हार्डवेयर के बीच Can का एम्बेडिंग। स्रोत: [SWS_Can_00234], SWS CANDriver पृ. 78

प्रत्येक नियंत्रक UNINIT, STOPPED, STARTED और SLEEP [SWS_Can_91013] स्थितियों से होकर गुजरता है। इसे Can_SetControllerMode के साथ व्यक्तिगत और एसिंक्रोनस रूप से प्रारंभ किया जाता है: E_OK का अर्थ केवल “स्वीकृत” है [SWS_Can_00230]। ड्राइवर प्राप्त स्थिति की रिपोर्ट बाद में CanIf_ControllerModeIndication SWS CANDriver पृ. 33 के माध्यम से करता है। बस-ऑफ़ नियंत्रक को बिना हार्डवेयर रिकवरी के STOPPED में ले जाता है; बस-वेकअप इसे SLEEP से STOPPED SWS CANDriver पृ. 35 में ले जाता है।

controllerzustand reset Power-on-Reset UNINIT CAN_CS_UNINIT reset->UNINIT STOPPED CAN_CS_STOPPED UNINIT->STOPPED Can_Init STOPPED->UNINIT Can_DeInit STOPPED->STOPPED Can_SetBaudrate STARTED CAN_CS_STARTED STOPPED->STARTED Can_SetControllerMode(CAN_CS_STARTED) SLEEP CAN_CS_SLEEP STOPPED->SLEEP Can_SetControllerMode(CAN_CS_SLEEP) STARTED->STOPPED Can_SetControllerMode(CAN_CS_STOPPED) या Bus-off (हार्डवेयर) SLEEP->UNINIT Can_DeInit SLEEP->STOPPED Can_SetControllerMode(CAN_CS_STOPPED) या बस से वेकअप SLEEP->SLEEP Can_SetBaudrate

स्थिति आरेख: सॉफ़्टवेयर कॉल के साथ-साथ बस-ऑफ़ और वेकअप घटनाओं द्वारा नियंत्रक के ट्रांज़िशन। स्रोत: [SWS_Can_91010], SWS CANDriver पृ. 38

ट्रांसमिशन Can_Write(Hth, PduInfo) के साथ किया जाता है। Can_IdType के शीर्ष दो बिट्स CAN 2.0 और CAN FD के साथ-साथ मानक और विस्तारित ID [SWS_Can_00233] [SWS_Can_00416] में अंतर करते हैं। यदि कोई ट्रांसमिट ऑब्जेक्ट उपलब्ध नहीं है, तो ड्राइवर CAN_BUSY लौटाता है, और CanIf अनुरोध [SWS_Can_00039] SWS CANDriver पृ. 47 को बफ़र करता है। घटनाओं का पता इंटरप्ट द्वारा या पोलिंग के माध्यम से लगाया जाता है। पोलिंग के लिए चक्रीय मुख्य फ़ंक्शन SWS CANDriver पृ. 41 हैं:

  • Write और Read: ट्रांसमिशन पुष्टियाँ और रिसेप्शन
  • BusOff और Wakeup: बस-ऑफ़ और वेकअप घटनाएँ
  • Mode: मोड ट्रांज़िशन

मुख्य फ़ंक्शन [SWS_Can_00225] से [SWS_Can_00228] और [SWS_Can_00368] में परिभाषित हैं।

त्रुटि की स्थिति में ड्राइवर विकास त्रुटियों जैसे CAN_E_UNINIT या CAN_E_TRANSITION की रिपोर्ट DET [SWS_Can_91019] को करता है। रिटर्न मान वाले फ़ंक्शन तब E_NOT_OK SWS CANDriver पृ. 48 प्रदान करते हैं। बस-ऑफ़ रिकवरी CanIf के माध्यम से CanSM द्वारा संभाली जाती है। पुनरारंभ संभवतः फिर से Can_SetControllerMode(CAN_CS_STARTED) के माध्यम से होगा SWS CANInterface पृ. 138। त्रुटि स्थिति और त्रुटि काउंटर पूछे जा सकते हैं; लेकिन काउंटर मानों को विश्वसनीय बस स्थिति नहीं माना जाता है [SWS_Can_91004] [SWS_Can_00516]। प्रश्न (खुला)

भूमिका: CanIf और CAN नियंत्रकों के बीच हार्डवेयर-निकट ड्राइवर

CAN ड्राइवर किसी हार्डवेयर यूनिट के CAN हार्डवेयर तक प्रत्येक पहुँच को एनकैप्सुलेट करता है। नियंत्रकों के स्थिति परिवर्तन केवल Can_Init, Can_SetBaudrate और Can_SetControllerMode के माध्यम से होते हैं। ड्राइवर स्वयं स्थिति परिवर्तनों को संग्रहीत नहीं करता है SWS CANDriver पृ. 30। ऊपर की ओर इसका भागीदार CAN Interface है। ड्राइवर द्वारा कॉल किए जाने वाले सभी कॉलबैक CanIf में कार्यान्वित हैं और कॉन्फ़िगर करने योग्य नहीं हैं: CanIf_RxIndication, CanIf_TxConfirmation, CanIf_ControllerBusOff और CanIf_ControllerModeIndication। इसके अतिरिक्त इसे Det_ReportRuntimeError और Os सेवा GetCounterValue [SWS_Can_00234] SWS CANDriver पृ. 73 की आवश्यकता होती है। आयातित प्रकार अन्य के अलावा ComStack_Types, EcuM और Os [SWS_Can_00222] से आते हैं।

ECU State Manager Can_Init के माध्यम से ड्राइवर को इनिशियलाइज़ करता है। कार्यान्वयन नोट के अनुसार यह रनटाइम पर इस फ़ंक्शन को अधिकतम एक बार कॉल करता है [SWS_Can_00223] SWS CANDriver पृ. 29। चक्रीय मुख्य फ़ंक्शनों को BSW Scheduler सीधे कॉल करता है। उनके पास न तो कोई पैरामीटर है और न ही कोई रिटर्न मान है और वे रीएंट्रेंट नहीं हैं; निष्पादन क्रम निर्धारित नहीं है SWS CANDriver पृ. 78। नीचे की ओर ड्राइवर कोई कॉलबैक प्रदान नहीं करता है। बाहरी CAN नियंत्रकों को केवल सिंक्रोनस MCAL API जैसे SPI SWS CANDriver पृ. 76 के माध्यम से संबोधित किया जाना चाहिए।

kontext EcuM EcuM Can Can (CAN-Treiber) EcuM->Can Can_Init / Can_DeInit SchM BSW Scheduler SchM->Can Can_MainFunction_* CanSM CanSM CanIf CanIf CanSM->CanIf मोड अनुरोध CanIf->CanSM मोड और Bus-off संदेश CanIf->Can Can_Write, Can_SetControllerMode, Can_CheckWakeup, Abfragen Can->EcuM EcuM_CheckWakeup, EcuM_SetWakeupEvent Can->CanIf CanIf_RxIndication, CanIf_TxConfirmation, CanIf_ControllerBusOff, CanIf_ControllerModeIndication HW CAN-Controller (Hardware) Can->HW Registerzugriff Det Det Can->Det Det_ReportError / Det_ReportRuntimeError Os Os Can->Os GetCounterValue HW->Can Interrupts / Statusflags

संदर्भ आरेख: Can को EcuM द्वारा इनिशियलाइज़ किया जाता है, BSW Scheduler द्वारा चक्रीय रूप से कॉल किया जाता है और CanIf द्वारा उपयोग किया जाता है। यह CanIf, EcuM और DET को रिपोर्ट करता है तथा टाइमआउट के लिए Os का उपयोग करता है। स्रोत: [SWS_Can_00234], SWS CANDriver पृ. 45, SWS CANDriver पृ. 78

पावर-ऑन से लेकर STARTED तक: ड्राइवर और नियंत्रक स्थितियाँ

संपूर्ण ड्राइवर केवल CAN_UNINIT और CAN_READY स्थितियों को जानता है। रीसेट के बाद यह CAN_UNINIT में होता है। Can_Init कॉन्फ़िगरेशन के अनुसार सभी नियंत्रकों को इनिशियलाइज़ करता है और उसके बाद CAN_READY में बदल जाता है। Can_DeInit नियंत्रकों को डी-इनिशियलाइज़ करने से पहले मॉड्यूल स्थिति को CAN_UNINIT पर सेट करता है [SWS_Can_00223] [SWS_Can_91002] SWS CANDriver पृ. 29।

इससे अलग, प्रत्येक नियंत्रक की Can_ControllerStateType में से चार स्थितियाँ होती हैं: CAN_CS_UNINIT, CAN_CS_STOPPED, CAN_CS_STARTED और CAN_CS_SLEEP [SWS_Can_91013]।

  • STOPPED में नियंत्रक इनिशियलाइज़ होता है, लेकिन बस में भाग नहीं लेता है और न तो एरर फ़्रेम भेजता है और न ही एक्नॉलेजमेंट।
  • STARTED सामान्य संचालन है।
  • SLEEP केवल स्लीप-मोड वाले हार्डवेयर के मामले में ही STOPPED SWS CANDriver पृ. 31 से भिन्न होता है।

Can_Init सभी नियंत्रकों को STOPPED SWS CANDriver पृ. 32 में ले जाता है। Can_DeInit उन्हें STOPPED या SLEEP से UNINIT [SWS_Can_91010] SWS CANDriver पृ. 38 में ले जाता है। STARTED से UNINIT SWS CANDriver पृ. 38 के लिए कोई सीधा मार्ग नहीं है।

controllerzustand reset Power-on-Reset UNINIT CAN_CS_UNINIT reset->UNINIT STOPPED CAN_CS_STOPPED UNINIT->STOPPED Can_Init STOPPED->UNINIT Can_DeInit STOPPED->STOPPED Can_SetBaudrate STARTED CAN_CS_STARTED STOPPED->STARTED Can_SetControllerMode(CAN_CS_STARTED) SLEEP CAN_CS_SLEEP STOPPED->SLEEP Can_SetControllerMode(CAN_CS_SLEEP) STARTED->STOPPED Can_SetControllerMode(CAN_CS_STOPPED) या Bus-off (हार्डवेयर) SLEEP->UNINIT Can_DeInit SLEEP->STOPPED Can_SetControllerMode(CAN_CS_STOPPED) या बस से वेकअप SLEEP->SLEEP Can_SetBaudrate

स्थिति आरेख: CAN नियंत्रक का जीवनचक्र। सॉफ़्टवेयर और बस घटनाएँ ट्रांज़िशन ट्रिगर करती हैं; UNINIT में वापस केवल Can_DeInit ही STOPPED या SLEEP से ले जाता है। स्रोत: [SWS_Can_91013], [SWS_Can_91010], SWS CANDriver पृ. 38, SWS CANDriver पृ. 34, SWS CANDriver पृ. 35

प्रत्येक नियंत्रक Can_SetControllerMode(CAN_CS_STARTED) के साथ व्यक्तिगत रूप से प्रारंभ किया जाता है SWS CANDriver पृ. 29। सेवा एसिंक्रोनस रूप से कार्य करती है: E_OK का अर्थ केवल यह है कि अनुरोध स्वीकार कर लिया गया था [SWS_Can_00230]। STARTED में प्रत्येक ट्रांज़िशन पर नियंत्रक को फिर से इनिशियलाइज़ किया जाता है, विशेष रूप से Can_Init या Can_SetBaudrate द्वारा अंतिम बार उपयोग किए गए कॉन्फ़िगरेशन के साथ SWS CANDriver पृ. 59। हार्डवेयर इस परिवर्तन को विलंब से अपना सकता है। इसलिए ड्राइवर प्राप्त स्थिति की रिपोर्ट बाद में ही CanIf_ControllerModeIndication के माध्यम से करता है; लक्ष्य प्राप्त हुआ है या नहीं, इसकी निगरानी एक ऊपरी परत करती है SWS CANDriver पृ. 33। पोल्ड मोड ट्रांज़िशन को Can_MainFunction_Mode [SWS_Can_00368] पहचानता है। Can_GetControllerMode वर्तमान मोड के बारे में सिंक्रोनस रूप से पूछताछ करता है [SWS_Can_91014]।

CAN कंट्रोलर का इनिशियलाइज़ेशन और स्टार्टEcuMCanIf-Nutzer (z. B. CanSM)CanIfCanBSW SchedulerCAN-ControllerUse Case: InitialisierungCan_Init(Config)सभी कंट्रोलर कॉन्फ़िगर करेंController: CAN_CS_STOPPEDModul: CAN_READYUse Case: Controller einzeln startenCanIf_SetControllerMode(STARTED)Can_SetControllerMode(Controller, CAN_CS_STARTED)Neuinitialisierung,Start anfordernE_OK (Anforderung angenommen)E_OKloopजब तक संक्रमण प्रभावी न हो जाएCan_MainFunction_Mode()Statusflag lesenCanIf_ControllerModeIndication(ControllerId, CAN_CS_STARTED)<User_ControllerModeIndication>

अनुक्रम आरेख: EcuM द्वारा इनिशियलाइज़ेशन और नियंत्रक का एसिंक्रोनस प्रारंभ। सफलता की रिपोर्ट Can_MainFunction_Mode में पोलिंग के बाद ही आती है। स्रोत: [SWS_Can_00230], [SWS_Can_00368], SWS CANInterface पृ. 156, SWS CANDriver पृ. 29

हार्डवेयर ट्रांसमिट हैंडल के माध्यम से भेजना

CanIf ट्रांसमिशन अनुरोध Can_Write(Hth, PduInfo) के साथ सौंपता है। Hth हार्डवेयर ट्रांसमिट ऑब्जेक्ट को निर्दिष्ट करता है और इस प्रकार नियंत्रक को भी, क्योंकि HTH संख्याएँ एक हार्डवेयर यूनिट के भीतर अद्वितीय होती हैं [SWS_Can_00233]। Can_HwHandleType डिफ़ॉल्ट रूप से 0..0x0FF और 255 से अधिक हार्डवेयर ऑब्जेक्ट होने पर 0xFFFF [SWS_Can_00429] तक की विस्तारित सीमा को कवर करता है। Can_PduType फ़ील्ड swPduHandle, length, id और sdu [SWS_Can_00415] को बंडल करता है।

Can_IdType में दो सबसे महत्वपूर्ण बिट्स फ़्रेम प्रकार को एनकोड करते हैं [SWS_Can_00416]:

  • 00: मानक ID के साथ CAN
  • 01: मानक ID के साथ CAN FD
  • 10: विस्तारित ID के साथ CAN
  • 11: विस्तारित ID के साथ CAN FD

इस प्रकार CAN 2.0 और CAN FD फ़्रेमों को फ़्रेम स्तर पर मिश्रित किया जा सकता है, बशर्ते नियंत्रक के लिए FD बॉड दर कॉन्फ़िगरेशन सक्रिय हो SWS CANDriver पृ. 49 SWS CANInterface पृ. 71।

Can_Write थ्रेड-सुरक्षित होना चाहिए, क्योंकि CanIf_Transmit रीएंट्रेंट है। जब कोई ट्रांसमिट ऑब्जेक्ट उपलब्ध नहीं होता है या जब कोई प्रीमेप्टिव कॉल रीएंट्रेंट रूप से निष्पादित नहीं किया जा सकता है, तो ड्राइवर CAN_BUSY लौटाता है [SWS_Can_00039] SWS CANDriver पृ. 47। CanIf तब अनुरोध को बफ़र करता है। यदि कोई ऑब्जेक्ट उपलब्ध हो जाता है, तो CanIf प्राथमिकता क्रम में Can_Write को फिर से कॉल करता है SWS CANInterface पृ. 48। ड्राइवर संबंधित CanIf_TxConfirmation तक swPduHandle को सुरक्षित रखता है SWS CANDriver पृ. 35। प्राथमिकता व्युत्क्रमण के विरुद्ध मल्टीप्लेक्स्ड ट्रांसमिशन को स्थिर रूप से कॉन्फ़िगर किया जा सकता है; इसमें कई हार्डवेयर ऑब्जेक्ट एक HTH बनाते हैं SWS CANDriver पृ. 40।

कन्फ़र्मेशन के साथ L-PDU का ट्रांसमिशनCanIfCanCAN-ControllerBSW SchedulerCan_Write(Hth, PduInfo)altHardware-Sendeobjekt freiswPduHandle je HTH merkenL-PDU ins Hardwareobjekt,ट्रांसमिशन ट्रिगर करनाE_OKकोई ऑब्जेक्ट उपलब्ध नहीं या रीएंट्रेंट रूप से निष्पादन योग्य नहींCAN_BUSYL-PDU को CanIfTxBuffer में बफर करनाफ़्रेम भेजा गया और बस द्वारा कन्फ़र्म किया गयाaltInterrupt-BetriebTX-InterruptPolling-BetriebCan_MainFunction_Write()लंबित कन्फ़र्मेशन की जाँच करेंCanIf_TxConfirmation(swPduHandle)optइस HTH के लिए बफ़र की गई L-PDUCan_Write(Hth, उच्चतम प्राथमिकता वाली L-PDU)

अनुक्रम आरेख: पथ E_OK और CAN_BUSY के साथ ट्रांसमिशन अनुरोध, इसके बाद इंटरप्ट या पोलिंग द्वारा पुष्टि। उसके बाद CanIf एक बफ़र किए गए L-PDU को आगे बढ़ा सकता है। स्रोत: [SWS_Can_00233], [SWS_Can_00039], SWS CANInterface पृ. 142, SWS CANInterface पृ. 48

रिसेप्शन और चक्रीय मुख्य फ़ंक्शन

प्राप्त होने पर ड्राइवर CanIf_RxIndication को कॉल करता है। यह ID, हार्डवेयर ऑब्जेक्ट और अमूर्त CanIf-ControllerId के साथ-साथ L-SDU की लंबाई और पॉइंटर पास करता है। विस्तारित फ़्रेमों के लिए यह ID का MSB सेट करता है, ताकि CanIf फ़्रेम प्रकार को पहचान सके SWS CANDriver पृ. 43। वैकल्पिक रूप से पहले एक कॉन्फ़िगर करने योग्य L-PDU-कॉलआउट <LPDU_CalloutName> सक्षम किया जाता है [SWS_Can_00443]। यदि यह false लौटाता है, तो दस्तावेज़ अनुभाग (R25-11) के अनुसार L-PDU को आगे संसाधित नहीं किया जाता है SWS CANDriver पृ. 77।

घटनाओं का पता इंटरप्ट द्वारा या स्थिति फ़्लैग के पोलिंग के माध्यम से लगाया जाता है। बिना किसी इंटरप्ट के पूर्ण पोलिंग संचालन कॉन्फ़िगर करने योग्य होना चाहिए। पोलिंग में मुख्य फ़ंक्शन ISR संदर्भ के बजाय टास्क संदर्भ से उन्हीं कॉलबैक को कॉल करते हैं SWS CANDriver पृ. 41। प्रत्येक मुख्य फ़ंक्शन एक प्रकार की घटना को पोल करता है:

Read और Write के R20-11 विवरण केवल POLLING स्थिति का उल्लेख करते हैं [SWS_Can_00225] [SWS_Can_00226]। बाद के रिलीज़ के दस्तावेज़ संदर्भ MIXED जोड़ते हैं; फिर केवल CanHardwareObjectUsesPolling = TRUE वाले ऑब्जेक्ट ही पोल किए जाते हैं SWS CANDriver पृ. 81 SWS CANDriver पृ. 79। R20-11 आवश्यकताएँ इस विस्तार का समर्थन नहीं करती हैं। यदि CanMainFunctionRWPeriods के माध्यम से कई अवधियाँ कॉन्फ़िगर की गई हैं, तो फ़ंक्शन नामों को प्रत्यय _<ShortName> [SWS_Can_00441] SWS CANDriver पृ. 122 प्राप्त होता है। किसी भी पोलिंग के बिना एक मुख्य फ़ंक्शन को रिक्त Define के रूप में कार्यान्वित किया जा सकता है SWS CANDriver पृ. 81।

पोलिंग मोड में L-PDU का रिसेप्शनBSW SchedulerCanCAN-ControllerL-PDU-CalloutCanIfCanIf-NutzerloopzyklischCan_MainFunction_Read()नई L-PDUs के लिए जाँच करेंaltneue L-PDU vorhandenID normieren (Extended: MSB = 1),Daten ggf. in angepassten PufferoptL-PDU-Callout konfiguriert<LPDU_CalloutName>(Hrh, CanId, CanDataLegth, CanSduPtr)true / falsefalse होने पर: L-PDU को डिस्कार्ड करेंCanIf_RxIndication(Mailbox, PduInfoPtr)उपयोगकर्ता को Rx इंडिकेशनकोई नई L-PDU नहीं

अनुक्रम आरेख: ID सामान्यीकरण, वैकल्पिक L-PDU-कॉलआउट और CanIf को अग्रेषण के साथ पोलिंग संचालन में रिसेप्शन। स्रोत: [SWS_Can_00226], [SWS_Can_00443], SWS CANInterface पृ. 153, SWS CANDriver पृ. 43

Sleep, Wakeup और इंटरप्ट नियंत्रण

ड्राइवर केवल उन्हीं वेकअप को संभालता है जिन्हें नियंत्रक स्वयं पहचानता है, न कि ट्रांससीवर के माध्यम से आने वाले वेकअप को SWS CANDriver पृ. 45। हार्डवेयर वेकअप पर नियंत्रक SLEEP से STOPPED में चला जाता है। ट्रिगर करने वाले L-PDU को आगे संसाधित नहीं किया जाता है। EcuM_CheckWakeup को इंटरप्ट में या Can_MainFunction_Wakeup में कॉल किया जाता है, CanWakeupSourceRef के माध्यम से कॉन्फ़िगर किए गए स्रोत SWS CANDriver पृ. 35 के साथ। EcuM तब CanIf के माध्यम से Can_CheckWakeup को कॉल करता है। यह फ़ंक्शन पहचाने गए वेकअप की रिपोर्ट EcuM_SetWakeupEvent [SWS_Can_00360] SWS CANDriver पृ. 63 के माध्यम से करता है। ग़लत वेकअप के विरुद्ध EcuM और CanIf ड्राइवर की भागीदारी के बिना सत्यापन करते हैं SWS CANDriver पृ. 45।

Can_DisableControllerInterrupts और Can_EnableControllerInterrupts रीएंट्रेंट हैं और नेस्टेड रूप से कार्य करते हैं। n Disable कॉल के बाद n Enable कॉल आवश्यक हैं। बिना किसी पूर्व Disable के Enable निष्प्रभावी रहता है [SWS_Can_00231] [SWS_Can_00232] SWS CANDriver पृ. 61 SWS CANDriver पृ. 62।

CAN बस से वेकअपCAN-ControllerCanEcuMCanIfUse Case: Controller in CAN_CS_SLEEPबस से वेकअप इवेंटaltInterrupt-BetriebWakeup-ISRPolling-BetriebCan_MainFunction_Wakeup()Controller SLEEP -> STOPPED,ट्रिगर करने वाली L-PDU को प्रोसेस न करेंEcuM_CheckWakeup(CanWakeupSourceRef से स्रोत)CanIf के माध्यम से वेकअप स्रोत की जाँच करेंCan_CheckWakeup(Controller)optWakeup erkanntEcuM_SetWakeupEventE_OKValidierung gegen FehlwakeupsEcuM और CanIf द्वारा, Can के बिना

अनुक्रम आरेख: SLEEP से बस-वेकअप, EcuM को रिपोर्ट और Can_CheckWakeup के साथ CanIf के माध्यम से पूछताछ। स्रोत: [SWS_Can_00360], [SWS_Can_00228], SWS CANDriver पृ. 45, SWS CANDriver पृ. 35

कॉन्फ़िगरेशन सेट, विभाजन और इंस्टेंस संदर्भ

Can_Init को Can_ConfigType का एक पॉइंटर प्राप्त होता है। इस हार्डवेयर-विशिष्ट संरचना में सभी कंट्रोलरों के लिए सेटिंग्स और अलग-अलग कंट्रोलर कॉन्फ़िगरेशन [SWS_Can_00223] [SWS_Can_00413] के संदर्भ शामिल हैं। यह मॉड्यूल VARIANT-PRE-COMPILE और VARIANT-POST-BUILD SWS CANDriver पृ. 96 का समर्थन करता है। Post-build उदाहरण में Can_Init को कॉल करते समय कई कॉन्फ़िगरेशन सेटों में से एक को चुना जाता है EXP LayeredSoftwareArchitecture पृ. 120। प्रति कंट्रोलर CanController अन्य बातों के अलावा CanRxProcessing, CanTxProcessing, CanBusoffProcessing, CanWakeupProcessing और कम से कम एक CanControllerBaudrateConfig निर्धारित करता है SWS CANDriver पृ. 101।

मल्टी-पार्टीशन सिस्टम में मॉड्यूल प्रत्येक पार्टीशन में एक स्वतंत्र इंस्टेंस के रूप में कार्य करता है। एक API-कॉल केवल अपने स्वयं के पार्टीशन में प्रभावी होता है [SWS_Can_CONSTR_00508]। पार्टीशन असाइनमेंट के लिए तीन नियम लागू होते हैं:

  • CanControllerEcucPartitionRef में मौजूद पार्टीशन CanEcucPartitionRef में मौजूद पार्टीशनों का एक सबसेट होने चाहिए [SWS_Can_CONSTR_00509]।
  • एक कम्युनिकेशन चैनल का कंट्रोलर और ट्रांसीवर चैनल एक ही पार्टीशन को संदर्भित करते हैं [SWS_Can_CONSTR_00510]।
  • ड्राइवर असमर्थित असाइनमेंटों को अस्वीकार कर देता है [SWS_Can_00507]।

एक ECU में कई Can-मॉड्यूल एक संशोधित फ़ंक्शन प्रीफ़िक्स द्वारा भिन्न होते हैं SWS CANDriver पृ. 51।

त्रुटि की स्थिति में व्यवहार

Development Error Detection सक्रिय होने पर ड्राइवर डेवलपमेंट त्रुटियों की रिपोर्ट DET को देता है। कोड CAN_E_PARAM_POINTER (0x01) से लेकर CAN_E_UNINIT (0x05) और CAN_E_TRANSITION (0x06) से होते हुए CAN_E_INIT_FAILED (0x09) [SWS_Can_91019] तक हैं। DET से लौटने के बाद फ़ंक्शन तुरंत वापस लौट जाता है; रिटर्न वैल्यू वाले फ़ंक्शन तब E_NOT_OK प्रदान करते हैं SWS CANDriver पृ. 48। कुछ उदाहरण:

  • Can_DeInit, CAN_E_TRANSITION की रिपोर्ट करता है जब तक कि कोई कंट्रोलर STARTED में रहता है [SWS_Can_91012] SWS CANDriver पृ. 59।
  • Can_SetControllerMode में अमान्य ट्रांज़िशन के लिए CAN_E_TRANSITION का प्रावधान किया गया है। प्रोडक्शन कोड में उनका व्यवहार अपरिभाषित है SWS CANDriver पृ. 30 SWS CANDriver पृ. 32।

एक रनटाइम त्रुटि के रूप में खोए हुए प्राप्त संदेशों के लिए CAN_E_DATALOST परिभाषित है [SWS_Can_91020]। इसकी रिपोर्ट अपेक्षित Det_ReportRuntimeError के माध्यम से किए जाने की संभावना है [SWS_Can_00234]। प्रश्न Q-50225b25430c9660 (खुला)

यदि कोई कंट्रोलर Bus-off में जाता है, तो वह STARTED से STOPPED में बदल जाता है। ड्राइवर कोई हार्डवेयर रिकवरी निष्पादित नहीं करता है। वह इस घटना की रिपोर्ट इंटरप्ट द्वारा या Can_MainFunction_BusOff में CanIf_ControllerBusOff [SWS_Can_00227] SWS CANDriver पृ. 35 के माध्यम से करता है। रिकवरी का कार्य CanSM संभालता है, जिसे CanIf CanSM_ControllerBusOff के साथ सूचित करता है SWS CANInterface पृ. 138। व्याख्या: पुनरारंभ संभवतः फिर से Can_SetControllerMode(CAN_CS_STARTED) के माध्यम से चलेगा, जो इस प्रक्रिया में कॉन्फ़िगरेशन को फिर से लोड करता है SWS CANDriver पृ. 59। प्रश्न Q-83e484ab9f8b1aac (खुला)

Bus-off पहचान और रिपोर्टिंगCAN-ControllerCanBSW SchedulerCanIfCanSMController erreicht Bus-offaltInterrupt-BetriebBus-off-InterruptPolling-BetriebCan_MainFunction_BusOff()Statusbit lesenSTARTED -> STOPPED,कोई हार्डवेयर रिकवरी नहींCanIf_ControllerBusOff(ControllerId)CanSM_ControllerBusOffBus-off रिकवरी CanSM के पास हैUse Case: Neustart (Interpretation)Neustart anfordern (Interpretation)Can_SetControllerMode(Controller, CAN_CS_STARTED)इसके साथ पुनः इनिशियलाइज़ेशनzuletzt verwendeter Konfiguration

अनुक्रम आरेख: CanSM तक Bus-off की पहचान और रिपोर्टिंग। व्याख्या के रूप में चिह्नित पुनरारंभ स्पष्ट रूप से प्रमाणित नहीं है। स्रोत: [SWS_Can_00227], [SWS_Can_00234], SWS CANDriver पृ. 35, SWS CANInterface पृ. 138

डायग्नोस्टिक्स के लिए Can_GetControllerErrorState त्रुटि स्थिति प्रदान करता है: ACTIVE, PASSIVE या BUSOFF [SWS_Can_91004] [SWS_Can_91003]। Rx- और Tx-त्रुटि काउंटरों को भी क्वेरी किया जा सकता है। यदि कंट्रोलर उन्हें उपलब्ध नहीं कराता है, तो फ़ंक्शन E_NOT_OK लौटाते हैं। चूंकि हार्डवेयर काउंटरों को एसिंक्रोनस रूप से बनाए रखता है, इसलिए ये मान बस स्थिति के बारे में धारणाओं के लिए उपयुक्त नहीं हैं [SWS_Can_00511] [SWS_Can_00516] SWS CANDriver पृ. 67। Can_ErrorType विशिष्ट हार्डवेयर त्रुटि प्रकारों के एक सुपरसेट का वर्णन करता है, बिट त्रुटियों से लेकर Bus-Lock तक [SWS_Can_91021]।

प्रतिक्रिया न देने वाले हार्डवेयर के विरुद्ध ड्राइवर टाइमआउट के लिए एक OsCounter का उपयोग करता है SWS CANDriver पृ. 23। यदि CanTimeoutDuration के भीतर कोई मोड परिवर्तन प्रभावी नहीं होता है, तो Can_SetControllerMode ब्लॉक करने के बजाय फ़ंक्शन से बाहर निकल जाता है SWS CANDriver पृ. 33। यदि स्लीप मोड में ट्रांज़िशन के दौरान बस वेकअप होता है, तो Can_SetControllerMode(CAN_CS_STOPPED), E_NOT_OK SWS CANDriver पृ. 35 लौटाता है।

आगे विस्तृत साक्ष्य

दस्तावेज़ के कई अंश R23-11 से R25-11 से लिए गए हैं। R20-11 के लिए उद्धृत आवश्यकताएँ मानक (normative) हैं। स्थिति आरेख सीधे R20-11 से लिया गया है SWS CANDriver पृ. 38।

R20-11 के लिए पेलोड में प्रदान की गई आवश्यकताओं और दस्तावेज़ अंशों पर आधारित AI-जनरेटेड गाइड। धारणाओं को व्याख्या के रूप में चिह्नित किया गया है; विनिर्देश ही प्रामाणिक रहेगा।

CAN Driver (Can)

The CAN driver provides hardware-dependent access to the internal and external CAN controllers (CAN 2.0B, CAN FD, CAN XL).

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

फ़ंक्शन Can_Init [SWS_Can_00223] 📄 PDF

void Can_Init (const Can_ConfigType* Config);

This function initializes the module.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 8afbe47dbadd उद्गम
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

सिंक्रोनस, गैर-रीएंट्रेंट फ़ंक्शन Can_Init पास किए गए कॉन्फ़िगरेशन [SWS_Can_00223] के अनुसार संपूर्ण CAN ड्राइवर मॉड्यूल के साथ-साथ संबंधित हार्डवेयर इकाइयों को इनिशियलाइज़ करता है।

उपयोग और कॉल संदर्भ

Can_Init का कॉल ECU के स्टार्टअप चरण के दौरान ECU State Manager द्वारा अनिवार्य रूप से किया जाता है, इससे पहले कि CAN ड्राइवर के किसी अन्य फ़ंक्शन को कॉल करने की अनुमति दी जा सके [SWS_Can_91012]। पैरामीटर के रूप में, फ़ंक्शन Config के माध्यम से ड्राइवर कॉन्फ़िगरेशन (const Can_ConfigType*) के लिए एक पॉइंटर स्वीकार करता है और कोई रिटर्न मान नहीं देता है [SWS_Can_00223]।

इनिशियलाइज़ेशन का दायरा और स्थिति संक्रमण

इनिशियलाइज़ेशन के भाग के रूप में, फ़ंक्शन सभी आवश्यक हार्डवेयर रजिस्टरों को सेट करता है और सभी CAN नियंत्रकों AUTOSAR_SWS_CANDriver पृ. 33 को इनिशियलाइज़ करता है:

  • स्थिर चरों और आंतरिक फ़्लैग्स का इनिशियलाइज़ेशन [SWS_Can_91012],
  • संपूर्ण CAN हार्डवेयर इकाई के लिए साझा सेटिंग्स का कॉन्फ़िगरेशन [SWS_Can_91012],
  • प्रत्येक अलग CAN नियंत्रक के लिए नियंत्रक-विशिष्ट सेटिंग्स [SWS_Can_91012]।

फ़ंक्शन कॉल CAN हार्डवेयर के स्थिति संक्रमणों को ट्रिगर करता है AUTOSAR_SWS_CANDriver पृ. 10, जहाँ Can_Init नियंत्रकों को इच्छित आधार स्थिति में स्थानांतरित करने के लिए रजिस्टर कॉन्फ़िगरेशन निष्पादित करता है [SWS_Can_91010] AUTOSAR_SWS_CANDriver पृ. 36।

समवर्तीता और प्रतिबंध

चूँकि Can_Init को गैर-रीएंट्रेंट के रूप में निर्दिष्ट किया गया है, इसलिए चल रहे इनिशियलाइज़ेशन [SWS_Can_00223] के दौरान कोई समानांतर या बार-बार कॉल नहीं होना चाहिए। इसके अतिरिक्त, हार्डवेयर इकाई की कुछ वैश्विक सेटिंग्स केवल Can_Init AUTOSAR_SWS_CANDriver पृ. 33 के भीतर ही सेट की जा सकती हैं।

यह उपयोग नोट AUTOSAR Classic R20-11 के विनिर्देश डेटा के आधार पर स्वचालित रूप से जनरेट किया गया था।

इम्प्लीमेंटर गाइड जल्द आएगी (जटिलता I1)

फ़ंक्शन Can_DeInit [SWS_Can_91002] 📄 PDF

void Can_DeInit (void);

This function de - initializes the module.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 982976925c7a उद्गम खुले प्रश्न (2)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

फ़ंक्शन Can_DeInit का उपयोग CAN ड्राइवर मॉड्यूल को डी-इनिशियलाइज़ करने के लिए किया जाता है ([SWS_Can_91002])। इसका सिग्नेचर void Can_DeInit(void) है, यह कोई पैरामीटर स्वीकार नहीं करता है, कोई रिटर्न वैल्यू नहीं देता है और इसे सिंक्रोनस और नॉन-रीएंट्रेंट रूप से निष्पादित किया जाता है ([SWS_Can_91002])। इंटरफ़ेस हेडर Can.h के माध्यम से उपलब्ध है ([SWS_Can_91002])।

यह कॉल सॉफ़्टवेयर-नियंत्रित स्टेट ट्रांज़िशन शुरू करता है (AUTOSAR_SWS_CANDriver पृ. 10; AUTOSAR_SWS_CANDriver पृ. 41)। इसमें Can_DeInit मॉड्यूल की स्थिति को बदलता है (AUTOSAR_SWS_CANDriver पृ. 33) और सभी CAN कंट्रोलर्स को रीसेट करता है (AUTOSAR_SWS_CANDriver पृ. 41)।

समवर्तीता और प्रतिबंध

निष्पादन के लिए हार्डवेयर और मॉड्यूल स्थितियों के संबंध में सख्त पूर्व-शर्तें और क्रम आवश्यकताएं लागू होती हैं:

  • कॉलर को यह सुनिश्चित करना होगा कि कोई भी CAN कंट्रोलर अमान्य स्थिति में न हो (AUTOSAR_SWS_CANDriver पृ. 61); संभवतः सक्रिय संचार प्रक्रियाओं को पहले ही समाप्त कर दिया जाना चाहिए। प्रश्न Q-311343fa42add3a3 (खुला)
  • यदि CAN मॉड्यूल कॉल के समय आवश्यक प्रारंभिक स्थिति (AUTOSAR_SWS_CANDriver पृ. 41) में नहीं है, तो फ़ंक्शन एरर CAN_E_TRANSITION की रिपोर्ट करता है (AUTOSAR_SWS_CANDriver पृ. 61)।
  • इसी प्रकार, एरर CAN_E_TRANSITION तब ट्रिगर होता है जब कोई CAN कंट्रोलर ऐसी स्थिति में रहता है जो डी-इनिशियलाइज़ेशन को रोकती है (AUTOSAR_SWS_CANDriver पृ. 61)। व्याख्या: ड्राइवर को संभवतः ट्रांज़िशन से पहले सभी कंट्रोलर्स की रोकी गई स्थिति की आवश्यकता होती है। प्रश्न Q-435095949dafba5c (खुला)

इंटरैक्शन

एरर और ट्रांज़िशन व्यवहार संशोधित ड्राइवर प्रक्रियाओं को दर्शाता है, जिसके अनुसार अमान्य स्टेट ट्रांज़िशन को समान रूप से हैंडल किया जाता है ([SWS_Can_00441])।

यह पाठ AUTOSAR CP R20-11 विनिर्देश के आधार पर एक AI द्वारा उत्पन्न किया गया था।

फ़ंक्शन Can_SetBaudrate [SWS_CAN_00491] 📄 PDF

Std_ReturnType Can_SetBaudrate (uint8 Controller, uint16 BaudRateConfig ID); ⚠️

This service shall set the baud rate configuration of the CAN controller. Depending on necessary baud rate modifications the controller might have to reset.

फ़ंक्शन Can_SetControllerMode [SWS_Can_00230] 📄 PDF

Std_ReturnType Can_SetControllerMode (uint8 Controller, Can_ControllerStateType Transition);

This function performs software triggered state transitions of the CAN controller State machine.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: a4b356b48b8a उद्गम खुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

फ़ंक्शन Can_SetControllerMode (सर्विस-ID 0x03 के साथ Can.h के माध्यम से प्रदान किया गया) CAN नियंत्रक स्टेट मशीन के सॉफ़्टवेयर-ट्रिगर स्थिति संक्रमणों को निष्पादित करता है ([SWS_Can_00230], AUTOSAR_SWS_CANDriver पृ. 35)। यह मूलभूत नियंत्रक स्थितियों UNINIT, STOPPED, STARTED और SLEEP के बीच संक्रमण लाने के लिए हार्डवेयर-संबंधी रजिस्टर सेटिंग्स निष्पादित करता है ([SWS_Can_91010], AUTOSAR_SWS_CANDriver §7.3 “CAN Controller State Machine”)।

उपयोग और सिमेंटिक्स

कॉल CAN नियंत्रक की पहचान के लिए पैरामीटर Controller के साथ-साथ इच्छित स्थिति संक्रमण ([SWS_Can_00230]) को निर्दिष्ट करने के लिए प्रकार Can_ControllerStateType के Transition के साथ किया जाता है। सेवा को एसिंक्रोनस और गैर-रीएंट्रेंट (Non Reentrant) के रूप में परिभाषित किया गया है ([SWS_Can_00230])। E_OK का रिटर्न मान पुष्टि करता है कि अनुरोध स्वीकार कर लिया गया था; E_NOT_OK इंगित करता है कि अनुरोध अस्वीकार कर दिया गया था और एक विकास त्रुटि मौजूद है ([SWS_Can_00230], [SWS_Can_00441])।

प्रक्रिया और इंटरैक्शन

रजिस्टर कॉन्फ़िगरेशन सेट करने के बाद, Can_SetControllerMode से बाहर निकल जाया जाता है (AUTOSAR_SWS_CANDriver पृ. 38)। चूँकि Can मॉड्यूल स्वयं हार्डवेयर के स्थिति परिवर्तनों को संग्रहीत नहीं करता है ([SWS_Can_91010]), चक्रीय फ़ंक्शन Can_Mainfunction_Mode संभवतः Can_SetControllerMode द्वारा शुरू किए गए संक्रमण के एसिंक्रोनस समापन या सत्यापन का कार्य संभालता है (AUTOSAR_SWS_CANDriver पृ. 38)। प्रश्न Q-03edb1b665a1624b (खुला)

यह पाठ AUTOSAR R20-11 के विनिर्देश डेटा के आधार पर एक AI द्वारा जनरेट किया गया था।

इम्प्लीमेंटर गाइड जल्द आएगी (जटिलता I1)

फ़ंक्शन Can_DisableControllerInterrupts [SWS_Can_00231] 📄 PDF

void Can_DisableControllerInterrupts (uint8 Controller);

This function disables all interrupts for this CAN controller.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 9d72b1d46d5d उद्गम खुले प्रश्न (2)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

सिंक्रोनस और रीएंट्रेंट फ़ंक्शन Can_DisableControllerInterrupts एक निर्दिष्ट CAN नियंत्रक ([SWS_Can_00231]) के लिए सभी इंटरप्ट्स को निष्क्रिय करता है। पासिंग बिना किसी रिटर्न मान ([SWS_Can_00231]) के पैरामीटर Controller के माध्यम से की जाती है।

कॉल संदर्भ और समवर्तीता के संबंध में, फ़ंक्शन को रीएंट्रेंट के रूप में डिज़ाइन किया गया है और यह एकाधिक कॉल (AUTOSAR_SWS_CANDriver §8.3 “Can_DisableControllerInterrupts”) का समर्थन करता है। व्याख्या: एकाधिक कॉल संभवतः एक आंतरिक नेस्टिंग काउंटर को बढ़ाएंगे, ताकि संबंधित संख्या में सक्षमीकरण कॉल (AUTOSAR_SWS_CANDriver §8.3 “Can_DisableControllerInterrupts”, AUTOSAR_SWS_CANDriver §8.3 “Can_DisableControllerInterrupts”) के बाद ही इंटरप्ट्स को फिर से सक्रिय किया जा सके। प्रश्न Q-61be56207aa92ee0 (खुला)

त्रुटि प्रबंधन के क्षेत्र में, यदि ड्राइवर मॉड्यूल कॉल के समय अभी तक इनिशियलाइज़ नहीं हुआ है, तो विनिर्देश त्रुटि CAN_E_UNINIT को ट्रिगर करने की मांग करता है (AUTOSAR_SWS_CANDriver §8.3 “Can_DisableControllerInterrupts”)। इसके अतिरिक्त, विनिर्देश एक अन्य त्रुटि (AUTOSAR_SWS_CANDriver §8.3 “Can_DisableControllerInterrupts”) को ट्रिगर करने की आवश्यकता रखता है; संभवतः यह एक अमान्य नियंत्रक पहचानकर्ता की जाँच करने के लिए कार्य करता है। प्रश्न (खुला)

CAN ड्राइवर के भीतर परस्पर क्रिया में, कॉल नियंत्रक-संबंधित क्रिटिकल सेक्शंस को सुरक्षित करने के लिए कार्य करता है जबकि नियंत्रक सक्रिय रहता है (AUTOSAR_SWS_CANDriver §7.5 “Interrupt handling”)। ड्राइवर के औपचारिक सुधार और ऐतिहासिक इंटरफ़ेस परिवर्तन रिलीज़ नोट्स ([SWS_Can_00441]) में प्रलेखित हैं।

यह पाठ AI द्वारा बनाया गया था और विनिर्देश के पूरक उपयोग नोट के रूप में कार्य करता है।

फ़ंक्शन Can_EnableControllerInterrupts [SWS_Can_00232] 📄 PDF

void Can_EnableControllerInterrupts (uint8 Controller);

This function enables all allowed interrupts.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 374e141963cb उद्गम खुले प्रश्न (2)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

सिंक्रोनस और रीएंट्रेंट फ़ंक्शन Can_EnableControllerInterrupts पैरामीटर Controller के माध्यम से निर्दिष्ट CAN नियंत्रक के लिए सभी अनुमत इंटरप्ट्स को फिर से सक्रिय करता है ([SWS_Can_00232])। इसका कोई रिटर्न मान नहीं है और यह हेडर फ़ाइल Can.h के माध्यम से प्रदान किया जाता है ([SWS_Can_00232])।

प्रक्रिया के संबंध में, फ़ंक्शन सॉफ़्टवेयर नियंत्रण फ़्लैग्स को पढ़ता है (AUTOSAR_SWS_CANDriver पृ. 65)। यदि नियंत्रक के इंटरप्ट्स पहले कई बार निष्क्रिय किए गए थे, तो वास्तविक सक्षमीकरण (AUTOSAR_SWS_CANDriver पृ. 65) से पहले Can_EnableControllerInterrupts को उतनी ही बार कॉल किया जाना चाहिए। व्याख्या: ड्राइवर संभवतः आंतरिक काउंटरों या फ़्लैग्स के माध्यम से नेस्टेड लॉक सेक्शंस का प्रबंधन करता है, ताकि सभी निष्क्रियकरण कॉल के पूर्ण संतुलन के बाद ही हार्डवेयर इंटरप्ट्स को फिर से सक्रिय किया जा सके। प्रश्न Q-6781f0fc9ad7d221 (खुला)

यदि CAN ड्राइवर ठीक से इनिशियलाइज़ होने से पहले फ़ंक्शन को कॉल किया जाता है, तो यह त्रुटि CAN_E_UNINIT (AUTOSAR_SWS_CANDriver पृ. 66) रिपोर्ट करता है। ड्राइवर संदर्भ में इसे संभवतः एक Development-Error के रूप में माना जाना चाहिए ([SWS_Can_00441])। प्रश्न Q-efbbcf03a2589e4e (खुला) अन-इनिशियलाइज़्ड स्थिति में, फ़ंक्शन नियंत्रक पर कोई अन्य क्रिया नहीं करता है (AUTOSAR_SWS_CANDriver पृ. 66)।

यह उपयोग निर्देश विनिर्देश के आधार पर स्वचालित रूप से जनरेट किया गया था।

फ़ंक्शन Can_CheckWakeup [SWS_Can_00360] 📄 PDF

Std_ReturnType Can_CheckWakeup (uint8 Controller);

This function checks if a wakeup has occurred for the given controller.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 720a4fc64f2a उद्गम
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

उपयोग और व्यवहार

सिंक्रोनस फ़ंक्शन Can_CheckWakeup किसी विशिष्ट CAN कंट्रोलर के लिए जाँचता है कि क्या किसी वेक-अप इवेंट का पता चला है ([SWS_Can_00360], AUTOSAR_SWS_CANDriver पृ. 48, AUTOSAR_SWS_CANDriver पृ. 67)। यह हेडर फ़ाइल Can.h के माध्यम से उपलब्ध है और इसकी सर्विस-ID 0x0b है ([SWS_Can_00360])।

  • पैरामीटर: Controller (in) उस CAN कंट्रोलर के आइडेंटिफ़ायर को निर्दिष्ट करता है, जिसकी स्थिति की वेक-अप के लिए जाँच की जानी है ([SWS_Can_00360])।
  • रिटर्न वैल्यू: Std_ReturnType लौटाता है। रिटर्न वैल्यू E_OK इंगित करता है कि API कॉल स्वीकार कर लिया गया था, जबकि E_NOT_OK अस्वीकृति को दर्शाता है ([SWS_Can_00360])।
  • कॉनकरेंसी: फ़ंक्शन को नॉन-रीएंट्रेंट (Non Reentrant) के रूप में परिभाषित किया गया है ([SWS_Can_00360])।

कॉन्फ़िगरेशन और एरर हैंडलिंग

फ़ंक्शन की उपलब्धता प्री-कंपाइल समय पर कॉन्फ़िगर करने योग्य है; इसके माध्यम से सर्विस Can_CheckWakeup को कोड में शामिल किया जा सकता है या उससे हटाया जा सकता है (AUTOSAR_SWS_CANDriver पृ. 67, AUTOSAR_SWS_CANDriver पृ. 97)। यदि फ़ंक्शन को CAN ड्राइवर के इनिशियलाइज़ होने से पहले कॉल किया जाता है, तो यह एरर CAN_E_UNINIT रिपोर्ट करता है (AUTOSAR_SWS_CANDriver पृ. 67)।

इंटरैक्शन

Can_CheckWakeup का कॉल आमतौर पर CAN इंटरफ़ेस द्वारा ट्रिगर किया जाता है (AUTOSAR_SWS_CANDriver पृ. 48)। बस पर वेक-अप इवेंट के मामले में, EcuM_CheckWakeup के निष्पादन के दौरान CanIf_CheckWakeup को कॉल किया जा सकता है (AUTOSAR_SWS_CANInterface §7.18.4.1 “Wake-up detection”)। [SWS_CANIF_00395] के अनुसार, CanIf यहाँ Can_CheckWakeup() या CanTrcv_CheckWakeup() के माध्यम से यह क्वेरी करता है कि किस विशिष्ट हार्डवेयर डिवाइस ने बस वेक-अप को ट्रिगर किया है (AUTOSAR_SWS_CANInterface पृ. 55)।

यह उपयोग संबंधी निर्देश स्वचालित रूप से तैयार किया गया था और पूरी तरह से AUTOSAR रिलीज़ R20-11 के विनिर्देशों पर आधारित है।

फ़ंक्शन Can_GetControllerRxErrorCounter [SWS_Can_00511] 📄 PDF

Std_ReturnType Can_GetControllerRxErrorCounter (uint8 ControllerId, uint8* RxErrorCounterPtr);

Returns the Rx error counter for a CAN controller. This value might not be available for all CAN controllers, in which cas e E_ NOT_ OK would be returned. Please note that the value of the counter might not be correct at the moment the API returns it, because the Rx counter is handled asynchronously in hardware. Applications should not trust this value for any assumption about the current bus state.

फ़ंक्शन Can_GetControllerTxErrorCounter [SWS_Can_00516] 📄 PDF

Std_ReturnType Can_GetControllerTxErrorCounter (uint8 ControllerId, uint8* TxErrorCounterPtr);

Returns the Tx error counter for a CAN controller. This value might not be available for all CAN controllers, in which case E_ NOT_ OK would be returned. Please note that the value of the counter might not be correct at the moment the API returns it, because the Tx counter is handled asynchronously in hardware. Applications should not trust this value for any assumption about the current bus state.

फ़ंक्शन Can_Write [SWS_Can_00233] 📄 PDF

Std_ReturnType Can_Write (Can_HwHandleType Hth, const Can_PduType* PduInfo);

This function is called by Can If to pass a CAN message to Can Drv for transmission.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: f2d4ad3f2f32 उद्गम खुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

उपयोग और सिमेंटिक्स

CAN ड्राइवर (CanDrv) को ट्रांसमिशन के लिए CAN संदेश पास करने के लिए फ़ंक्शन Can_Write को मॉड्यूल CanIf द्वारा सिंक्रोनस रूप से कॉल किया जाता है ([SWS_Can_00233])। इस प्रक्रिया में कॉलर दो पैरामीटर पास करता है:

  • Hth: हार्डवेयर ट्रांसमिट हैंडल, जो उपयोग किए जाने वाले ट्रांसमिट ऑब्जेक्ट को निर्दिष्ट करता है और अप्रत्यक्ष रूप से नियंत्रक को निर्धारित करता है, क्योंकि हैंडल नंबर हार्डवेयर इकाई के भीतर अद्वितीय होते हैं ([SWS_Can_00233])।
  • PduInfo: SDU पेलोड डेटा, डेटा लंबाई और CAN पहचानकर्ता ([SWS_Can_00233]) वाली संरचना का एक पॉइंटर।

ट्रांसमिट करने से पहले, फ़ंक्शन संबोधित हार्डवेयर ट्रांसमिट ऑब्जेक्ट (SWS_CANDriver पृ. 73) की जाँच करता है और पास किए गए swPduHandle (SWS_CANDriver पृ. 43) को सुरक्षित करता है। प्रकार Std_ReturnType (SRS_BSWGeneral §5.2.3.6 “Types and keywords”) के रिटर्न मान के माध्यम से, E_OK अनुरोध की स्वीकृति का संकेत देता है, जबकि CAN_BUSY इंगित करता है कि कोई हार्डवेयर ट्रांसमिट बफ़र उपलब्ध नहीं है ([SWS_Can_00233], SWS_CANDriver पृ. 51)।

त्रुटि प्रबंधन

यदि निष्पादन के दौरान कोई डेवलपमेंट एरर उत्पन्न होती है, तो फ़ंक्शन E_NOT_OK लौटाता है ([SWS_Can_00233], [SWS_Can_00441])। व्याख्या: उपलब्ध अंश में विशिष्ट DET एरर कोड स्पष्ट रूप से नामित नहीं हैं; हालाँकि, अमान्य हैंडल या अमान्य पॉइंटर्स के कारण संभवतः E_NOT_OK लौटाया जाना चाहिए। प्रश्न Q-ca947a7e0e4fd7d6 (खुला)

समवर्तीता और प्रतिबंध

Can_Write को रीएंट्रेंट या थ्रेड-सेफ़ के रूप में निर्दिष्ट किया गया है ([SWS_Can_00233], SWS_CANDriver पृ. 49)। यदि ड्राइवर की ओर से प्रीएम्प्टिव कॉल को रीएंट्रेंट रूप से निष्पादित नहीं किया जा सकता है, तो इसकी सूचना CanIf को रिटर्न वैल्यू CAN_BUSY के माध्यम से भी दी जाती है ([SWS_Can_00233])। कॉलर को यह सुनिश्चित करना होगा कि फ़ंक्शन कॉल के लौटने तक PDU मेमोरी अपरिवर्तित और मान्य बनी रहे (SWS_CANDriver पृ. 45)।

इंटरैक्शन

कॉल के समय [SWS_Can_00416] के माध्यम से यह प्रेषित किया जाता है कि यह किस प्रकार का PDU है (SWS_CANDriver पृ. 51), जहाँ ड्राइवर अधिकतम PDU लंबाई तक ट्रांसमिशन का समर्थन करता है (SWS_CANDriver पृ. 52)।

यह उपयोग संबंधी निर्देश AUTOSAR R20-11 के विनिर्देश दस्तावेज़ों के आधार पर स्वचालित रूप से जनरेट किया गया था।

फ़ंक्शन <LPDU_CalloutName> [SWS_Can_00443] 📄 PDF

boolean <LPDU_CalloutName> (uint8 Hrh, Can_IdType CanId, uint8 CanDataLegth, const uint8* CanSduPtr);

-

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 3538baa0cf7b उद्गम खुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

उपयोग और कॉल संदर्भ

कॉन्फ़िगर करने योग्य कॉल-आउट इंटरफ़ेस <LPDU_CalloutName> को AUTOSAR CAN मॉड्यूल द्वारा वैकल्पिक रूप से L-PDU के प्रत्येक रिसेप्शन पर कॉल किया जाता है (SWS_CANDriver §8.4.1 “Call-out function”)। फ़ंक्शन की घोषणा हेडर फ़ाइल Can_Externals.h ([SWS_Can_00443]) के माध्यम से प्रदान की जाती है। फ़ंक्शन का वास्तविक नाम प्रोजेक्ट-विशिष्ट रूप से कॉन्फ़िगर किया जाता है ([SWS_Can_00443])।

हार्डवेयर रिसीव हैंडल Hrh, पहचानकर्ता CanId, डेटा लंबाई CanDataLegth और पेलोड डेटा CanSduPtr का एक पॉइंटर इनपुट पैरामीटर के रूप में पास किए जाते हैं ([SWS_Can_00443])।

फ़िल्टरिंग और रिटर्न मान

फ़ंक्शन एक boolean मान लौटाता है। यदि कॉल-आउट false लौटाता है, तो प्राप्त L-PDU को आगे संसाधित नहीं किया जाना चाहिए ([SWS_Can_00444])। Interpretation: यदि कॉल true लौटाता है, तो L-PDU को उच्च परतों पर नियमित रूप से अग्रेषित किए जाने की संभावना है। प्रश्न Q-e96e75e93881c3af (खुला)

समवर्तीता और प्रतिबंध

फ़ंक्शन को सर्विस ID 0x20 प्रदान की गई है और इसे एसिंक्रोनस (Asynchronous) के साथ-साथ गैर-रीएंट्रेंट (Non Reentrant) ([SWS_Can_00443]) के रूप में निर्दिष्ट किया गया है। चूंकि यह रीएंट्रेंट नहीं है, इसलिए एक ही संदर्भ में समानांतर कॉल नहीं होनी चाहिए।

यह पाठ एक AI द्वारा तैयार किया गया था और एक मार्गदर्शन के रूप में कार्य करता है। AUTOSAR विनिर्देश की आवश्यकताएं बाध्यकारी हैं।

फ़ंक्शन Can_MainFunction_Write [SWS_Can_00225] 📄 PDF

void Can_MainFunction_Write (void);

This function performs the polling of TX confirmation when CAN_ TX_ PROCESSING is set to POLLING.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: a6cd22a9e2b1 उद्गम खुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

फ़ंक्शन Can_MainFunction_Write ट्रांसमिशन पुष्टिकरणों (TX-Confirmation) की चक्रीय पोलिंग करता है, बशर्ते पैरामीटर CAN_TX_PROCESSING को POLLING [SWS_Can_00225], AUTOSAR SWS CAN Driver §7 “Scheduled functions” पर कॉन्फ़िगर किया गया हो। यह पैरामीटर रहित (void Can_MainFunction_Write(void)) है, इसकी सर्विस-ID 0x01 है और यह शेड्यूलर के लिए हेडर फ़ाइल SchM_Can.h के माध्यम से प्रदान किया जाता है [SWS_Can_00225]। कॉन्फ़िगरेशन स्विच के माध्यम से फ़ंक्शन को PDU ट्रांसमिशन के प्रसंस्करण के लिए सक्रिय या निष्क्रिय किया जा सकता है AUTOSAR SWS CAN Driver §10 “CanMainFunctionWrite”।

यदि सिस्टम में ट्रांसमिशन संचालन के लिए पोलिंग का बिल्कुल भी उपयोग नहीं किया जाता है, तो विनिर्देश के अनुसार Can_MainFunction_Write को एक खाली डेफ़िनिशन (define) के रूप में कार्यान्वित किया जाना चाहिए AUTOSAR SWS CAN Driver §7 “Scheduled functions”। इससे विशुद्ध रूप से इंटरप्ट-संचालित प्रणालियों में अनावश्यक शेड्यूलर ओवरहेड से बचने की संभावना होगी। प्रश्न Q-2152a35397130945 (खुला)

Can_MainFunction_Read और Can_MainFunction_BusOff के साथ परस्पर क्रिया में, यह रूटीन SchM AUTOSAR SWS CAN Driver §7 “Scheduled functions” के लिए ड्राइवर का चक्रीय इंटरफ़ेस बनाता है। पुष्टिकरण प्रसंस्करण मोड के आधार पर सीधे हार्डवेयर संसाधन पर या Can_MainFunction_Write AUTOSAR SWS CAN Driver §7 “Hardware Resources” के संदर्भ में होता है। ठोस कॉल और असाइनमेंट क्रमशः संदर्भित तत्वों AUTOSAR SWS CAN Driver §10 “CanMainFunctionWrite”, AUTOSAR SWS CAN Driver §10 “Call Context” पर निर्भर करते हैं, जो एक नियंत्रक-संबंधी Tx प्रसंस्करण [SWS_Can_00441] द्वारा समर्थित हैं।

यह उपयोग निर्देश AUTOSAR R20-11 स्पेसिफिकेशन के आधार पर स्वचालित रूप से जनरेट किया गया था।

फ़ंक्शन Can_MainFunction_Read [SWS_Can_00226] 📄 PDF

void Can_MainFunction_Read (void);

This function performs the polling of RX indications when CAN_ RX_ PROCESSING is set to POLLING.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 2c7a6a6247b4 उद्गम खुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

फ़ंक्शन Can_MainFunction_Read CAN रिसेप्शन संदेशों ([SWS_Can_00226]) की चक्रीय पूछताछ (पोलिंग) के लिए कार्य करता है। इसका सिग्नेचर void Can_MainFunction_Read (void) है सर्विस-ID 0x08 के साथ और यह शेड्यूलिंग नियंत्रण के लिए हेडर फ़ाइल SchM_Can.h के माध्यम से प्रदान किया जाता है ([SWS_Can_00226])।

उपयोग और कॉन्फ़िगरेशन

फ़ंक्शन RX-संकेतों (indications) की पोलिंग करता है जब कॉन्फ़िगरेशन पैरामीटर CAN_RX_PROCESSING को POLLING ([SWS_Can_00226]) पर सेट किया जाता है। सिस्टम में इस प्रसंस्करण को नियंत्रक-वार कॉन्फ़िगर किया जा सकता है ([SWS_Can_00441])। यदि CAN ड्राइवर में किसी भी पोलिंग का उपयोग नहीं किया जाता है, तो Can_MainFunction_Read को एक खाली मैक्रो (AUTOSAR_SWS_CANDriver पृ. 77) के रूप में परिभाषित किया जा सकता है।

समवर्तीता और प्रतिबंध

कॉल पैरामीटरीकृत ट्रिगर अवधि (AUTOSAR_SWS_CANDriver पृ. 22) के अनुसार शेड्यूलर संदर्भ में समय-समय पर होता है। निष्पादन के लिए सख्त शर्तें लागू होती हैं:

  • फ़ंक्शन को स्वयं द्वारा बाधित नहीं किया जाना चाहिए (AUTOSAR_SWS_CANDriver पृ. 47)।
  • सामान्य तौर पर, पोलिंग मोड में ड्राइवर और हार्डवेयर संसाधनों तक सुसंगत पहुँच सुनिश्चित करने के लिए Can_MainFunction_Read जैसे मुख्य CAN फ़ंक्शंस को बाधित नहीं किया जाना चाहिए (AUTOSAR_SWS_CANDriver पृ. 49) (AUTOSAR_SWS_CANDriver पृ. 46)।

व्याख्या: टास्क का कॉन्फ़िगर किया गया कॉल अंतराल ऐसा होना चाहिए कि एक प्रसंस्करण चरण हमेशा अगले चक्र की शुरुआत से पहले समाप्त हो जाए, क्योंकि रीएंट्रेंसी अस्वीकार्य है (AUTOSAR_SWS_CANDriver पृ. 47)। प्रश्न Q-1f2fa9db14970b12 (खुला)

यह पाठ AUTOSAR विनिर्देश R20-11 के आधार पर AI द्वारा उत्पन्न किया गया था।

फ़ंक्शन Can_MainFunction_BusOff [SWS_Can_00227] 📄 PDF

void Can_MainFunction_BusOff (void);

This function performs the polling of bus - off events that are configured statically as 'to be polled'.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: d6a62aee0c17 उद्गम खुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

योजनाबद्ध मुख्य फ़ंक्शन Can_MainFunction_BusOff CAN नियंत्रकों के बस-ऑफ़ इवेंट्स की चक्रीय पोलिंग के लिए कार्य करता है, बशर्ते उन्हें स्थिर रूप से पोल किए जाने के रूप में कॉन्फ़िगर किया गया हो [SWS_Can_00227], [SWS_Can_00109]। इसका सिग्नेचर void Can_MainFunction_BusOff(void) है, यह कोई पैरामीटर स्वीकार नहीं करता है, कोई मान वापस नहीं करता है और शेड्यूलिंग नियंत्रण के लिए हेडर SchM_Can.h के माध्यम से प्रदान किया जाता है [SWS_Can_00227]।

उपयोग और अंतःक्रिया

हार्डवेयर इवेंट्स को CAN ड्राइवर में या तो इंटरप्ट के माध्यम से या संबंधित स्थिति फ़्लैग्स की पोलिंग द्वारा कैप्चर किया जा सकता है, जहाँ पूछताछ का कॉन्फ़िगरेशन हार्डवेयर-निर्भर होता है [SWS_Can_00099]। ड्राइवर को इस तरह भी कॉन्फ़िगर किया जा सकता है कि इंटरप्ट्स को पूरी तरह से छोड़ दिया जाए [SWS_Can_00007]। यदि सिस्टम-व्यापी किसी भी पोलिंग का उपयोग नहीं किया जाता है, तो Can मॉड्यूल फ़ंक्शन को एक खाली मैक्रो के रूप में कार्यान्वित कर सकता है [SWS_Can_00183]।

यदि Can_MainFunction_BusOff में स्थिति बिट्स के माध्यम से एक बस-ऑफ़ इवेंट का पता चलता है, तो मॉड्यूल आवश्यक रजिस्टर सेटिंग्स करता है – उदाहरण के लिए स्वचालित हार्डवेयर पुनर्प्राप्ति से बचने के लिए SWS_CANDriver §7.3 “CAN Controller State Machine”, [SWS_Can_91010]। इसके बाद मॉड्यूल संबंधित कॉलबैक के माध्यम से उच्च-स्तरीय लेयर CanIf को सूचित करता है, जिसमें नियंत्रक का सॉफ़्टवेयर स्थिति परिवर्तन होता है SWS_CANDriver §7.3 “CAN Controller State Machine”।

कॉल संदर्भ और सीमाएँ

पोल्ड संचालन में, कॉलबैक अधिसूचना का कॉल संदर्भ ISR नहीं है, बल्कि Can_MainFunction_BusOff का निष्पादन कार्य (टास्क) है; फिर भी सभी कॉलबैक फ़ंक्शंस को इस तरह लागू किया जाना चाहिए जैसे कि उन्हें ISR संदर्भ से कॉल किया गया हो SWS_CANDriver §7.9 “Notification concept”। रीएंट्रेंसी के संबंध में, पेलोड में कोई स्पष्ट जानकारी नहीं है; संभवतः फ़ंक्शन गैर-रीएंट्रेंट है, क्योंकि यह वैश्विक नियंत्रक रजिस्टरों और स्थितियों तक पहुँचता है। प्रश्न Q-38fcd72c40ce3e66 (खुला)

यह उपयोग नोट एक AI द्वारा जनरेट किया गया था और विशेष रूप से AUTOSAR संस्करण R20-11 के विनिर्देश अंशों पर आधारित है।

फ़ंक्शन Can_MainFunction_Wakeup [SWS_Can_00228] 📄 PDF

void Can_MainFunction_Wakeup (void);

This function performs the polling of wake - up events that are configured statically as 'to be polled'.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: ce643213c50c उद्गम
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

मुख्य फ़ंक्शन Can_MainFunction_Wakeup वेक-अप इवेंट्स की चक्रीय पोलिंग करता है, जो स्थिर रूप से पोल किए जाने के लिए कॉन्फ़िगर किए गए हैं ([SWS_Can_00228])। फ़ंक्शन का सिग्नेचर void Can_MainFunction_Wakeup(void) है, यह कोई पैरामीटर स्वीकार नहीं करता है, कोई रिटर्न मान नहीं देता है और इसे Schedule Manager के लिए हेडर SchM_Can.h के माध्यम से प्रदान किया जाता है (AUTOSAR_SWS_CANDriver पृ. 79)। फ़ंक्शन की निष्पादन अवधि सेकंड में कॉन्फ़िगर की जाती है (AUTOSAR_SWS_CANDriver पृ. 92)।

CAN नियंत्रक के स्टेट मशीन (SWS_CANDriver §7.3 “CAN Controller State Machine”) के ढांचे के भीतर, बाहरी हार्डवेयर वेक-अप इवेंट्स को इंटरप्ट्स के बजाय एक स्थिति बिट के माध्यम से संकेतित किया जा सकता है, जिसे Can_MainFunction_Wakeup में पूछा जाता है ([SWS_Can_91010])। इसके अलावा, स्थिति संक्रमण के दौरान, फ़ंक्शन CAN स्थिति रजिस्टर के संबंधित फ़्लैग को तब तक पोल करता है जब तक कि यह परिवर्तन के प्रभावी होने का संकेत न दे दे ([SWS_Can_00370])। सफल स्थिति परिवर्तन के बाद, CAN ड्राइवर अमूर्त CanIf ControllerId ([SWS_Can_00370]) के संदर्भ में कॉलबैक फ़ंक्शन CanIf_ControllerModeIndication के साथ नई स्थिति को CAN इंटरफ़ेस को रिपोर्ट करता है।

कॉन्फ़िगरेशन और संसाधन उपयोग के संबंध में, API Can_MainFunction_Wakeup() को वेक-अप इवेंट्स के प्रबंधन के लिए सक्रिय या निष्क्रिय किया जा सकता है (AUTOSAR_SWS_CANDriver पृ. 97)। यदि इलेक्ट्रॉनिक नियंत्रण इकाई (ECU) में वेक-अप इवेंट्स के लिए बिल्कुल भी पोलिंग का उपयोग नहीं किया जाता है, तो Can_MainFunction_Wakeup को एक खाली मैक्रो (AUTOSAR_SWS_CANDriver पृ. 79) के रूप में परिभाषित किया जा सकता है।

यह उपयोग नोट विनिर्देश AUTOSAR CP R20-11 के आधार पर स्वचालित रूप से जनरेट किया गया था।

फ़ंक्शन Can_MainFunction_Mode [SWS_Can_00368] 📄 PDF

void Can_MainFunction_Mode (void);

This function performs the polling of CAN controller mode transitions.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: feee99301166 उद्गम खुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

उपयोग और कार्यप्रणाली

शेड्यूल किया गया मुख्य फ़ंक्शन Can_MainFunction_Mode ([SWS_Can_00368]) CAN कंट्रोलर्स के स्टेट ट्रांज़िशन की पोलिंग करता है। इसमें न तो कोई इनपुट पैरामीटर है और न ही कोई रिटर्न वैल्यू (void Can_MainFunction_Mode(void), सर्विस-ID 0x0c) और इसे हेडर SchM_Can.h के माध्यम से घोषित किया जाता है SWS_CANDriver §8.5.1.5 “Can_MainFunction_Mode”।

फ़ंक्शन को लगातार चक्रीय रूप से कॉल किया जाता है (AUTOSAR_SWS_CANInterface पृ. 143)। यह हार्डवेयर की जाँच करता है कि क्या किसी CAN कंट्रोलर का मोड बदल गया है। परिवर्तन का पता चलने पर, CAN इंटरफ़ेस को CanIf_ControllerModeIndication(Controller, ControllerMode) के कॉल के माध्यम से सूचित किया जाता है।

एसिंक्रोनस मोड मॉनिटरिंग

यदि पहले Can_SetControllerMode() के माध्यम से मोड परिवर्तन का अनुरोध किया गया था और यह कॉल सफलतापूर्वक CanIf पर लौटता है, तो Can_MainFunction_Mode कंट्रोलर हार्डवेयर के पूर्ण स्टेट ट्रांज़िशन का पता लगाता है। इसके बाद यह CanIf_ControllerModeIndication का उपयोग करके नई स्थिति जैसे कि CAN_CS_STARTED के बारे में CanIf को एसिंक्रोनस रूप से सूचित करता है AUTOSAR_SWS_CANInterface पृ. 144।

कॉल संदर्भ और सीमांत स्थितियाँ

SchM_Can.h के माध्यम से प्रावधान और शेड्यूल्ड फ़ंक्शन के रूप में परिभाषा के कारण, आवधिक कॉल BSW शेड्यूलर द्वारा किए जाने की संभावना है। प्रश्न Q-42edbc2aa591e8d7 (खुला) इस फ़ंक्शन के लिए पेलोड में विशिष्ट एरर कोड या विकास चरण परिभाषित नहीं हैं।

यह पाठ AUTOSAR विनिर्देशों के आधार पर एक AI द्वारा तैयार किया गया था।

इम्प्लीमेंटर गाइड जल्द आएगी (जटिलता I1)

टाइप Can_ConfigType [SWS_Can_00413] 📄 PDF

This is the type of the external data structure containing the overall initialization data for the CAN driver and SFR settings affecting all controllers. Furthermore it contains pointers to controller configuration structures. The contents of the initializ ation data structure are CAN hardware specific.

टाइप Can_PduType [SWS_Can_00415] 📄 PDF

This type unites Pdu Id (sw Pdu Handle), Sdu Length (length), Sdu Data (sdu), and Can Id (id) for any CAN L - SDU.

टाइप Can_IdType [SWS_Can_00416] 📄 PDF

Represents the Identifier of an L - PDU. The two most significant bits specify the frame type: 00 CAN message with Standard CAN ID 01 CAN FD frame with Standard CAN ID 10 CAN message with Extended CAN ID 11 CAN FD frame with Extended CAN ID

टाइप Can_HwHandleType [SWS_Can_00429] 📄 PDF

Represents the hardware object handles of a CAN hardware unit. For CAN hardware units with more than 255 HW objects use extended range.

टाइप Can_HwType [SWS_CAN_00496] 📄 PDF

This type defines a data structure which clearly provides an Hardware Object Handle including its corresponding CAN Controller and therefore Can Drv as well as the specific Can Id.

टाइप Can_ErrorStateType [SWS_Can_91003] 📄 PDF

Error states of a CAN controller.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 0cb922d28e06 उद्गम खुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

Can_GeneralTypes.h से एन्यूमिरेशन प्रकार Can_ErrorStateType CAN कंट्रोलर [SWS_Can_91003] की एरर और संचालन स्थितियों का वर्णन करता है। यह CAN बस पर कंट्रोलर के व्यवहार को तीन स्थितियों के माध्यम से मैप करता है SWS_CANDriver §8.2.7 “Can_ErrorStateType”:

  • CAN_ERRORSTATE_ACTIVE: CAN कंट्रोलर पूरी तरह से बस संचार में भाग लेता है [SWS_Can_91003]।
  • CAN_ERRORSTATE_PASSIVE: CAN कंट्रोलर संचार में भाग लेता है, लेकिन अब सक्रिय एरर फ्रेम (Error Frames) नहीं भेजता है [SWS_Can_91003]।
  • CAN_ERRORSTATE_BUSOFF: गंभीर ट्रांसमिशन एरर के परिणामस्वरूप CAN कंट्रोलर बस से अलग हो जाता है और संचार में भाग नहीं लेता है [SWS_Can_91003]।

रनटाइम पर, सिंक्रोनस ड्राइवर सर्विस Can_GetControllerErrorState के माध्यम से स्थिति की क्वेरी की जाती है [SWS_Can_91004]। इसका आउटपुट पैरामीटर ErrorStatePtr निर्धारित मान प्राप्त करता है। CAN इंटरफ़ेस AUTOSAR_SWS_CANInterface पृ. 78 “CanIf_GetControllerErrorState” में उच्च-स्तरीय फ़ंक्शन CanIf_GetControllerErrorState भी इसी सिग्नेचर का उपयोग करता है। कॉनकरेंसी के संबंध में, Can_GetControllerErrorState को उसी ControllerId के लिए नॉन-रीएंट्रेंट के रूप में निर्दिष्ट किया गया है [SWS_Can_91004]।

एरर के मामले में, Can_GetControllerErrorState रिटर्न वैल्यू E_NOT_OK देता है, और सफल क्वेरी पर E_OK देता है [SWS_Can_91004]। डेवलपमेंट एरर डिटेक्शन (DET) सक्षम होने पर, ड्राइवर इनिशियलाइज़ेशन से पहले कॉल करने पर एरर CAN_E_UNINIT उत्पन्न होता है [SWS_Can_91005]। एक अमान्य ControllerId डेवलपमेंट एरर CAN_E_PARAM_CONTROLLER को ट्रिगर करता है [SWS_Can_91006], और ErrorStatePtr के लिए शून्य सूचक (Null Pointer) पास करने पर डेवलपमेंट एरर के साथ अस्वीकार कर दिया जाता है [SWS_Can_91007]।

व्याख्या: कॉलर को ErrorStatePtr के लिए मेमोरी क्षेत्र को स्वतंत्र रूप से आवंटित करना होगा, क्योंकि इंटरफ़ेस पॉइंटर को एक शुद्ध आउटपुट पैरामीटर के रूप में मानता है और डेवलपमेंट एरर के माध्यम से शून्य पॉइंटर्स को रोकता है। प्रश्न Q-5c907c21bcb50893 (खुला)

यह पाठ AUTOSAR विनिर्देश R20-11 के आधार पर AI द्वारा उत्पन्न किया गया था।

इम्प्लीमेंटर गाइड जल्द आएगी (जटिलता I1)

टाइप Can_ControllerStateType [SWS_Can_91013] 📄 PDF

States that are used by the several Controller Mode functions.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 5eb69ce0444e उद्गम
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

एन्यूमिरेशन प्रकार Can_ControllerStateType CAN कंट्रोलर की बुनियादी संचालन स्थितियों को परिभाषित करता है: CAN_CS_UNINIT, CAN_CS_STARTED, CAN_CS_STOPPED और CAN_CS_SLEEP [SWS_Can_91013]। इस प्रकार का उपयोग CAN कंट्रोलर स्टेट मशीन के सॉफ़्टवेयर-नियंत्रित स्टेट प्रबंधन के लिए मॉड्यूल-व्यापी स्तर पर किया जाता है [SWS_Can_00017]।

मानों का उपयोग निम्नलिखित संदर्भों में किया जाता है:

  • स्टेट अनुरोध: Can_SetControllerMode में, यह प्रकार एक नए संचालन स्टेट के एसिंक्रोनस अनुरोध के लिए ट्रांज़िशन मान (पैरामीटर Transition) के रूप में कार्य करता है [SWS_Can_00230]; इसके अनुरूप CanIf_SetControllerMode मौजूद है AUTOSAR_SWS_CANInterface §- “CanIf_SetControllerMode”। ड्राइवर अनुरोध को कंट्रोलर हार्डवेयर तक पहुँचाता है, जिसमें वास्तविक स्टेट परिवर्तन तुरंत या कुछ मिलीसेकंड के बाद प्रभावी होता है AUTOSAR_SWS_CANInterface §- “Can_SetControllerMode”। CAN_CS_STARTED में ट्रांज़िशन कंट्रोलर के पुनरारंभ (री-इनिशियलाइज़ेशन) को भी ट्रिगर करता है [SWS_Can_00384]।
  • स्थिति क्वेरी: Can_GetControllerMode के माध्यम से, आउटपुट पॉइंटर ControllerModePtr के जरिए वर्तमान स्थिति को सिंक्रोनस रूप से क्वेरी किया जा सकता है [SWS_Can_91014], [SWS_Can_91015] (CanIf_GetControllerMode AUTOSAR_SWS_CANInterface §- “CanIf_GetControllerMode” में समान रूप से)।
  • स्टेट संकेत: परिवर्तन पूरा होने के बाद, कॉलबैक जैसे कि CanSM_ControllerModeIndication [SWS_CanSM_00396], CanIf_ControllerModeIndication AUTOSAR_SWS_CANInterface §- “CanIf_ControllerModeIndication” और उपयोगकर्ता कॉलबैक AUTOSAR_SWS_CANInterface §- “User_ControllerModeIndication” नए कंट्रोलर मोड के बारे में उच्च परतों को सिंक्रोनस रूप से सूचित करते हैं।

कॉनकरेंसी और एरर हैंडलिंग के संबंध में: ड्राइवर फ़ंक्शन Can_SetControllerMode और Can_GetControllerMode नॉन-रीएंट्रेंट हैं [SWS_Can_00230], [SWS_Can_91014]। ड्राइवर इनिशियलाइज़ेशन से पहले Can_GetControllerMode को कॉल करने पर, डेवलपमेंट एरर CAN_E_UNINIT की रिपोर्ट की जाती है और E_NOT_OK लौटाया जाता है [SWS_Can_91016]। कॉलबैक फ़ंक्शन CanSM_ControllerModeIndication विभिन्न कंट्रोलर्स के लिए रीएंट्रेंट है और अनकॉन्फ़िगर किए गए कंट्रोलर-ID की रिपोर्ट CANSM_E_PARAM_CONTROLLER के साथ DET को करता है [SWS_CanSM_00396], [SWS_CanSM_00397]।

यह उपयोग संबंधी निर्देश AUTOSAR Classic R20-11 में CAN ड्राइवर, CAN इंटरफ़ेस और CAN स्टेट मैनेजर के विनिर्देशों के प्रावधानों पर आधारित है।

इम्प्लीमेंटर गाइड जल्द आएगी (जटिलता I1)

टाइप Can_ErrorType [SWS_Can_91021] 📄 PDF

The enumeration represents a superset of CAN Error Types which typical CAN HW is able to report. That means not all CAN HW will be able to support the complete set.

एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: e538be0a65be उद्गम खुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

एन्यूमरेशन प्रकार Can_ErrorType CAN त्रुटि कारणों का एक मानकीकृत सुपरसेट परिभाषित करता है जिसे विशिष्ट CAN हार्डवेयर कैप्चर कर सकता है और उच्च परतों को रिपोर्ट कर सकता है [SWS_Can_91021]। यह हेडर फ़ाइल Can_GeneralTypes.h के माध्यम से प्रदान किया जाता है SWS_CANDriver §8.2.9 “Can_ErrorType”।

चूंकि एन्यूमरेशन को एक सुपरसेट के रूप में डिज़ाइन किया गया है, इसलिए प्रत्येक CAN नियंत्रक सभी निर्दिष्ट मानों [SWS_Can_91021] का समर्थन करने के लिए बाध्य नहीं है। परिभाषित त्रुटि स्थितियों में शामिल हैं:

  • बस मॉनिटरिंग में बिट त्रुटियां (CAN_ERROR_BIT_MONITORING1, CAN_ERROR_BIT_MONITORING0 या संक्षेप में CAN_ERROR_BIT),
  • पावती त्रुटियां (CAN_ERROR_CHECK_ACK_FAILED, CAN_ERROR_ACK_DELIMITER),
  • प्रेषक का आर्बिट्रेशन नुकसान (CAN_ERROR_ARBITRATION_LOST),
  • पूर्ण रिसेप्शन बफ़र्स के कारण ओवरलोड स्थितियां (CAN_ERROR_OVERLOAD),
  • प्रारूप और बिट-स्टफ़िंग उल्लंघन (CAN_ERROR_CHECK_FORM_FAILED, CAN_ERROR_CHECK_STUFFING_FAILED),
  • CRC त्रुटियां (CAN_ERROR_CHECK_CRC_FAILED) तथा
  • प्रमुख स्तर पर बस का एक स्थायी अवरोध (CAN_ERROR_BUS_LOCK) SWS_CANDriver §8.2.9 “Can_ErrorType”।

BSW मॉड्यूल के परस्पर तालमेल में, यह प्रकार CAN-Interface AUTOSAR_SWS_CANInterface §8.x “CanIf_ErrorNotification” को कंट्रोलर त्रुटियों को आगे अग्रेषित करने के लिए कॉलबैक फ़ंक्शन CanIf_ErrorNotification के पैरामीटर के रूप में कार्य करता है। पास किया गया मान संभवतः अंतर्निहित हार्डवेयर द्वारा निर्धारित त्रुटि स्थिति के अनुरूप होना चाहिए AUTOSAR_SWS_CANDriver §7.x “Error Notification”। प्रश्न Q-d23c45dd3b23ec71 (खुला)

यह पाठ AI द्वारा जनरेट किया गया था और तकनीकी मार्गदर्शन के लिए है।

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_Can
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Can@rel:R20-11#1f10c471
Content hash
1f10c471
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CANDriver.pdf#nameddest=SWS_Can_00223

आरंभीकरण और स्थिति

Can_DeInit फ़ंक्शन

This function de - initializes the module.

void Can_DeInit (void);
Can_GetVersionInfo फ़ंक्शन

This function returns the version information of this module.

void Can_GetVersionInfo (Std_VersionInfoType* versioninfo);
Can_Init फ़ंक्शन

This function initializes the module.

void Can_Init (const Can_ConfigType* Config);

सेवाएँ

Can_CheckWakeup फ़ंक्शन

This function checks if a wakeup has occurred for the given controller.

Std_ReturnType Can_CheckWakeup (uint8 Controller);
Can_DisableControllerInterrupts फ़ंक्शन

This function disables all interrupts for this CAN controller.

void Can_DisableControllerInterrupts (uint8 Controller);
Can_EnableControllerInterrupts फ़ंक्शन

This function enables all allowed interrupts.

void Can_EnableControllerInterrupts (uint8 Controller);
Can_GetControllerErrorState फ़ंक्शन

This service obtains the error state of the CAN controller.

Std_ReturnType Can_GetControllerErrorState (uint8 ControllerId, Can_ErrorStateType* ErrorStatePtr);
Can_GetControllerMode फ़ंक्शन

This service reports about the current status of the requested CAN controller.

Std_ReturnType Can_GetControllerMode (uint8 Controller, Can_ControllerStateType* ControllerModePtr);
Can_GetControllerRxErrorCounter फ़ंक्शन

Returns the Rx error counter for a CAN controller. This value might not be available for all CAN controllers, in which cas e E_ NOT_ OK would be returned. Please note that the value of the counter might not be correct at the moment the API returns it, because the Rx counter is handled asynchronously in hardware. Applications should not trust this value for any assumption about the current bus state.

Std_ReturnType Can_GetControllerRxErrorCounter (uint8 ControllerId, uint8* RxErrorCounterPtr);
Can_GetControllerTxErrorCounter फ़ंक्शन

Returns the Tx error counter for a CAN controller. This value might not be available for all CAN controllers, in which case E_ NOT_ OK would be returned. Please note that the value of the counter might not be correct at the moment the API returns it, because the Tx counter is handled asynchronously in hardware. Applications should not trust this value for any assumption about the current bus state.

Std_ReturnType Can_GetControllerTxErrorCounter (uint8 ControllerId, uint8* TxErrorCounterPtr);
Can_SetBaudrate फ़ंक्शन

This service shall set the baud rate configuration of the CAN controller. Depending on necessary baud rate modifications the controller might have to reset.

Std_ReturnType Can_SetBaudrate (uint8 Controller, uint16 BaudRateConfig ID); ⚠️
Can_SetControllerMode फ़ंक्शन

This function performs software triggered state transitions of the CAN controller State machine.

Std_ReturnType Can_SetControllerMode (uint8 Controller, Can_ControllerStateType Transition);
Can_Write फ़ंक्शन

This function is called by Can If to pass a CAN message to Can Drv for transmission.

Std_ReturnType Can_Write (Can_HwHandleType Hth, const Can_PduType* PduInfo);

कॉलआउट और अपेक्षित इंटरफ़ेस

<LPDU_CalloutName> फ़ंक्शन

-

boolean <LPDU_CalloutName> (uint8 Hrh, Can_IdType CanId, uint8 CanDataLegth, const uint8* CanSduPtr);

चक्रीय

Can_MainFunction_BusOff फ़ंक्शन

This function performs the polling of bus - off events that are configured statically as 'to be polled'.

void Can_MainFunction_BusOff (void);
Can_MainFunction_Mode फ़ंक्शन

This function performs the polling of CAN controller mode transitions.

void Can_MainFunction_Mode (void);
Can_MainFunction_Read फ़ंक्शन

This function performs the polling of RX indications when CAN_ RX_ PROCESSING is set to POLLING.

void Can_MainFunction_Read (void);
Can_MainFunction_Wakeup फ़ंक्शन

This function performs the polling of wake - up events that are configured statically as 'to be polled'.

void Can_MainFunction_Wakeup (void);
Can_MainFunction_Write फ़ंक्शन

This function performs the polling of TX confirmation when CAN_ TX_ PROCESSING is set to POLLING.

void Can_MainFunction_Write (void);

टाइप

Can_ConfigType टाइप

This is the type of the external data structure containing the overall initialization data for the CAN driver and SFR settings affecting all controllers. Furthermore it contains pointers to controller configuration structures. The contents of the initializ ation data structure are CAN hardware specific.

States that are used by the several Controller Mode functions.

Can_ErrorStateType टाइप

Error states of a CAN controller.

Can_ErrorType टाइप

The enumeration represents a superset of CAN Error Types which typical CAN HW is able to report. That means not all CAN HW will be able to support the complete set.

Can_HwHandleType टाइप

Represents the hardware object handles of a CAN hardware unit. For CAN hardware units with more than 255 HW objects use extended range.

Can_HwType टाइप

This type defines a data structure which clearly provides an Hardware Object Handle including its corresponding CAN Controller and therefore Can Drv as well as the specific Can Id.

Can_IdType टाइप

Represents the Identifier of an L - PDU. The two most significant bits specify the frame type: 00 CAN message with Standard CAN ID 01 CAN FD frame with Standard CAN ID 10 CAN message with Extended CAN ID 11 CAN FD frame with Extended CAN ID

Can_PduType टाइप

This type unites Pdu Id (sw Pdu Handle), Sdu Length (length), Sdu Data (sdu), and Can Id (id) for any CAN L - SDU.