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

توسط | 21 بهمن, 1398 | میکروکنترلر | 2 دیدگاه ها

معرفی تایمرهای میکروکنترلرهای STM32 سری F1، ویژگی ها و امکانات عمومی تایمرهای STM32، ویژگی ها و امکانات خاص تایمرهای STM32، ویژگی ها و امکانات دیگر تایمرهای STM32، انواع تایمر در میکروکنترلرهای STM32 سری F1، تایمرهای Basic و General purpose و Advanced در STM32F1
تایمر-میکروکنترلر-stm32

تایمرهای میکروکنترلرهای STM32 با توجه به امکاناتی که دارند به چند دسته تقسیم می شوند. در میکروکنترلرهای STM32F1 سه نوع تایمر Basic و General purpose و Advanced control وجود دارد. تایمرهای Basic امکانات پایه ای دارند، تایمرهای General purpose دارای امکانات متوسط و تایمرهای Advanced هم امکانات پیشرفته دارند. تایمرهای میکروکنترلرهای STM32 دارای ویژگی ها و امکاناتی هستند که ممکن است در تایمرهای میکروکنترلرهای دیگر وجود نداشته باشند. برای مثال این امکان وجود دارد که یک تایمر Master باشد و یک تایمر Slave. خروجی تایمر Master برای شروع به کار تایمر Slave، ریست آن یا عملکرد دیگری در آن به کار رود. در سری های مختلف میکروکنترلرهای STM32، تایمرهای متنوعی وجود دارد. برای مثال در میکروکنترلرهای STM32H742xx و STM32H743/53xx و STM32H750xB، تایمرهای High-resolution و Low-power وجود دارد.

ایجاد تأخیر با تایمر در میکروکنترلرها

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

فیلم آموزش تایمر در STM32                         (فیلم آموزش ARM STM32 مقدماتی)

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

فیلم آموزش تایمر در AVR                             (فیلم آموزش میکروکنترلرهای AVR مقدماتی)

فیلم آموزش تایمر پیشرفته در AVR

فیلم آموزش تایمر در آردوینو                          (فیلم آموزش آردوینو مقدماتی)

فیلم آموزش تایمر پیشرفته در آردوینو

بلوک-دیاگرام-تایمر-basic

تصویر 1 – بلوک دیاگرام تایمرهای Basic در میکروکنترلرهای STM32F1

بررسی ویژگی ها و امکانات همۀ تایمرهای سری های مختلف میکروکنترلرهای STM32 در یک نوشته نمی گنجد. بنابراین در این نوشته تنها به ویژگی ها و امکانات تایمرهای میکروکنترلرهای STM32 سری F1 می پردازیم. در ادامه ابتدا ویژگی ها و امکانات تایمرهای STM32F1 را معرفی می کنیم. سپس می بینیم که هر کدام از انواع تایمر در میکروکنترلرهای STM32F1، چه ویژگی ها و امکاناتی دارند. هدف این نوشته رفع ابهامات اولیه ای است که در ابتدای شروع کار با تایمرها ممکن است به وجود بیاید. تایمرهای میکروکنترلرهای STM32F1 تایمرهایی 16 بیتی هستند. مقسم فرکانسی این تایمرها نیز 16 بیتی است و فرکانس کلاک ورودی را به 1 تا 65536 تقسیم می کند. وجود انواع وقفه و قابلیت استفاده از DMA، از امکانات تایمرهای STM32 هستند.

نکته: در میکروکنترلرهای مختلف سری F1، برخی تایمرهایی که در این نوشته به آنها اشاره می کنیم، وجود ندارند. برای اطلاع از این که کدام تایمرها در کدام میکروکنترلرها وجود دارند، به Reference manual میکروکنترلر (سند RM0008) مراجعه کنید. در تصویر زیر انواع تایمرهای میکروکنترلرهای STM32 سری F1 مشخص شده است.

تایمرهای-میکروکنترلرهای-stm32f1

