نیرابلاگسیستم های نهفته

راه‌اندازی پروتکل ارتباطی CAN با ARMSTM32

مقدمه

شبکه کنترلر منطقه ای (Controller Area Network) یا به اختصار CAN، یک پروتکل ارتباط سریال چندگانه است که به طور گسترده برای تبادل اطلاعات بین دستگاه های مختلف در سیستم های تعبیه شده استفاده می شود. این پروتکل به دلیل ویژگی های برجسته ای مانند قابلیت اطمینان بالا، کارایی، و مقرون به صرفه بودن، به طور فزاینده ای محبوب شده است. همچنین این پروتکل را می‌توان با میکروکنترلر ARMSTM32 راه‌اندازی کرد.

CAN  به طور خاص برای کاربردهایی طراحی شده است که در آنها نیاز به اشتراک گذاری داده ها بین چندین گره با سرعت بالا و در زمان واقعی وجود دارد. این پروتکل به طور گسترده در صنایع مختلف از جمله خودروسازی، اتوماسیون صنعتی و تجهیزات پزشکی استفاده می شود.

مزایای استفاده از باس  CAN

استفاده از باس CAN در مقایسه با سایر پروتکل های ارتباطی سریالی، مزایای متعددی را به همراه دارد، از جمله:

  • قابلیت اطمینان بالا: CAN از یک روش رمزگذاری دیفرانسیلی برای انتقال داده ها استفاده می کند که به آن مقاومت بالایی در برابر نویز و تداخل می دهد. این امر CAN را برای کاربردهای حیاتی که در آنها قابلیت اطمینان بالا ضروری است، ایده آل می کند.
  • کارایی: CAN از یک ساختار پیام مبتنی بر اولویت برای انتقال داده ها استفاده می کند که به آن اجازه می دهد تا به طور کارآمد از پهنای باند استفاده کند. این امر CAN را برای کاربردهایی که در آنها نیاز به تبادل سریع داده ها وجود دارد، مناسب می کند.
  • مقرون به صرفه بودن: CAN از نظر سخت افزاری و نرم افزاری نسبتاً ساده است که آن را به یک راه حل مقرون به صرفه برای تبادل داده ها تبدیل می کند.
  • سهولت استفاده: CAN از نظر طراحی و پیاده سازی نسبتاً ساده است که آن را به یک انتخاب محبوب برای طراحان سیستم های تعبیه شده تبدیل می کند.

آموزش ویدیویی این مبحث را در مدرسه آنلاین نیراسیستم مشاهده نمایید. 

 

راه اندازی CAN با STM32

STM32  یک خانواده محبوب از میکروکنترلرها است که از CAN به عنوان یک پروتکل ارتباطی داخلی پشتیبانی می کند. این امر راه اندازی CAN با STM32 را ساده و مقرون به صرفه می کند.

راه‌اندازی پروتکل ارتباطی CAN با ARMSTM32
راه‌اندازی پروتکل ارتباطی CAN با ARMSTM32

جهت خرید برد آموزشی ARMSTM32 می‌توانید به فروشگاه نیراشاپ مراجعه نمایید.

الزامات سخت افزاری

برای راه اندازی CAN با STM32، به موارد زیر نیاز دارید:

  • برد میکروکنترلر STM32
  • ترانسیور CAN
  • مقاومت های کششی
  • سیم کشی
پیکربندی لوازم جانبی CAN (HCLK، GPIO، رجیسترهای CAN)

برای پیکربندی CAN با STM32، باید مراحل زیر را انجام دهید:

  1. HCLK را برای CAN فعال کنید. HCLK یک سیگنال کلاک با فرکانس بالا است که برای CAN ضروری است.
  2. پین های GPIO را برای سیگنال های CAN TX و CAN RX پیکربندی کنید. این پین ها برای ارسال و دریافت داده های CAN استفاده می شوند.
  3. رجیسترهای CAN را پیکربندی کنید. رجیسترهای CAN برای تنظیم پارامترهای مختلف CAN مانند نرخ بیت و شناسه گره استفاده می شوند.

ساختار کد برای ارتباط CAN (ایجاد، ارسال پیام، دریافت)

برای ایجاد، ارسال و دریافت پیام های CAN با STM32، باید از توابع API CAN ارائه شده توسط کتابخانه استاندارد محیط توسعه STM32 استفاده کنید.

راه‌اندازی پروتکل ارتباطی CAN با ARMSTM32
راه‌اندازی پروتکل ارتباطی CAN با ARMSTM32

ارسال و دریافت پیام های CAN

پیام های CAN از سه بخش اصلی تشکیل شده اند:

  • شناسایی کننده: شناسه کننده یک عدد ۱۱ بیتی است که برای شناسایی نوع پیام استفاده می شود.
  • کد طول داده: کد طول داده یک عدد ۴ بیتی است که تعداد بایت های داده موجود در پیام را نشان می دهد.
  • بایت های داده: بایت های داده حاوی داده های واقعی هستند که توسط پیام منتقل می شوند.

پیاده سازی ارسال پیام CAN با نمونه های کد

در اینجا یک نمونه کد برای ارسال پیام CAN با STM32 آورده شده است:

#include “stm32f4xx_hal.h”

void sendCANMessage(uint32_t id, uint8_t data[], uint8_t len) {

  CAN_TxMessageTypeDef txMessage;

  txMessage.StdId = id;

  txMessage.DLC = len;

  txMessage.Data[0] = data[0];

  txMessage.

}

پیاده سازی دریافت پیام CAN با نمونه های کد

در اینجا یک نمونه کد برای دریافت پیام CAN با STM32 آورده شده است:

#include “stm32f4xx_hal.h”

void receiveCANMessage(CAN_RxTypeDef *rxMessage) {

  if (rxMessage.RxId == MY_CAN_ID) {

    // Process the received data

    for (int i = 0; i < rxMessage.DLC; i++) {

      // Do something with the data in rxMessage.Data[i]

    }

  }

}

اشکال زدایی و عیب یابی ارتباط  CAN

برخی از خطاهای رایج ارتباط باس CAN عبارتند از:

  • خطاهای فریم: این خطاها زمانی رخ می دهند که ساختار فریم پیام CAN نامعتبر باشد.
  • خطاهای بیت: این خطاها زمانی رخ می دهند که یک یا چند بیت در پیام CAN معیوب باشند.
  • خطاهای CRC: این خطاها زمانی رخ می دهند که CRC پیام CAN با CRC محاسبه شده مطابقت نداشته باشد.
  • خطاهای از دست دادن پیام: این خطاها زمانی رخ می دهند که یک پیام CAN در شبکه گم شود.

برخی از تکنیک های رایج برای اشکال زدایی مشکلات ارتباط CAN عبارتند از:

  • استفاده از یک اسکوپ برای نظارت بر سیگنال های CAN TX و CAN RX.
  • استفاده از یک تحلیلگر CAN برای ضبط و تجزیه و تحلیل ترافیک CAN.
  • استفاده از شبیه ساز CAN برای آزمایش پیاده سازی CAN خود.

 

نتیجه گیری

CAN  یک پروتکل ارتباطی قدرتمند و کارآمد است که برای طیف گسترده ای از برنامه های سیستم های تعبیه شده ایده آل است. با استفاده از STM32، راه اندازی و استفاده از CAN ساده و مقرون به صرفه است. برای آشنایی بیشتر با سیستم‌های نهفته می‌توانید به نیرابلاگ مراجعه نمایید.

امیدوارم این راهنما جامع و مفید باشد!

نوشته های مشابه

دکمه بازگشت به بالا