امروزه پردازندههای مبتنی بر ARM در بسیاری از دستگاههای الکترونیکی اطراف ما مانند موبایل یافت میشوند. تراشههای ARM به واسطه طراحی منحصر به فردی که دارند، انتخاب بسیار مناسبی در ساخت انواع گجتهاست. پیش از این به آموزش ساخت پروژه در نرم افزار STM32Cube MX و پروگرام کردن میکروکنترلر STM32F103 با بوت لودر آردوینو در پستهای جداگانهای پرداختهایم. در این پست قصد داریم تا درباره معماری ARM و خانواده STM32 موضوع را بررسی کنیم. در ادامه با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.
معماری تراشه ARM
در واقع ARM نوعی معماری ساخت پردازنده بر پایه معماری RISC است. معماری RISC دارای دستورالعملهای کمی است، این موضوع سبب شده تا سرعت اجرای دستورات بالاتر رفته و همچنین در ساخت پردازندههای مبتنی بر این معماری از ترانزیستورهای کمتری استفاده شود. این موضوع باعث کاهش توان مصرفی این پردازندهها نیز میشود. میکروکنترلرهای مبتنی بر این معماری معمولا قیمت کمتری نسبت به میکروکنترلرهای دیگر دارد. از شرکتهای رایج سازنده میکروکنترلرهای مبتنی بر معماری ARM میتوان به ST، ATMEL و NXP اشاره کرد. در این پست من از محصولات شرکت ST و خصوصا میکروکنترلرهای سری STM32 استفاده میکنم.
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 آشنا شوید.
میکروکنترلر سری STM32F1
سری STM32F1 جز پردازنده های میان رده این خانواده است، اما این سری دارای قدرت پردازشی بسیار بالای میباشد. سری STM32F1 اولین گروه میکروکنترلرهای STM32 مبتنی بر هسته ARM Cortex-M3 است. سری F1 با افزایش سرعت پردازنده ، اندازه حافظه داخلی ، انواع لوازم جانبی با گذشت زمان تکامل یافته است. هرکدام زیر مجموعه های خانواده STM32 خود شامل زیر مجوعه های بساری میشوند. از محبوب ترین زیر مجموعه این خانواده پردازنده های سری STM32F103C8T6 که تاکنون از آن داخل آموزش ها استفاده نموده ایم. از ویژگی های این پردازنده میتوان به موارد زیر اشاره نمود:
- حداکثر فرکانس کاری ۷۲ مگاهرتز
- ۶۴ کیلوبایت حافظه Flash و ۲۰ کیلوبایت حافطه SRAM
- ۷ کانال DMA Controller
- پشتیبانی از: Timer, ADC, SPI, I2C و USART
- دارای ۳۷ پورت GPIO
- و …
نرم افزار های مورد نیاز
پیش از این نحوه ساخت پروژه و پروگرام کردن برنامه بر روی برد BluePill که هدر برد مخصوص پردازنده STM32F103C8T6 است، را در پست راه اندازی برد STM32 با استفاده از نرم افزار KEIL و توابع HAL آموزش داده ایم. کامپایلر های مختلفی برای برنامه نویسی بر روی میکرو کنترلر های STM32 وجود دارد. KEIL و IAR جز محبوب ترین کامپایلر ها برای برنامه نویسی بر روی این خانواده از میکروکنترلر ها هستند. شرکت ST نرم افزاری تحت عنوان STM32CUBE MX را منتشر نموده است. که با استفاده از این نرم افزار میتوانید پیکربرندی های مورد نظر خود را بصورت گرافیکی و پارامتری انجام دهیدو سپس این نرم افزار کتابخانه ها، سورس ها و کد های مورد نیاز را به پروژه اضافه میکند. سپس شما میتواند با اضافه نمود کد مربوطه خروجی مورد نظر خود را دریافت کنید (کاربرد این نرمافزار همانند بخش کدویزارد نرمافزار CodeVision است). استفاده از این نرم افزار باعث میشود تا سرعت کد نویسی بسیار بیشتر شود.
البته در سال های اخیر شرکت ST نرم افزار دیگری با نام STM32CUBEIDE را منتشر نمود. این نرمافزار همچون دو نرم افزار دیگری که معرفی شد کامپایلری برای برنامه نویسی بر روی میکروکنترلر های STM32 است. با این تفاوت که این نرمافزار، نرم افزار STM32CUBE MX را در خود جای داده. شما تنها با نصب یک نرم افزار میتوانید عملیات کد نویسی بر روی میکروکنترلر های STM32 را انجام دهید. این نرمافزار بصورت رایگان برای سیستم عامل های مختلف عرضه شده است.
برای شروع برنامه نویسی بر روی میکروکنترلر های STM32 میتوانید برد BluePill و پروگرامر STLink را از طریق لیک موجود در انتهای آموزش تهیه نمایید.
سلام چقدر جالب بود در کل دیدم نسبت به بردهای stm تغییر کرد من همیشه با آردوینو و نود ام سیو کار کردم
نمیدونم برای شروع باید از کجا شروع کنم
با سلام از توجه شما سپاسگزارم
در انتهای آموزش قطعات مورد نیاز برای شروع یادگیری معرفی شده است. و بزودی آموزش های دیگری برای این نوع میکروکنترلر منتشر خواهد شد. با دیجی اسپارک همراه باشید.
درود. ظاهراً شما از دو ترم افزار
STM32CUBEMX و keil استفاده میکنید، چرا از نرم افزار
STM32CUBEIDE استفاده نکرده آید. آخه من میخوام از avr مهاجرت کنم به stm32 . از کجا شروع کنم؟
با سلام
بهتر است که IDEهای مختلف برای کار با STM را تست کنید و روش کارکردن هر کدام را بدانید.
سلام من برد دیسکاوری stm32f100rb خریدم و شروع به یادگیری کردم ولی وقتی ی برنامه چشمک زن led نوشتم بعد روی برد بارگذاری می کنم با خطا زیر روبرو میشم :
Command not supported
Error: Flash Download failed – Target DLL has been cancelled
با keil5 برنامه نوشته شده و رجیسترها با stmcub_max تنظیم شدن
با سلام
این ارور ممکن است برای دلایل مختلفی مشاهده شود. کد را بررسی کنید ممکن است داخل کد خطایی وجود داشته باشد.
سلام آیا این میکرو کنترلر قابلیت چند هسته ای دارد ومیتوان از برنامه نویسی چند نخی یا چند لوپ استفاده کرد من از کامپایلر آردوینو استفاده میکنم اگر میشه راهنمایی بفرمایید.
سلام
بله قابلیت FreeRTOS در اکثر میکروکنترلرهای این خانواده وجود دارد.
سلام من از کامپایلر آردوینو برای کد نویسی استفاده میکنم آیا این میکرو قابلیت برنامه ریزی چند هسته ای دارد و میتوان برنامه چند نخی یا چند لوپ نوشت اگر میشه راهنمایی بفرمایید ممنون؛
در ادامه مجموعه آموزش میکروکنترلرهای Stm32 این مورد نیز توضیح داده خواهد شد. با دیجی اسپارک همراه باشید.
سلام. ممنون از وقت و زمانی صرف نوشتن این مطالب مفید کردید. موفق باشید
سلام
از توجه شما سپاسگزارم.
سلام مهندس جان. یه سوال دارم. برنامه نویسی stm cortex M3, با stm cortex M4 فرق دارن یا یکی هستند
با سلام
یکسری پارامتر های متفاوت از یکدیگر دارند اما در کل در نحوه برنامه نویسی تفاوت زیادی ندارند و هر دو با زبان C برنامه نویسی میشوند.
ممنونم بابت آموزش خوبتون
عالی بود
سلام
از توجه شما سپاسگزارم.
سلام وقت بخیر
ببخشید یه سوال داشتم، میکروکنترولرهای STM و SLP از کدوم معماری است؟ (Havard or Von Neuman)
با سلام
پردازنده هایی که معماری آنها ARM است، دارای ساختار Harvard هستند.