برد STM سخت افزار قطعات الکترونیک

معرفی انواع میکروکنترلرهای STM32

معرفی میکروکنترلر های STM32
نوشته شده توسط علی زاهدی

امروزه پردازنده‌های مبتنی بر ARM در بسیاری از دستگاه‌های الکترونیکی اطراف ما مانند موبایل یافت می‌شوند. تراشه‌های ARM به واسطه طراحی منحصر به فردی که دارند، انتخاب بسیار مناسبی در ساخت انواع گجت‌هاست. پیش از این به آموزش ساخت پروژه در نرم افزار STM32Cube MX و پروگرام کردن میکروکنترلر STM32F103 با بوت لودر آردوینو در پست‌های جداگانه‌ای پرداخته‌ایم. در این پست قصد داریم تا درباره معماری ARM و خانواده STM32 موضوع را بررسی کنیم. در ادامه با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.

 


معماری تراشه ARM


در واقع ARM نوعی معماری ساخت پردازنده بر پایه معماری RISC است. معماری RISC دارای دستورالعمل‌های کمی است، این موضوع سبب شده تا سرعت اجرای دستورات بالاتر رفته و همچنین در ساخت پردازنده‌های مبتنی بر این معماری از ترانزیستورهای کمتری استفاده شود. این موضوع باعث کاهش توان مصرفی این پردازنده‌ها نیز می‌شود. میکروکنترلرهای مبتنی بر این معماری معمولا قیمت کمتری نسبت به میکروکنترلرهای دیگر دارد. از شرکت‌های رایج سازنده میکروکنترلرهای مبتنی بر معماری ARM میتوان به ST، ATMEL و NXP اشاره کرد. در این پست من از محصولات شرکت ST و خصوصا میکروکنترلرهای سری STM32 استفاده می‌کنم.

Arm

 


ARM مختصری از تراشه‌های 


در سال ۱۹۸۳ شرکت Acton تصمیم به ساخت میکروکنترلر های ۱۶ بیتی گرفت و این شروعی برای پردازنده های ARM بود، ابتدا کلمه ARM مخفف Acron RISC Machine بود تا سال ۱۹۹۰ که شرکت هایی مانند اپل نیز به ARM پیوستند و کلمه ARM به مخفف Advanced RISC Machine تغییر کرد و شرکت ARM Holdings تاسیس شد. جالب است بدانید شرکت ARM Holdings هیچ تراشه ای تولید نمیکند و تمام درآمد این شرکت از فروش امتیاز ساخت تراشه های ARM به شرکت های دیگر کسب می شود. در سال ۲۰۱۱ مشتریان ARM توانستند ۷٫۹ میلیارد ابزار مبتنی بر این معماری را وارد بازار کنند. یکی از معروف ترین پردازنده های مبتنی بر معماری ARM نسل ARM7 می باشد، که اکثر تولید کنندگان برای پیاده سازی میکروکنترلر های خود از این نسل استفاده می کنند، همچنین هسته ی Cortex-M3 جایگزینی قدرتمند برای ARM7 می باشد.

 

 


STM32 میکروکنترلر 


خانواده STM32 میکروکنترلرهای ۳۲ بیتی شرکت ST هستند. این محصول با ترکیب عملکرد بسیار قوی، ولتاژ کاری پایین، پردازش سیگنال دیجیتال و  سهولت در توسعه، محبوبیت بسیار زیادی رو را کسب کرده اند. دامنه وسیعی از میکروکنترلر های STM32  وجود دارد که مبتنی بر یک هسته صنعتی استاندارد ساخته شده اند. میکروکنترلر های STM32 از پروتکل های ارتباطی گسترده‌ای پشتیبانی می‌کنند، که از جمله آنها میتوان به UART ،I2C ،SPI ،USB و … اشاره نمود. میکروکنترلر های خانواده STM32 شامل زیر مجموعه های مختلفی هستند. به دلیل زیاد بودن تعداد پردانده های این خانواده، در این آموزش فقط میکروکنترلر STM32F103C8T6 را معرفی میکنیم. میتوانید با مشاهده تصویر زیر با نحوه نام گذاری میکروکنترلر های خانواده STM32 آشنا شوید.

 

نامگذازی پردازنده های STM32


میکروکنترلر سری STM32F1


