آموزش STM32

جلسه 21: مصرف انرژی و حالت خواب

هدف جلسه و جایگاه آن در مسیر آموزش

در جلسه 21 از دوره STM32، موضوع «مدیریت توان STM32 و حالت Sleep» را به صورت یک آزمایش قابل تکرار دنبال می‌کنیم. هدف این است که خواننده علاوه بر اجرای نمونه، بتواند دلیل انتخاب تنظیمات و معنای خروجی را توضیح دهد. اگر فقط کد را روی برد بریزیم و نتیجه‌ای ظاهری ببینیم، هنوز نمی‌دانیم خطاهای بعدی از سخت‌افزار هستند یا از تنظیمات نرم‌افزار. بنابراین از ابتدا مدل دقیق برد، نسخه ابزار و آنچه مشاهده شده است ثبت می‌شود.

این درس بر پایه یک برد مرجع NUCLEO-F401RE طراحی شده است. در صورت استفاده از برد دیگر، نام پایه، وضعیت کلید، مسیر درگاه سریال و قابلیت‌های جانبی باید از راهنمای همان برد و دیتاشیت همان تراشه استخراج شود. تصویرها برای شناخت ابزار و موضوع هستند و نقشه اتصال پروژه به شمار نمی‌آیند. نتیجه مطلوب این جلسه چنین است: جدول جریان برای دو حالت.

تصویر آموزشی مرتبط با مصرف انرژی و حالت خواب
نمایی از تجهیزات یا مفهوم مرتبط با درس؛ منبع: Wikimedia Commons.

وسایل و پیش‌نیازهای مشخص

برای اجرای این مرحله به مولتی‌متر مناسب و پروژه LED نیاز دارید. پیش از برق‌رسانی، نام مدل را از نوشته روی برد بخوانید و آن را با گزینه انتخاب‌شده در محیط توسعه مقایسه کنید. کابل USB باید قابلیت انتقال داده داشته باشد؛ برخی کابل‌ها تنها برای شارژ هستند و باعث می‌شوند برد در رایانه دیده نشود. اگر قطعه خارجی به کار می‌برید، ولتاژ تغذیه، جریان مجاز و جهت اتصال را از سند سازنده آن قطعه بخوانید.

پروژه‌های جلسات قبل را در پوشه جداگانه نگه دارید و از پروژه فعلی یک نسخه قابل بازگشت بسازید. هنگام تغییر تنظیمات CubeMX، فایل IOC را ذخیره و سپس کد را تولید کنید. بخش‌های دستی برنامه را در ناحیه‌های مخصوص USER CODE بگذارید تا تولید مجدد کد آنها را پاک نکند. برای گزارش نتیجه، یک جدول ساده از تنظیم، مشاهده و توضیح بسازید.

مراحل اجرای آزمایش

گام اول: پیش و پس از ورود به حالت کم‌مصرف جریان را با روش اندازه‌گیری یکسان مقایسه کن. در صفحه تنظیمات، هر گزینه را با هدف همین آزمایش مرتبط کنید. اگر گزینه‌ای را صرفاً از نمونه دیگری کپی می‌کنید، پیش از ادامه بررسی کنید که آیا در برد مرجع و نسخه کتابخانه فعلی همان معنی را دارد. نام‌گذاری روشن برای پین‌ها و متغیرها انتخاب کنید تا هنگام دیباگ بتوانید منشأ هر مقدار را پیدا کنید.

گام دوم: پروژه را Build کنید و پیام‌های خطا و هشدار را بخوانید. سپس اتصال ST-LINK را بررسی و برنامه را روی برد بارگذاری کنید. یک بار برد را بازنشانی کنید و رفتار آن را دوباره بسنجید؛ این کار نشان می‌دهد نتیجه فقط ناشی از وضعیت باقی‌مانده در جلسه Debug نیست. اگر خروجی فیزیکی دیده نمی‌شود، ابتدا همان آزمایش را با ساده‌ترین حالت ممکن و بدون ماژول‌های جانبی تکرار کنید.

گام سوم: جدول جریان برای دو حالت. این مشاهده را با زمان، شرایط تغذیه و وضعیت اتصالات ثبت کنید. سپس فقط یک پارامتر مرتبط با موضوع درس را تغییر دهید و آزمایش را دوباره انجام دهید. تغییر همزمان چند پارامتر تشخیص علت را دشوار می‌کند. در پایان به تنظیم قابل تکرار بازگردید و نسخه نهایی پروژه را ذخیره کنید.

ابزار آزمایش جلسه 21 STM32
تصویر تکمیلی برای مشاهده ابزار آزمایش؛ نقشه سیم‌کشی نیست.

چرا این تنظیمات مهم هستند؟

برای تحلیل نتیجه، منبع بیدارشدن و رفتار GPIO را مستند کن. این بخش را با داده واقعی آزمایش پر کنید: انتظار شما چه بود، چه اتفاقی افتاد و کدام مشاهده دو فرضیه متفاوت را از هم جدا می‌کند؟ وقتی خروجی مطابق انتظار نیست، به جای تعویض تصادفی سیم‌ها یا کد، زنجیره را به ورودی، پیکربندی، اجرای برنامه و خروجی تقسیم کنید.

کتابخانه HAL لایه‌ای برای دسترسی به پیرامونی‌ها فراهم می‌کند، اما جای خواندن راهنمای برد و مرجع تراشه را نمی‌گیرد. کد تولیدشده به پیکربندی فایل IOC وابسته است. نام یک تابع ممکن است روی چند خانواده یکسان باشد، در حالی که پین‌های قابل استفاده، منبع کلاک و جزئیات تایمر تغییر کنند. برای همین در گزارش خود مدل تراشه و نسخه بسته نرم‌افزاری را بنویسید.

یک آزمایش خوب باید معیار موفقیت داشته باشد. فقط نوشتن «کار کرد» کافی نیست: اگر پیام سریال می‌خوانید، نرخ و متن را ثبت کنید؛ اگر زمان‌بندی می‌سنجید، دوره تقریبی را بنویسید؛ اگر مقدار آنالوگ می‌خوانید، مقدار خام و مرجع را کنار هم بیاورید. به این ترتیب خواننده دیگری می‌تواند همان روش را تکرار و اختلاف نتیجه را پیدا کند.

عیب‌یابی مرحله‌ای

مهم‌ترین احتیاط این جلسه: مصرف کل برد Nucleo شامل مدارهای جانبی نیز هست. پیش از نسبت دادن مشکل به نرم‌افزار، تغذیه، اتصال زمین مشترک در صورت نیاز، شناخته شدن برد در رایانه و انتخاب مدل درست را بررسی کنید. اگر در کد خطا رخ می‌دهد، نخستین پیام خطای Build را بخوانید؛ خطاهای بعدی معمولاً پیامد همان خطای اول هستند.

اگر برنامه بارگذاری می‌شود اما خروجی تغییر نمی‌کند، یک breakpoint در نقطه اصلی بگذارید و ببینید اجرای برنامه واقعاً به آنجا می‌رسد یا نه. سپس متغیر ورودی، مقدار پیکربندی و فرمان خروجی را به ترتیب بررسی کنید. در آزمون‌های زمان‌حساس، breakpoint می‌تواند خود رفتار را تغییر دهد؛ در آن شرایط از گزارش محدود سریال یا ابزار اندازه‌گیری استفاده کنید.

وقتی از قطعه بیرونی استفاده می‌شود، نقشه پایه منبع آموزشی را به صورت خودکار معتبر فرض نکنید. برخی ماژول‌ها از نظر ظاهر شبیه‌اند اما ترتیب پایه‌ها و سطح ولتاژشان فرق می‌کند. آزمون نخست را با تغذیه خاموش انجام دهید، سپس در صورت امکان ولتاژ را با مولتی‌متر بسنجید و فقط پس از مطابقت با سند سازنده برنامه را اجرا کنید.

نمای مکمل برای یادگیری مدیریت توان STM32 و حالت Sleep
عکس مکمل از تجهیزات الکترونیک؛ برای اتصال دقیق به اسناد برد مراجعه کنید.

تمرین مستقل و سنجش یادگیری

تمرین اول این است که مراحل مصرف انرژی و حالت خواب را بدون کپی مستقیم تنظیمات از پروژه قبلی بازسازی کنید. هدف را در یک جمله بنویسید، سپس از روی راهنمای برد منابع مورد نیاز را پیدا کنید. اگر همان نتیجه به دست آمد، یکی از پارامترهای مجاز را تغییر دهید و قبل از اجرا پیش‌بینی کنید چه اثری خواهد داشت.

تمرین دوم: منبع بیدارشدن و رفتار GPIO را مستند کن. پاسخ را فقط به شکل تعریف واژه ننویسید؛ یک مشاهده از اجرای واقعی خودتان نیز اضافه کنید. اگر اختلافی میان محاسبه و مشاهده وجود دارد، علت‌های ممکن را به ترتیب احتمال فهرست کنید و برای هر کدام آزمون جداگانه‌ای پیشنهاد دهید.

برای پایان جلسه، این پنج مورد را در یک یادداشت نگه دارید: مدل برد، نسخه ابزار، تنظیمات مهم، نتیجه مشاهده‌شده و یک خطایی که توانستید رفع کنید. این یادداشت‌ها در پروژه پایانی به مستندات واقعی تبدیل می‌شوند و به خواننده سایت کمک می‌کنند آزمایش را روی سخت‌افزار خود با آگاهی انجام دهد.

جمع‌بندی و ادامه مسیر

در این مرحله با «مدیریت توان STM32 و حالت Sleep» از طریق یک کار عملی آشنا شدید و معیار موفقیت را «جدول جریان برای دو حالت» قرار دادید. ارزش این درس در تکرارپذیری آن است: از یک فرض روشن شروع می‌کنید، پیکربندی را ثبت می‌کنید، تنها یک متغیر را تغییر می‌دهید و خروجی را می‌سنجید.

برای مطالعه بیشتر، راهنمای رسمی برد NUCLEO-F401RE، مستندات STM32CubeIDE و مستندات HAL مربوط به خانواده F4 را ببینید. در جلسات بعدی همین روش مشاهده، ثبت و عیب‌یابی را برای پیرامونی‌های دیگر به کار می‌بریم. هر ادعای مربوط به پین، فرکانس یا محدوده ولتاژ باید با سند مدل سخت‌افزاری مورد استفاده بررسی شود.

منابع رسمی: صفحه برد NUCLEO-F401RE؛ STM32CubeIDE؛ آموزش رسمی ST.