آموزش STM32 | پیشرفته

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

پیشنیازها:

  1. زبان سی مقدماتی
  2. دوره آموزشی  ” شروع STM32 ” 

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

 

  • آیا میخواهید یادبگیرید با میکروکنترلرهای STM32 پروژه های high tech انجام بدید برای صنایع پزشکی و نظامی؟
  • آیا دوست دارید یادبگیرید با میکروکنترلرهای STM32 پروژه های صنعتی قابل اطمینان انجام بدید که در هر شرایطی کار کنه؟
  • آیا میخواهید که پروژه ها رو با کیفیت تر و حرفه ای تر از پروژه های آردوئینو انجام بدید؟
  • آیا دوست دارید یادبگیرید خودتون کتابخانه های راه اندازی قطعات رو از پایه بنویسید؟
  • آیا علاقه مندید به استفاده از رجیسترهای میکروکنترلر STM32 مسلط بشید؟
راه حل ها

آموزش پیشرفته ی STM32

 
بعد از مشاهده ی این دوره آموزشی کاربرد قابلیت های پیشرفته ی پریفرال های TIM ، ADC و USART رو برای انجام پروژه های صنعتی و حرفه ای آموزش میبیند. 
 
پروژه محور : در این دوره آموزشی قطعات دم دستی با روش های حرفه ای و استفاده از قابلیت های قدرتمند میکروکنترلر STM32، راه اندازی میشه. در هر جلسه ابتدا دیتاشیت و نحوه ی عملکرد یک قطعه بررسی میشه. در قدم بعد :
  • برنامه نویسی رجیستری STM32 : در جریان انجام پروژه، کاربرد بیت های رجیسترهای میکروکنترلر STM32 آموزش داده میشه و کتابخونه های راه اندازی قطعات از صفر نوشته میشه. در این مرحله پیاده سازی سخت افزاری و استفاده از امکانات STM32 رو یادمیگیرید.
  • کتابخانه hal : یک پنجم از دوره به انجام پروژه ها با کتابخونه HAL اختصاص داره. در این مرحله از کتابخونه های موجود در اینترنت برای راه اندازی قطعات استفاده میکنیم. با بررسی این کتابخونه ها، با روش های پیاده سازی نرم افزاری و کد های آردوئینو روی STM32 آشنا میشید.
آموزش پیاده سازی سخت افزاری: میکروکنترلر های STM32 پریفرال هایی با امکانات قدرتمند دارند و در حالی که برای انجام خیلی از عملیات ها با AVR و آردوئینو باید CPU برنامه ای رو اجرا کنه، در میکروکنترلر های STM32 پریفرال ها همون کار رو انجام میدن و CPU بیکار میشه. طبیعی هست که STM32 میتونه الگوریتم کد هایی که برای آردوئینو نوشته شده رو اجرا کنه و خیلی از آموزش های موجود در اینترنت برای راه اندازی قطعات با STM32 در حقیقت کد های آردوئینو هستند که از امکانات STM32 استفاده نمیکنن و کسانی که تازه کارند این رو نمیدونن.
پیاده سازی سخت افزاری یعنی وظیفه انجام عملیات به عهده ی پریفرال ها ( مثلا تایمر و DMA ) باشه. در مقابل پیاده سازی نرم افزاری هست که برای اجرای عملیات، CPU باید یک کد (نرم افزار) رو اجرا کنه. در این دوره آموزش میبیند چطور از امکانات قدرتمند پریفرال های میکروکنترلر STM32 استفاده کنید تاپروژه ها رو با روش هایی انجام بدید که با AVR و آردوئینو ممکن نیست.
 
جدید : آموزش خیلی از پروژه های این دوره آموزشی قبلا در اینترنت وجود نداشت (کد مشابهش در گیت هاب بوده، آموزش چگونگی نوشتن کد نبوده)   
نمونه راه حل های ارائه شده

پروژه ی حرفه ای و قابل اطمینان و صنعتی با میکروکنترلر چه ویژگی هایی داره؟ 

وقتی از قابلیت های STM32 استفاده کنیم چه تغییراتی در پروژه ایجاد میشه و فرق پروژه های آردوئینو با STM32 چیه؟

 

استفاده از امکانات STM32 ایده های زیر در پروژه ها اعمال میشه و پروژه ها حرفه ای میشه.

  • تابع تاخیر یا delay نباید در برنامه وجود داشته باشه، مخصوصا در قسمت هایی از برنامه که بارها اجرا میشن.
  • تعداد اینتراپت ها باید کم باشه و توابع اینتراپت نباید بزرگ باشن. 
  • حجم برنامه ای که به طور متناوب اجرا میشه باید کم باشه.
  • تا جای ممکن مسئولیت اجرای عملیات ها باید به عهده ی پریفرال ها باشه، به جای اینکه لازم باشه CPU کدی رو اجرا کنه.