تصویر 2 – انواع تایمرهای میکروکنترلرهای STM32 سری F1

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

در این بخش به ویژگی ها و امکاناتی می پردازیم که بیشتر آنها در تایمرهای میکروکنترلرهای متداول وجود دارند.

  • Time base unit: ساده ترین امکان تایمرهای STM32 است. Time base unit همان عملکرد ساخت وقفه های زمانی منظم است.
  • مدهای شمارش: تایمرهای STM32 می توانند به صورت صعودی، نزولی یا صعودی و نزولی بشمارند.
  • Capture: زمانی که Capture تحریک می شود، مقدار شمارندۀ تایمر در رجیستر Capture ذخیره می شود.
  • مقایسه و خروجی PWM: زمانی که مقدار تایمر به مقدار رجیستر مقایسه می رسد، یک مقایسه اتفاق می افتد. با استفاده از این ویژگی می توان در خروجی تایمر، سیگنال PWM ایجاد کرد. خروجی مقایسه، سیگنال OCxREF است و سیگنال های PWM خروجی بر اساس سیگنال های OCxREF شکل می گیرند.
  • کانال های Capture/compare: که همان پایه های CHx هستند. هر کدام از پایه های CHx می توانند یا ورودی Capture یا خروجی PWM باشند. یک پایه یا می تواند ورودی Capture باشد، یا خروجی PWM. بنابراین رجیسترهای مربوط یا رجیستر Capture هستند، یا رجیستر مقایسه.

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

ورودی-capture-خروجی-pwm

تصویر 3 – کانال های ورودی Capture و خروجی مقایسه و PWM

  • مد Forced output: که با آن می توان سطح سیگنال OCxREF را بدون این که مقایسه ای اتفاق بیفتد، به صورت نرم افزاری تغییر داد.
  • مد Output compare: مربوط به تغییر وضعیت سیگنال های روی خروجی های CHx است. که خروجی در هنگام مقایسه می تواند تغییر نکند یا در حالات Active یا Inactive و یا Toggle قرار بگیرد. شبیه حالات خروجی OCx در مدهای نرمال و CTC تایمرهای میکروکنترلرهای AVR.
  • خروجی های مکمل: که می توان در خروجی، سیگنال های PWMی داشت که مکمل هم هستند.
  • خروجی برای تحریک ADC و DAC: که سیگنال خروجی تایمر می تواند واحدهای ADC و DAC میکروکنترلر را تحریک کند.
  • مد تک پالس یا One-pulse: که با استفاده از آن می توان در خروجی یک پالس تکی ایجاد کرد.

ویدئوی 1 – ساخت تأخیر با تایمر در STM32، تایمر Basic

ویژگی ها و امکانات خاص تایمرهای میکروکنترلرهای STM32

