همانطور که میدانید میکروکنترلرها یا پردازندههای ARM (تفاوت میکروکنترلر و پردازنده در ادامه ذکر خواهد شد. فعلا این دو را معادل هم در نظر بگیرید) امروزه بیشترین استفاده را در بین سایر میکروکنترلرها، حداقل در کشور ما دارد.
ما هم از همین رو بر آن شدیم تا یک مجموعه آموزشی کاربردی برای این دسته از میکروکنترلرها را گردآوری و منتشر کنیم.
ARM (Advanced RISC Machine)
ARM در واقع اسم یک شرکت و همینطور اسم یک نوع معماری است که تنها به طراحی پردازنده با معماری خاص خود میپردازد اما خود تولیدکننده یا فروشنده هیچ نوع پردازنده یا میکروکنترلری نیست و تنها مجوز پردازندههایی که طراحی کرده است را به سایر شرکتها میفروشد.
در این مقاله در نهایت چندین شرکتی که این معماری را از شرکت ARM خریداری میکنند معرفی و در نهایت میکروکنترلر یکی از این شرکتها را برای ادامهی کار انتخاب خواهیم کرد.
انواع پردازندههای ARM
پردازندههای نسل جدید (نه همهی پردازندهها) شرکت ARM به صورت کلی به سه خانواده برای ردههای کاری مختلف تقسیم میشود. البته اگر وارد جزئیات این سه دسته بشویم، خود شامل چندین زیرشاخه میشوند و انواع مختلفی از پردازندهها را شامل میشود.
اجازه بدهید قبل از اینکه به سه دسته پردازنده مذکور بپردازیم، ابتدا تفاوت میکروکنترلر و پردازنده را بیان کنیم تا در ادامهی راه سردرگم نشوید.
تقریبا میتوان گفت که پردازنده همان CPU است، اما میکروکنترلر علاوه بر CPU، شامل حافظهها، پورتها، مبدلها، تایمرها، پروتکلهای ارتباطی و … نیز میشود.
حقیقت این است که پردازندههایی که شرکت ARM طراحی میکند و امتیاز آن را به سایر شرکتها میفروشد فقط یک CPU تنها نیست و کمی بیش از یک CPU درون این پردازندهها قرار دارد. اکنون جهت جلوگیری از سردرگمی شما از پرداختن به اینکه پردازنده ARM دقیقا شامل چه چیزهایی است، صرفنظر میکنیم و این موضوع را به آینده موکول میکنیم.
پس نتیجه میگیریم که پردازندههای شرکت ARM یک چیزی بین میکروکنترلر و CPU هستند.
و اما به بحث اصلی یعنی انواع خانواده پردازندههای نسل جدید ARM برگردیم.
پردازندههای ARM نوع Cortex-A
این نوع پردازندهها برای اجرای سیستمعاملهایی مانند اندروید، لینوکس و … در نظر گرفته شده است. بسیاری از گوشیهای موبایل در حال حاضر از این نوع پردازندهها استفاده میکنند.
پردازندههای ARM نوع Cortex-R
این نوع پردازندهها برای برنامههایی بلادرنگ و حساس به ایمنی بهینهسازی شده است، به عنوان مثال برای استفاده در خودروها یا جاهایی که نیاز به تصمیمگیری خیلی حساس باشد این نوع پردازندههاد مورد استفاده قرار میگیرند.
پردازندههای ARM نوع Cortex-M
این نوع پردازندهها برای کاربردهای میکروکنترلری کم هزینه و کم مصرف طراحی شده است که در دهها میلیارد دستگاه نهفته به کار میرود.
احتمالا با توجه به کاربردها حدس زده باشید که تمرکز ما بر روی میکروکنترلرهای نوع Cortex-M خواهد بود.
بله تمرکز ما در این دورهی آموزشی بر روی این نوع پردازندهها یعنی پردازندههای نوع Cortex_M خواهد بود و در نهایت با واحدهای جانبی این نوع پردازندهها آشنا خواهیم شد و برای قسمتهای مختلف میکروکنترلرهای مبتنی بر این نوع پردازنده برنامهنویسی خواهیم کرد.
اجازه بدهید کمی به معرفی پردازندهی Cortex-M بپردازیم و با انواع و جزئیات آن بیشتر آشنا شویم.
تا به امروز 10 نوع پردازندهی Cortex-M طراحی شده است که در جداول زیر امکانات آنها قابل مشاهده است:
در دو تصویر بالا امکانات انواع پردازندههای Cortex-M با هم مقایسه شده است، اگر شما اکنون با بسیاری از موارد مقایسه شده در بالا آشنا نیستید، اشکال ندارد و در طول زمان یادگیری با هر یک از آنها آشنا خواهید شد. اکنون فقط یک نگاه کلی به آنها بیندازید و رد شوید.
شرکتهای استفادهکننده از پردازندههای ARM
شرکتهای TI ،NXP ،ATMEL و ST از جمله معروفترین شرکتهایی هستند که پردازندههای طراحی شده توسط شرکت ARM را خریداری میکنند و این پردازندهها را در میکروکنترلرهایی که خودشان طراحی میکنند به کار میگیرند.
پس خود این شرکتهای مذکور در طراحی پردازنده دخیل نیستند و فقط پردازندهها را میخرند و در کنار این پردازندهها، حافظهها، پورتها، مبدلها، تایمرها، پروتکلهای ارتباطی و … را قرار میدهند تا میکروکنترلر ساخته شود.
اما ما از کدام یک از میکروکنترلرهای شرکتهای بالا استفاده خواهیم کرد؟
از آن جهت که میکروکنترلرهای شرکت ST در حال حاضر در کشور ما استفاده بیشتری دارند و به وفور یافت میشوند و همینطور ابزارهای گستردهای که شرکت ST برای کار راحتتر با میکروکنترلرهای خودش در دسترس ما قرار داده است، ما از میکروکنترلرهای این شرکت استفاده خواهیم کرد.
شرکت ST دو دسته میکروکنترلر STM8 که 8 بیتی هستند و STM32 که 32 بیتی هستند دارد، توجه کنید که میکروکنترلرهای STM8 ربطی به معماری ARM ندارند و فقط مربوط به شرکت ST است، ما هم با این دسته کاری نداریم.
اما آن دسته از میکروکنترلرهای که مدنظر ما هستند میروکنترلرهای STM32 هستند. عدد 32 هم مربوط به 32 بیتی بودن آنهاست.
در نظر داشته باشید که میکروکنترلرهای ARM بر خلاف AVR و سایر میکروکنترلرهای 8 یا 16 بیتی، 32 بیتی هستند.
پس تا اینجا متوجه شدیم که قرار است از پردازندههای Cortex_M شرکت ARM که در میکروکنترلرهای STM32 شرکت ST به کار رفته است، استفاده بکنیم.
اجازه بدهید در ادامه به معرفی میکروکنترلرهای STM32 شرکت ST بپردازیم و در نهایت با یک جمعبندی این مقاله را به پایان برسانیم.
انواع میکروکنترلرهای STM32
ابتدا به شکل زیر دقت کنید:
همانطور که از تصویر بالا مشخص است محور عمودی، مربوط به دستهبندی پردازندههای Cortex-M شرکت ARM و محور افقی مربوط به دستهبندی میکروکنترلرهای STM32 شرکت ST است.
محور افقی که مربوط به پردازندههای Cortex-M میباشد را کمی قبلتر بررسی کردیم. اکنون میخواهیم محور عمودی که مربوط به دستهبندی شرکت ST میشود را بررسی کنیم و بگوییم که هر دسته برای چه کاربردهایی مناسب است.
سری Wireless عمدتا برای کاربردهایی مثل IOT یا همان اینترنت اشیا به کار میرود.
سری Ultra-low-power به دلیل مصرف کم توان برای دستگاههایی که با باتری کار میکنند بسیار مناسب است.
سری Mainstream کاربردهای عمومی دارد و غالبا در پروژههایی که از نظر مصرف توان، قدرت پردازشی و حافظهی زیاد محدودیتی ندارند مورد استفاده قرار میگیرد.
سری High performance پرقدرتترین میکروکنترلرهای شرکت ST هستند. این دسته از میکروکنترلرها قدرت پردازشی بیشتری نسبت به سریهای دیگر دارند و برای کارهایی پردازشی و کارهایی که نیاز به سرعت بالایی دارند بسیار مناسب هستند.
خب در این مقاله با اینکه ARM چیست و چه پردازندههای دارد، و همینطور انواع میکروکنترلرهای مبتنی بر این نوع پردازندهها به خوبی آشنا شدیم و مشخص کردیم که در ادامهی راه قرار است با چه میکروکنترلری کار بکنیم.
فعلا تا همین جا کافی است، در قسمت دوم با ابزارها و نحوهی پیکرهبندی میکروکنترلرهای STM32 آشنا میشویم.
منبع:سیسوگ