ARM, STM32, آموزش, آموزش میکروکنترلر STM32F4, توصیه شده, میکروکنترلر

آموزش میکروکنترلر آرم سری STM32F4 قسمت اول

آموزش میکروکنترلر STM32F4

مجموعه آموزش میکروکنترلر آرم سری STM32F4  مجموعه آموزش کاملی است که جناب اقای ه.مرادمند  در اسفند 95 به عنوان یک فایل آموزشی در اینترنت بصورت رایگان منتشر نموده اند.

سیسوگ با کسب اجازه از ایشون سعی میکنه قسمتهای مهم این آموزش مهم را تحت عنوان بالا به مرور منتشر نماید. با تشکر از زحمات ایشون…

 

این مجموعه آموزشی حاصل گزارش‌هایی است که در حین کار در یک شرکت خصوصی نوشته‌ام. قصد داشتم با تکمیل شدن و بر طرف کردن نقص ها آن را منتشر کنم که با سرعت تغییرات در میکروکنترلرها و کمبود وقت، بهتر است همین مجموعه نیز در دسترس دیگران باشد. این مجموعه آموزشی بیشتر برای میکروکنترلر stm32f429 تاکید دارد اما با تغییر کمی برای سایر میکروکنترلرهای خانواده STM و احتمالا میکروکنترلرهای آرم سایر تولیدکنندگان نیز مفید است. سعی شده است که از کتابخانه‌های HAL استفاده شود تا در طرح‌های آینده مشکلی ایجاد نکند.

 

میکروکنترلرهای آرم شرکت ST

شرکت ST خانواده گسترده‌ای از میکروکنترلرها بر اساس هسته آرم تولید کرده است. هسته‌های مختلف آرم از سری کورتکس (Cortex) و سایر سری‌های آرم در این مجموعه یافت می‌شود. در این نوشتار به بررسی میکروکنترلر stm32f429bit می‌پردازیم که از خانواده کورتکس 4M و 32 بیتی است. دارای واحد محاسبات اعشاری FPU، شتاب دهنده زمان-واقعی با انتظار صفر برای اجرا از روی فلش است. فرکانس کاری این میکروکنترلر تا 180 مگاهرتز می‌رسد. دارای واحد نگهبانی از حافظه MPU است و از نظر سرعت پردازش به 255 DMIPS/1.25 DMIPS/MHz(Dhrystone 2.1)  می‌رسد. این میکروکنترلر دارای 2 مگابایت حافظه فلش (برنامه) و 256 کیلوبایت حافظه رم است.

رابط موازی LCD با حالت‌های 8080/6800 و کنترل‌کننده گرافیک با امکان گرافیک تا XGA است. به این ترتیب انواع LCD‌های TFT بدون نیاز به مدار دیگری قابل راه‌اندازی است. شتاب دهنده کروم آرت برای تولید گرافیک بهتر در این میکروکنترلر وجود دارد. رابط موازی دوربین 8 تا 14 بیت با قابلیت انتقال تا 54 مگابایت در ثانیه در این میکروکنترلر تعبیه شده است.

تعدادی از امکانات دیگر این میکروکنترلر به شکل خلاصه به این ترتیب است:

  • 3 عدد تبدیل کننده آنالوگ به دیجیتال 12 بیتی تا 4/2 مگا سمبل در ثانیه که اگر در حالت در هم‌گذاری شده سه تایی کار کنند به نرخ نمونه برداری 2/7 مگاسمبل در ثانیه می‌رسند.
  • دو عدد تبدیل گر دیجیتال به آنالوگ 12 بیتی.
  • تا 17 تایمر مختلف 16 و 32 بیتی تا سرعت 180 مگاهرتز و امکانات مختلف
  • 168 پایه با امکان وقفه تا سرعت 90 مگاهرتز
  • امکانات ارتباطی مختلف مانند i2c، سریال، SPI، CAN، ارتباط سریال صدا SAI
  • امکانات ارتباطی پیشرفته مانند درگاه USB سرعت کامل و پرسرعت (ارتباط USB پرسرعت تا سرعت 480 مگابیت در ثانیه پشتیبانی می‌کند.) با لایه PHY درون میکروکنترلر، MAC اترنت 10/100 با DMA اختصاصی
  • ساعت زمان واقعی

شرکت ST اطلاعات این میکروکنترلر را در سندهای مختلفی ارائه داده است. مهم‌ترین سندها برگه اطلاعات، دستنامه مرجع (RM0090) است. وسایل جانبی مختلف میکروکنترلر مانند سریال هر کدام سندهای مختلفی برای راهنمایی و توضیحات بیشتر دارند که از سایت این شرکت قابل دسترسی است. برای کتابخانه‌های ارائه شده نیز سند دستنامه کاربر (UM1725) موجود است.

 

