در این مقاله نحوهی استفاده از STM32CubeMX برای پیکربندی لوازم جانبی STM32L431RCT6، خواندن دادههای سنسور گاز MQ-2 و ارسال آن از طریق پورت سریال با جزئیات کامل بیان شده است.
1. آمادهسازی
آمادهسازی سختافزار
برد توسعه
در گام اول باید یک برد توسعه را آماده کرد:
• ماژول MQ-2
سنسور گاز MQ-2، به طور کلی در دستگاههای کنترل نشت گاز در خانهها و کارخانهها کاربرد دارد و برای تشخیص گاز مایع، بوتان، پروپان، متان، الکل، هیدروژن، دخانیت و غیره استفاده میشود.
نمودار شماتیک MQ-2:
برای تغییر این متن بر روی دکمه ویرایش کلیک کنید. لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
آمادهسازی نرمافزار
برای کامپایل و دانلود کد تولید شده، باید Keil-MDK و پکیج مربوط به تراشه را نصب کنید.
تولید پروژهی MDK
انتخاب مدل تراشه
STM32CubeMX را باز کنید، سپس انتخابگر MCU را باز کنید:
تراشه STM32L431RCT6 را جستجو و انتخاب کنید:
منبع کلاک را پیکربندی کنید.
اگر میخواهید از کلاک پر سرعت خارجی (HSE) استفاده کنید، باید RCC را در System Core پیکربندی کنید.
اگر از کلاک داخلی پیش فرض (HSI) استفاده میکنید، میتوانید از این مرحله صرف نظر کنید.
در اینجا از یک کلاک خارجی استفاده میکنیم:
پیکربندی درگاه سریال
برد توسعه Xiongpai دارای ST-Link به صورت on-board و یک درگاه سریال مجازی است.
نمودار شماتیک Xiongpai:
در این مقاله برای وصل کردن پورت سریال PC و USART1 سوئیچ را برروی AT-MCUMode تنظیم میکنیم. سپس، پیکربندی USART1 را شروع میکنیم.
پیکربندی ADC
مبدلAnalog-to-Digital (ADC)، یک مبدل آنالوگ به دیجیتال بوده که میتواند سیگنالهای آنالوگ را که به طور مداوم در حال تغییرند به سیگنالهای دیجیتال گسسته تبدیل کند و سپس برای پردازش آنها از مدارهای دیجیتال استفاده میکند.
سری STM32L431xx دارای یک ADC با حداکثر رزولوشن 12 بیت بوده و هر ADC حداکثر 20 کانال سنجش دارد، تبدیل A/D این کانالها را میتوان در حالت تکی، پیوسته، sweep یا ناپیوسته اجرا کرد.
نتایج ADC را میتوان در حالت left-aligned یا right-justified در رجیستر داده 16 بیتی ذخیره کرد.
حداکثر نرخ تبدیل STM32L431 ADC مقدار 5.33 مگاهرتز میباشد، به این معنی که زمان تبدیل آن 0.188us (با رزولوشن 12 بیتی) است. لازم به ذکر است که زمان تبدیل ADC هیچ ارتباطی با فرکانس کلاک درگاه AHB ندارد.
تعیین کانال ADC
پیکربندی ADC (حالت تبدیل تکی)
ابتدا ADC1 را انتخاب کنید و کانال 3 را باز کنید:
گام بعد، تنظیم کردن ADC است، در اینجا میتوانیم تنظیمات را برروی حالت پیشفرض بگذاریم:
در نهایت، قواعد تبدیل ADC را تنظیم کنید:
مابقی تنظیمات را برروی حالت پیش فرض بگذارید.
پیکربندی درخت کلاک
بالاترین فرکانس STM32L4 مقدار 80M است، بنابراین PLL را پیکربندی کنید، و در نهایت از HCLK=80MHZ استفاده کنید:
ایجاد تنظیمات پروژه
تنظیمات تولید کد
درنهایت، تنظیمات ایجاد یک فایل اولیه را به صورت جداگانه تنظیم کنید:
ایجاد کد
برای ایجاد پروژهی MDK-V5 برروی GENERATE CODE کلیک کنید.
3. نوشتن، کامپایل و دانلود کد کاربر در MDK
بازخوانی تابع ()printf :
نوشتن کد تست برای خواندن داده
مطابق شکل زیر تابع main را اصلاح کنید:
int main(void)
{
uint16_t smoke_value = 0;
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC1_Init();
MX_USART1_UART_Init();
while (1)
{
HAL_ADC_Start(&hadc1); //Start ADC single conversion
HAL_ADC_PollForConversion(&hadc1, 50); //Wait for ADC conversion to complete
smoke_value = HAL_ADC_GetValue(&hadc1); //Read ADC conversion data
printf("smoke_value = %d\n", smoke_value);
HAL_Delay(500);
}
}