در ادامه دو جلسه از دوره آموزش STM32 رو در یوتوب ببینید. در این دو ویدئو پیاده سازی سخت افزاری و استفاده از امکانات STM32 رو در جریان راه اندازی دو تا از دم دستی ترین قطعات آموزش میبینید. مقایسه کنید با ویدئوی های راه اندازی همین قطعات در یوتوب که از روش نرم افزاری و آردوئینویی استفاده میکنه.

سنسور دما و رطوبت DHT22 با STM32

پیاده سازی بستر سخت افزاری ارتباط 1-wire با استفاده از دو تایمر و دو کانال DMA با برنامه نویسی رجیستری و بدون delay در سه مرحله ( یعنی پروژه سه بار انجام میشه هر دفعه با یک قابلیت جدید بهتر میشه ) :

1. 43 اینتراپت در هر نمونه برداری

  • کانال خروجی تایمر اول در حالت PWM برای تغییر وضعیت باس 1-wire
  • دو کانال ورودی تایمر اول در حالت input capture برای اندازه گیری مدت زمان یک بودن 40 پالس 
  • انتقال مقادیر CCR کانال های ورودی در 42 اینتراپت 
  • استارت تایمر اول هر دو ثانیه در اینتراپت تایمر دوم

2. تایمر دوم در حالت master برای کنترل زمان شروع تایمر اول. اتصال تایمر ها با قابلیت master / slave و حذف یک اینتراپت

3. دو کانال DMA برای انتقال مقادیر رجیسترهای CCR کانال های ورودی تایمر اول و حذف 41 اینتراپت. انجام پروژه با کمترین بار روی CPU، تنها یک اینتراپت در انتهای هر نمونه برداری. 

 lcd کاراکتری پارالل با STM32

پیاده سازی بستر سخت افزاری ارتباط پارالل بدون دیلی با استفاده از یک تایمر و یک کانال DMA. این پروژه کاربردهای زیادی داره، با همین روش میشه بین دو تا میکروکنترلر STM32 ارتباط پارالل با باس 16 بیتی برقرار کرد. lcd کاراکتری یک بهانه است برای اینکه این قابلیت فوق العاده DMA و تایمر میکروکنترلر STM32 رو آموزش ببینید.

 

1. یک اینتراپت برای نوشتن هر بایت 

  • کانال خروجی تایمر در حالت PWM برای پین E در ارتباط پارالل
  • نوشتن داده ی هشت بیتی روی هشت پین خروجی باس پارالل در اینتراپت کانال تایمر تایمر
 

2. فقط یک تابع عملیات نوشتن را استارت میکند. نوشتن هشت بیت، روی هشت پین باس پارالل، با نوشتن اعداد در رجیستر BSRR توسط DMA، ارسال درخواست DMA  و  کنترل زمانبندی با تایمر.

همین دو پروژه روی میکروکنترلر STM32 با روش آردوئینو:

همه ی عملیات ها رو CPU انجام میده و برای زمانبندی از تابع تاخیر استفاده میشه. اینجوری CPU از ابتدا تا انتها درگیره.

  • تابع تاخیر delay
  • تغییر وضعیت GPIO
محتوا

قطعات راه اندازی شده با STM32F103

  • سنسور نوری صنعتی
  • lcd کاراکتری پارالل
  • سنسور دما و رطوبت DHT22
  • سنسور دمای DS18B20
  • فاصله سنج SR-04
  • لودسل 10kg خمشی و ماژول AD620 و فیلتر
  • انکودر
  • استپر موتور و درایور های TB6600 و DRV8825
  • مبدل FT232 و کد Labview
  • keypad matrix 4×4
  • …. 
دوره آموزش پیشرفته STM32F103

هدف انجام خود پروژه ها نیست، چون یک قطعه ممکنه با چند روش راه اندازی بشه. هدف دوره آموزشی اینه که در جریان انجام پروژه ها و راه اندازی قطعات با میکروکنترلر STM32F103 روی برد بلوپیل، استفاده از امکانات میکروکنترلر STM32 رو آموزش ببینید.

در هر جلسه دیتاشیت و نحوه ی عملکرد یک قطعه بررسی میشه، در قدم بعد کتابخونه راه اندازی با میکروکنترلرSTM32 با استفاده از CMSIS و برنامه نویسی رجیستری از صفر نوشته میشه و کابرد هر بیت رجیسترها بررسی میشه. همچنین با کتابخونه HAL هم پروژه انجام میشه. سرفصل های دوره رو بر مبنای قابلیت های STM32 که در پروژه های ازش استفاده میشه، نوشتم. 

 پریفرال تایمر در میکروکنترلر های STM32

 

  • کاربردهای پریفرال تایمر میکروکنترلرهای stm32
  • TIMBASE و رجیسترهای شمارنده و ARR و PSC
  • محاسبه ی ARR و PSC با تنظیم دوره تناوب کانتر و دوره تناوب کلاک کانتر
  • رجیستر های CCR و کانال در حالت ورودی و خروجی
  • کانتر بالارونده ، پایین رونده و edge aligned ، خروجی PWM1 و PWM2
  • قابلیت پریلود و رجیستر سایه
  • حالت تک پالس 
  • کنترل نرخ update event با رجیستر RCR 
  • حالت تک پالس با رجیستر RCR و تولید تعداد مشخص پالس
  • انواع تایمرها در STM32

 

 

اندازه گیری سرعت اجرای برنامه در میکروکنترلر STM32 با سه روش

 

  • پروژه led چشمک زن با استفاده از اینتراپت آپدیت تایمر در STM32
  • ARR و PSC برای دقیق ترین تایمر ممکن در stm32f103c8
  • اندازه گیری سرعت اجرای کد STM32 با یک تایمر، توابع شروع و توقف شمارنده و خوندن CNT  
  • معرفی و بررسی رجیسترهای راه اندازی شمارنده 32 بیتی CYCCNT از واحد DWT 
  • اندازه گیری سرعت اجرای کد با شمارنده داخل CPU cortex-m3
  • افزایش ظرفیت شمارنده با اتصال دو تایمر در حالت master-slave ، تنظیم تریگرهای ورودی و خروجی 
  • اندازه گیری سرعت اجرای کد با دو تایمر آبشاری در میکروکنترلر STM32 

 

پین ETR و پالس شمار سخت افزاری با تایمر STM32

 
  • پالس شمار نرم افزاری : شمارش و مقایسه ی تعداد پالس ها توسط CPU در اینتراپت خارجی
  • پالس شمار سخت افزاری : کاربرد محاسبه تعداد دفعات عبور جسم از مقابل سنسور proximity
  • شمارش پالس ها با قابلیت external clock و پین ETR تایمر STM32
  • مقایسه ی تعداد پالس ها و تولید اینتراپت توسط کانال خروجی در حالت frozen

 

فاصله سنج التراسونیک با STM32  بدون دیلی | ارسال و دریافت پالس با تایمر

 

  • دیتاشیت سنسور SR-04 : پینها، پالس تریگ و پالس اکو، زمان بندی
  • تفاوت راه اندازی sr04 در stm32 و AVR ، استفاده از تایمر برای ارسال و دریافت پالس 
  • SR-04 با stm32f103 بدون دیلی: 
  • ساخت پالس تریگ با کانال خروجی تایمر STM32 در حالت PWM
  • اندازه گیری مدت زمان یک بودن پالس echo با دو کانال ورودی input capture

 

lcd کاراکتری با STM32 بدون delay با تایمر و DMA | پیاده سازی سخت افزاری ارتباط پارالل

 

  • دیتاشیت lcd کاراکتری : پین ها، چگونگی نمایش کاراکتر، حافظه ها ROM و RAM، کامند ها، عملیات استارت lcd.
  • کنترل زمان بندی بستر سخت افزاری ارتباط پارالل با تایمر stm32 و انتقال داده به باس پارالل با DMA میکروکنترلر stm32f103.
  • کانال تایمر STM32 در حالت خروجی PWM برای پین E ارتباط پارالل
  • تغییر وضعیت پین های باس پارالل در اینتراپت کانال خروجی تایمر میکروکنترلر STM32
  • DMA به GPIO : تغییر وضعیت پین های باس پارالل توسط DMA با نوشتن در رجیستر BSRR
  • آماده سازی داده ها برای نوشته شدن در رجیستر BSRR
  • ارسال تعداد مشخص بایت با استفاده از قابلیت تک پالس و رجیستر RCR تایمر های STM32
 
