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 الخاصة بوحدة عتادية (Hardware-Unit) ويمثل طبقة العتاد أسفل CAN Interface. ويقوم بإبلاغها بالاستقبال، وتأكيد الإرسال، وBus-off، وتغيير الوضع عبر رد النداء [SWS_Can_00234]. ووفقًا لـ Can_Init، تكون جميع وحدات التحكم في STOPPED. وتبدأ كل وحدة تحكم بشكل فردي وغير متزامن باستخدام Can_SetControllerMode؛ ولا يتم الإبلاغ عن النجاح إلا لاحقًا [SWS_Can_00230]. ويتم الإرسال باستخدام Can_Write عبر مقابض إرسال العتاد (Hardware-Transmit-Handles). وإذا لم يكن هناك كائن إرسال متاح، يُرجع المشغل CAN_BUSY، ويقوم CanIf بتخزين الطلب مؤقتًا.

يغلّف مشغل CAN كل وصول إلى وحدات تحكم CAN الخاصة بوحدة عتادية. وهو يخدم CAN Interface كمستخدم وحيد ويبلغ عن الاستقبال وتأكيد الإرسال وBus-off وتغيير الوضع عبر ردود نداء 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

مخطط سياق: تضمين Can بين EcuM، وBSW Scheduler، وCanIf، وDET، وOs، وعتاد وحدة التحكم. المصادر: [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. وينقل Bus-off وحدة التحكم إلى STOPPED دون استعادة عتادية؛ وينقلها تنبيه الناقل (Bus-Wakeup) من 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

مخطط حالة: انتقالات وحدة التحكم عبر استدعاءات البرمجيات وأحداث Bus-off والتنبيه. المصادر: [SWS_Can_91010]، SWS CANDriver ص. 38

يتم الإرسال باستخدام Can_Write(Hth, PduInfo). وتميز البتان العلويتان من Can_IdType بين CAN 2.0 وCAN FD وكذلك بين Standard-ID وExtended-ID [SWS_Can_00233] [SWS_Can_00416]. وإذا لم يكن كائن الإرسال متاحًا، يُرجع المشغل CAN_BUSY، ويقوم CanIf بتخزين الطلب مؤقتًا [SWS_Can_00039] SWS CANDriver ص. 47. ويتم اكتشاف الأحداث عبر المقاطعة أو من خلال الاستطلاع (Polling). وتوجد للاستطلاع دوال رئيسية دورية SWS CANDriver ص. 41:

  • Write وRead: تأكيدات الإرسال والاستقبال
  • BusOff وWakeup: أحداث Bus-off والتنبيه
  • 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. ويتولى CanSM عملية استعادة Bus-off عبر CanIf. ويُفترض أن تتم إعادة التشغيل مجددًا عبر 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 الدوال الرئيسية الدورية مباشرةً. ولا تحتوي هذه الدوال على معلمات ولا على قيمة معادة وهي غير قابلة لإعادة الدخول (non-reentrant)؛ ولا يوجد ترتيب تنفيذ مفروض SWS CANDriver ص. 78. ولا يقدم المشغل أي ردود نداء باتجاه الأسفل. ولا يجوز مخاطبة وحدات تحكم CAN الخارجية إلا عبر واجهات برمجة تطبيقات MCAL المتزامنة مثل 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 للمهل الزمنية (Timeouts). المصادر: [SWS_Can_00234]، SWS CANDriver ص. 45، SWS CANDriver ص. 78

من تشغيل الطاقة حتى STARTED: حالات المشغل ووحدة التحكم

يعرف المشغل ككل الحالتين CAN_UNINIT وCAN_READY فقط. وبعد إعادة الضبط (Reset)، يكون في 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 تكون وحدة التحكم مهيأة، لكنها لا تشارك في الناقل ولا ترسل إطارات الأخطاء (Error Frames) ولا إقرارات الاستلام (Acknowledges).
  • 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].

تهيئة وبدء وحدة تحكم CANEcuMCanIf-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: CAN مع Standard-ID
  • 01: CAN FD مع Standard-ID
  • 10: CAN مع Extended-ID
  • 11: CAN FD مع Extended-ID

يتيح ذلك خلط إطارات CAN 2.0 وإطارات CAN FD على مستوى الإطار، بشرط تفعيل تهيئة معدل نقل البود لـ FD لوحدة التحكم SWS CANDriver ص. 49 SWS CANInterface ص. 71.

