مهندس موفق الکترونیک

راه اندازی واحد ADC میکروکنترلر stm32f4xx  و نمونه برداری با نرخ مشخص

در این قسمت از آموزش میکروکنترلرهای STM32 به معرفی  و راه اندازی واحد ADC میکروکنترلر stm32f4xx  و نمونه برداری با نرخ مشخص، (30KHz ) از سیگنال خروجی DAC می‌پردازیم. در این قسمت از سیگنال آنالوگ (موج سینوسی خروجی DAC) به کمک ADC و با   نرخ نمونه برداری 30Ksample/sec نمونه برداری می کنیم.

واحد ADC میکروکنترلر stm32f4xx

معرفی واحد ADC میکروکنترلر

ADC به معنای Analog to Digital convertor  است و از این peripheral (جانبی) برای نمونه برداری از سیگنال های آنالوگ و تبدیل آنها به داده دیجیتال در میکروکنترلر، استفاده می شود. در میکروکنترلر stm32f407zgt6 سه مبدل آنالوگ به دیجیتال داریم که باید فرکانس کاری هر کدام و دقت نمونه برداری آنها را مشخص کنیم . واحد ADC در این میکروکنترلر می تواند داده آنالوگ را به یک عدد دیجیتال 6 تا 12 بیتی تبدیل کند و مثلا برای تبدیل داده آنالوگ به یک عدد دیجیتال 8 بیتی به 11 سیکل کلاک نیاز داریم که اگر کلاک ADC برابر با 84MHz باشد زمان لازم برای یک تبدیل آنالوگ به دیجیتال توسط واحد ADC به صورت زیر محاسبه می شود:

سرعت نمونه برداری واحد ADC میکروکنترلر 

روش های متداول به کارگیری مبدل آنالوگ به دیجیتال در میکروکنترلر های ARM عبارتند از:

  • Single conversion
  • Continues conversion
  • With timer trigger

در روش اول یک تبدیل توسط میکروکنترلر انجام می شود، داده نمونه برداری ذخیره می شود و ADC متوقف می شود، در روش دوم نمونه برداری به طور پیوسته انجام می شود و در روش سوم با هر اینتراپت تایمر نمونه برداری انجام می شود.

مطلب پیشنهادی:  نرم افزار ARMwizard

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

نرم افزار Stm32CubeMX :

در ابتدا تنظیمات مربوط به دقت نمونه برداری مبدل آنالوگ به دیجیتال و روش نمونه برداری که ADC with timer trigger است، را انجام می دهیم:

نرم افزار Stm32CubeMX

  ADC configuration

و تنظیم کردن واحد DMA برای مبدل آنالوگ به دیجیتال در Normal Mode :

واحد DMA برای مبدل آنالوگ به دیجیتال

 DMA for ADC

و تنظیمات مربوط به تایمر 2 که با هر اینتراپت آن مبدل آنالوگ به دیجیتال داده ای را نمونه برداری می کند که ما فاصله ی زمانی بین هر دو نمونه برداری (هر دو اینتراپت تایمر) را به گونه ای تنظیم کرده ایم که نرخ نمونه برداری ADC برابر با 30Ksample/sec باشد.

تنظیمات تایمر 2 مبدل آنالوگ به دیجیتال

Timer2 configuration

فعال کردن اینتراپت تایمر2

 فعال کردن اینتراپت تایمر2

 چگونگی تنظیم نرخ نمونه برداری ADC با روش Timer trigger :

با مراجعه به دیتاشیت Stm32f407 متوجه می شویم که تایمر 2 نیز مانند تایمر4  بر روی باس APB1 قرار دارد که ما فرکانس آن را 42MHz تنظیم کرده ایم (مطابق شکل 3 ) و هدف ما این است که نرخ نمونه برداری واحد ADC برابر با 30Ksample/sec باشد، بنابراین برای تنظیم زمان اینتراپت تایمر داریم:

نرخ نمونه برداری واحد ADC

کامپایلر Keil :

پس از ایجاد کد در نرم افزار Stm32CubeMx ،نرم افزار Keil را باز می کنیم و برای راه اندازی واحد ADC و تایمر2، کد های زیر را در تابع main اضافه می کنیم. اگر دوست داشته باشید توضیحات بیشتری درباره ی توابع استفاده شده بدانید، می توانید با استفاده از کلید میانبر Ctrl+Tab در نرم افزارKeil ،  تعریف و توضیحات مربوط به هر تابع را مطالعه کنید.

مطلب پیشنهادی:  راه اندازی WS2812 با STM32

ADC میکروکنترلر stm32f4xx

شکل 16: راه اندازی و استفاده از ADC و timer2

با توجه به این که راه اندازی واحد DMA مبدل آنالوگ به دیجیتال در حالت Normal بود، مبدل آنالوگ به دیجیتال از 512 داده نمونه برداری می کند و آنها را درآرایه buffout ذخیره می کند. حال برای بررسی عملکرد صحیح ADC می توان داده های ADC را از طریق UART به کامپیوتر منتقل کرد و در صفحه نمایش کامپیوتر نشان داد که در بخش بعدی به بررسی این نکته می پردازیم.

نویسنده مطلب : مهسا مهدیه نجف آبادی

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

دیدگاهتان را بنویسید

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

2 دیدگاه

  1. خوب و روان توضیح دادن یه هنره!
    درود به شما.