سنسور دما و رطوبت DHT22 با STM32 بدون دیلی با تایمر و DMA | پیاده سازی سخت افزاری ارتباط 1-wire
 
  • دیتاشیت سنسور دما و رطوبت DHT22 : پین ها، پروتکل ارتباطی 
  • چگونگی پیاده سازی بستر سخت افزاری ارتباط one wire توسط تایمر stm32f103
  • کانال خروجی تایمر STM32 در حالت PWM برای ارسال پالس استارت و زمین کردن باس
  • یک کردن خروجی PWM بعد از توقف تایمر 
  • دو کانال ورودی تایمر STM32 در حالت input capture برای اندازه گیری مدت زمان یک بودن 40 پالس 
  • محاسبه ی 40 بیت در 40 اینتراپت لبه ی پایین رونده
  • طراحی union برای نگهداری داده های سنسور
  • تنظیم اینتراپت تایمر دوم برای استارت تایمر اصلی
  • روش اول : استارت تایمر اول توسط تایمر دوم با قابلیت master/slave و بصورت سخت افزاری
  • روش دوم : استفاده از کانال خروجی تایمر master برای زمین کردن باس  one wire 
  • تنظیم دو کانال DMA برای انتقال اعداد رجیستر ها CCR1 و CCR2 به دو آرایه 43 عضوی
  • روش سوم: انتقال اعداد از رجیسترهای CCR1 و CCR2 به حافظه توسط DMA و محاسبه ی بیت ها در یک اینتراپت  TC

سنسور دما DS18B20 با STM32 بدون دیلی با تایمر و DMA | پیاده سازی سخت افزاری ارتباط 1-wire 

  • دیتاشیت سنسور دما DS18B20 : پینها، ترانزیستور C1815 برای زمین کردن باس one wire، حافظه ها، بررسی transaction، کامند ROM و function،   
  • زمان بندی نوشتن و خوندن بیتهای 0 و 1 از باس
  • خوندن دما از DS18B20 با STM32 بوسیله ی دو تایمر و دو کانال DMA
  • ارسال کامند 8 بیتی با ارسال 9 پالس PWM با کانال خروجی تایمر
  • کانال DMA میکروکنترلر STM32 برای نوشتن 9 مقدار عرض پالس PWM در رجیستر CCR3 و فرستادن یک بایت 
  • اندازه گیری عرض پالس 72 بیت با کانال ورودی تایمر STM32 در حالت input capture
  • کانال DMA برای انتقال 72 مقدار رجیستر CCR1 و خوندن 72 بیت
  • طراحی union برای ذخیره سازی بیتها
  • اینتراپت DMA برای محاسبه ی بیت ها و CRC، کتابخانه ی CRC
  • نوشتن تابع برای انجام 7 عملیات با فاصله ها زمانی نامنظم با استفاده از قابلیت پریلود رجیستر ARR تایمر STM32F103
 

انکودر با تایمر STM32

 

  • خروجی انکودر incremental، روتاری انکودر، تشخیص سرعت و جهت با شمردن لبه با توجه به وضعیت کانال دیگر 
  • ورودی های TI1FP1 و TI2FP2 ، بررسی تفاوت سه حالت مختلف شمارش پالس های انکودر توسط تایمر STM32
  • شمارش پالس های روتاری انکودر و تشخیص جهت با تایمر STM32
 

ورودی و خروجی PWM با تایمر STM32

  • فیلتر پایین گذر خازن مقاومتی ، فرکانس شکست
  • پروژه خروجی آنالوگ با PWM در میکروکنترلر STM32 
  • اندازه گیری فرکانس و مدت زمان یک بودن PWM ورودی با دو کانال ، TI1FP1 تریگر ورودی

     

کنترل سرعت و موقعیت استپر موتور با میکروکنترلر STM32 | ارسال پالس با تعداد و فرکانس مشخص

 
  • درایور DRV8825 : تغذیه ها، پین های enable, reset, sleep, step, dir, مشخص کردن رزولوشن و محدود کردن دما با پتانسیومتر
  • مدار ایزوله کردن پین های STEP و DIR با دو اپتوکوپلر 6N137
  • درایور TB6600 : تغذیه و اتصال به موتور و میکروکنترلر ، محدود کردن جریان و مشخص کردن رزولوشن با DIP switch
  • دیتاشیت استپرموتور
  • رابطه ی سرعت زاویه ای با فرکانس PWM خروجی و مقدار رجیسترهای ARR و PSC
  • مقایسه ی رزولوشن تولید سرعت زاویه ای در بازه های مختلف سرعت برای دو حالت ARR=1 و PSC=0
  • کانال یک در حالت pwm برای تولید پالس step 
  • پروژه تنظیم سرعت و جهت استپر موتور با درایور ها DRV8825 و TB6600 : خروجی PWM با فرکانس متغیر
  • کنترل موقعیت استپر موتور : مشخص کردن تعداد پالس های خروجی TIM3 با TIM1 با master/slave دو طرفه
  • استفاده از TIM1 برای شمارش آپدیت های TIM3 و توقف TIM3 با قابلیت master/slave

نسخه ی انگلیسی بعضی از جلسات این دوره رو میتونید در کانال یوتوب pointer-x ببینید.

پیشنیاز ها:

  1. زبان سی مقدماتی
  2. دوره آموزشی شروع STM32 | رایگان | 7 ساعت 

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

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

پیمایش به بالا