دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد DAC(بخش دوم)
2018-12-16 23:49:50
جلسه بیست و ششم _ نحوه راه اندازی واحد DAC و برنامه آن در محیط Keil
در جلسه قبل با استفاده از نرم افزار STM32CubeMX تنظیمات مربوط به DAC را انجام دادیم و کد برنامه را در محیط Keil تولید نمودیم در این جلسه قصد داریم تا به شرح و معرفی کدهای تولید شده توسط نرم افزار STM32CubeMX بپردازیم و پس از آن به دستورات پر کاربرد واحد DAC بپردازیم و پس از آن برنامه را تشریح نماییم. در ابتدا به سراغ فایل main.c می رویم.
استراکچر مربوط به تنظیمات واحد DAC می باشد.
معرفی تابع تنظیمات و پیکربندی واحد DAC
تابع مربوط به پیکربندی واحد DAC می باشد که در آن پارامترهای تنظیم شده در نرم افزار STM32CubeMX اعمال شده است.
حال به سراغ توابع مربوط به واحد DAC می رویم. این توابع در فایل stm32f1xx_hal_dac.c قرار دارند.
تابع مربوط به شروع فعالیت مبدل دیجیتال به آنالوگ می باشد که دو آرگومان ورودی دریافت می کند. آرگومان اول استراکچر hadc می باشد و در آرگومان دوم کانال DAC مورد نظر قرار می گیرد.
تابع مربوط به توقف فعالیت مبدل دیجیتال به آنالوگ می باشد و مانند تابع HAL_DAC_Start دو آرگومان ورودی دارد که آرگومان اول استراکچر hadc و آرگومان دوم کانال مورد نظر می باشد.
HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data
این تابع وظیفه مقدار دهی به واحد DAC را دارد و 4 آرگومان دریافت می کند که آرگومان اول استراکچر hadc می باشد و آرگومان دوم کانال مورد نظر می باشد.
آرگومان سوم مشخص می کند که مبدل بصورت 8 بیتی یا 12 بیتی و بصورت تنظیم از راست یا چپ باشد. آرگومان چهارم مقدار واحد DAC را مشخص می کند که این مقدار در صورتیکه مبدل بصورت 8 بیتی تنظیم شود اعداد بین 0 تا 255 می باشد و در صورتیکه بصورت 12 بیتی تنظیم شود اعدادی بین 0 تا 4095 را می گیرد
پس از معرفی توابع مورد استفاده به سراغ برنامه پروژه می رویم در این پروژه قصد داریم تا خروجی DAC را به یک LED متصل نماییم و با تغییر مقدار خروجی نور LED را کنترل نماییم. در نتیجه برنامه این پروژه مطابق تصویر زیر می باشد.
در ابتدای برنامه و قبل از حلقه while کانال یک واحد DAC فعال می شود و پس از آن وارد حلقه while می شویم. درون این حلقه یک حلقه for قرار دارد که مقدار متغیر DAC_Counter در آن با هر بار اجرای حلقه یکی اضافه می شود این متغیر در تابع مربوط به مقدار دهی خروجی DAC قرار می گیرد با تکرار این حلقه هر 1 میلی ثانیه یکبار خروجی واحد DAC تغییر می کند که این تغییر موجب تغییر در نور LED می شود.
در انتها می توانید شماتیک مربوط به این جلسه و برنامه (keil , STM32CubeMX) آنرا دانلود نمایید.