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

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

تایمر-میکروکنترلر-stm32

آموزش STM32 یوبرد

شروع بازی ST

آموزش های رایگان STM32

فیلم های آموزش STM32

آموزش خصوصی 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

رضا اسدی

رضا اسدی

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

سفارش پروژه میکروکنترلر یوبرد

زیرساخت مطمئن صنعت

جدیدترین تاپیک های STM32

میکروکنترلر ARM

میکروکنترلر ARM چیست؟ پردازندۀ ARM

میکروکنترلر ARM ، میکروکنترلرهایی هستند که پردازندۀ آنها ساخت شرکت ARM است. شرکت ARM سازندۀ میکروکنترلر نیست. سازندۀ پردازنده (CPU) است. امروزه به میکروکنترلرهایی که پردازندۀ آنها طراحی شدۀ شرکت ARM باشد، میکروکنترلر ARM گفته می شود.

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

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

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

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

راه اندازی UART در STM32، رجیستری و HAL

راه اندازی UART در STM32، اتصالات و نرم افزار مورد نیاز، نمونه کد USART در STM32 به صورت رجیستری، نمونه کد رجیستری USART با وقفۀ دریافت، نمونه کد HAL برای راه اندازی USART در STM32، نمونه کد HAL با وقفۀ دریافت، نحوه محاسبه Baud rate در USART میکروکنترلرهای STM32F1

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

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

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

2 دیدگاه ها

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

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

      پاسخ

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

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

دیگر آموزش های یوبرد

آموزش TFT LCD با TouchGFX و STM32 یوبرد

گرافیک کاربرپسند با میکروکنترلر ST

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش طراحی PCB و نویز یوبرد

تجسم دنیای الکترونیک

آموزش زبان C و MISRA-C یوبرد

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

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

لمس شی گرایی در میکروکنترلرها

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

شاهکار 8 بیتی Atmel

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

یادگار فیلیپس

آموزش های شاخص

دانلود

لطفا برای دریافت لینک دانلود اطلاعات خواسته شده را وارد نمایید
ضبط پیام صوتی

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