سری STM32F1 جز پردازنده های میان رده این خانواده است، اما این سری دارای قدرت پردازشی بسیار بالای میباشد. سری STM32F1 اولین گروه میکروکنترلرهای STM32 مبتنی بر هسته ARM Cortex-M3 است. سری F1 با افزایش سرعت پردازنده ، اندازه حافظه داخلی ، انواع لوازم جانبی با گذشت زمان تکامل یافته است. هرکدام زیر مجموعه های خانواده STM32 خود شامل زیر مجوعه های بساری می‌شوند. از محبوب ترین زیر مجموعه این خانواده پردازنده های سری STM32F103C8T6 که تاکنون از آن داخل آموزش ها استفاده نموده ایم. از ویژگی های این پردازنده میتوان به موارد زیر اشاره نمود:

  • حداکثر فرکانس کاری ۷۲ مگاهرتز
  • ۶۴ کیلوبایت حافظه Flash و ۲۰ کیلوبایت حافطه SRAM
  • ۷ کانال DMA Controller
  • پشتیبانی از: Timer, ADC, SPI, I2C و USART
  • دارای ۳۷ پورت GPIO
  •  و …

 

میکزوکنترلر STM32 F103C8T6

 


نرم افزار های مورد نیاز


پیش از این نحوه ساخت پروژه و پروگرام کردن برنامه بر روی برد BluePill که هدر برد مخصوص پردازنده STM32F103C8T6 است، را در پست راه اندازی برد STM32 با استفاده از نرم افزار KEIL و توابع HAL آموزش داده ایم. کامپایلر های مختلفی برای برنامه نویسی بر روی میکرو کنترلر های STM32 وجود دارد. KEIL و IAR جز محبوب ترین کامپایلر ها برای برنامه نویسی بر روی این خانواده از میکروکنترلر ها هستند. شرکت ST نرم افزاری تحت عنوان STM32CUBE MX را منتشر نموده است. که با استفاده از این نرم افزار میتوانید پیکربرندی های مورد نظر خود را بصورت گرافیکی و پارامتری انجام دهیدو سپس این نرم افزار کتابخانه ها، سورس ها و کد های مورد نیاز را به پروژه اضافه میکند. سپس شما میتواند با اضافه نمود کد مربوطه خروجی مورد نظر خود را دریافت کنید (کاربرد این نرم‌افزار همانند بخش کدویزارد نرم‌افزار CodeVision است). استفاده از این نرم افزار باعث میشود تا سرعت کد نویسی بسیار بیشتر شود.

البته در سال های اخیر شرکت ST نرم افزار دیگری با نام STM32CUBEIDE را منتشر نمود. این نرم‌افزار همچون دو نرم افزار دیگری که معرفی شد کامپایلری برای برنامه نویسی بر روی میکروکنترلر های STM32 است. با این تفاوت که این نرم‌افزار، نرم افزار STM32CUBE MX را در خود جای داده. شما تنها با نصب یک نرم افزار میتوانید عملیات کد نویسی بر روی میکروکنترلر های STM32 را انجام دهید.  این نرم‌افزار بصورت رایگان برای سیستم عامل های مختلف عرضه شده است.

 

راه اندازی برد STM32 با کیل - دیجی اسپارک

 

برای شروع برنامه نویسی بر روی میکروکنترلر های STM32 میتوانید برد BluePill و پروگرامر STLink را از طریق لیک موجود در انتهای آموزش تهیه نمایید.

 


لوازم مورد نیاز


در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

درباره نویسنده

علی زاهدی

دانسته هایتان را مانند یک ساعت مچی در دست کنید، نه صرفا به این خاطر که نشان دهید آن را دارید. بلکه به این خاطر که اگر کسی از شما ساعت را پرسید، برایش بگویید.
لرد چسترفیلد

تبادل نظر و رفع عیب با ثبت دیدگاه

۴ دیدگاه

  • سلام چقدر جالب بود در کل دیدم نسبت به بردهای stm تغییر کرد من همیشه با آردوینو و نود ام سیو کار کردم
    نمیدونم برای شروع باید از کجا شروع کنم

    • با سلام از توجه شما سپاسگزارم
      در انتهای آموزش قطعات مورد نیاز برای شروع یادگیری معرفی شده است. و بزودی آموزش های دیگری برای این نوع میکروکنترلر منتشر خواهد شد. با دیجی اسپارک همراه باشید.

  • سلام من برد دیسکاوری stm32f100rb خریدم و شروع به یادگیری کردم ولی وقتی ی برنامه چشمک زن led نوشتم بعد روی برد بارگذاری می کنم با خطا زیر روبرو میشم :
    Command not supported
    Error: Flash Download failed – Target DLL has been cancelled
    با keil5 برنامه نوشته شده و رجیسترها با stmcub_max تنظیم شدن

    • با سلام
      این ارور ممکن است برای دلایل مختلفی مشاهده شود. کد را بررسی کنید ممکن است داخل کد خطایی وجود داشته باشد.