در این بخش ویژگی هایی را که مشابه آنها معمولاً در تایمرهای میکروکنترلرهای دیگر وجود ندارند، معرفی می کنیم.

  • Repetition counter: امکانی است که تعیین می کند واقعۀ آپدیت پس از چند Overflow یا Underflow اتفاق بیفتد. اگر رجیستر RCR برابر صفر باشد، در هر Overflow یا Underflow، واقعۀ آپدیت اتفاق می افتد. اگر برابر 1 باشد، واقعۀ آپدیت یک بار اتفاق نمی افتد و دفعۀ بعد اتفاق می افتد. اگر RCR برابر 2 باشد، واقعۀ آپدیت دو بار اتفاق نمی افتد و دفعۀ سوم اتفاق می افتد. اگر RCR برابر 3 باشد، آپدیت سه بار اتفاق نمی افتد و دفعۀ چهارم اتفاق می افتد و … .
  • Clock selection: یا انتخاب منبع کلاک شمارندۀ تایمر. که تایمرهای میکروکنترلرهای STM32 می توانند چهار منبع کلاک داشته باشند. منبع اول، منبع کلاک داخلی یا سیگنال CK_INT است. منبع دوم، External clock source mode 1 که سیگنال TI1FP1 یا TI2FP2 است. منبع سوم، External clock source mode 2 یا سیگنال ETRF است. منبع چهارم هم سیگنال های ITRx (خروجی تایمرهای دیگر) است.
  • سنکرون سازی و مدهای Master و Slave: تایمرهای میکروکنترلرهای STM32 می توانند در مد Master یا Slave پیکر بندی شوند. تایمر Master می تواند یک خروجی داشته باشد. این خروجی می تواند با بیت UG، واقعۀ آپدیت، بیت CEN یا مقایسۀ تایمر تحریک شود. یا این که می تواند یکی از سیگنال های OCxREF باشد. تایمر Slave نیز می تواند یک ورودی (سیگنال TRGI) داشته باشد. این سیگنال می تواند از خروجی TRGO تایمر Master گرفته شود یا سیگنالی از بخش های دیگر تایمر باشد. یا این که سیگنالی از پایۀ ورودی ETR باشد. لبۀ بالا روندۀ این سیگنال می تواند تایمر را ریست یا متوقف کند و یا تایمر را برای شروع به شمارش، تحریک کند. همچنین می تواند به عنوان منبع کلاک تایمر استفاده شود.

ویدئوی 2 – نمونه کد تایمر Advanced در STM32

ویژگی ها و امکانات دیگر تایمرهای میکروکنترلرهای STM32

  • مد PWM input: که سیگنال PWM خارجی روی یک کانال ورودی قرار می گیرد. و با استفاده دو رجیستر Capture، مقدار دورۀ تناوب و Duty cycle سیگنال PWM ورودی به دست می آید.
  • عملکرد Break: زمانی که Break اتفاق می افتد، خروجی های PWM تایمر روی مد Idle قرار می گیرند و غیر فعال می شوند. سیگنال Break می تواند از پایۀ ورودی TIMx_BKIN یا از خروجی Clock security system تأمین شود.
  • پاک کردن سیگنال OCxREF: که می توان سطح سیگنال OCxREF را صفر کرد. این کار با صفر یا یک کردن سیگنال داده شده به پایۀ ETR انجام می شود.
  • PWM شش مرحله ای: که می توان روی خروجی های تایمر، شش سیگنال در شش مرحله به وجود آورد. کاربرد این سیگنال ها که سه تای آنها PWM است، کنترل دور موتور براشلس است. این سیگنال ها روی خروجی های CHx و CHxN ایجاد می شوند.
  • مد Encoder interface: که با استفاده از آن می توان خروجی انکودرهای روی شفت موتورها یا خروجی Rotary encoderها را خواند. و سرعت و جهت چرخش و تعداد پله های شمارش شده را اندازه گرفت.
  • عملکرد XOR ورودی: که ورودی های CH1 تا CH3 با هم XOR می شوند. و به عنوان سیگنال TI1 به تایمر داده می شوند.
  • اتصال سنسورهای Hall: می توان خروجی های سنسورهای Hall درون موتورهای براشلس را به تایمر داد. که خروجی سه سنسور Hall، به ورودی های CH1 تا CH3 داده و از عملکرد XOR ورودی استفاده می شود. در این حالت برای کنترل دور موتور براشلس از PWM شش مرحله ای استفاده می شود. برای راه اندازی و کنترل موتور براشلس به این صورت، لازم است که دو تایمر راه اندازی شود.
  • مد دیباگ: در زمان دیباگ می توان تعیین کرد که شمارش تایمر متوقف شود یا ادامه پیدا کند.

pwm-6-مرحله-ای