يجب أن يكون Can_Write آمنًا بالنسبة للخيوط (thread-safe)، لأن CanIf_Transmit قابل لإعادة الدخول (reentrant). ويُرجع المشغل CAN_BUSY إذا لم يكن أي كائن إرسال متاحًا أو إذا تعذر تنفيذ استدعاء وقائي بصورة قابلة لإعادة الدخول [SWS_Can_00039] SWS CANDriver ص. 47. وعندئذٍ يقوم CanIf بتخزين الطلب مؤقتًا. وإذا أصبح أحد الكائنات متاحًا، يستدعي CanIf Can_Write مجددًا وفقًا لترتيب الأولوية SWS CANInterface ص. 48. ويحتفظ المشغل بـ swPduHandle حتى CanIf_TxConfirmation المقترنة به SWS CANDriver ص. 35. ولمنع انعكاس الأولوية، يمكن تهيئة الإرسال المتعدد (Multiplexed Transmission) بشكل ثابت؛ حيث تشكل عدة كائنات عتاد مقبض HTH واحدًا SWS CANDriver ص. 40.

إرسال L-PDU مع التأكيدCanIfCanCAN-ControllerBSW SchedulerCan_Write(Hth, PduInfo)altHardware-Sendeobjekt freiswPduHandle je HTH merkenL-PDU ins Hardwareobjekt,إطلاق الإرسالE_OKلا يوجد كائن متاح أو غير قابل للتنفيذ المتكرر (Reentrant)CAN_BUSYتخزين L-PDU مؤقتاً في CanIfTxBufferتم إرسال الإطار وتأكيده من الناقلaltInterrupt-BetriebTX-InterruptPolling-BetriebCan_MainFunction_Write()التحقق من التأكيدات المعلقةCanIf_TxConfirmation(swPduHandle)optL-PDU مخزنة مؤقتاً لـ HTH هذهCan_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)، وكائن العتاد، وControllerId التجريدي الخاص بـ CanIf، بالإضافة إلى الطول والمؤشر إلى L-SDU. وفي حالة الإطارات الموسعة (Extended-Frames)، يضبط المشغل MSB للمعرّف لكي يتعرف CanIf على نوع الإطار SWS CANDriver ص. 43. واختياريًا، يتم مسبقًا تفعيل استدعاء اختياري لـ L-PDU قابل للتهيئة <LPDU_CalloutName> [SWS_Can_00443]. وإذا أرجع false، فلا تتم معالجة L-PDU بشكل إضافي وفقًا لموضع التوثيق (R25-11) SWS CANDriver ص. 77.

يتم اكتشاف الأحداث عبر المقاطعة أو من خلال استطلاع رايات الحالة (Statusflags). ويجب أن يكون التشغيل بالاستطلاع الخالص دون أي مقاطعات قابلاً للتهيئة. وأثناء الاستطلاع، تستدعي الدوال الرئيسية نفس ردود النداء، ولكن من سياق المهمة (Task) بدلاً من سياق ISR SWS CANDriver ص. 41. وتستطلع كل دالة رئيسية نوع حدث واحد:

تذكر أوصاف R20-11 الخاصة بـ Read وWrite حالة 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. وبدون أي استطلاع، يُسمح بتنفيذ دالة رئيسية كتعريف فارغ (empty Define) SWS CANDriver ص. 81.

استقبال L-PDU في وضع الاستقصاء (Polling)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 / falseعند false: تجاهل L-PDUCanIf_RxIndication(Mailbox, PduInfoPtr)إشارة Rx إلى المستخدملا توجد L-PDU جديدة

مخطط تسلسل: الاستقبال في نمط الاستطلاع مع تسوية المعرّف (ID-Normierung)، واستدعاء اختياري لـ L-PDU اختياري وتمرير إلى CanIf. المصادر: [SWS_Can_00226]، [SWS_Can_00443]، SWS CANInterface ص. 153، SWS CANDriver ص. 43

السكون والتنبيه والتحكم في المقاطعات

يتعامل المشغل فقط مع عمليات التنبيه التي تكتشفها وحدة التحكم نفسها، وليس تلك التي تتم عبر جهاز الإرسال والاستقبال (Transceiver) 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. ويبقى استدعاء Enable دون استدعاء Disable سابق دون أي تأثير [SWS_Can_00231] [SWS_Can_00232] SWS CANDriver ص. 61 SWS CANDriver ص. 62.

