آموزش STM32 : معرفی ابزارها

  1. Home
  2. /
  3. آموزش STM32
  4. /
  5. شروع STM32

این مقاله برای کسانی هست که تصمیم به یادگیری برنامه نویسی میکروکنترلرهای STM32 گرفته اند، و سوالاتی دارند مثلا کدوم برد آموزشی STM32 برای شروع مناسبه ، کدوم پروگرمر رو برای برنامه نویسی میکروکنترلر های STM32 تهیه کنم ،  keil  بهتری یا STM32CubeIDE و … . این مباحث رو قراره بررسی کنیم.

برد آموزشی STM32

برد بلوپیل ( Bluepill ) دارای میکروکنترلر STM32F103C8

برد بلوپیل – bluepill یا قرص آبی دارای میکروکنترلر STM32F103C8 بهترین برد آموزشی STM32 برای شروع یادگیری این میکروکنترلر هست ، قیمت مناسبی داره و میکروکنترلر قدرتمندی داره که جوابگوی خیلی از کارهاست. برد بلوپیل فقط امکانات اولیه ی راه اندازی میکروکنترلر STM32F103C8 رو برامون فراهم کرده. ماژول ها رو میتونید با برد بورد و سیم جامپر خودتون به میکروکنترلر وصل کنید. دو نکته: –  روی برد بلوپیل پروگرمر وجود نداره و پروگرمر رو باید جدا تهیه کنید. – دقت کنید که حتما میکروکنترلر STM32F103C8 که روی برد بلوپیل هست اصل باشه.
آمورش STM32 ، برد بلوپیل دارای میکروکنترلر STM32F103C8

تشخیص میکروکنترلر های STM32 اصل از تقلبی

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

برد های آموزشی STM32 شرکت ثالث – third party

تمام برد های آموزشی STM32 که ساخت شرکت ST نیستند، در این دسته قرار میگیرند. برد بلوپیل هم جز همین دسته هست. این برد های آموزشی STM32 معمولا پروگرمر ندارند. 
برد های آموزشی STM32

برد های آموزشی STM32 ساخت شرکت ST : نوکلئو و دیسکاوری

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

پروگرمر ST-link برای میکروکنترلرهای STM32

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

در خرید پروگرمر 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 دانگل USB به برد بلوپیل دارای میکروکنترلر STM32F103C8

پروگرمر ST-link v2 شرکت st

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

پروگرمر ST-link v2 روی برد های دیسکاوری یا نوکلئو

برد های دیسکاوری یا نوکلئو برد های آموزشی میکروکنترلرهای  STM32 ، ساخت خود شرکت ST هستند و تقلبی ندارند. روی اکثر این برد ها یک پروگرمر ST-Link v2 وجود داره برای پروگرم کردن میکروکنترلر STM32 روی برد ، ولی میشه از پروگرمر ST-link v2 روی برد برای پروگرم کردن هر میکروکنترلر STM32 که بخواهیم استفاده کنیم. قبل از استفاده از st-link v2 روی برد های دیسکاوری یا نوکلئو ، دیتاشیت برد رو مطالعه کنید ، چون باید دو تا جامپر رو از روی برد بردارید.
– پروتکل SWD رو کاملا پشتیبانی میکنه – پروتکل JTAG هم پشتیبانی میکنه ولی تمام پین ها رو نداره  
اتصال پروگرمر ST-link روی برد نوکلئو به برد بلوپیل دارای میکروکنترلر STM32F103C8

برنامه نویسی STM32 در نرم افزار Keil یا STM32CubeIDE

– نرم افزار STM32CubeIDE ساخت خود شرکت ST هست و بر خلاف keil رایگان هست – نرم افزار STM32CubeIDE بر اساس ecilipse ساخته شده و امکانات محیط کد نویسیش بیشتره ، مثلا بر خلاف keil در نرم افزار STM32CubeIDE در فایل های Header هم وقتی یک عبارتی رو مینویسیم برامون کاملش میکنه، این امکان در نرم افزار keil فقط در فایلهای سورس کد وجود داره. – در نرم افزار STM32CubeIDE در دیباگ امکانات بیشتری داریم ، در پنجره ی SFRs میتونیم مقدار بیتهای رجیسترها رو در لحظه تغییر بدیم ، این امکان در Keil وجود نداره – STM32CubeIDE زود نسخه های جدیدش میاد – نرم افزار STM32CubeIDE محیط زیباتر و بروزتری نسبت به keil داره – STM32CubeMx بخشی از نرم افزار STM32CubeIDE هست
مقایسه ی نرم افزار keil و STM32CubeIDE برای برنامه نویسی میکروکنترلر های STM32

کتابخونه HAL ، نرم افزار STM32CubeMx و برنامه نویسی رجیستری میکروکنترلر های STM32

اول باید بدونی پریفرال چیه. پریفرال مدارهای الکترونیکی قابل تنظیم در میکروکنترلر هستند که برای انجام کارهای مشخصی طراحی شدن، مثل تایمر ، مبدل آنالوگ به دیجیتال ، SPI و … . هر پریفرال تعدادی خونه ی حافظه با آدرس مشخص داره که بهشون میگیم رجیسترها ، برای تنظیم عملکرد هر پریفرال باید اعداد مشخصی رو در بیت های رجیسترهای پریفرال نوشت ، توضیحات این مسئله در رفرنس منوال میکروکنترلر هست. حالا برای تغییر رجیسترهای پریفرال سه روش داریم: 1- برنامه نویسی رجیستری : خودمون مستقیم بریم رجیسترها رو تغییر بدیم. امکان دسترسی به رجیسترها رو لایه ی نرم افزاری CMSIS برامون فراهم میکنه . کار لایه ی نرم افزاری CMSIS این هست که برامون پوینتر بسازه. 2- کتابخونه HAL : از توابع کتابخونه HAL برای تغییر محتوای رجیسترهای پریفرال ها استفاده کنیم. کتابخونه HAL خودش برای دسترسی به رجیسترها از لایه ی نرم افزاری CMSIS استفاده میکنه. 3- نرم افزار STM32CubeMx : میتونیم در نرم افزار CubeMx تنظیمات پریفرال ها رو بصورت گرافیکی انجام بدیم و این نرم افزار کد مورد نیاز برای تنظیم رجیسترهای پریفرال ها رو با استفاده از توابع کتابخونه HAL یا LL برامون مینویسه.

مزیت های برنامه نویسی رجیستری میکروکنترلر های STM32 نسبت به استفاده از کتابخونه HAL

نسبت به کتابخونه HAL کد با حجم کد کمتر کد سریعتر تسلط بیشتر برای استفاده از امکانات پریفرال

مزیت های استفاده از کتابخونه HAL نسبت به برنامه نویسی رجیستری STM32

با نرم افزار Cube میتونید کتابخونه HAL رو در محیط گرافیکی بنویسید یادگیری کتابخونه hal سریعتره کتابخونه توسط افراد با سوادی نوشته شده برای بعضی از پریفرال ها بیشتر سخت و زمانبره که خودمون کد تغییر رجیستر ها رو بنویسیم ، HAL امکانات نرم افزاری رو فراهم میکنه