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

در دوره آموزش پیشرفته STM32F1 در قالب انجام پروژه ها یادمیگیرد چطور با بکارگیری امکانات قدرتمند میکروکنترلر STM32 ، پروژه هاتون رو در سطح بالاتر از پروژه های آردوئینو و AVR و صنعتی و قابل اطمینان تر انجام بدید.

پیشنیازها:

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

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

 

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

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

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

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

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

 

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

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

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

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

ویدئوی آموزش انگلیسی راه اندازی سنسور DHT22 با STM32 رو هم برای اولین بار در یوتوب در کانال pointer-x منتشر کردم. 

 lcd کاراکتری پارالل با STM32 بدون دیلی برای اولین بار در اینترنت

 

راه اندازی LCD کاراکتری بدون delay ، بصورت سخت افزاری با استفاده از دو کانال تایمر و یک کانال DMA در میکروکنترلر STM32F103

 ویدئوی آموزش انگلیسی راه اندازی lcd کاراکتری با STM32 ، بدون دیلی رو برای اولین بار در یوتوب در کانال pointer-x منتشر کردم.

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

خلاصه ی اکثر ویدئوهای یوتوب در مورد STM32 : 

  • تابع تاخیر delay
  • تغییر وضعیت GPIO
مگه همه چی تو یوتوب نیست؟

خیر ، برای اینکه یک آموزش در یوتوب باشه، یک انسان باید اون آموزش رو منتشر کنه و خیلی آموزش ها در مورد STM32 رو هنوز کسی منتشر نکرده. بسیاری از جلسات این دوره آموزشی هم در یوتوب به زبان انگلیسی برای اولین بار در اینترنت منتشر کردم. مثل:

  • راه اندازی سنسور دمای DS18B20 با STM32F1 بدون دیلی
  • کنترل استپر موتور با درایور TB6600 و DRV8825  با STM32F103 بدون دیلی
ولی من تنها کسی نیستم که در جهان این پروژه ها رو بلده، مهندسایی که تخصصی و حرفه ای STM32 کار میکنند، با این قابلیت ها آشنا هستند. ولی قبل از من کسی آموزشش رو منتشر نکرده. اکثر آموزش های یوتوب در مورد STM32 در سطح مبتدی هست و این مسئله خطرناکه برای کسانی که میخوان یادگیری STM32 رو شروع کنند. چون نمیدونند چه چیزهایی رو باید یادبگیرند، آموزش های یوتوب رو میبینند و فکر میکنند همش همونه. 

پروژه هایی که در کانال pointer-x منتشر کردم با محتوای این دوره آموزشی چه تفاوتی داره؟

آموزش ها اول در دوره آموزش پیشرفته STM32F1 منتشر میشه و اگر وقت کنم ، ویدئو رو به زبان انگلیسی هم در یوتوب منتشر میکنم. ولی ویدئوهای یوتوب کوتاه تر و خلاصه تر هستند. 

محتوا

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

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

دوره آموزش پیشرفته STM32F103

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

  • کاربردهای پریفرال تایمر میکروکنترلرهای 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 برای مد 8 بیت و 4 بیت ارتباط با lcd کاراکتری
  • ارسال تعداد مشخص بایت با استفاده از قابلیت تک پالس و رجیستر 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

پریفرال ADC در میکروکنترلر STM32F1 

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

 

  • بررسی عملکرد پریفرال ADC در میکروکنترلر STM32F1 ، مبدل ADC ، کانال های ADC
  • گروه regular و injected ، دیتا رجیسترهای  DR و JDR ، صف کانال ها در رجیسترهای SQR و jSQR در ADC میکروکنترلر STM32F1
  • تنظیم زمان نمونه برداری و بیت های SMP در ADC
  • پروژه اول : حالت کاری تک کانال ادامه دار و بررسی کاربردها ، single channel continuous conversion 
  • پروژه دوم : حالت کاری تک کانال تک تبدیل و بررسی کاربرد ها ، single channel single conversion
  •  پروژه ی سوم : تنظیم تریگر خارجی برای ADC ، زمان بندی تبدیل ADC با event تایمر ، بیت های EXTTRIG ، EXTSEL ، SWSTART
  • نوشتن توابع IRQHandler برای اینتراپت های ADC و مدیریت اینتراپت 
  • پروژه چهارم : تعیین وضعیت خروجی دیجیتال با توجه به مقدار ADC با استفاده از اینتراپت ADC
  • معرفی analog watchdog در میکروکنترلر STM32F1 و بیت های AWDSGH و AWDEN و AWDCH
  • پروژه پنجم : مقایسه مقدار خروجی ADC با استفاده از watchdog event
  • پروژه ششم : خوندن دما از سنسور داخلی میکروکنترلر با کانال 16 و محاسبات دما ، استفاده از analog watchdog روی سنسور دمای داخلی
  • پروژه هفتم : استفاده از DMA برای انتقال داده های ADC به حافظه 

