این نوشته برای کسانی هست که میخواهند برنامه نویسی میکروکنترلرهای STM32 رو یادبگیرند و این پرسش ها رو دارند که کدوم برد آموزشی STM32 برای آغاز بهتره؟ کدوم پروگرمر رو برای برنامه نویسی میکروکنترلر های STM32 بخرند؟ نرم افزار keil بهتره یا STM32CubeIDE ؟ و … . اینها رو میخواهیم بررسی کنیم.
فهرست
– چی بخریم؟
– برد بلوپیل بهترین برد آموزشی STM32
– تشخیص میکروکنترلرهای STM32 اصل از تقلبی
– برد های آموزشی STM32 شرکت ثالث
– برد های آموزشی nucleo و discovery ساخت شرکت ST
– پروگرمر ST-link v2 برای میکروکنترلرهای STM32
– نکات خرید پروگرمر ST-link v2
– پروگرمر ST-link v2 ساخت شرکت ST
– پروگرمر ST-link v2 روی برد های نوکلئو و دیسکاوری STM32
برد بلوپیل ( Bluepill ) ، برد آموزشی STM32
برد بلوپیل – bluepill دارای میکروکنترلر STM32F103C8 بهترین برد آموزشی STM32 برای آغاز یادگیری این میکروکنترلر هست، چرا؟
- قیمت مناسبی داره.
- میکروکنترلر قدرتمندی داره که جوابگوی خیلی از کارها هست.
- بلوپیل یک برد ساده است و تنها نیازمندی های اولیه ی راه اندازی میکروکنترلر STM32F103C8 رو برامون فراهم کرده. ساده بودن، برتری این برد هست.
- ماژول ها رو میتونید با برد بورد و سیم جامپر خودتون به میکروکنترلر ببندید. در آغاز یادگیری خوب نیست که برد های پر از قطعه و گران قیمت بخرید.
دو نکته:
– روی برد بلوپیل پروگرمر نداره و پروگرمر رو باید جدا بخرید.
– دقت کنید که حتما میکروکنترلر STM32F103C8 که روی برد بلوپیل هست اصل باشه.

بازشناسی میکروکنترلر های STM32 اصل از تقلبی
تنها راهی که میتونیم دل آسوده باشیم یک میکروکنترلر STM32 اصل هست، اینه که با نرم افزار STM32CubeIDE پروگرمش کنیم ، اگر پروگرم شد ، اصله . البته میکروکنترلر های تقلبی STM32 رو هم میشه با STM32CubeIDE پروگرم کرد ولی نه با روش معمولی ، یکم پیچیده هست و باید از دیباگر Open OCD بجای GDB استفاده کنید.
از روی نام نوشته شده روی میکروکنترلر هم میشه تقلبی بودن رو دریافت. میکروکنترلر های اورجینال STM32 ، اسمشون با STM32 شروع میشه، مثلا STM32F103C8 و نامگذاریشون همانجوری است که شرکت ST گفته. با این روش میتونید تقلبی بودن رو بفهمید ولی اصل بودن رو خیر.

بیشتر میکروکنترلر های غیر اصل نامگذاریشون ناجور هست ، در نگاره های زیر چند نمونه ی غیر اصل و نمونه اصل میکروکنترلر STM32F103C8 رو میبینید که همون میکروکنترلر روی برد بلوپیل Bluepill هست.

برد های آموزشی STM32 سازندگان دیگر – third party
همه ی برد های آموزشی STM32 که ساخت شرکت ST نیستند، در این دسته قرار میگیرند. برد بلوپیل هم در همین دسته هست. این برد های آموزشی STM32 معمولا پروگرمر ندارند.
ساده بودن این برد ها برتری این برد هاست و برای آزمایش پروژه ها بسیار کاربردی هستند. البته بعضی از برد های آموزشی هم هستند که بسیار شلوغ و پر از قطعات اضافه اند. از اون مدل ها نخرید، مگر اینکه به راستی به امکانات اون برد نیاز داشته باشید.

برد های آموزشی STM32 ساخت شرکت ST : نوکلئو و دیسکاوری
برد های نوکلئو و دیسکاوری ، برد های آموزشی STM32 ساخت خود شرکت ST هستند و تقلبی هم نداره. کیفیت ساخت بالاتر و قیمت بالاتری دارند و دارای پروگرمر ST-link v2 هستند که نه فقط برای میکروکنترلر STM32 روی برد ، بلکه برای پروگرم کردن هر میکروکنترلر STM32 میتونید پروگرمر روی این برد ها رو بکاربگیرید.
بدی این برد ها شاید این باشه که امکانات بیشبود (اضافه) روی برد به کارتون نیاد.

