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

آموزش میکروکنترلر آرم سری 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 به پروژه‌های انجام شده روی برد زتا می‎‌پردازیم. با سیسوگ همراه باشید.

 

حمایت از ه. مرادمند

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

12 دیدگاه

  • Hamed Safari
    hamed safari
    ۳۰ بهمن ۱۴۰۰

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

    • Zeus ‌
      Zeus ‌
      ۲۳ فروردین ۱۴۰۱

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

  • سعید
    ۱۴ بهمن ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۱۷ بهمن ۱۳۹۸

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

  • پویا
    ۱۷ شهریور ۱۳۹۸

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

    • Nasim Hematian
      electronic girl
      ۱۷ شهریور ۱۳۹۸

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

  • مهدی
    ۲۵ خرداد ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۲۶ خرداد ۱۳۹۸

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

  • سعید
    ۱۰ دی ۱۳۹۷

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

    • Zeus ‌
      زئوس Zeus
      ۱۲ دی ۱۳۹۷

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

  • reza
    ۵ دی ۱۳۹۷

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

    • Zeus ‌
      زئوس Zeus
      ۵ دی ۱۳۹۷

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 11 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک