این مقاله برای کسانی هست که تصمیم به یادگیری برنامه نویسی میکروکنترلرهای 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 و نامگذاریشون مطابق نامگذاری میکروکنترلرهای STM32 شرکت ST هست. البته با این روش میتونید تقلبی بودن رو بفهمید ولی اصل بودن رو خیر.
میکروکنترلر های غیر اصل معمولا نامگذاریشون متفاوت هست ، در تصاویر زیر چند نمونه ی غیر اصل و نمونه اصل میکروکنترلر STM32F103C8 رو میبینید که میکروکنترلر STM32 روی برد Bluepill (قرص آبی) هست.
برد های آموزشی STM32 شرکت ثالث – third party
تمام برد های آموزشی STM32 که ساخت شرکت ST نیستند، در این دسته قرار میگیرند. برد بلوپیل هم جز همین دسته هست. این برد های آموزشی STM32 معمولا پروگرمر ندارند.
ساده بودن این برد ها مزیت این برد هاست و برای تست پروژه ها بسیار کاربردی هستند. البته بعضی از برد های آموزشی هم هستند که بسیار شلوغ و پر از قطعات اضافه اند. از اون مدل ها تهیه نکنید، مگر اینکه واقعا به امکانات اون برد نیاز داشته باشید.
برد های آموزشی STM32 ساخت شرکت ST : نوکلئو و دیسکاوری
برد های نوکلئو و دیسکاوری ، برد های آموزشی STM32 ساخت خود شرکت ST هستند و تقلبی هم نداره. کیفیت ساخت بالاتر و قیمت بالاتری دارند و دارای پروگرمر ST-link v2 هستند که نه فقط برای میکروکنترلر STM32 روی برد ، بلکه برای پروگرم کردن هر میکروکنترلر STM32 میتونید از پروگرمر روی این برد ها استفاده کنید.
اطلاعات مربوط به برد های دیسکاوری و نوکلئو و شماتیک این برد ها رو میتونید در سایت شرکت ST ببینید.
عیب این برد ها شاید این باشه که امکانات اضافه ی روی برد به کارتون نیاد.
پروگرمر 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 پشتیبانی میکنند و البته پین SWO که برای printf بهش نیاز داریم هم ندارند. معمولا هم با استفاده از چیپ های غیر اصل STM32 ساخته شدن و قابلیت آپدیت در نرم افزار STM32CubeIDE رو ندارند. – jtag پشتیبانی نمیکند – در پروتکل SWD ، پین SWO رو نداره ، از printf نمیتونید استفاده کنید – اگر میکروکنترلر استفاده شده غیر اصل باشه ، قابلیت آپدیت نداره ، معمولا میکروکنترلر STM32 استفاده شده در ساخت این پروگرمر ها غیر اصل هست.
پروگرمر 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 رو کاملا پشتیبانی میکنه
– پروتکل JTAG هم پشتیبانی میکنه ولی تمام پین ها رو نداره
برنامه نویسی STM32 در نرم افزار Keil یا STM32CubeIDE
– نرم افزار STM32CubeIDE ساخت خود شرکت ST هست و بر خلاف keil رایگان هست
– نرم افزار STM32CubeIDE بر اساس ecilipse ساخته شده و امکانات محیط کد نویسیش بیشتره ، مثلا بر خلاف keil در نرم افزار STM32CubeIDE در فایل های Header هم وقتی یک عبارتی رو مینویسیم برامون کاملش میکنه، این امکان در نرم افزار keil فقط در فایلهای سورس کد وجود داره.
– در نرم افزار STM32CubeIDE در دیباگ امکانات بیشتری داریم ، در پنجره ی SFRs میتونیم مقدار بیتهای رجیسترها رو در لحظه تغییر بدیم ، این امکان در Keil وجود نداره – STM32CubeIDE زود نسخه های جدیدش میاد .
– نرم افزار STM32CubeIDE محیط زیباتر و بروزتری نسبت به keil داره .
– STM32CubeMx بخشی از نرم افزار STM32CubeIDE هست.
پیشنهاد من برای خرید برد آموزشی STM32
اگر تصمیمتون برای یادگیری میکروکنترلرهای STM32 جدی هست. اولین چیزی که نیاز دارید برد آموزشی STM32 و یک پروگرمر ST-link v2 هست. لطفا وقت خودتون رو هم با شبیه سازی STM32 در پروتئوس تلف نکنید. پیشنهاد من این هست که این دو مورد رو تهیه کنید:
1- برد بلوپیل دارای میکروکنترلر STM32F103C8 – حتما هم اصل باشه
2- یک برد دیسکاوری یا نوکلئو دارای میکروکنترلر های سری F4 یا F7
اینطوری از پروگرمر ST-link v2 روی برد دیسکاوری یا نوکلئو برای پروگرم کردن استفاده میکنید و دو تا برد آموزشی خوب هم دارید ، هم از سری F1 ، هم F4 یا F7. چون سری F1 با F4 تفاوت هایی دارند و البته شما هر دو میکرو رو خواهید داشت.