نحوه برنامه ریزی برد STM32F103C8T6 Blue Pill با Arduino IDE
مسعود رادپور – برد STM32F103C8T6 Blue Pill ، یک برد توسعه برای میکروکنترلر ARM Cortex M3 است. به نظر می رسد بسیار شبیه به آردوینو نانو است، اما دارای ویژگی های فنی بسیار بیشتری است. در این مقاله نحوه راه اندازی STM32F103C8T6 با Arduino IDE و نحوه برنامه نویسی برد در محیط آردوینو را به شما نشان خواهیم داد.

مروری بر خانواده میکروکنترولر STM32F103xx
خانواده STM32F103xx دارای هسته RISC 32 بیتی ARM® Cortex™-M3 با کارایی بالا است که با فرکانس 72 مگاهرتز، حافظه داخلی با سرعت بالا، و طیف گستردهای از I/Oهای پیشرفته و تجهیزات جانبی متصل به دو گذرگاه APB کار میکند. همه کنترلرها دارای دو ADC 12 بیتی، سه تایمر 16 بیتی عمومی بهاضافه یک تایمر PWM، و همچنین رابطهای ارتباطی استاندارد و پیشرفته را ارائه میدهند: حداکثر دو I2C و SPI، سه USART، یک USB و یک CAN. خانواده STM32F103xx با توان مصرف پایین و منبع تغذیه 2.0 تا 3.6 ولت کار میکند و در هر دو محدوده دمایی -40 تا +85 درجه سانتیگراد و محدوده دمایی -40 تا +105 درجه سانتیگراد در دسترس است. مجموعهای جامع از حالت صرفهجویی در مصرف انرژی، امکان طراحی تجهیزات کممصرف را فراهم میکند.
خانواده STM32F103xx شامل میکرو کنترولر در چهار نوع بستهبندی مختلف است: از 36 پین تا 64 پین. بسته به دستگاه انتخاب شده، مجموعههای مختلفی از لوازم جانبی گنجانده شده است، توضیحات زیر نمای کلی از طیف کامل لوازم جانبی پیشنهادی در این خانواده را ارائه میدهد.
این محصولات ترکیبی از عملکرد بسیار بالا، قابلیتهای پردازش بیدرنگ سیگنال دیجیتال، مصرف کم / ولتاژ پایین هستند و در عین یکپارچگی کامل و سهولت توسعه را حفظ میکنند.
میکروکنترلرهای STM32، بر اساس یک هسته استاندارد صنعتی، با انتخاب گسترده ای از ابزارها و نرم افزارها برای پشتیبانی از توسعه پروژه ارائه می شوند، که این خانواده از محصولات را برای پروژه های کوچک و پلتفرم های مختلف ایده آل می کند.
مشخصات
طیف گسترده ای از stm32 وجود دارد. که در اینجا طرحی از دسته اصلی ارائه شده است.
طبقه بندی دقیق تر می تواند با رمزگشایی شماره قطعه انجام شود:
STM32F051R8
STM32xxwwyz
xx – خانواده
ww – subtype: در تجهیزات جانبی متفاوت است و این به خانواده خاصی بستگی دارد.
y – تعداد پایه در پکیج
z – اندازه حافظه FLASH
خانواده: [xx]
Family: [xx]
Package Pin Count [y]
Package Pin Count [y]



جزئیات STM32F1
سری میکروکنترولر STM32F1 اصلی ST نیازهای طیف گسترده ای از پروژه ها را پوشش می دهد، میکروکنترلرهای Arm® Cortex™-M عملکرد خوبی را با تجهیزات جانبی درجه یک ارائه می دهند و عملکرد کم مصرف و ولتاژ پایین با سطح بالایی از کارایی همراه است. با قیمت های در دسترس با معماری ساده و ابزارهای آسان برای استفاده.

خانواده با تراکم پایین STM32F103xx شامل دستگاه هایی در چهار نوع بسته بندی مختلف است: از 36 پین تا 64 پین. بسته به دستگاه انتخاب شده، مجموعه های مختلفی از لوازم جانبی گنجانده شده است، توضیحات زیر نمای کلی از طیف کامل لوازم جانبی پیشنهادی در این خانواده را ارائه می دهد.
مقایسه STM32F103C8T6 با Arduino UNO