تصویر 4 – امکانات تایمرهای میکروکنترلرهای STM32، سیگنال های PWM شش مرحله ای روی OCx و OCxN

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

  • تایمرهای Basic در STM32F1: تایمرهای 6 و 7 میکروکنترلرهای STM32F1، تایمر Basic هستند. این تایمرها تنها امکانات Time base unit، مد دیباگ و تحریک DAC را دارند. منبع کلاک آنها تنها می تواند به صورت داخلی باشد و مد شمارش آنها تنها صعودی است.
  • تایمرهای Advanced در STM32F1: تایمرهای شماره 1 و 8 تایمرهای پیشرفته یا Advanced control هستند. همۀ ویژگی ها و امکاناتی را که پیش تر بیان کردیم، در این تایمرها وجود دارد.
  • تایمرهای General purpose در STM32F1: در میکروکنترلرهای STM32F1 این تایمرها به دو دسته تقسیم می شوند. تایمر های 2 تا 5 و تایمرهای 9 تا 14. تایمرهای 2 تا 5 تنها شامل ویژگی های Time base unit، مدهای شمارش صعودی، نزولی و صعودی و نزولی، Capture، مقایسه و خروجی PWM، تعداد 4 کانال Capture/compare، مد Forced output، مد Output compare، تحریک ADC و DAC، مد تک پالس، Clock selection، سنکرون سازی و مدهای Master و Slave، مد PWM input، پاک کردن سیگنال OCxREF، مد Encoder interface، عملکرد XOR ورودی، اتصال سنسورهای Hall و مد دیباگ هستند. تایمرهای 9 تا 14 هم شامل این ویژگی ها هستند: Time base unit، مد شمارش صعودی، Capture (در تایمرهای 9 و 12 دو ورودی کپچر و در بقیه یک ورودی کپچر)، مقایسه و خروجی PWM (در تایمرهای 9 و 12 دو مقایسه و خروجی PWM و در بقیه یک مقایسه و خروجی PWM)، کانال های Capture/compare (در تایمرهای 9 و 12 دو کانال Capture/compare و در بقیه یک کانال Capture/compare)، مد Forced output، مد Output compare، مد تک پالس، Clock selection (فقط در تایمرهای 9 و 12، آن هم بدون ورودی ETR)، سنکرون سازی و مدهای Master و Slave (فقط مد Slave و فقط در تایمرهای 9 و 12)، مد PWM input (فقط در تایمرهای 9 و 12) و مد دیباگ.

بلوک-دیاگرام-تایمر-9-12

تصویر 5 – بلوک دیاگرام تایمرهای 9 و 12 میکروکنترلرهای STM32F1

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

  1. انواع تایمر در میکروکنترلرهای STM32F1 عبارتند از تایمر Basic، تایمر General purpose و تایمر Advanced control.
  2. برخی ویژگی های تایمرهای STM32 ممکن است در تایمرهای میکروکنترلرهای دیگر وجود نداشته باشند.
  3. از ویژگی ها و مشخصات تایمرهای STM32 سری F1، وجود وقفه های متنوع، قابلیت DMA، شمارندۀ 16 بیتی و مقسم فرکانسی 16 بیتی است.
  4. ویژگی Time base unit یا همان امکان تولید وقفه های زمانی منظم، که پایه و اساس کار تایمرهاست، در همۀ تایمرهای STM32 سری F1 وجود دارد.
  5. برخی تایمرهای STM32 سری F1 تنها می توانند به صورت صعودی بشمارند.
  6. از امکانات عمومی تایمرهای STM32 می توان به Time base unit، ورودی Capture و خروجی PWM، خروجی های مکمل و مد تک پالس اشاره کرد.
  7. برخی امکانات تایمرهای STM32، در بسیاری از میکروکنترلرهای دیگر وجود ندارد. مثل قابلیت Repetition counter و مدهای Master و Slave.
  8. از عملکرد Break و پاک کردن سیگنال OCxREF می توان به منظور حفاظت استفاده کرد. برای مثال خروجی یک سنسور دما که به یک موتور متصل است به ورودی Break داده شود. به طوری که اگر دمای موتور بالا رود، با یک مدار، سطح روی پایۀ Break تغییر کند. در این صورت Break اتفاق می افتد و خروجی PWMی که به موتور داده می شود قطع می شود.
  9. اتصال سنسورهای Hall، عملکرد XOR ورودی و PWM شش مرحله ای، امکانات مرتبط با هم هستند.
  10. تایمرهای Basic، ورودی Capture و خروجی مقایسه و PWMو در نتیجه امکانات مربوط به این ویژگی ها را ندارند. این تایمرها تنها چند قابلیت محدود دارند.
  11. تایمرهای Advanced همۀ ویژگی های معرفی شده را دارند.
  12. تایمرهای General purpose برخی ویژگی های بررسی شده را دارند و برخی دیگر را ندارند.