إيقاظ من ناقل CANCAN-ControllerCanEcuMCanIfUse Case: Controller in CAN_CS_SLEEPحدث إيقاظ من الناقلaltInterrupt-BetriebWakeup-ISRPolling-BetriebCan_MainFunction_Wakeup()Controller SLEEP -> STOPPED,عدم معالجة L-PDU المسببة للحدثEcuM_CheckWakeup(المصدر من CanWakeupSourceRef)التحقق من مصدر الإيقاظ عبر CanIfCan_CheckWakeup(Controller)optWakeup erkanntEcuM_SetWakeupEventE_OKValidierung gegen Fehlwakeupsبواسطة EcuM وCanIf، دون Can

مخطط تسلسل: تنبيه الناقل من SLEEP، والإبلاغ إلى EcuM والاستعلام عبر CanIf باستخدام Can_CheckWakeup. المصادر: [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.

في أنظمة الأقسام المتعددة (Multi-Partition-Systemen)، تعمل الوحدة في كل قسم كمثيل مستقل. ولا يؤثر استدعاء API إلا في القسم الخاص به فقط [SWS_Can_CONSTR_00508]. وتنطبق ثلاث قواعد على تخصيص الأقسام:

  • يجب أن تكون الأقسام في CanControllerEcucPartitionRef مجموعة فرعية من الأقسام في CanEcucPartitionRef [SWS_Can_CONSTR_00509].
  • تشير وحدة التحكم وقناة جهاز الإرسال والاستقبال لقناة اتصال ما إلى نفس القسم [SWS_Can_CONSTR_00510].
  • يرفض المشغل التخصيصات غير المدعومة [SWS_Can_00507].

تتميز وحدات Can المتعددة في وحدة تحكم إلكترونية (ECU) واحدة ببادئة دوال معدلة 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_E_TRANSITION للانتقالات غير المسموح بها في Can_SetControllerMode. ويكون سلوكها غير محدد في الكود الإنتاجي SWS CANDriver ص. 30 SWS CANDriver ص. 32.

كخطأ أثناء التشغيل، تم تعريف CAN_E_DATALOST لرسائل الاستقبال المفقودة [SWS_Can_91020]. ومن المرجح أن يتم الإبلاغ عنه عبر Det_ReportRuntimeError المطلوب [SWS_Can_00234]. سؤال Q-50225b25430c9660 (مفتوح)

إذا انتقلت وحدة تحكم إلى Bus-off، فإنها تنتقل من STARTED إلى STOPPED. ولا يقوم برنامج التشغيل بإجراء استعادة للعتاد (Hardware-Recovery). بل يبلغ عن الحدث عبر مقاطعة أو في 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_ControllerBusOffاسترداد Bus-off من مسؤولية CanSMUse Case: Neustart (Interpretation)Neustart anfordern (Interpretation)Can_SetControllerMode(Controller, CAN_CS_STARTED)إعادة تهيئة باستخدامzuletzt verwendeter Konfiguration

مخطط تسلسلي: اكتشاف وإبلاغ Bus-off حتى CanSM. إعادة التشغيل المصنفة كتفسير غير مثبتة بشكل صريح. المصادر: [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 للمهل الزمنية (Timeouts) SWS CANDriver ص. 23. وإذا لم يدخل تغيير الوضع حيز التنفيذ خلال CanTimeoutDuration، فإن Can_SetControllerMode تخرج من الدالة بدلاً من الحظر SWS CANDriver ص. 33. وإذا حدث إيقاظ للناقل (Bus-Wakeup) أثناء الانتقال إلى وضع السكون، فإن Can_SetControllerMode(CAN_CS_STOPPED) يُرجع E_NOT_OK SWS CANDriver ص. 35.

أدلة تفصيلية إضافية

العديد من مواضع الوثائق مأخوذة من R23-11 إلى R25-11. والمعيار الإلزامي لـ R20-11 هو المتطلبات المذكورة. ويأتي مخطط الحالات SWS CANDriver ص. 38 مباشرة من R20-11.

دليل تم إنشاؤه بواسطة الذكاء الاصطناعي استنادًا إلى المتطلبات ومواضع الوثائق المتوفرة في الحمولة لـ R20-11. تم تمييز الافتراضات كتفسير؛ وتظل المواصفة هي المرجع الحاسم.

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 كامل وحدة برنامج تشغيل CAN بالإضافة إلى وحدات العتاد التابعة لها وفقًا للتكوين المُمرر [SWS_Can_00223].

الاستخدام وسياق الاستدعاء

يتم استدعاء Can_Init أثناء مرحلة بدء تشغيل وحدة التحكم الإلكترونية بشكل إلزامي بواسطة 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).

التزامن والقيود

تنطبق شروط مسبقة صارمة ومتطلبات ترتيب على التنفيذ فيما يتعلق بحالات العتاد والوحدات:

تفاعل

يعكس سلوك الخطأ والانتقال إجراءات المشغل المنقحة، والتي يتم بموجبها اعتراض انتقالات الحالة غير الصالحة بصورة موحدة ([SWS_Can_00441]).

تم إنشاء هذا النص بواسطة ذكاء اصطناعي استناداً إلى مواصفة AUTOSAR CP R20-11.

دالة 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 (المتوفرة عبر Can.h بمعرف الخدمة 0x03) انتقالات الحالة المشغلة برمجياً لآلة حالة وحدة تحكم CAN ([SWS_Can_00230]، AUTOSAR_SWS_CANDriver ص. 35). وتقوم بضبط إعدادات السجلات المتعلقة بالعتاد لإحداث الانتقالات بين حالات وحدة التحكم الأساسية UNINIT، STOPPED، STARTED وSLEEP ([SWS_Can_91010]، AUTOSAR_SWS_CANDriver §7.3 «CAN Controller State Machine»).

الاستخدام والدلالات

يتم الاستدعاء بالمعامل Controller لتحديد وحدة تحكم CAN بالإضافة إلى Transition من النوع Can_ControllerStateType لتحديد انتقال الحالة المطلوب ([SWS_Can_00230]). تم تعريف الخدمة بأنها غير متزامنة وغير قابلة لإعادة الدخول (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.

دليل المنفِّذ قيد الإعداد (التعقيد 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]). يتم التمرير عبر المعامل Controller بدون قيمة مرجعة ([SWS_Can_00231]).

فيما يتعلق بسياق الاستدعاء والتزامن، صُممت الدالة لتكون قابلة لإعادة الدخول (reentrant) وتدعم الاستدعاءات المتعددة (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]).