پایه های برد BluePill

مزیت قابل توجه این میکروکنترولر این است که پین ها دارای منطق 3.3 ولت هستند، اما برخی از پین ها 5 ولت را تحمل می کنند. می توانید آنها را در عکس پین اوت ببینید (مربع سبز تحمل 5 ولت، مربع قرمز فقط 3.3 ولت).
اتصالات مورد نیاز:
دستگاهی که می خرید احتمالاً بدون بوت لودر است و به یک مبدل USB سریال FTDI نیاز دارید.
این ماژول گرانتر FT232RL یا FT232 وجود دارد، اما یک مبدل CH340G یا CH340 هم بسیار خوب کار میکند.
نحوه اتصال با FTDI (USB To TTL)
اول از همه، ما بوت لودر را در یک stm32 آپلود می کنیم، در مورد من STM32F103C8T6. برای انجام این کار، از FTDI به این روش استفاده کنیم.

اتصال پایه های FT232 به برد stm32f103 BluePill

روش های بوت
بوت از حافظه سیستم: بوت لودر روی تراشه را فراخوانی می کند که قبل از اینکه چیزی را در حافظه فلش روی تراشه برنامه ریزی کنید، مستقیماً در کارخانه برروی تراشه قرار گرفته. این به شما امکان می دهد تا کد (برنامه) را از یک رابط خارجی مانند UART یا USB در میکروکنترولر بارگیری کنید.
بوت از حافظه حافظه فلش: جایی است که کد شما معمولاً در آن قرار می گیرد. در عملکرد عادی، کد شما در حالت فلش قرار می گیرد، و در حالت Power-On Reset (POR)، CPU بردار تنظیم مجدد و نشانگر اولیه پشته (SP) را از حافظه فلش دریافت می کند. می توانید فلش را از طریق JTAG، بوت لودر روی تراشه (بالا) و غیره برنامه ریزی کنید.

در اینجا جدول با نحوه پیکربندی جامپر آمده است:
آپلود فایل HEX بوت لودر پروگرام کردن میکرو با پورت USB
استفاده از ماژول USB به سریال
توجه داشته باشید که این یک میکروکنترولر 3.3 ولت است و شما باید مبدل USB به سریال خود را روی 3.3 ولت تنظیم کنید وگرنه به احتمال زیاد آن را از بین خواهید برد. راز در اینجا این است که خانواده دستگاه های STM32F103 دارای بوت لودر UART هستند که در حافظه ROM برنامه ریزی شده است. بنابراین با تنظیم چند پایه بوت بر روی تراشه می توان تراشه را مجبور کرد در حالت بوت لودر شروع به کار کند و سپس برنامه شما را با UART1 آپلود کنید. به همین دلیل است که برد جامپرهای حالت بوت را نیز فراهم می کند، بنابراین می توان جامپرها را طوری تنظیم کرد که تراشه از بوت لودر بوت شود یا مستقیماً از حافظه برنامه. در مورد ما فقط به جامپر boot0 (یکی که به لبه PCB نزدیکتر است)، زمانی که روی 0 تنظیم می شود، بوت های MCU به حافظه برنامه معمولی و هنگامی که روی 1 تنظیم می شود آماده استفاده از بوت لودر می شود.
استفاده از بوت لودر USB
قبلاً در مورد بوت لودر UART که از کارخانه نصب شده است صحبت کرده ایم اما متأسفانه سری STM32F103 فقط با این بوت لودر UART و بدون بوت لودر USB ارائه می شود. ظاهراً برخی از دستگاههای پیشرفته مانند STM32F4 دارای بوتلودر USB و برخی گزینههای جالب دیگر در مورد سیستمافزار فلشکننده هستند. برای اینکه یک بوت لودر USB را روی تراشه F1 قرار دهیم، باید خودمان آن را فلش کنیم، که به نظر می رسد چندان دشوار نیست. اساساً کاری که ما انجام می دهیم این است که بوت لودر ایجاد شده توسط Arduino_STM32 را برداریم و با استفاده از روش USB به سریال که قبلاً توضیح داده شد، آن را به تراشه فلش کنیم. ما همچنان بوت لودر UART را داریم (در رام است بنابراین نمی توان آن را حذف کرد) اما تراشه در بوت لودر Arduino_STM32 و سپس به برنامه اصلی شما بوت می شود. از آن زمان به بعد شما نیازی به ماژول USB به سریال ندارید و می توانید آن را مستقیماً از طریق USB برنامه ریزی کنید. چیزی که باید در مورد این گزینه به خاطر بسپارید این است که بوت لودر مقداری از حافظه برنامه را نیز اشغال می کند و شما کل 64 کیلوبایت یا 128 کیلوبایت را در دسترس ندارید. خوشبختانه آنقدر بزرگ نیست و همچنان باید فضای زیادی در اختیار شما بگذارد.
بنابراین برای انجام این کار ابتدا باید فایل زیر را دانلود کنید:
بوت لودر STM32duino (دانلود به صورت فایل Zip و استخراج بر روی دستگاه شما)
برنامه Flash Loader (برای آپلود فایل HEX استفاده می شود)
سپس جامپر Boot0 را به 1 تغییر دهید و USB را به برد سریال وصل کنید و مطمئن شوید که همه پین ها متصل هستند (همانطور که قبلا توضیح داده شد) و گزینه 3.3 ولت در ماژول USB به سریال انتخاب شده است.
سپس باید برنامه Flash Loader Demonstrator را اجرا کنید و پورت COM را برای ماژول USB به سریال خود انتخاب کنید، تمام فیلدهای دیگر را همانطور که هست رها کنید و روی Next کلیک کنید.
1. انتخاب پورت متصل به مبدل FT232

