ARM, STM32_LL, آموزش, توصیه شده, مقاله

آموزش STM32 با توابع LL قسمت اول: پردازنده‌های ARM

STM32

همانطور که می‌دانید میکروکنترلرها یا پردازنده‌های 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 بپردازیم و با انواع و جزئیات آن بیشتر آشنا شویم.

 

Cortex_M

 

تا به امروز 10 نوع پردازنده‌ی Cortex-M طراحی شده است که در جداول زیر امکانات آن‌ها قابل مشاهده است:

 

پردازنده‌های Cortex-M

 

پردازنده‌های 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

ابتدا به شکل زیر دقت کنید:

 

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

 

همانطور که از تصویر بالا مشخص است محور عمودی، مربوط به دسته‌بندی پردازنده‌های Cortex-M شرکت ARM و محور افقی مربوط به دسته‌بندی میکروکنترلرهای STM32 شرکت ST است.

محور افقی که مربوط به پردازنده‌های Cortex-M می‌باشد را کمی قبل‌تر بررسی کردیم. اکنون می‌خواهیم محور عمودی که مربوط به دسته‌بندی شرکت ST می‌شود را بررسی کنیم و بگوییم که هر دسته برای چه کاربردهایی مناسب است.

سری Wireless عمدتا برای کاربردهایی مثل IOT یا همان اینترنت اشیا به کار می‌رود.

سری Ultra-low-power به دلیل مصرف کم توان برای دستگاه‌هایی که با باتری کار می‌کنند بسیار مناسب است.

سری Mainstream کاربردهای عمومی دارد و غالبا در پروژه‌هایی که از نظر مصرف توان، قدرت پردازشی و حافظه‌‌ی زیاد محدودیتی ندارند مورد استفاده قرار می‌گیرد.

سری High performance پرقدرت‌ترین میکروکنترلرهای شرکت ST هستند. این دسته از میکروکنترلرها قدرت پردازشی بیشتری نسبت به سری‌های دیگر دارند و برای کارهایی پردازشی و کارهایی که نیاز به سرعت بالایی دارند بسیار مناسب هستند.

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

 

فعلا تا همین جا کافی است، در قسمت دوم با ابزارها و نحوه‌ی پیکره‌بندی میکروکنترلرهای STM32 آشنا می‌شویم.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

12 دیدگاه در “آموزش STM32 با توابع LL قسمت اول: پردازنده‌های ARM

  1. ممد گفت:

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

    1. Zeus . گفت:

      سلام دوست عزیز
      ممنونم برای نکته سنجی شما
      اصلاح شد 🙂

  2. Mehran aghaneghad گفت:

    سلام من تازه با برد اردینو سی آشنا شدم که ب مقاله شما برخورد کردم اگر ممکنه در مقام مقایسه یه توضیح بدید و اینکه اگر برای شروع جهت پیکربندی و برنامه نویسی آن نیاز ب یک پشتیبان قوی باشه چه کانالی رو پیشنهاد میکنید ممنون

    1. گفت:

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

      یه پیشنهاد خوب که دارم اینه که یه رفرنس انگلیسی هست به نام Beyond the Arduino که کتاب فارسی فراتر از آردوینو تالیف دکتر بوستان برگرفته از همین رفرنس شما می‌تونید از همین کتاب استفاده کنید که یکی از بهترین رفرنس‌ها در زمینه آردوینو هست.
      ایده این کتاب این بوده که ما وقتی داریم از آردوینو استفاده می‌کنیم به یه سری قابلیت‌ها دسترسی کامل نداریم. راه‌حلش برا حل این مشکل هم اینه که ما فقط از محیط و قابلیت سخت‌افزاری آردوینو که یه برد آماده داره و نیاز به پروگرامر هم نداره استفاده بکنیم. اما در اون محیط، کدهای AVR رو به کار بگیریم تا هم به قابلیت‌های بیشتری از میکروکنترلر دسترسی داشته باشیم و هم اون انعطاف لازم رو بتونیم اجرا کنیم.

  3. محمد گفت:

    سلام مهندس جلیلی خسته نباشین ببخشید امکانش هست با خود شما حالا از طریق تلگرام واتس آپ یا … ارتباط بگیرم چون یه سوال داشتم از شما .ممنون

    1. گفت:

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

      اگه نیاز بود و عمری باقی بود بعدا حتما به صورت خصوصی در واتساپ یا تلگرام با شما صحبت خواهم کرد. بازم ببخشید بابت اینکه نتونستم خصوصی جواب بدم.

  4. سعید حقیقی پور گفت:

    سلام مهندس
    مطلب جالب و خوبی بود ممنون!
    یه سوال هم داشتم.راجع به LL منظورتون رو متوجه نشدم؟اگه اونطور که حدس زدم میخواید برنامه نویسی سطح پایین این میکروها رو بگید تا چه حد سطح پایین؟اسمبلی طور؟

    1. گفت:

      سلام سعید جان. سپاس از نظر مثبت و لطفی که به ما دارید.

      ببینید LL یه کتابخونه است که با زبان C نوشته شده است نه اسمبلی، پس ما قصد داریم که با سطح پایین‌ترین کتاب‌خونه‌ای که برای این دسته از میکروکنترلرها وجود داره برنامه بنویسیم (کتاب‌خونه LL سطح‌پایین‌تر از کتاب‌خونه HAL که احتمالا برایتان آشنا باشد، است و هر دو نیز به زبان C نوشته شده‌اند).
      برای این دسته از میکروکنترلرها تا به حال هیچ کتاب‌خونه‌ای به زبان اسمبلی ارائه نشده است.

      همچنین در نظر داشته باشید که این پردازنده‌ها برای زبان C هم بهینه شده‌اند و به طور کامل از این زبان پشتیبانی می‌کنند، پس اگر زمان توسعه‌ی کد را هم در نظر بگیریم (با زبان اسمبلی توسعه‌ی کد بسیار زمان‌بر است) زبان Cمی‌تونه انتخاب بهتری باشه.

  5. VHD گفت:

    سلام
    خیلی خوب بود
    ممنون
    فقط کاش مثل بعضی دیگر از سری آموزش‌ها ناقص و نا تموم نمونه

    1. گفت:

      درود بر شما دوست عزیز. سپاس از نظر مثبت شما.

      خیر، این مجموعه تمامی قسمت‌هایش از قبل مشخص شده است و فقط باید نگارش و در نهایت منتشر گردد.

  6. امید مقدس گفت:

    ممنون از مطالب آموزنده شما و زحمتی که می کشید

    1. گفت:

      سپاس از نظر مثبت شما امید جان.