میکروکنترلر آرم چیست؟ صفر تا صد برنامه نویسی arm

آیا تابهحال نام میکروکنترلر یا میکروکنترلر آرم به گوشتان خورده؟ شاید پاسختان «خیر» باشد اما اگر تابهحال به منظور تعمیر لوازم برقی خانگی مثل جاروبرقی، لباسشویی، کامپیوتر و … دستگاهتان را باز کرده باشید حتما این قطعات را به شکلهای گوناگون بر روی بُرد آنها دیدهاید.

در این مقاله به بررسی میکروکنترلر ARM به صورت کامل و معرفی روش کار و انواع آن خواهیم پرداخت.
میکروکنترلر یا ریزکنترلگر چیست؟
امروزه با پیشرفت سیستمها، میکروکنترلرها نیز توسعه پیدا کردهاند، این تراشهها داخل وسایل مختلفی مانند ماشین، تلفن همراه و… قرار دارند، به همین دلیل به آن کنترلر توکار هم گفته میشود و چهار گروه اصلی PIC ، ARM، 8051 و AVR از معروفترین و رایجترین آنها در ایران هستند. میکروکنترلر یا ریزکنترلگر یک تراشه IC است که برای کنترل دستگاههای دیگر برنامه ریزی شده است. دلیل نامگذاری این تراشه به میکروکنترلر سایز و اندازهی آن، کنترل دستگاهها و ماشین آلات است. میکروکنترلرها دارای RAM، ROM و پورتهای ورودی یا خروجی است.
میکروکنترلر آرم چیست؟
میکروکنترلر آرم تقریبا در هر نوع کاربردی از پروتکلهای پزشکی گرفته تا سیستمهای امنیتی، حمل نقل خودرو و نظامی به صورت گسترده در حال استفاده است. در این خانواده کارایی بالا، قیمت پایین و مصرف انرژی بسیار پایین، باعث شدهاست سازندگان بزرگی مثل شرکت ST، NXP، Apple این تراشهها را تولید و عرضه کنند.
یکی دیگر از مزایایی که موجب شناخته تر شدن میکروکنترلرها میگردد، برخورداری از قابلیت پشتیبانی از پروتکلهای ارتباطی میباشد. البته که در ارتباط با میکروکنترلر ARM این امر به بیشترین حد ممکن مهیا است.
میکروکنترلر ARM خانواده STM32 مبتنی بر Cortex-M است. خانواده STM32 به طور کلی به چهار دسته کلی طبقهبندی میشوند که هر یک بازار خاص خودش را دارد. این چهار دسته عبارتند از: کارایی بالا، اصلی، توان بسیار کم و بیسیم. خانواده STM32 از میکروکنترلر ARM ساخت استیمایکروالکترونیکس (STMicroelectronics) است.
میکروکنترلرهای STM32 امکانات جانبی ارتباطی سریال و موازی را ارائه میدهند که میتوانند با انواع قطعات الکترونیکی از جمله سنسورها، نمایشگرها، دوربینها، موتورها و سایر تجهیزات ارتباط برقرار کنند. هر نوع میکروکنترلر ARM از خانواده STM32 دارای حافظه داخلی فلش و رم هستند.
دامنه عملکرد میکروکنترلر ARM خانواده STM32 بسیار گسترده است. برخی از ابتداییترین انواع این خانواده، سری STM32F0 و STM32F1 است که از فرکانس ساعت تنها 24 مگاهرتز شروع میشوند و در بستههایی با حداقل 16 پین در دسترس هستند.
از طرف دیگر، میکروکنترلر ARM سری STM32H7 با کارایی بسیار عالی، در بستههایی با حداکثر 240 پین موجود است. این میکروکنترلر، یک میکروکنترلر ARM تک یا دو هستهای است که از یک هسته Cortex-M7 با فرکانس 480 مگاهرتز و یک هسته Cortex-M7 با فرکانس ۲۴۰ مگاهرتز اضافه برای نسخههای دو هستهای تشکیل شده است. دسته عملکرد بالا، بهترین عملکرد را در اجرای کد و انتقال دادهها ارائه میدهد. مدلهای پیشرفتهتر با واحدهای ممیز شناور (FPU) برای کاربردهای نیازمند پردازش عددی در دسترس هستند. این مدلهای پیشرفته خط بین میکروکنترلر و یک میکروپروسسور را حذف میکنند. سری STM32L به طور خاص برای کاربردهای قابل حمل با توان کم (از یک باتری کوچک) طراحی شده است.
میکروکنترلرهای AVR
همانگونه که بیان گردید، میکروکنترلرهای گوناگونی وجود دارد که هر یک ویژگیها و کاربردهای منحصر به فرد خود را دارند. البته که باید با توجه به نوع استفاده خود مناسب ترین آن اتخاذ گردد. بنابراین می توان اینگونه گفت که یک نوع آن از دیگر مدلهای موجود بهتر است و باید در تمامی مصارف تنها آن مورد استفاده قرار بگیرد.
با معرفی داشتن و بیان خصوصیات میکروکنترلر AVR بهتر میتوانیم با آنها آشنا گردیم. این نوع از میکروکنترلرها حاوی قیمت مناسب و به نسبت ارزان هستند. قدرت پردازش اختصاصی آنها ضعیف بوده و در مقابل قدرت پردازش عمومی مطلوب است. آنها دارای نویز پذیری بالایی میباشند و بیشترین حد فرکانس کاری برای آن ها به سیصد مگاهرتز خواهد رسید.
عمل پشتیبانی از پروتکلهای ارتباطی همانگونه که در قسمت بالا بیان گردید، از حائز اهمیت ترین مزیت میکروکنترلرها ست. جالب است بدانید که میکروکنترلر AVR از چهار گونه پروتکل ارتباطی پشتیبانی به عمل میآورد. البته که در این ارتباط هم در جایگاه متوسط واقع میشود.
ابزارهای توسعه میکروکنترلر آرم
ابزارهای توسعه برای تهیه کد، برنامهنویسی میکروکنترلر و آزمایش و اشکالزدایی کد مورد نیاز هستند که شامل موارد زیر است:
- کامپایلر (Compiler)
- اشکالزدا (Debugger)
- برنامهنویس سریالی درونمداری (ICSP)
چندین ابزار توسعه نرمافزاری برای تهیه کد در میکروکنترلرهای STM32 وجود دارد. ابزارهای نرمافزاری به عنوان محیط یکپارچه توسعه نرمافزار (IDE) در دسترس هستند که تمام ابزارهای لازم را در یک محیط یکپارچه در خود دارند.
دو بستهی توسعهی رایج به شرح زیر هستند:
Keil MDK ARM IDE :Keil MDK ARM یک محیط توسعه بسیار پایدار است که به صورت رایگان قابل است. با Keil میتوان یک برنامه کد را تا اندازه 32 کیلوبایت توسعه داد. برای تهیه برنامههای بزرگتر، یک نسخه مجاز پولی را خریداری کرد.
CoIDE: یک زنجیرهی ابزار رایگان مبتنی بر نسخه مختصر شدهای از Eclipse IDE است که به همراه یک نسخه ARM تعبیه شده از کامپایلر GCC ساخته شده است.
چندین IDE دیگر نیز وجود دارند که برای کار با میکروکنترلرهای STM32 در دسترس هستند. جدا از ابزارهای نرمافزاری، یک برنامهنویس سریالی درونمداری (ICSP) برای پروگرام و تست کد روی میکروکنترلر آرم مورد نیاز است. ICSP باید از طریق درگاه USB میکروکنترلر را با ابزارهای نرم افزاری PC متصل کند.
میکروکنترلرهای Cortex-M از دو پروتکل برنامهنویسی پشتیبانی می کنند: JTAG و SWD. چندین ICSP وجود دارد که از این پروتکلها پشتیبانی میکنند، از جمله: Keil U-Link 2 و Segger J-Link و ST-Link.
برنامهنویسی ARM
امروزه در دنیای بزرگ الکترونیک، میکروکنترلر های ARM جایگاه ویژه ای به دست آوردند، مخصوصا سری Cortex M. از سازندههای این میکروکنترلر ها میشود به ST، NXP و Texas Instruments اشاره کرد. اما مشکل از جایی شروع میشود که یادگیری این میکروکنترلر ها نیز به سادگی نیست، علاوه بر آن منابع یادگیری برای این نوع از میکروکنترلر ها محدود است. از آنجا که قیمت بردهای ARM بالاست و حتی در بعضی موارد برای نرم افزار های مربوطه باید هزینه کرد، آموزش این نوع از میکروکنترلر ها آنچنان در وبسایت های آموزش آنلاین مثل مرسوم نیست. پس برای یادگیری برنامه نویسی و پیاده سازی برنامه ها روی این نوع میکروکنترلر ها از کجا شروع کنیم؟
دوره آموزشی برنامه نویسی ARM
ما در این متن از خود سعی نمودیم شما را به اختصار با تفاوتهای AVR و ARM و مزایای هر کدام آشنا سازیم. منابع مختلفی برای آموزش برنامهنویسی آنها وجود دارد:
سایتهای دیگری نیز برای آموزش وجود دارند اما منابع فارسیزبان در این زمینه بسیار محدودند.
با توجه به محبوبیت میکروکنترلرهای آرم و کاربرد آنها در صنعت و کمبود منابع آموزشی فارسیزبان، تیم گیتی سپند تصمیم گرفت یک دوره جامع آموزش برنامه نویسی آرم برگزار کند. این دوره مقدماتی است اما دوره دیگری برای مباحث پیشرفته درنظر گرفتهشدهاست. مدرس این دوره مهندس بیگی هستند که سابقه چندین ساله در حوزه تدریس برنامه نویسی ARM و AVR دارند.
پیشنهاد میشود که قبل از شروع آموزش برنامه نویسی میکروکنترلر های ARM stm32 ، سطح تسلط خود به زبان برنامه نویسی C را تا حد بالایی ارتقا دهید و همچنین توصیه اکید میشود که با میکروکنترلرهای ساده تری مثل AVR یا PIC به طور کامل آشنا شوید. و برنامه های مختلفی را با آنها پیاده سازی کنید.