نوشته های مرتبط دیگر در وبلاگ یوبرد:

ساخت PWM با AVR، سخت افزاری و نرم افزاری

PWM فرکانس متغیر با AVR، سخت افزاری و نرم افزاری

کنترل دور موتور با AVR

تایمرهای میکروکنترلرهای AVR

تایمر صفر در AVR

تایمر 1 و 3 در AVR

تایمر 2 در AVR

راه اندازی تایمر در LPC1768

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

آموزش میکروکنترلرهای ARM سری STM32 یوبرد

آموزش میکروکنترلرهای AVR یوبرد

آموزش میکروکنترلرهایARM سری LPC یوبرد

آموزش Arduino یوبرد

خدمات برنامه نویسی میکروکنترلر یوبرد

راه-اندازی-dac-stm32

راه اندازی DAC در STM32

راه اندازی DAC در STM32، ویژگی های DAC در میکروکنترلرهای STM32F1، بلوک دیاگرام DAC در STM32، اتصالات راه اندازی DAC در میکروکنترلر STM32F107VC، نمونه کد رجیستری راه اندازی واحد DAC در میکروکنترلرهای STM32F1، ساخت موج سینوسی با STM32، راه اندازی مبدل دیجیتال به آنالوگ STM32 با توابع HAL

راه-اندازی-سون-سگمنت-با-آردوینو

راه اندازی سون سگمنت با آردوینو

راه اندازی سون سگمنت با آردوینو UNO، راه اندازی سون سگمنت 4 تایی آند مشترک با آردوینو، اتصال سون سگمنت به آردوینو، کتابخانۀ سون سگمنت برای آردوینو، نمونه کد راه اندازی سون سگمنت، نمایش اعداد در سون سگمنت 4 تایی، نکات راه اندازی سون سگمنت

راه-اندازی-adc-در-آردوینو

راه اندازی ADC در آردوینو

راه اندازی ADC در آردوینو، راه اندازی LCD گرافیکی KS0108 با کتابخانۀ U8g2، اتصالات لازم برای راه اندازی ADC و LCD گرافیکی KS0108، نمونه کد راه اندازی ADC آردوینو، فرمول محاسبۀ دما با TMP36، راه اندازی سنسور دما با آردوینو، راه اندازی فتوسل (LDR) با آردوینو

2 دیدگاه ها

  1. سلام استاد اسدی. امیدوارم حالتون خوب باشه. من هنوز متوجه نشدم که تفاوت تایمر Advanced با تایمرهای Basic و General Purpose چیه؟ شما فرمودید که میشه از اون به عنوان شمارندۀ ساعت یا یک شمارندۀ قابل تکرار یا تولید موج PWM استفاده کرد. خب اینها رو که با همون تایمرهای General Purpose هم میشه انجام داد.

    پاسخ
    • سلام. خیلی ممنون. تفاوت تایمرهای Advanced نسبت به بقیه انواع تایمر توی ساخت PWM خروجی هست. در Advanced Timer کاربر میتونه کنترل بیشتری روی پالس PWM خروجی مثلا سیگنال Break داشته باشه. توی کاربردهای کنترل دور موتور یا اینورترهای حرفه ای استفاده از این تایمر کمک میکنه.

      پاسخ

یک دیدگاه بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است