2. رفتن به مرحله بعد درصورت نشناختن ارتباط کلید ریست روی برد را فشار دهید.

3. مشخص شدن نوع میکروکنترولر به صورت خودکار

4. در این پنجره گزینه Download to device را انتخاب کنید و مسیر فایل باینری را که قبلا دانلود کرده اید ارائه دهید. در مورد من مسیر ..\STM32duino-bootloader-master\binaries\generic_boot20_pc13.bin بود. متوجه خواهید شد که چند نسخه وجود دارد، اگر به برد خود در کنار LED نگاه کنید، نام پینی که LED را درایو می کند ارائه شده است و باید با پس از رفع مشکل نام فایل سیستم عامل مطابقت داشته باشد. در بیشتر موارد “_pc13” خواهد بود. هنگامی که فایل را انتخاب کردید و بقیه فیلدها را در مقادیر پیش فرض خود گذاشتید، می توانید برای شروع آپلود روی Next کلیک کنید.

5. هنگامی که آپلود کامل شد، به یاد داشته باشید که جامپر boot0 را دوباره به 0 تغییر دهید.

دانلود درایور USB برد STM32F103
آخرین کاری که اکنون باید انجام دهید این است که درایور USB را برای بوت لودر نصب کنید. در فایل ..\Arduino_STM32\drivers\win\install_drivers.bat را اجرا کنید، که ظاهراً واقعاً درایورهای جدیدی را نصب نمی کند، بلکه برخی از درایورهای پیش فرض ویندوز را با برد مرتبط می کند. پس از اجرای فایل، برد خود را وصل کنید و بررسی کنید که درایور را نصب و پیکربندی کرده و در Device Manager به عنوان پورت COM نمایش داده شود.






بعد از اتصال برد به کامپیوتر در Device Manger می توانید شماره پورت سریال دریافت شده توسط میکروکنترولر را مشاهده کنید

IDE آردوینو خود را پیکربندی کنید
ما با stm32duino شروع می کنیم، ما باید توصیفگر URL را به IDE آردوینو خود اضافه کنیم.
به مسیر زیر در نرم افزا آردوینو بروید
File –> Preferences and add the URL on “Additional Boards Manager URLs

کپی کردن آدرس زیر در محیط Board Manager
http://dan.drown.org/stm32duino/package_STM32duino_index.json

سپس به بخش بروید Tools> Board Manager

stm32f1 را در بخش جستجو وارد کنید و پکیج مشاهده شده در تصویر را نصب کنید

کد برنامه چشمک زدن LED بر روی برد متصل به پایه PC13
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin PB1 as an output.
pinMode(PC13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}