تم إنشاء هذا النص بواسطة ذكاء اصطناعي ويعمل كملاحظة استخدام تكميلية للمواصفة.

دالة 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 على إعادة تفعيل جميع المقاطعات المسموح بها لوحدة تحكم CAN المحددة عبر المعلمة Controller ([SWS_Can_00232]). ليس لها قيمة إرجاع ويتم توفيرها عبر ملف الرأس Can.h ([SWS_Can_00232]).

فيما يتعلق بسير التنفيذ، تقرأ الدالة رايات التحكم البرمجية (AUTOSAR_SWS_CANDriver ص. 65). إذا تم إلغاء تفعيل مقاطعات وحدة التحكم مسبقاً عدة مرات، فيجب استدعاء Can_EnableControllerInterrupts بنفس عدد المرات قبل التمكين الفعلي (AUTOSAR_SWS_CANDriver ص. 65). تفسير: يُرجح أن المشغل يدير مقاطع الحظر المتداخلة عبر عدادات أو رايات داخلية، بحيث لا يُعاد تفعيل مقاطعات العتاد إلا بعد موازنة تامة لجميع استدعاءات إلغاء التفعيل. سؤال Q-6781f0fc9ad7d221 (مفتوح)

إذا تم استدعاء الدالة قبل تهيئة مشغل CAN بصورة صحيحة، فإنها تبلغ عن الخطأ CAN_E_UNINIT (AUTOSAR_SWS_CANDriver ص. 66). ويُرجح أن يُعامل هذا في سياق المشغل كخطأ تطوير ([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 ولها معرف الخدمة 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). في حالة حدوث حدث إيقاظ على الناقل، يمكن استدعاء CanIf_CheckWakeup أثناء معالجة EcuM_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_Write بشكل متزامن بواسطة الوحدة CanIf لتسليم رسالة CAN إلى مشغل CAN (CanDrv) من أجل إرسالها ([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 على أنها قابلة لإعادة الدخول أو آمنة بالنسبة للخيوط (thread-safe) ([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 · الأصل الألماني

الاستخدام وسياق الاستدعاء

تستدعي وحدة CAN الخاصة بـ AUTOSAR واجهة الاستدعاء الخارجي (Call-out) القابلة للتكوين <LPDU_CalloutName> اختيارياً عند كل استلام لـ 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]). تفسير: إذا أرجع الاستدعاء true، فمن المرجح أن يتم التمرير النظامي لـ L-PDU إلى الطبقات الأعلى. سؤال Q-e96e75e93881c3af (مفتوح)

التزامن والقيود

زُوِّدت الدالة بمعرّف الخدمة 0x20 وحُدِّدت على أنها غير متزامنة (Asynchronous) وغير قابلة لإعادة الدخول (Non Reentrant) ([SWS_Can_00443]). ونظراً لأنها غير قابلة لإعادة الدخول، فلا يجوز إجراء استدعاءات متوازية في نفس السياق.

تم إنشاء هذا النص بواسطة ذكاء اصطناعي وهو مخصص كدليل إرشادي. متطلبات مواصفات 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))، وتحمل معرف الخدمة 0x01، وتُوفر للمجدول عبر ملف الترويسة SchM_Can.h [SWS_Can_00225]. عبر مفاتيح التكوين، يمكن تفعيل الوظيفة أو إلغاء تفعيلها لمعالجة إرسال PDU AUTOSAR SWS CAN Driver §10 «CanMainFunctionWrite».

إذا لم يُستخدم الاستطلاع لعمليات الإرسال في النظام على الإطلاق، فيجب تطبيق Can_MainFunction_Write كتعريف فارغ وفقًا للمواصفة 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) مع معرف الخدمة 0x08 وتُوفر للتحكم في التنفيذ عبر ملف الترويسة SchM_Can.h ([SWS_Can_00226]).

الاستخدام والتهيئة

تنفذ الوظيفة استطلاع إشارات RX عندما يتم ضبط معامل التكوين CAN_RX_PROCESSING على POLLING ([SWS_Can_00226]). في النظام، يمكن تكوين هذه المعالجة لكل وحدة تحكم على حدة ([SWS_Can_00441]). إذا لم يُستخدم الاستطلاع مطلقًا في برنامج تشغيل CAN، فيمكن تعريف Can_MainFunction_Read كـ Macro فارغ (AUTOSAR_SWS_CANDriver ص. 77).

التزامن والقيود

يتم الاستدعاء دوريًا في سياق المجدول وفقًا لفترة المشغل المعلمة (AUTOSAR_SWS_CANDriver ص. 22). تنطبق شروط صارمة على التنفيذ:

تفسير: من المحتمل أن يلزم تحديد الفاصل الزمني المكوّن لاستدعاء المهمة بحيث تنتهي مرحلة المعالجة دائمًا قبل بدء الدورة التالية، نظرًا لأن قابلية إعادة الدخول غير مسموح بها (AUTOSAR_SWS_CANDriver ص. 47). سؤال Q-1f2fa9db14970b12 (مفتوح)

تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على مواصفة AUTOSAR R20-11.

دالة 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 للاستطلاع الدوري لأحداث انقطاع الاتصال بالناقل (Bus-Off) لوحدات تحكم 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 بتطبيق الوظيفة كـ Macro فارغ [SWS_Can_00183].

إذا تم اكتشاف حدث Bus-Off في 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 (مفتوح)

تم إنشاء ملاحظة الاستخدام هذه بواسطة ذكاء اصطناعي وتستند حصريًا إلى مقتطفات مواصفات إصدار 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)، ولا تقبل أي معاملات، ولا تعيد أي قيمة، وتُوفر لمدير الجدولة عبر الترويسة 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_ControllerModeIndication إلى واجهة CAN، استنادًا إلى CanIf ControllerId المجردة ([SWS_Can_00370]).

فيما يتعلق بالتكوين واستخدام الموارد، يمكن تفعيل أو إلغاء تفعيل API Can_MainFunction_Wakeup() لمعالجة أحداث التنبيه (AUTOSAR_SWS_CANDriver ص. 97). وإذا لم يُستخدم أي استطلاع لأحداث التنبيه في وحدة التحكم الإلكترونية على الإطلاق، فيمكن تعريف Can_MainFunction_Wakeup كـ Macro فارغ (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)، معرف الخدمة 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 بشكل غير متزامن عن طريق CanIf_ControllerModeIndication بالحالة الجديدة مثل CAN_CS_STARTED AUTOSAR_SWS_CANInterface ص. 144.

سياق الاستدعاء والشروط الحدية

نظراً لتوفيرها عبر SchM_Can.h وتعريفها كدالة مجدولة (Scheduled Function)، فمن المرجح أن يتم الاستدعاء الدوري بواسطة مجدول BSW. سؤال Q-42edbc2aa591e8d7 (مفتوح) لا يتم تعريف رموز أخطاء محددة أو خطوات تطوير في الحمولة لهذه الدالة.

تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على مواصفات AUTOSAR.

دليل المنفِّذ قيد الإعداد (التعقيد 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_ErrorStateType من Can_GeneralTypes.h حالات الخطأ والتشغيل لوحدة تحكم 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 الخاصة بها القيمة المحددة. وتستخدم التوقيع نفسه أيضاً الدالة ذات المستوى الأعلى CanIf_GetControllerErrorState في واجهة CAN AUTOSAR_SWS_CANInterface ص. 78 «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 بخطأ تطوير [SWS_Can_91007].

تفسير: من المرجح أن المستدعي يجب عليه تخصيص نطاق الذاكرة لـ ErrorStatePtr بمسؤوليته الخاصة، نظراً لأن الواجهة تعامل المؤشر كمعلمة إخراج صرفة وتستبعد المؤشرات الفارغة عبر خطأ تطوير. سؤال Q-5c907c21bcb50893 (مفتوح)

تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على مواصفة AUTOSAR R20-11.

دليل المنفِّذ قيد الإعداد (التعقيد 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 وCan_GetControllerMode غير قابلة لإعادة الدخول [SWS_Can_00230]، [SWS_Can_91014]. عند استدعاء Can_GetControllerMode قبل تهيئة المشغل، يتم الإبلاغ عن خطأ التطوير CAN_E_UNINIT وإرجاع E_NOT_OK [SWS_Can_91016]. وتعد دالة رد النداء CanSM_ControllerModeIndication قابلة لإعادة الدخول لوحدات التحكم المختلفة وتبلغ عن معرف وحدة تحكم غير مكوّن بواسطة CANSM_E_PARAM_CONTROLLER إلى DET [SWS_CanSM_00396]، [SWS_CanSM_00397].

تستند ملاحظة الاستخدام هذه إلى محددات مواصفات مشغل CAN، وواجهة CAN، ومدير حالة CAN في AUTOSAR Classic R20-11.

دليل المنفِّذ قيد الإعداد (التعقيد 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».

نظراً لتصميم التعداد كمجموعة شاملة (Superset)، فليس بالضرورة أن تدعم كل وحدة تحكم 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، يُستخدم هذا النوع كمعامل لدالة رد النداء CanIf_ErrorNotification لتمرير أخطاء وحدة التحكم إلى واجهة CAN AUTOSAR_SWS_CANInterface §8.x «CanIf_ErrorNotification». ومن المرجح أن تتوافق القيمة الممررة مع حالة الخطأ التي حددها العتاد الأساسي AUTOSAR_SWS_CANDriver §7.x «Error Notification». سؤال Q-d23c45dd3b23ec71 (مفتوح)

تم إنشاء هذا النص بواسطة ذكاء اصطناعي وهو مخصص للتوجيه الفني.

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#1be601d5
Content hash
1be601d5
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);

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);

الخدمات

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

Std_ReturnType Can_CheckWakeup (uint8 Controller);

This function disables all interrupts for this CAN controller.

void Can_DisableControllerInterrupts (uint8 Controller);

This function enables all allowed interrupts.

void Can_EnableControllerInterrupts (uint8 Controller);

This service obtains the error state of the CAN controller.

Std_ReturnType Can_GetControllerErrorState (uint8 ControllerId, Can_ErrorStateType* ErrorStatePtr);

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

Std_ReturnType Can_GetControllerMode (uint8 Controller, Can_ControllerStateType* ControllerModePtr);

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);

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);

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); ⚠️

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);

دوال Callout والواجهات المتوقعة

-

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

دورية

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

void Can_MainFunction_BusOff (void);

This function performs the polling of CAN controller mode transitions.

void Can_MainFunction_Mode (void);

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

void Can_MainFunction_Read (void);

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

void Can_MainFunction_Wakeup (void);

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

void Can_MainFunction_Write (void);

الأنواع

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.

Error states of a CAN controller.

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.

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

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