میکروکنترلر STM چیست؟ برنامه نویسی STM32
محتویات
- آموزش شروع کار با STM32
- معرفی برد STM32 (یا Blue Pill)
- مشخصات STM32F103C8T6
- جزئیات پین های STM32
- آموزش آپلود کد روی برد STM32 Blue Pill
- توضیحات مدار پروژه چشمک زن با STM32
- قطعات مورد نیاز
- برنامه نویسی SMT32 از طریق Micro USB بدون سریال
- آماده سازی آردوینو برای برنامه نویسی STM32
- بارگذاری برنامه چشمک زن LED روی STM32
- فیلم عملکرد پروژه LED چشمک زن
سلام. شروع کار با STM32 + آموزش پروژه LED چشمک زن را آماده کردیم.
آموزش شروع کار با STM32
آردوینو برای خیلی ها اولین خاطره از برنامه نویسی الکترونیک به حساب می آید. اما با ادامه دادن کار با Arduino متوجه میشویم با یک CPU هشت بیتی و یک کلاک آهسته به اندازه کافی برای پروژه ها مناسب نیست. خداروشکر برد های توسعه جدید STM32F103C8T6 STM32 که به قرص آبی مشهور هستند با استفاده از پردازنده 32 بیتی و معماری ARM Cortex M3 هستند میتوانند مشکل ما را حل کنند. و همچنین نکته مثبت دیگر این است که میتوانیم با نرم افزار Arduino، IAR و Keil روی این برد های STM32 برنامه نویسی کنیم. بنابراین در این آموزش با STM 32 آشنا میشویم تا اصول اولیه آن را بدانیم و سپس چراغ روی برد آن را با Arduino IDE چشمک زن میکنیم.
معرفی برد STM32 (یا Blue Pill)
STM32 a.k.a Blue Pill یک برد توسعه برای میکروکنترلر ARM Cortex M3 است. به نظر می رسد بسیار شبیه Arduino Nano است اما در داخل کاملا متفاوت است.
این برد ها در مقایسه با برد های رسمی آردوینو بسیار ارزان هستند. میکروکنترلر روی این برد های متن باز، STM32F103C8T6 از STMicroelectronic است. جدا از میکروکنترلر، این برد دارای دو نوسان ساز کریستالی است. یک کریستال 8 مگا هرتز و دیگری کریستال 32 کیلو مهرتزی است که میتوان از آن برای یک زمان واقعی RTC استفاده کرد.
از آنجا که MCU با 3.3 ولت کار می کند ، این برد همچنین یک تنظیم کننده ولتاژ 5 ولت به 3.3 ولت برای تغذیه MCU دارد. MCU در 3.3 ولت کار می کند ، بیشتر پین های GPIO آن 5 ولت تحمل دارند. پین MCU به طور مرتب بیرون کشیده شده و به عنوان پین هدر برچسب گذاری شده اند. همچنین دو ال ای دی روی برد وجود دارد ، یکی (رنگ قرمز) که نشانگر قدرت است و دیگری (رنگ سبز) به پین PC13 GPIO متصل است. همچنین دارای دو پین هدر است که می تواند برای جابجایی حالت بوت MCU بین حالت برنامه نویسی و حالت عملیاتی استفاده شود، ما بعدا در این آموزش اطلاعات بیشتری در مورد اینها کسب خواهیم کرد.
اکنون کمتر کسی ممکن است تعجب نکند که چرا این برد به عنوان “قرص آبی = Blue Pill” خوانده می شود، واقعا من هم نمی دانم. ممکن است از آنجا که تخته به رنگ آبی است و می تواند عملکردی پیشرفته به پروژه های شما بدهد با این نام عرضه شده است.
مشخصات STM32F103C8T6
میکروکنترلر ARM Cortex M3 STM32F103C8 در برد قرص آبی استفاده می شود. برخلاف نام “قرص آبی”، نام میکروکنترلر STM32F103C8T6 در پشت دارای معنی است و این نام پیچیده حاصل کوبیدن دست روی کیبورد نیست !
- STM » مخفف نام سازندگان STMicroelectronic است.
- 32 » مخفف معماری 32 بیتی ARM است.
- F103 » نشان می دهد که معماری ARM Cortex M3 است.
- C » دارای 48 پین
- 8 » حافظه فلش 64KB
- T » نوع بسته بندی LQFP است.
- 6 » دمای عملیاتی -40°C تا +85°C
حال اجازه دهید مشخصات این میکروکنترلر را بررسی کنیم.
- معماری: 32 بیتی ARM Cortex M3
- ولتاژ عملیاتی: 2.7V تا 3.6V
- فرکانس CPU (پردازنده): 72 مگاهرتز
- GPIO پین : 37
- PWM پین : 12
- پین های ورودی آنالوگ: 10 (12 بیتی)
- ارتباط USART: سه
- ارتباط I2C: دو
- ارتباط SPI: دو
- ارتباط Can 2.0 : یک
- تایمر ها: 3 (16 بیتی) ، 1 (PWM)
- حافظه فلش: 64KB
- RAM: بیست کیلو بایت
اگر می خواهید در مورد مشخصات فنی میکروکنترلر اطلاعات بیشتری کسب کنید ، می توانید به دیتاشیت آن مراجعه کنید.
جزئیات پین های STM32
پین های برد قرص آبی STM32 در زیر نشان داده شده است. همانطور که می بینید توضیحات هر پین در روبروی آن وجود دارد. نام ها نیز شبیه برد های آردوینو است. G برای مشخص کردن پین زمین مورد استفاده قرار می گیرد ، از خروجی 3.3 ولت 3.3 ولت تنظیم شده می توان استفاده کرد و از پین 5 ولت می توان برای تغذیه برذ استفاده کرد یا در صورت استفاده از میکرو USB از 5V استفاده کرد. چراغ داخلی به پین PC13 میکروکنترلر متصل می شود.
بر خلاف تابلوهای Arduino ، برد توسعه STM32 باید با استفاده از سیم های بوت 1 و بوت 0 ، به صورت دستی با جامپر وایر تنظیم شود. وضعیت بوت 1 معمولاً مختل نیست. اما بوت 0 باید به عنوان 3.3 ولت برای حالت برنامه نویسی تنظیم شود و برای حالت عملی در زمین تنظیم شود.
آموزش آپلود کد روی برد STM32 Blue Pill
STM32 میکروکنترلر دیگری است که خانواده STMicroelectronic را تشکیل می دهد. بنابراین همه روشهای موجود برای برنامه ریزی تراشه ARM می تواند برای صفحه STM32 نیز استفاده شود. یکی از IDE های معروف و متداول Keil ARM MDK است و جدا از آن می توانیم از IAR ، Atollic TrueStudio ، MicroC Pro ARM ، Crossworks ARM ، Ride 7 ، PlatformIO + STM32 و … نیز استفاده کنیم.
اما آنچه این تابلو را بسیار محبوب کرده است ، توانایی برنامه نویسی آن با Arduino IDE است. به این ترتیب مردم می توانند با نرم افزار آردوینو STM32 را برنامه نویسی کنند و پروژه های خود را بسازند. همانطور که میدانید آردوینو زبانی ساده اما قابل انعطاف است. اکثر مردم با زبان Arduino و کتابخانه های آن آشنا هستند. در این آموزش ما برای شروع با استفاده از Arduino IDE، برد STM32 را برنامه نویسی خواهیم کرد. در پروژه ها و آموزش های بعدی از کیل و … استفاده خواهیم کرد.
توضیحات مدار پروژه چشمک زن با STM32
برای برنامه ریزی برد STM32 Blue Pill به طور مستقیم از Arduino IDE باید از یک صفحه سریال FTDI استفاده کنیم. این برد مانند تصویر زیر به پین Rx و Tx برد STM32 وصل شده است.
پین Vcc برد FTDI به پین STM32 5V متصل شده است. GND به GND از STM32 وصل شده است. پین Rx و Tx از برد FTDI به ترتیب به پین A9 و A10 STM32 متصل می شوند.
قطعات مورد نیاز
- STM32 -برد توسعه (BluePill) (STM32F103C8T6)
- پروگرامر FTDI
برنامه نویسی SMT32 از طریق Micro USB بدون سریال
حال ممکن است بخواهید بدانید که چرا ما از پورت میکرو USB برای برنامه ریزی برد STM درست مثل برد های Arduino استفاده نمی کنیم. در واقع ما می توانیم اما برای این آموزش ما انتخاب نکردیم. برد توسعه STM32 Blue Pill هنگام خرید ، با بوت لودر همراه نیست تا سازگار با آردوینو IDE باشد.
آماده سازی آردوینو برای برنامه نویسی STM32
مراحل زیر را برای پیکربندی Arduino IDE برای برنامه نویسی برد توسعه STM 32 دنبال کنید.
مرحله 1: اگر هنوز Arduino IDE را نصب نکرده اید ، آن را از لینک مقابل دانلود و نصب کنید. دانلود نرم افزار آردوینو
مرحله 2: بعد از نصب آردوینو IDE بسته های مورد نیاز برای برد STM32 را باز کرده و بارگیری کنید. برای این کار به File -> Preferences بروید.
مرحله 3: با کلیک بر روی Preferences ، پنجره زیر نشان داده میشود. در کادر پایین صفحه لینک زیر را قرار دهید.
http://dan.drown.org/stm32duino/package_STM32duino_index.json
و OK را فشار دهید.
مرحله 4: حالا به Tools -> Boards -> Board Managerبروید. “STM32F1” را جستجو کرده و بسته ای را که ظاهر می شود نصب کنید.
مرحله 5: به ابزارها بروید و Generic STM32F103C را مانند تصویر زیر پیدا کنید. سپس اطمینان حاصل کنید که نوع آن از نوع 64kFlah است ، سرعت CPU 72MHz است و روش بارگذاری را به Serial تغییر دهید.
مرحله 6: حالا ، FTDI خود را به رایانه متصل کنید و در Device Manager بررسی کنید که برد به کدام درگاه COM متصل است. سپس در Tools-> Port همان شماره پورت را انتخاب کنید.
مرحله 7: پس از ایجاد همه تغییرات ، گوشه سمت راست پایین Arduino IDE را بررسی کنید و باید متنی مانند تصویر زیر را مشاهده کنید. توجه کنید برای تصویر زیر درگاه COM 7 انتخاب شده است و میتواند برای شما متفاوت باشد.
اکنون آردوینو IDE آماده برنامه نویسی روی برد توسعه قرص آبی STM 32 است.
بارگذاری برنامه چشمک زن LED روی STM32
بگذارید برنامه ساده ال ای دی چشمک زن را روی برد STM32 با استفاده از آردوینو بارگذاری کنیم تا بدانیم که همه چیز به خوبی انجام شده است.
در برنامه ای که باز میشود، باید یک تغییر کوچک بدهیم. به طور پیشفرض این برنامه برای پین PB1 نوشته شده است. اما در برد ما LED به پین PC13 متصل است. بنابراین تمام PB1 ها را باید با PC13 جایگزین کنیم. همچنین میتوانید از برنامه اصلاح شده که در پایین صفحه قرار داده شده است استفاده کنید.
کد درون عملکرد Loop در زیر نشان داده شده است. همانطور که مشخص است پین PC13 برای 1 ثانیه روشن است و برای 1 ثانیه خاموش. و این عملکرد به صورت پی در پی تکرار میشود.
digitalWrite(PC13, HIGH); // روشن کردن ال ای دی delay(1000); // تاخیر 1 ثانیه digitalWrite(PC13, LOW); // خاموش کردن ال ای دی delay(1000); // تاخیر 1 ثانیه
همانطور که قبلا گفته شد، برد STM32 قبل از آپلود برنامه باید در حالت برنامه نویسی قرار بگیرد. برای اینکار مانند تصویر زیر عمل کنید. برد بالایی در حالت عملی قرار دارد و برد پایین در حالت برنامه نویسی.
پس از اطمینان در مورد قرار گیری جامپر در حالت برنامه نویسی، دکمه ریست را فشار دهید. به محض فشردن دکمه، برد وارد حالت برنامه نویسی شده و چراغ سبز خاموش میشود. این نشان میدهد که برد STM 32 آماده دریافت کد است. دکمه آپلود در نرم افزار Arduino را فشار دهید و منتظر بمانید تا برنامه روی برد بارگذاری شود. اگر همه چیز درست انجام شده باشد نباید خطایی دریافت کنید.
فیلم عملکرد پروژه LED چشمک زن
اگر برنامه با موفقیت بارگذاری شده باشد شما باید مشاهده کنید که ال ای دی روی صفحه هر 1 ثانیه چشمک میزند. شما میتوانید به سادگی با تغییر کد این میزان را به دلخواه ویرایش کنید. پس از بارگذاری کد، باید بوت را به حالت عملی تغییر دهید. بدین صورت دفعه بعد که برد به تغذیه متصل شود به صورت خودکار چشمک زن شروع به کار میکند.
کد کامل :
void setup() { pinMode(PC13, OUTPUT); // تعریف پین به عنوان خروجی } void loop() { digitalWrite(PC13, HIGH); // روشن کردن ال ای دی delay(1000); // تاخیر 1 ثانیه digitalWrite(PC13, LOW); // خاموش کردن ال ای دی delay(1000); // تاخیر 1 ثانیه }
قسمت بعد را هم ببینید : آموزش اتصال LCD کاراکتری به STM32 با آردوینو
با سلام
با استفاده از پروگرامر mini ST_link V2 هم میشه برد رو پروگرام کرد؟
سلام استاد رحیمی آیا می شود مثلاً تمامی کد های که در اردوینو uno هست. درون این برد ریخت ؟؟
سلام عزیز
همه کد ها نه اما اکثر کد ها را با کمی تغییر میشود
اقا سلام عرض کردم من اگر این آموزش شما رو دانلود کنم و کامل یاد بگیرم بعد میتونم تو کیل هم برنامه بنویسم به جز آردوینو؟
یه سوال دیگه داشتم الان تو این ویدئو آموزشی که در آردوینو و محیط برنامه نویسی آردیونو هست به زبان c++ برنامه مینویسید رو stm32 یا به زبان arm هست؟
سلام عزیز
دوره آموزش STM32 ما در آردوینو هست به کیل ارتباطی ندارد. arm یک زبان نیست معماری stm32 هست. برنامه ها در دوره STM32 به زبان آردوینو برپایه C++ هست.
سلام مهندس ممنون بابت آموزش خوبتون
و یک سوال برام پیش اومده آیا برد stm با کتابخانه های آردوینو سازگاری داره مثل کتابخانه software serial ؟؟؟
سلام
آیا میشه هدر برد خودم رو به آردینو تبدیل کنم ؟
سلام عزیز، چه نوع هدر بوردی دارید
با سلام
مطلبتون خیلی عالی و ساده و روان بود و مشکل منو حل کرد . ممنون از سایت خوبتون
فقط یک نکته که در عمل باهاش مواجه شدم و لازم هست بگم اینکه قبل از پروگرام کردن برد باید جامپر بوت صفر رو به حالت 1 برد و پس از پروگرام کردن به حالت اول برگردوند و برد رو ریست کرد تا برنامه اجرا شود
با آرزوی موفقیت برای شما
سلام جناب. خوشحالم که از مطالب راضی بودین. ممنونم از توجه و کمکتون