پریفرال RTC در میکروکنترلر STM32F1 | ساعت ، تقویم و Alarm

تنظیمات اولیه پریفرال RTC و اینتراپت ثانیه

 

  • تنظیمات و فعالسازی کریستال خارجی LSI ، بیت های DBP ، LSEON ، LSERDY , RTCSEL و RTCEN
  • ساختار پریفرال RTC در STM32F1 ، معرفی رجیسترهای CNT , PRL , DIV , ALR و CR ، معرفی Backup domain و APB1 domain
  • بیت RTOFF و نوشتن در رجیسترهای پریفرال RTC ، مکانیزم چک کردن همراه با timeout
  • نوشتن توابع برای ورود و خروج از حالت تنظیمات پریفرال RTC ، بیت CNF
  • بیت RSF و مکانیزم چک کردن سنکرون بودن RTC
  • نوشتن توابع IRQHandler و مدیریت اینتراپت های RTC
  • پروژه ساخت اینتراپت ثانیه با پریفرال RTC
 

تنظیم ساعت RTC و نمایش ساعت در LCD ، آپدیت تاریخ در اینتراپت Overflow

 

  • نوشتن تابع دریافت ساعت از labview با USART
  • خوندن رجیستر CNT در پریفرال RTC و محاسبه ساعت ، کابرد یونیون برای ذخیره سازی مقدار CNT
  • جداسازی تنظیمات اولیه و ثانویه RTC ، بردن و خارج کردن میکروکنترلر به حالت تنظیم اولیه RTC با پین GPIO
  • نمایش ساعت در lcd کاراکتری در اینتراپت ثانیه RTC
  • تست استفاده از باتری برای تامین برق بخش backup domain و پریفرال RTC
  • تابع دریافت تقویم از labview با USART بصورت رجیستری
  • آپدیت کردن تاریخ در انتهای هر روز در اینتراپت Overflow در پریفرال RTC میکروکنترلر STM32F1

 

پریفرال RTC و کتابخانه HAL

 

  • تنظیمات LSI و RTC در نرم افزار STM32CubeIDE
  • بررسی استراکچر RTC_HandleTypeDef
  • بررسی تابع HAL_RTC_Init و HAL_RTC_MspInit
  • فرمت نمایش BCD و Binary و تبدیل ها
  • بررسی warning های کتابخانه HAL برای تنظیمات RTC در STM32F1
  • فعال کردن اینتراپت ثانیه RTC با کتابخانه HAL و پروژه اینتراپت ثانیه
  • بررسی تابع HAL_RTCEX_RTCIRQHandler
  • تابع HAL_RTC_SetTime بررسی
  • جداسازی تنظیمات اولیه و ثانویه RTC در کتابخانه HAL ، دریافت زمان از labview با USART و تنظیم ساعت
  • روش آپدیت تاریخ در کتابخانه HAL و بررسی تابع RTC_DateUpdate
  • رفع مشکل از دست رفتن تاریخ در کتابخانه HAL ، معرفی رجیسترهای Backup و ذخیره تاریخ در رجیستر های Backup
  • نوشتن کد labview برای ارسال تاریخ به میکروکنترلر توسط USART
  • نوشتن کد دریافت تاریخ در میکروکنترلر از labview و تنظیم تاریخ 

َ

Alarm  در RTC میکروکنترلر STM32F1 – رجیستری

 

  • مدیریت و فعالسازی اینتراپت Alarm در EXTI17
  • نوشتن تابع IRQHandler برای اینتراپت Alarm
  • بررسی سیگنال RTC_Alarm و تفاوت استفاده از لبه بالارونده و لبه ی پایین رونده سیگنال RTC_Alarm
  • مدیریت تعداد دلخواه Alarm در هر روز ، تشخیص Alarm با خوندن رجیستر CNT
  • انجام پروژه تنظیم سه Alarm همراه با اینتراپت

پریفرال PWR در میکروکنترلر STM32F1