ساختار پروژه‌های میکروکنترلر آرم در نرم‌افزار Keil

پروژه هایی که در نرم افزار Keil نوشته می‌شود دارای چند قسمت اساسی است. اولین قسمت تابع main کاربر است که حتما باید در فایلی قرار داشته باشد. همواره چند فایل مهم در یک پروژه وجود دارند که برخی ضروری هستند و برخی نیز بسته به پروژه‌های مختلف ممکن است استفاده شوند یا نه. برای مثال یک نمونه پروژه در زیر دیده می‌شود که شامل پوشه‌های مختلفی است. نام پوشه‌ها و تعداد آن‌ها دلخواه است ولی بهتر است فایل‌های پروژه خود را دسته بندی کنید و در پوشه‌هایی با نام های معنی دار قرار دهید. برای مثال در شکل زیر فایل‌های مربوط به خود کاربر در پوشه ی Application/User قرار گرفته‌اند.

 

ساختار پروژه‌های میکروکنترلر آرم در نرم‌افزار Kail

مهم‌ترین فایل‌هایی که باید به آن‌ها دقت کنید در شکل زیر مشخص شده‌اند:

 

فایل های مهم یک پروژه

 

فایل main.c که فایل اصلی برنامه شماست باید شامل تابع ()main باشد. فایل stm32f4xx_it.c شامل روال (روتین) های وقفه پروژه شماست. وقفه‌های مختلف که استفاده می‌کنید در صورت رخ دادن، تابع مربوط به خود را در این فایل اجرا می‌کنند. نام تابع رویداد وقفه باید همانند نامی باشد که برای آن وقفه در فایل اسمبلی  startup_stm32f429xx.s تعریف شده است. برای مثال تابع وقفه تایمر به شکل زیر تعریف شده است.

 

 

اگر نگاهی به فایل  STartup_STm32f429xx.s بیندازید وقفه بالا را به این شکل می بینید که نام آدرس آن با نام تابع روال وقفه یکی است.

 

نام تابع روال وقفه

 

میکروکنترلر پس از بازنشانی تابع  startup_stm32f429xx.s را اجرا می‌کند. اولین جایی که اجرا می‌کند تابع SystemInit است که در فایل system_stm32f4xx.c تعریف شده است.

 

تابع SySTemInit

 

در این فایل به تنظیم سیستم میکروکنترلر می‌پردازد، تنظیمات FPU، مکان جدول بردار وقفه و حافظه خارجی را پیکربندی می‌کند. سپس تابع main اجرا می‌شود.

کتابخانه لایه جدا سازی سخت‌افزار که در آینده به تفصیل بررسی می‌شود حاوی راه اندازهای قسمت های مختلف میکروکنترلر است که توسط شرکت سازنده ی آن، ST، ارائه شده است. این فایل ها در پوشه Drivers/STM32F4xx_HAL_Driver قرار دارد. هر قسمتی از میکروکنترلر که در پروژه شما استفاده می‌شود یک یا چند کتابخانه مرتبط دارد که باید فایل c آن در این پوشه اضافه شود. مسیر فایل‌های سرآیند نیز باید در تنظیمات پروژه وارد شود تا در هنگام کامپایل کردن، کامپایلر آن‌ها را نیز پیدا کند. معمولا برای استفاده از این کتابخانه‌ها، لازم است که در ابتدای فایل main خود  #include “stm32f4xx_hal.h” را اضافه کنید.

 

فایل های لایه جدا سازی سخت افزار

 

 

در اکثر پروژه‌ها چند فایل از این لایه ضروری هستند که در شکل بالا مشخص شده‌اند. فایل مربوط به gpio ضروری نیست و همان‌طور که از نامش پیداست برای کار کردن با پایه‌‌های ورودی/خروجی میکروکنترلر می‌باشد. فایل cortex به تنظیمات هسته و فایل rcc به تنظیمات ساعت میکروکنترلر مرتبط است.

 نکته: همواره از راه اندازهای به روز شرکت ST که در نرم افزار cubeMX ارائه می‌شود استفاده کنید. لزوما نباید با نرم افزار cubeMX کار کنید بلکه می توانید پوشه حاوی راه اندازهای HAL را از مسیر این نرم افزار کپی کنید و در پروژه خود استفاده کنید. این پوشه معمولا در مسیر زیر قرار دارد. 

 

 

بسیاری از وسایل جانبی در راه اندازهای قدیمی به درستی کار نمی‌کنند. از آن جمله می توان به کارت SD، ارتباط USB، اترنت اشاره کرد.

