آموزش برنامه نویسی STM32 با پورت USB
![](/wp-content/uploads/2020/07/آموزش-برنامه-نویسی-STM32-با-پورت-USB.jpg)
محتویات
سلام. آموزش برنامه نویسی STM32 با پورت USB را آماده کردیم.
آپلود کد روی STM32 با استفاده از USB
برد توسعه STM32 که دارای میکروکنترلر STM32F103C8 می باشد به لطف معماری ARM Cortex M3 محبوبیت فراوانی پیدا کرده است و از نظر سرعت عمل بالا از جایگاه ویژه ای برخوردار است. همچنین ، از آنجا که می توان با استفاده از Arduino IDE آن را به راحتی برنامه ریزی کرد ، برای بسیاری از علاقمندان و مهندسان بسیار محبوب است.
در آموزش های قبلی ما اصول اولیه برنامه نویسی روی STM32 و همچنین راه اندازی LCD کاراکتری با STM32 را آموختیم. در آموزش های قبلی ما برای برنامه نویسی روی این برد از یک برد FTDI به همراه تغییر جامپر روی برد STM 32 استفاده میکردیم. اگر دقت کنید روی برد STM32 یک درگاه میکرو USB قرار دارد اما غالبا بلا استفاده است. زیرا هنگامی که این برد را میخرید، یک بوت لودر آردوینو همراه آن نیست و در نتیجه هنگام اتصال برد از طریق USB توسط کامپیوتر شناخته نمیشود.
خداروشکر یک بوت لودر آزمایشی به نام Maple Boot وجود دارد که توسط LeafLabs ساخته شده است. این بوت لودر باعث میشود بتوانید به راحتی مانند برد های آردوینو، از طریق USB، کد برنامه خود را روی STM32 بارگذاری کنید.
توضیحات مدار
برای برنامه ریزی برد STM32 Blue Pill به طور مستقیم از طریق درگاه USB ، ابتدا باید لودر بوت Maple را به MCU فلش کنیم. برای این کار باید از یک برد FTDI استفاده کنیم. این برد مانند تصویر زیر به پین Rx و Tx از STM32 وصل شده است.
پین Vcc برد FTDI به پین STM32 5V متصل شده است. GND به GND از STM32 وصل شده است. پین Rx و Tx از برد FTDI به ترتیب به پین A9 و A10 STM32 متصل می شوند.
اطمینان حاصل کنید که جامپر بوت مانند تصویر زیر، در حالت Programming قرار دارد.
قطعات مورد نیاز آموزش
- STM32 – برد توسعه (BluePill) (STM32F103C8T6)
- پروگرامر FTDI
نصب بوت لودر Maple Boot روی برد STM32
پس از برقراری ارتباط فوق، برد FTDI را به رایانه خود متصل کرده و مراحل مربوط به فلش کردن بوت لودر را به STM32 دنبال کنید.
مرحله 1: ما باید باینری های برنامه boot loader (پرونده bin) را از گیت هاب بارگیری کنیم. نسخه های زیادی از این پرونده وجود دارد ، فایل bin برای برد Blue Pill، در فایل دانلودی زیر قرار داده شده است.
مرحله 2: در مرحله بعد باید نرم افزار لودر STM Flash را بارگیری و نصب کنیم تا پرونده .bin که در آن قرار گرفته است را به STM32 فلش کنیم. این نرم افزار نیز در فایل دانلودی زیر قرار داده شده است.
مرحله 3: مطمئن شوید که برد STM32 شما با وجود برد FTDI به رایانه متصل شده و سپس نرم افزار را راه اندازی کنید. نرم افزار به طور خودکار پورت COM متصل را تشخیص میدهد اما برای اطمینان به Device Manager بروید و صحت آن را بررسی کنید.
مرحله 4: دوبار بر روی دکمه Next کلیک کنید و نرم افزار دوباره به طور خودکار جزئیات صفحه را تشخیص داده و مطابق شکل زیر نمایش می دهد. بردی که ما استفاده می کنیم STM32F1 با حافظه فلش 128K است.
مرحله 5: در مرحله بعدی Download to device را انتخاب کرده و پرونده bin را که در مرحله 1 توضیح دادیم را انتخاب کرده و روی Next کلیک کنید.
مرحله 6: نرم افزار برخی از پرونده های مورد نیاز را مطابق شکل زیر بارگیری می کند و سپس روند Flash را آغاز می کند.
مرحله 7: پس از کامل شدن عملیات فلش کردن، صفحه زیر را مشاهده خواهیم کرد. روی Close کلیک کنید و از برنامه خارج شوید. ما برد STM32 را با موفقیت در بوت Arduino فلش کردیم. حال باید آردوینو 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: پس از نصب بسته ، به
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\drivers\win
در آنجا install_drivers.bat و install_STM_COM_drivers.bat را پیدا میکنید.
مرحله 6: روی هر دو فایل .bat کلیک کرده و درایورها را نصب کنید. صفحه نمایش DOS را مطابق شکل زیر مشاهده کرد.
اکنون Arduino IDE برای برنامه نویسی STM32 Blue Pill برنامه توسعه آماده شده است و درایورها نیز نصب شده اند.
برنامه نویسی STM32 Blue Pill به طور مستقیم از طریق درگاه USB
برد FTDI و تمام اتصالات موجود را از STM32 خود جداکنید. فقط کافی است از پورت میکرو USB در برد STM32 استفاده کنید تا مطابق شکل زیر آن را به رایانه متصل کنید. اطمینان حاصل کنید که پین جامپر حالت 0 (حالت عملیاتی) قرار گرفته است. پس از این ، دیگر نیازی نیست که برای بارگذاری و اجرای برنامه ها ، جامپر را تغییر دهیم.
اکنون کامپیوتر شما باید بتوانید برد را شناسایی کنید. در صورت پیش آمدن نصب هرگونه درایور اضافی صبر کنید. سپس وارد قسمت Manager شوید و بررسی کنید که آیا برد STM32 شما مطابق شکل زیر شناسایی شده است. برای ما با نام Maple Mini به COM8 متصل شده است.
در نرم افزار آردوینو به Tools بروید و به پایین بروید تا Generic STM32F103C را مانند تصویر زیر پیدا کنید. سپس اطمینان حاصل کنید که نوع آن از نوع Flash 64k است ، سرعت CPU 72MHz است و روش بارگذاری را به STM32duino Bootloader تغییر دهید. همچنین درگاه COM صحیح را مطابق Device Manager خود انتخاب کنید.
بعد از انجام همه تغییرات ، گوشه سمت راست پایین Arduino IDE را بررسی کنید و باید متونی شبیه به زیر را مشاهده کنید. برد STM32 من به COM8 متصل است اما ممکن است مال شما متفاوت باشد.
اکنون آردوینو IDE آماده برنامه ریزی برد های توسعه قرص آبی STM 32 است. بگذارید برنامه Sample Blink را از Arduino IDE در برد STM32 Blue Pill بارگذاری کنیم تا مطمئن شویم که همه چیز به درستی کار می کند. برنامه مثال را می توان مانند تصویر یافت :
در برنامه نمونه ای که باز می شود ، باید یک تغییر کوچک ایجاد کنیم. به طور پیش فرض این برنامه برای پین PB1 نوشته خواهد شد اما در صفحه ما LED در برد STM32 به PC13 وصل شده است بنابراین تمام PB1 را با PC13 جایگزین کنید. برنامه مثال کامل که اصلاح شده است را نیز می توانید در پایین همین صفحه دریافت کنید.
کد درون عملکرد Loop در زیر نشان داده شده است. همانطور که مشخص است پین PC13 برای 1 ثانیه روشن است و برای 1 ثانیه خاموش. و این عملکرد به صورت پی در پی تکرار میشود.
digitalWrite(PC13, HIGH); // روشن کردن ال ای دی delay(1000); // تاخیر 1 ثانیه digitalWrite(PC13, LOW); // خاموش کردن ال ای دی delay(1000); // تاخیر 1 ثانیه
دکمه بارگذاری را در نرم افزار Arduino فشار دهید. اگر همه چیز را صحیح انجام داده باشید، نباید خطایی دریافت کنید و عملیات بارگذاری باید به طور صحیح پیش برود.
اگر برنامه با موفقیت بارگذاری شد ، باید همانطور که در فیلم زیر نشان داده شده است، چراغ سبز روی برد STM 32 باید هر 1 ثانیه چشمک بزند. اکنون میتوانید از برد STM32 مانند برد های دیگر آردوینو استفاده کنید.
کد کامل :
void setup() { pinMode(PC13, OUTPUT); // تعریف پین به عنوان خروجی } void loop() { digitalWrite(PC13, HIGH); // روشن کردن ال ای دی delay(1000); // تاخیر 1 ثانیه digitalWrite(PC13, LOW); // خاموش کردن ال ای دی delay(1000); // تاخیر 1 ثانیه }
قسمت بعد را هم ببینید : آموزش آنالوگ به دیجیتال در STM32 با کد آردوینو
سلام،برای راه اندازی جایرو Gy_61ADXL335 با stm32 در نرمافزار کیل باید چیکار کنم
ممنون میشم کمکم کنید
سلام عزیز
سوالاتی که با مطالب مرتبط نیستند را در انجمن اعلام کنید
سلام مجدد . من طبق آموزش پیش رفتم اما برنامه فلش برد منو نمیشناسه .
بد شما گفتین که فایل باینری دانلود کنیم اما نگفتید بد از دانلود کجا استفادش کنیم . میشه واضح تر توضیح بدین .
سلام عزیز آموزش را با دقت مطالعه کنید اگر مشکل دارید هنوز میتوانید از دوره آموزش stm32 استفاده کنید.
سلام . برد stm32 من داخل Device manager شناسایی نمیشه میشه یه راهنمایی کنید .
من از طریق نرم افزار keil 5 میخوام به صورت مستقیم مراحل پروگرمینگ انجام بدم .
با سلام و تشکر . چطور برد را به حالت قبلش برگردونیم؟
فایل bin ارجینال stm32f1**c رو هم قرار بدید لطفا
با سلام ممنون از آموزش شما
من تا مرحله 5 پیش رفتم. اما متاسفانه فایل هایی که شما ذکر کردید (درایورها) را نمی توانم پیدا کنم ممنون میشم راهنمایی کنید/
C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\drivers\win
No response from the target, the boot loader can not be started این ارورر رومیده
سلام. بر طبق آموزش پیش برید نباید این مشکل پیش بیاد و من نمیدونم این ارور به چه دلیلی دریافت میشه
ارور میده که بوت مشکل داره وکامپیوترروریست کن اول فکرکردم مشکل ازسیستم خودمه اما روی یک لپ تاپ. دیگه هم امتحان کردم همین ارور روداد .
سلام ،موقع راه اندازی بوت لودر به من ارور میده ومرحله اول رومیره next که میزنم جلونمیره
سلام. ارور رو بفرمایید