در این بخش به آموزش مدیریت کلاک در میکرو STM32 پرداخته شده است.
دوستان عزیزم،
بخش تامین و مدیریت کلاک از پابه ای ترین بخش های راه اندازی هر میکروکنترلر می باشد.
ما در این آموزش سعی کردیم به صورت جزئی و دقیق به راه اندازی کلاک و مدیریت اون در میکروکنترلر stm32 بپردازیم.
بحث اول: انواع منابع کلاک در میکروکنترلر
فرض کنید می خواهیم کلاک میکروکنترلر stm32f103RET6 رو مدیریت و کنترل کنیم. این میکروکنترلر میتواند فرکانس های زیر را به منظور تامین سیگنال کلاک تهیه کند:
- فرکانس ۴۰khz داخلی یا LSI
- فرکانس ۸Mhz داخلی یا HSI
- فرکانس ۳۲.۷۶۸khz خارجی یا LSE برای واحد RTC
- فرکانس ۴Mhz تا ۱۶Mhz خارجی یا HSE
- فرکانس ۱Mhz تا ۲۵Mhz خارجی یا HSE با اسیلاتور خارجی
- فرکانس حداکثر تا ۷۲Mhz توسط PLL
منظور از واژه های انگلیسی بالا:
LSI = Low Speed Internal
HSI = High Speed Internal
LSE = Low Speed External
HSE = High Speed External
PLL = Phase Lock Loop
RTC = Real Time Clock
حالا تک تک فرکانس های بالا را بررسی می کنیم:
فرکانس ۴۰Khz (LSI) و ۸Mhz (HSI) داخلی:
فرکانس ۴۰Khz داخلی یا LSI و فرکانس ۸Mhz داخلی یا HSI توسط مدار RC کالیبره شده داخلی تولید میشود. این مورد برای عملیات سخت افزاری که نیاز به دقت بالا در زمان بندی ها وجود دارد مثل تایمرها یا پروتکل های انتقال دیتا و … مناسب نمی باشد. زیرا رزوناتور RC از کیفیت بالایی برخوردار نیست و برای عملیاتی که نیاز به دقت در زمان بندی ندارند بکار می رود. در این حالت مطابق شکل زیر به پایه های مربوطه چیزی متصل نمی شود. این فرکانس بعنوان فرکانس اصلی میکرو قرار می گیرد که به عنوان فرکانس مرجع واحد PLL هم (برای تولید فرکانس های بیشتر تا ۶۴Mhz) بکار می رود. (پایه های مربوط به اسیلاتور در شکل زیر نشان داده شده است)
(کلاک اصلا چیه؟)
تعاریف زیر را به کلاک نسبت می دهند:
- کلاک پالسی است که سرعت پردازنده میکرو را نشان می دهد
- کلاک پالسی منظم با فرکانس و دیوتی سایکل ثابت است که حکم ضربان قلب را برای میکروکنترلر دارد.
- کلاک باعث همزمانی المان های سخت افزاری موجود درون میکرو (پریفرال ها) می شود
- کلاک باعث همزمانی میکرو با سایر المان های خارجی (مانند بعضی سنسورها) می شود
همه تعریف های بالا به نوعی درست است و یه طور خلاصه: ” کلاک عنصر حیاتی و هماهنگ کننده درون یک میکروکنترلر است” که اگر به خوبی تنظیم و تامین نشود موجب بی نظمی و عدم کارکرد مناسب در میکروکنترلر می شود.
فرکانس ۴Mhz تا ۱۶Mhz و (HSE) خارجی:
فرکانس ۴mhz الی ۱۶mhz خارجی یا همون hse بوسیله یه قطعه کریستال با یه مقدار خاص (اکثرا ۸ مگاهرتزه) که طبق شکل زیر به پایه های میکرو وصل شده، تامین می شود. درواقع این فرکانس به عنوان فرکانس اصلی میکرو استفاده میشه و همچنین بعنوان فرکانی مرجع در واحد pll هم برای تولید فرکانس ۷۲ مگاهرتز (بسته به نوع میکروکنترلر) به کار میره
(خازنهایی که به کریستال وصل میشن از نوع بدون پلاریته و در رنج ۱۵ تا ۲۵ پیکوفاراد هستن)
فرکانس ۳۲.۱۶۸Khz (LSE) خارجی برای واحد RTC:
فرکانش ۳۲.۷۶۸khz خارجی یا LSE توسط یک قطعه کریستال با همین مقدار که مطابق شکل زیر به پایه های میکرو وصل میشه، تامین می شود. این کریستال به منظور راه اندازی اسیلاتور RTC مورد استفاده قرار میگیره و RTC هم در واقع به معنی Real TIme Clock است. یعنی ساعت واقعی و بدون وقفه.(این مورد بیشتر در پروژه هایی استفاده می شود که نیاز به زمان بندی به روز و جهانی هستند.)
فرکانس ۱Mhz تا ۲۵Mhz از نوع (HSE) خارجی با اسیلاتور خارجی:
برای مواردی که دقت در انجام عملیات یا دقیق بودن سیگنال کلاک یا کاهش نویزپذیری خیلی مهمه از اسیلاتور کریستالی ۱ تا ۲۵ مگاهرتزی خارجی استفاده می شه. این اسبلاتور قطعه ای چهار پایه با تغذیه جداگانه است که به تنهایی تولید سیگنال کلاک را انجام می دهد. که در شکل زیر یک نمونه از آن را می بینید.
نحوه اتصال اسیلاتور نیز در شکل زیر نشان داده شده است.
در واقع این فرکانس به عنوان فرکانس اصلی میکروکنترلر قرار میگیره که بعنوان فرکانس مرجع واحد PLL به کار میره. (برای تولید فرکانسهای بیشتر تا ۷۲ مگاهرتز (بسته به نوع میکرو))
فرکانس حداکثر ۷۲ مگاهرتز با PLL:
واحد PLL در میکروهای سری آرم برای افزایش فرکانس تا یک حد مشخص به کار میره. حداکثر این فرکانس وابسته به معماری تراشه میتونه فرق کنه که در میکروکنترلر سری f103 معمولا حداکثر تا ۷۲ مگاهرتزه.
وجود واحد PLL در تراشه های آرم کمک شایانی به طراحی سخت افزار کرده است زیرا دیگه نیاز به ایجاد فرکانسهای بالا در سطح بردهای الکترونیکی نیست. این مساله از خیلی جهات از جمله نویز، تداخل های فرکانسی، هزینه طراحی و… به کاربر کمک میکنه.
ادامه دارد….
درصورتی که در رابطه با میکروکنترلرهای stm32 تازه کار هستید اینجا را کلیک کنید.
سوال اول: در این آموزش چه چیزهایی یاد می گیریم؟
آموزش مدیریت کلاک در میکرو STM32
پوریا رشیدی –
سلام. دمتون گرم که آموزشهارو رایگان میذارید. منم مدتهاست تو وبلاگم اینکارو میکنم
سوالی دارم
من دارم با میکرو stm32f103zet6 کار میکنم. این آموزشها قابل پیاده سازی روی این سری میکروها هستن؟
مرسی و خداقوت
admin@amokh –
سلام ممنون دوست عزیز، بله قابل پیاده سازی هستند روی سایر خانواده های stm32
پوریا رشیدی (خریدار محصول) –
کلیک روی آیکون stm32 در وبلاگم شمارو به صفحه گوگل درایوم هدایت میکنه که بیشتر آموزش های سایت شمارو اونجا قرار دادم(اونهایی که رایگان بودن)
اسکرین شات بخش معرفی سایتتون رو هم قرار دادم
admin@amokh –
سلام دوست عزیز. ممنون از اینکه سایت مارو به اشتراک گذاشتید و امیدواریم که موفق باشید و اگه نیاز به همکاری یا کمک داشتید با ما در ارتباط باشید
پوریا رشیدی (خریدار محصول) –
http://pourya_rashidi.rozblog.com