اخطار افت ولتاژ PVD در میکروکنترلر STM32F1

 

  • voltage domain ها در میکروکنترلر STM32F103 ، بازه ها و محدودیت ها
  • معرفی POR و PDR
  • معرفی PVD و سیگنال PVD output ، تنظیم حد ولتاژ با بیت های PLS ، فعالسازی با بیت PVDE
  • نوشتن تابع IRQHandler برای اینتراپت PVD
  • فعالسازی اینتراپت PVD  در EXTI16
  • بررسی تفاوت اینتراپت PVD در لبه ی بالارونده و پایین رونده سیگنال PVD Output
  • تشخیص لبه بالارونده از پایین رونده با بیت PVDO
  • پروژه اخطار در صورت افت ولتاژ در میکروکنترلر STM32F1
 

مدیریت مصرف توان در میکروکنترلر STM32F1 و حالت کم مصرف sleep

 

  • بررسی مثال های مدیریت مصرف توان در حالت عادی با پایین آوردن کلاک و خاموش کردن کلاک پریفرال ها
  • بررسی حالت های کم مصرف CPU و رگولاتور و بیت های SLEEPDEEP و PDDS
  • تفاوت حالت های کم مصرف sleep ، stop و standby و تفاوت روشهای sleeponexit ، WFI و  WFE برای ورود به حالت های کم مصرف
  • وضعیت کلاک HCLK و FCLK و کلاک SysTick در حالت های کاری کم مصرف و غیرفعال کردن SysTick
  • پروژه اول:  حالت کاری کم مصرف sleep با sleeponexit : فقط اجرای روتین اینتراپت ها
  • فعال کردن قابلیت دیباگ در حالت کم مصرف sleep با بیت DBG_SLEEP
  • مروری بر inline assembly ، نکات استفاده از WFI ، استفاده از ISB و DSB
  • روش های مختلف لود کردن کد در حالت های کم مصرف: دکمه ریست ، استفاده از بوت لودر ، استفاده از st-link utility
  • پروژه دوم: حالت کاری کم مصرف sleep با WFI در main
  • بررسی عمکرد WFE و SEV
  • پروژه سوم: حالت کاری کم مصرف sleep با WFE ، تولید ایونت با اینتراپت EXTI ، با ایونت EXTI و با ایونت تایمر
  • روش فعالسازی ایونت برای پریفرال ها بجر EXTI و عملکرد بیت SEVONPEND
 

حالت کم مصرف stop در میکروکنترلر STM32F1

 
  • تعیین وضعیت بیت های SLEEPDEEP و PDDS و LPDS برای حالت stop
  • نوشتن تابع تنظیمات مجدد کلاک بعد از خروج از حالت stop
  • پروژه اول : رفتن به حالت stop با sleeponexit
  • پروژه دوم : رفتن به حالت stop با WFI، فراخوانی WFI در main و در اینتراپت ، بررسی اولیت اینتراپت برای فراخوانی WFI
  • پروژه سوم: خروج از حالت stop با استفاده از ایونت پریفرال EXTI
  • فعالسازی دیباگ در حالت stop با بیت DBG_STOP
  • پروژه چهارم: خروج از حالت کم مصرف stop در ساعت مشخص با RTC Alarm
 

حالت کم مصرف standby در میکروکنترلر STM32F1

 
  • فلگ WUF و صفر کردن آن با بیت CWUF
  • فلگ SBF برای تشخیص حالت standby و صفر کردن با CSBF
  • فعال کردن پین PA0 برای خروج از حالت standby با بیت EWUP و بررسی مدار مورد نیاز و بررسی اشکالات power on
  • پروژه اول : خروج از حالت standby با استفاده از پین wake up
  • خارج کردن اینتراپت SysTick از وضعیت pending با رجیستر ICSR
  • پروژه دوم: رفتن به حالت Standby در روتین اینتراپت
  • پروژه سوم: خروج از حالت Standby در ساعت مشخص شده با RTC Alarm

پریفرال USART در میکروکنترلر STM32F1

 

  • معرفی ارتباط سنکرون و آسنکرون، معرفی پین های USART ، معرفی single و half duplex و full duplex
  • معرفی بسترسخت افزاری USART : طول کلمه، Baud rate، parity و stop bit
 

فرستادن داده با USART به روش polling و با DMA در STM32

 
  • بیت های UE ، M ، stop و TE ، محاسبه مقدار بیتهای Fraction و Mantissa با توجه به مقدار انتخابی baud rate
  •  بررسی دیتارجیستر USART و رجیسترهای ارسال و دریافت داده و شیفت رجیسترها
  • فلگ TXE و فلگ TC برای اطلاع از انتقال داده توسط USART

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

پیشنیاز ها:

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