پروگرمر ST-link برای میکروکنترلرهای STM32
برای لود کردن و دیباگ کد در میکروکنترلرهای STM32 به یک پروگرمر ST-link v2 نیاز داریم.این پروگرمر ها با یک میکروکنترلر STM32 ساخته میشن ، معمولا STM32F103 و با پروتکل JTAG یا SWD به میکروکنترلرهای STM32 متصل میشن. پروتکل SWD تعداد پین های کمتری نیاز داره و مخصوص میکروکنترلرهای آرم هست ولی JTAG استفاده ی عمومی برای کاربرد های مختلف داره.
نکات خرید پروگرمر st-link v2 برای میکروکنترلر های STM32
- آیا نرم افزار پروگرمر ، یعنی کدی که روی پروگرمر هست با بکارگیری نرم افزار STM32CubeIDE به روزرسانی میشه؟ اگر پروگرمر ST-link v2 که خریداری میکنید ، با میکروکنترلرهای غیر اصل STM32 ساخته شده باشه ، نمیتونید با STM32CubeIDE ، نرم افزارش رو به روزرسانی کنید.
- برای پروگرم کردن میکروکنترلر STM32 میخواهید پروتکل JTAG یا SWD را بکار بگیرید؟ دو از سه گونه پروگرمر ST-link که بررسی میکنیم SWD رو پشتیبانی میکنند ، ولی تنها یک گونه ST-link پروتکل JTAG رو کاملا پشتیبانی میکنه.
- توانایی printf رو در پروگرمر میخواهید یا خیر؟ برای printf در زمان دیباگ میکروکنترلر های STM32 با پروتکل SWD، لازمه پروگرمر ST-link v2 پین SWO رو داشته باشه ، ST-link v2 dongle این پین رو ندارند.
پروگرمر ST-link v2 dongle
- این پروگرمر ها تنها از پروتکل SWD پشتیبانی میکنند ( jtag پشتیبانی نمیکند ) .
- پایه ی SWO که برای printf بهش نیاز داریم هم ندارند.
- بیشتر هم با آی سی های غیر اصل STM32 ساخته شدن و نمیشه در نرم افزار STM32CubeIDE اینها رو بروزرسانی کرد.

پروگرمر ST-link v2 شرکت ST
این پروگرمر ها ساخت شرکت ST هستند ، البته اگر اورجینال تهیه کنید . مسئله ی مهم اینه که آیا میکروکنترلر STM32 استفاده شده در ساخت پروگرمر اصل هست یا نه . اگر اصل باشه ، میشه با STM32CubeIDE آپدیتش کرد. این پروگرمر های تمام پین های مورد نیاز پروتکل jtag و SWD رو دارند.
– JTAG و SWD کاملا پشتیبانی میکند.

پروگرمر ST-link v2 روی برد های دیسکاوری یا نوکلئو
برد های دیسکاوری یا نوکلئو، برد های آموزشی میکروکنترلرهای STM32 هستند که خود شرکت ST ساخته و تقلبی هم ندارند(من ندیدم) . روی بیشتر این برد ها یک پروگرمر ST-Link v2 وجود داره برای پروگرم کردن میکروکنترلر STM32 روی برد، ولی میشه از پروگرمر ST-link v2 روی برد برای پروگرم کردن هر میکروکنترلر STM32 که بخواهیم استفاده کنیم.
پیش از بکارگیری st-link v2 روی برد های دیسکاوری یا نوکلئو ، دیتاشیت برد رو بخونید ، چون باید دو تا جامپر رو از روی برد بردارید.
- پروتکل SWD رو کاملا پشتیبانی میکنه. پایه ی SWO برای printf هم داره.
- پروتکل JTAG هم پشتیبانی میکنه ولی تمام پایه ها رو نداره.

برنامه نویسی STM32 در نرم افزار Keil یا STM32CubeIDE
همسنجی (مقایسه) دو نرم افزار keil و STM32CubeIDE ، کدوم بهتره؟ STM32CubeIDE ، چرا ؟
- نرم افزار STM32CubeIDE ساخت خود شرکت ST هست و رایگان هست ولی keil ساخت شرکت ARM و پولی هست.
- نرم افزار STM32CubeIDE برپایه ی ecilipse ساخته شده و امکانات محیط کد نویسیش بیشتره ، برای نمونه بر خلاف keil در نرم افزار STM32CubeIDE در فایل های Header هم وقتی یک عبارتی رو مینویسیم برامون کاملش میکنه، این امکان در نرم افزار keil فقط در فایلهای سورس کد وجود داره.
- در نرم افزار STM32CubeIDE در دیباگ امکانات بیشتری داریم ، در پنجره ی SFRs میتونیم مقدار بیتهای رجیسترها رو آنی تغییر بدیم ، این امکان در Keil نیست.
- STM32CubeIDE زود به زود بروزرسانی میشه ولی keil بشین تا بیاد .
- نرم افزار STM32CubeIDE محیط زیباتر و بروزتری نسبت به keil داره .
- STM32CubeMx بخشی از نرم افزار STM32CubeIDE هست.
- نرم افزار keil قدیمیه و چیزی که از keil مونده یک خاطره هست.

پیشنهاد من برای خرید برد آموزشی STM32
اگر میخواهید STM32 یادبگیرید. نخستین چیزی که نیاز دارید برد آموزشی STM32 و یک پروگرمر ST-link v2 هست. خواهش میکنم زمان خودتون رو با شبیه سازی STM32 در نرم افزار ها تباه نکنید. برد آموزشی بخرید و برنامه نویسی روی میکروکنترلر انجام بدید، نه در نرم افزار های شبیه سازی. پیشنهاد من، خرید این دو برد هست.
- برد بلوپیل دارای میکروکنترلر STM32F103C8 – حتما هم اصل باشه.
- یک برد نوکلئو دارای میکروکنترلر های سری F4 یا F7.
چرا؟
- روی بیشتر برد های نوکلئو پروگرمر (اصل اصل) هم داره و پروگرمر ST-link v2 روی برد نوکلئو رو برای پروگرم کردن بلوپیل هم بکارمیگیرید.
- دو تا برد آموزشی خوب هم دارید ، هم از سری F1 ، هم F4 یا F7.