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
void Can_Init (const Can_ConfigType* Config);This function initializes the module.void Can_GetVersionInfo (Std_VersionInfoType* versioninfo);This function returns the version information of this module.void Can_DeInit (void);This function de - initializes the module.Std_ReturnType Can_SetBaudrate (uint8 Controller, uint16 BaudRateConfig ID); ⚠️This service shall set the baud rate configuration of the CAN controller.Std_ReturnType Can_SetControllerMode (uint8 Controller, Can_ControllerStateType Transition);This function performs software triggered state transitions of the CAN controller State machine.void Can_DisableControllerInterrupts (uint8 Controller);This function disables all interrupts for this CAN controller.void Can_EnableControllerInterrupts (uint8 Controller);This function enables all allowed interrupts.Std_ReturnType Can_CheckWakeup (uint8 Controller);This function checks if a wakeup has occurred for the given controller.Std_ReturnType Can_GetControllerErrorState (uint8 ControllerId, Can_ErrorStateType* ErrorStatePtr);This service obtains the error state of the CAN controller.Std_ReturnType Can_GetControllerMode (uint8 Controller, Can_ControllerStateType* ControllerModePtr);This service reports about the current status of the requested CAN controller.Std_ReturnType Can_GetControllerRxErrorCounter (uint8 ControllerId, uint8* RxErrorCounterPtr);Returns the Rx error counter for a CAN controller.Std_ReturnType Can_GetControllerTxErrorCounter (uint8 ControllerId, uint8* TxErrorCounterPtr);Returns the Tx error counter for a CAN controller.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.boolean <LPDU_CalloutName> (uint8 Hrh, Can_IdType CanId, uint8 CanDataLegth, const uint8* CanSduPtr);-void Can_MainFunction_Write (void);This function performs the polling of TX confirmation when CAN_ TX_ PROCESSING is set to POLLING.void Can_MainFunction_Read (void);This function performs the polling of RX indications when CAN_ RX_ PROCESSING is set to POLLING.void Can_MainFunction_BusOff (void);This function performs the polling of bus - off events that are configured statically as 'to be polled'.void Can_MainFunction_Wakeup (void);This function performs the polling of wake - up events that are configured statically as 'to be polled'.void Can_MainFunction_Mode (void);This function performs the polling of CAN controller mode transitions.
Typen — Übersicht
struct Can_ConfigTypeThis is the type of the external data structure containing the overall initialization data for the CAN driver and SFR settings...Can_PduTypeThis type unites Pdu Id (sw Pdu Handle), Sdu Length (length), Sdu Data (sdu), and Can Id (id) for any CAN L - SDU.Can_IdTypeRepresents the Identifier of an L - PDU.Can_HwHandleTypeRepresents the hardware object handles of a CAN hardware unit.struct Can_HwTypeThis type defines a data structure which clearly provides an Hardware Object Handle including its corresponding CAN Controller...enum Can_ErrorStateTypeError states of a CAN controller.enum Can_ControllerStateTypeStates that are used by the several Controller Mode functions.enum Can_ErrorTypeThe enumeration represents a superset of CAN Error Types which typical CAN HW is able to report.
Funktionen & Typen — Detailansicht
फ़ंक्शन Can_Init [SWS_Can_00223] 📄 PDF
void Can_Init (const Can_ConfigType* Config);
This function initializes the module.
सिंक्रोनस, गैर-रीएंट्रेंट फ़ंक्शन 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_GetVersionInfo [SWS_Can_00224] 📄 PDF
void Can_GetVersionInfo (Std_VersionInfoType* versioninfo);
This function returns the version information of this module.
फ़ंक्शन Can_DeInit [SWS_Can_91002] 📄 PDF
void Can_DeInit (void);
This function de - initializes the module.
फ़ंक्शन 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.
फ़ंक्शन 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.
सिंक्रोनस और रीएंट्रेंट फ़ंक्शन 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.
सिंक्रोनस और रीएंट्रेंट फ़ंक्शन 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.
उपयोग और व्यवहार
सिंक्रोनस फ़ंक्शन 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_GetControllerErrorState [SWS_Can_91004] 📄 PDF
Std_ReturnType Can_GetControllerErrorState (uint8 ControllerId, Can_ErrorStateType* ErrorStatePtr);
This service obtains the error state of the CAN controller.
फ़ंक्शन Can_GetControllerMode [SWS_Can_91014] 📄 PDF
Std_ReturnType Can_GetControllerMode (uint8 Controller, Can_ControllerStateType* ControllerModePtr);
This service reports about the current status of the requested CAN controller.
फ़ंक्शन 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.
उपयोग और सिमेंटिक्स
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);
-
उपयोग और कॉल संदर्भ
कॉन्फ़िगर करने योग्य कॉल-आउट इंटरफ़ेस <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.
फ़ंक्शन 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.
फ़ंक्शन 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'.
योजनाबद्ध मुख्य फ़ंक्शन 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'.
मुख्य फ़ंक्शन 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.
उपयोग और कार्यप्रणाली
शेड्यूल किया गया मुख्य फ़ंक्शन 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.
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.
एन्यूमिरेशन प्रकार 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_GetControllerModeAUTOSAR_SWS_CANInterface §- “CanIf_GetControllerMode” में समान रूप से)। - स्टेट संकेत: परिवर्तन पूरा होने के बाद, कॉलबैक जैसे कि
CanSM_ControllerModeIndication[SWS_CanSM_00396],CanIf_ControllerModeIndicationAUTOSAR_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.
एन्यूमरेशन प्रकार 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
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल