درست است که برای یادگیری هر موضوعی بهتر است که همت کنیم و از اولین شنبهی پیشرو آستینها را بالا بزنیم و شروع به یادگیری کنیم. اما در مورد میکروکنترلر چنین نیست و باید شنبههای زیادی را صبر کرد.
شما قبل از اینکه بخواهید میکروکنترلر یاد بگیرید، باید به خوبی با منطق دیجیتال آشنا باشید. یعنی اینکه نقطهی شروع کارتان از همان جبر بول شروع شده باشد و با شناخت گیتهای دیجیتال ادامه پیدا کند و در نهایت به یک شناخت نسبیِ طراحی انواع مدارات دیجیتال با استفاده از همین گیتها رسیده باشید.
حال اگر شما این مراحل را نگذراندهاید، بهتر است که در همینجا از ادامهی خواندن این مقاله منصرف شوید و ابتدا به خوبی مواردی که در بالا ذکر شد را فرا بگیرید. چون در غیر اینصورت یا شما کلا از ادامهی راه منصرف خواهید شد و یا به همین حرف الان ما میرسید و برمیگردید و از ابتدا موارد بالا را یاد میگیرید.
راستی تا یادم نرفت این را هم بگویم که دانستن یک زبان برنامهنویسی مانند زبان C هم یکی دیگر از پیشنیازهای یادگیری میکروکنترلر است.
پس موارد بالا را به خوبی یاد بگیرید چون که مشخصا در رابطه با هیچ کدام از موضوعات بالا در این مجموعه آموزشی صحبت نخواهد شد.
چطور میکروکنترلر یاد بگیرم؟
یادگیری میکروکنترلر عموما شبیه یادگیری همان مفاهیم دیجیتالی بود که باید تا اینجا بلد باشید. یعنی ابتدا یکی سری اسامی میدانستید که مفهومشان را نمیدانستید و برای یادگیری آنها کتاب میخواندید، مقاله میخواندید، کلاس میرفتید و تمرین میکردید. اما در میکروکنترلر علاوه بر مواردی که ذکر گردید دو منبع دیگر هم برای یادگیری پیش روی شماست.
یکی از دو منبع که اصلیترین و قابل استنادترین منبع است و در اصل مرجعی برای یادگیری میکروکنترلر است، مستندات خود شرکت سازندهی میکروکنترلر میباشد. اما در ابتدای کار ارتباط برقرار کردن با این منابع کمی مشکل است، پس به همین خاطر منبع دوم برای یادگیری شما را معرفی خواهیم کرد.
منبع دیگر مقالاتی است که قرار است ما در این مجموعه آموزشی در اختیار شما قرار بدهیم.
کدام میکروکنترلر را یاد بگیرم؟
از آنجایی که نحوهی کارکرد همهی میکروکنترلرها بر یک سری اصول مشترک برقرار است، پس یادگیری هر نوع میکروکنترلری میتواند شما را با این حوزه آشنا کند. اما یکی سری پارامتر دیگر نیز وجود دارد که ما با توجه به این پارامترها یکی از این میکروکنترلرها را انتخاب میکنیم.
سه پارامتر زیر از مهمترین پارامترها برای انتخاب یک میکروکنترلر است:
- بازار کار
- به روز بودن
- در دسترس بودن منابع آموزشی و ابزارها
حداقل در ایران در حال حاضر بازار کار میکروکنترلرهای مبتنی بر معماری ARM بیشترین استفاده را در بین محصولات تولید شده دارد. از نظر بهروز بودن هم در حال حاضر معماری ARM در حوزهی میکروکنترلرها بهروزترین معماری را دارد.
میماند مورد سوم، یعنی در دسترس بودن منابع آموزشی و ابزراها. همین مورد ما را بر این داشت که میکروکنترلرهای شرکت ST را از بین این همه میکروکنترلر مبتنی بر معماری ARM برگزینیم.
شرکت ST شاید بهترین منابع، مستندات و آموزشها را نداشته باشد، اما به جرات میتوان گفت که یک دلیل برتری این شرکت، گستردگی و سادگی همین مستندات و ابزارهای توسعه است.
یادگیری میکروکنترلرهای ST در آموزش STM32 با توابع LL چگونه و با چه ابزارهایی خواهدبود؟
همانطور که گفتیم روشها و ابزارهای زیادی برای کار با میکروکنترلرهای این شرکت وجود دارد، اما ما با توجه به اینکه شما در مسیر یادگیری این نوع میکروکنترلرها هستید و همچنین با سنجیدن یک سری پارامتر دیگر که به مرور با آنها آشنا خواهید شد، به این نتیجه رسیدیم که با استفاده از ابزارهایی که در ادامه معرفی خواهیم کرد، این مجموعه آموزش را پیش ببریم.
ابزار اول نرمافزار STM32CubeMX است که یک محیط گرافیکی زیبا و کاربر پسند برای ایجاد و پیکرهبندی اولیه پروژه است.
ابزار دوم توابع LL است که قرار است ما در این مجموعه آموزشی با استفاده از این توابع برنامهنویسی کنیم. اکنون از توضیح اینکه این توابع چه هستند صرفنظر میکنیم و در مقالات این مجموعه آموزشی به تشریح کامل این توابع خواهیم پرداخت.
توابع دیگری مانند توابع LL نیز برای توسعهی کد وجود دارد که این توابع را هم در آینده بررسی خواهیم کرد.
توجه داشته باشید اکنون که این مقاله در حال نگارش است، هیچ آموزش فارسی زبانی در ایران برای راهاندازی میکروکنترلرهای STM32 با استفاده از توابع LL ارائه نشده است. بر همین اساس تصمیم گرفته شد تا آموزشی کاربردی و مطابق با نیاز، تدوین و به صورت رایگان در اختیار علاقهمندان قرار داده شود.
ابزار سوم که یکی از مهمترین ابزارها برای کار با میکروکنترلرهاست و معمولا افراد وقت زیادی را درگیر این موضوع هستند که چه ابزرای را انتخاب بکنند، IDE و کامپایلر است. ما در آموزش STM32 با توابع LL از IDE و کامپایلر Keil استفاده خواهیم کرد و گاهی هم برای آشنایی بیشتر شما، از نرمافزار STMCubeIDE که در زمان نگارش این مقاله حدود یک سالی از معرفی آن توسط شرکت ST میگذرد، استفاده خواهیم کرد.
نرمافزار STMCubeIDE ازIDE محبوب Eclipseو کامپایلر GCC استفاده میکند. خوبی این نرمافزار این است که علاوه بر اینکه Eclipse IDE و کامپایلر GCC را تحت عنوان یک نرمافزار مجتمع ارائه میدهد، نرمافزار STM32CubeMX که برای پیکرهبندی اولیه استفاده میشد را هم در همین پک نرمافزاری گنجانده است. یعنی ما تنها با یک نرمافزار هم پیکرهبندی اولیه را انجام میدهیم، هم کد یا همان برنامه را ادیت و هم کامپایل میکنیم.
در این مجموعه آموزشی هر پروژه به صورت کاملا عملی بر روی برد تست خواهد شد و همچنین در صورت نیاز به عنوان یک کاربرد سختافزارهای جانبی را با استفاده از امکانات میکروکنترلر راهاندازی خواهیم کرد.
آموزش STM32 با توابع LL قسمت اول: پردازندههای ARM
آموزش STM32 با توابع LL قسمت دوم: روشهای پیکرهبندی و انواع توابع
در قسمت اول از آموزش STM32 با توابع LL، در رابطه با پردازنده و میکروکنترلر صحبت کردیم و به تفاوتهای میکروکنترلر و پردازنده پرداختیم. همچنین گفته بودیم که خود شرکت ARM فقط طراح پردازنده است، نه میکروکنترلر.
آموزش STM32 با توابع LL قسمت سوم: STM32CubeMX و Keil
در قسمت دوم از آموزش STM32 با توابع LL، در رابطه با چند بیتی بودن پردازنده و مزایای آن صحبت کردیم. در ادامه با نحوهی پیکرهبندی و همچنین روشهای مختلفی که برای آن وجود دارد آشنا شدیم. نهایتا هم با چندین نوع کتابخانه و تابع آشنا …
آموزش STM32 با توابع LL قسمت چهارم: RCC (کنترل ریست و کلاک)
در قسمت سوم از آموزش STM32 با توابع LL، یاد گرفتیم که در نرمافزار STM32CubeMX چگونه میتوان یک پروژه ایجاد کرد. همینطور در همان قسمت تنظیماتی که برای یک پروژه ساده نیاز بود را شرح دادیم و آن را پیکرهبندی کردیم و در نهایت از پیکر…
آموزش STM32 با توابع LL قسمت پنجم: GPIO-Output
در قسمت چهارم از آموزش STM32 با توابع LL، با واحد RCC آشنا شدیم و جزئیات و دلیل وجود کلاک در مدارات دیجیتال را بررسی کردیم، همچنین گفتیم که کلاک ورودی به میکروکنترلر چگونه در میکروکنترلر با استفاده از PLL افزایش و با استفاده از Pr…
آموزش STM32 با توابع LL قسمت ششم: GPIO-Input
در قسمت پنجم از آموزش STM32 با توابع LL، در رابطه با GPIO در حالت خروجی صحبت کردیم و به بررسی جزئیات رجیسترهای GPIO پرداختیم که همین بررسی جزئیات و البته یک سری توضیحات دیگر، درک ما را از تفاوت سرعت فاحش بین توابع HAL و LL بیشتر ک…
آموزش STM32 با توابع LL قسمت هفتم: Interrupt
در قسمت ششم از آموزش STM32 با توابع LL، در رابطه با GPIO در حالت ورودی صحبت کردیم. نحوهی کار به این صورت بود که مقدار رجیستری که مربوط به پینهای میکروکنترلر در حالت ورودی بود را میخواندیم و پس از آن، متناسب با آن مقدار، متغییری…
آموزش STM32 با توابع LL قسمت هشتم: UART-Transmit
در قسمت هفتم از آموزش STM32 با توابع LL، ابتدا در رابطه با کلیت و ذات وقفه صحبت کردیم و گفتیم که به چه دلایلی وقفه مفید است و باید در سیستم وجود داشته باشد، در ادامه در رابطه با وقفه در میکروکنترلرهای STM32 سری F1 صحبت کردیم و طرز…
آموزش STM32 با توابع LL قسمت نهم: UART-Receive
در قسمت هشتم از آموزش STM32 با توابع LL، ابتدا مقدمات پروتکل UART را بررسی کردیم و گفتیم که یک پکت دیتا در این پروتکل شامل چه بخشهایی میشود و این دیتا به چه صورت و با چه سرعتهایی میتواند منتقل بشود. در نهایت هم پروتکل UART را…
آموزش STM32 با توابع LL قسمت دهم: مبدل آنالوگ به دیجیتال (ADC)
در قسمت نهم از آموزش STM32 با توابع LL، ابتدا چالش بخش Receive یا همان دریافت دیتا در پروتکل UART را بررسی کردیم و در نهایت با استفاده از بهترین روشی که ذکر کردیم، یعنی روش وقفه، این بخش را به صورت عملی بر روی برد راهاندازی کردیم…
آموزش STM32 با توابع LL قسمت یازدهم: مبدل دیجیتال به آنالوگ (DAC)
در قسمت دهم از آموزش STM32 با توابع LL، ابتدا ADC را بررسی کردیم و گفتیم که یک ADC چه مشخصهها و پارامترهایی دارد و در نهایت واحد ADC در میکروکنترلرهای STM32 را به صورت عملی راهاندازی کردیم و ولتاژ میکروکنترلر را با استفاده از ای…
آموزش STM32 با توابع LL قسمت دوازدهم: Timer-TimeBase
در قسمت یازدهم از آموزش STM32 با توابع LL، در رابطه با DAC صحبت کردیم و ویژگیهای مهم DAC در میکروکنترلرهای STM32 را بررسی کردیم و در نهایت با استفاده از DAC، دو سیگنال پالس و مثلثی را ایجاد کرده و بر روی اسیلسکوپ نمایش دادیم. در …
آموزش STM32 با توابع LL قسمت سیزدهم: Timer-Input capture
در قسمت دوازدهم از آموزش STM32 با توابع LL، در رابطه با تایمرها و نحوهی عملکرد آنها صحبت کردیم و در نهایت واحد تایمر در میکروکنترلرهای STM32 را در حالت TimeBase راهاندازی کردیم و زمان 1 ثانیه را اندازهگیری کردیم. در این قسمت…
آموزش STM32 با توابع LL قسمت چهاردهم: ریدایرکت کردن Printf و Scanf با استفاده از USART
در بخشهای هشتم و نهم، به ترتیب با نحوه ارسال و دریافت اطلاعات توسط واحد USART آشنا شدیم. در این بخش، میخواهیم واحد USART بورد Blue Pill را راهاندازی کنیم و دستورات printf و scanf را به کمک USART ریدایرکت یا ریتارگت کنیم. همانط…
آموزش STM32 با توابع LL قسمت پانزدهم: راهاندازی واحد ADC و گرفتن اطلاعات توسط DMA
در بخش دهم، با واحد ADC آشنا شدیم. در این بخش، میخواهیم واحد ADC بورد Blue Pill را راهاندازی کنیم و به کمک واحد DMA از این واحد اطلاعات را دریافت و در حافظه ذخیره کنیم. واحد DMA یا Direct Memory Access همانطور که از نام آن مشخ…
همانطور که میدانید استفاده از DMA برای انتقال اطلاعات بین وسایل جانبی میکروکنترلر (Peripheral) و حافظه موجب تسریع عملکرد میکروکنترلر خواهد شد. در این بخش مثل بخش قبلی میخواهیم از DMA برای ارتباط بین وسایل جانبی و حافظه استفاده کنی…
آموزش STM32 با توابع LL قسمت هفدهم: راه اندازی واحد SPI
قبل از هرچیز، باید به توضیح پروتکل ارتباطی SPI و مودهای کاری مختلف آن بپردازیم. SPI مخفف Serial Peripheral Interface است که به معنی رابط سریال برای دستگاههای جانبی است. SPI یک پروتکل پراستفاده برای ارتباط بین میکروکنترلر و ICهای …
آموزش STM32 با توابع LL قسمت هجدهم: راهاندازی LCD Nokia سریال به کمک واحد SPI
در بخش قبلی واحد SPI را راهاندازی کردیم و با جزییات آن تا حدودی آشنا شدیم. در این بخش میخواهیم به کمک این واحد، یک LCD سریال (Nokia 5110) را راهاندازی کنیم. در تصویر زیر نمونه LCD موردنظر و ترتیب پایههای آن نشان داده شده است. …
آموزش STM32 با توابع LL قسمت نوزدهم: راهاندازی LCD Nokia به کمک واحد SPI بخش دوم (استفاده از فونت)
در بخش قبلی یک LCD Nokia را به کمک واحد SPI را راهاندازی کردیم و یک تصویر را روی آن نمایش دادیم. در این بخش قصد داریم یک فونت برای نوشتن در LCD تعریف کنیم و پیامهای موردنظرمان را روی LCD نمایش دهیم. با سیسوگ همراه باشید. قبل…
آموزش STM32 با توابع LL قسمت بیستم: راهاندازی LCD Nokia به کمک واحد SPI بخش سوم (نمایش انیمیشن روی LCD Nokia)
در دو بخش قبل، یک LCD را به کمک واحد SPI را راهاندازی کردیم و تصویر و فونت روی آن نمایش دادیم. در این بخش قصد داریم یک انیمیشن روی LCD Nokia نمایش دهیم. با سیسوگ همراه باشید. در ابتدا باید یک عکس متحرک پیدا کنیم و آن …
آموزش STM32 با توابع LL قسمت بیست و یکم: راهاندازی PWM
در بخشهای قبلی با تایمرها آشنا شدیم و برخی کاربردهای آنها را دیدیم. یکی دیگر از کاربردهای تایمر، حالت PWM (Pluse width Modulation) یا همان مدولاسیون پهنای پالس است. در این بخش با نحوه استفاده از این حالت آشنا خواهیم شد. …
منبع:سیسوگ