یکی از فایل های مهم دیگر پروژه، که پس از کامپایل قابل مشاهده است، فایل تنظیمات کتابخانه LGS به نام stm32f4xx_hal_conf.h است. این فایل سرآیند در ابتدای سرآیند اصلی LGS به پروژه اضافه می‌شود. همواره باید بررسی کنید که تعریف های وسایل جانبی مختلف میکروکنترلر شما در این فایل به پروژه اضافه شده است. به کمک این تعریف ها، کامپایلر فایل های سرآیند وسایل جانبی مختلف را اضافه می‌کند. در غیر این صورت خطای نیافتن سرآیند اتفاق می افتد. همان‌طور که در زیر فایل تنظیمات LGS را می‌بینید، تعریف‌های مورد نیاز از حالت کامنت خارج شده‌اند.

 

 

در قسمت دوم آموزش میکروکنترلر آرم سری STM32F4 به پروژه‌های انجام شده روی برد زتا می‎‌پردازیم. با سیسوگ همراه باشید.

 

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

12 دیدگاه در “آموزش میکروکنترلر آرم سری STM32F4 قسمت اول

  1. Avatar for hamed safari hamed safari گفت:

    وقت بخیر
    من میخوام stm32f429zit6u رو توی آلتیوم ترک کشی کنم کدوم پایه ها مخصوص پروگرامشه؟

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام از توی دیتاشیتش میتونید پایه های مربوطه رو پیدا کنید حتی از توی stmcube هم این امکان وجود داره

  2. Avatar for سعید سعید گفت:

    سلام.میشه لینک آموزش های ایشون رو قرار بدید؟هر چی گشتم چیزی ‍‍بیدا نکردم

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      فایل وردی هست که برامون ارسال کردند 🙂

  3. Avatar for پویا پویا گفت:

    سلام
    خیلی خوبه آموزشتون و تشکر میکنم
    فقط کاش وقتی واژه‌هارو فارسی میکردید (که خیلی کار خوبی هم هست) معادل انگلیسیش رو هم مینوشتید.
    برای ماها که از اول با انگلیسیش کار کردن، کلماتی مثل پیکر بندی یا توابع وقفه یا مخصوصا “سرآیند” (که این یکی رو هنوزم نمیدونم یعنی چی) خیلی گنگه.

    1. Avatar photo electronic girl گفت:

      سلام دوست عزیز
      خواهش میکینم
      بله حق با شماست… نویسنده تمامی کلمات را با معدل فارسی نوشته اند که گاهاً این کلمات، ما را نیز به چالش می‌کشند … سعی میکنیم در قسمت های بعد معادل انگلیسی را نیز اضافه کنیم.
      سرآیند به عنوان ترجمه Header استفاده شده است.
      موفق باشید.

  4. Avatar for مهدی مهدی گفت:

    تو قسمت اول باید ساخت یک یک پروژه مثلا با کیل را از صفر تا 100
    تعریف می کردید بعد میرفتید سراغ معرفی قسمت های مختلف
    الان خیلی گنک شده قسمت اولتون
    لطفا توضیح بدهید چطور می توانیم آرم سری STM32F4 را بدون استفاده از STM32CubeMX راه اندازی کنیم
    مثلا یک led چشمک بزند همین بدون شاخو برگ اضافی
    بعد برید شاخو برگش بدید .

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز – بله پیشنهاد خوبیه ؛ انشالله پستی در این خصوص منتشر میکنیم

  5. Avatar for سعید سعید گفت:

    سلام
    در اینجا در مورد رابط موازی LCD با حالت‌های 8080/6800 و کنترل‌کننده گرافیک اشاره کردین ، اگه مقدوره در مورد LCD های صنعتی و نحوه انتخاب بشون و درایور های موجود هم پست کار بکنین
    با تشکر

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      منظور شما رو از LCD های صنعتی متوجه نشدم ؛ غالبا LCD ها پارامتر هایی دارند که کاربر با توجه به نیاز خودش LCD مورد نظرش رو انتخاب میکنه ، یکی از این پارامتر ها کنترلر و نوع ارتباط اون هستش
      سعی میکنیم در آینده به این موضوع نیز بپرداریم

  6. Avatar for reza reza گفت:

    سلام
    ببخشید آموزشی که فرمودید ایشون منتشر کردند, از کجا میتونم دانلود یا تهیه کنم؟
    با تشکر

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام و درود ایشون لطف کردند و آموزش رو به صورت فایل word در اختیار ما قرار دادند ، انشالله به زودی همه رو توی سیسوگ منتشر خواهیم کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *