آموزش نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

در ادامه آموزش های اصفهان درایو قصد داریم یک ویژگی پر کاربرد نرم افزار Keil رو به منظور trace کردن متغیرهای خودمون به صورت زمان واقعی(Real Time) با میکروکنترلر STM32 با هم بررسی کنیم.

بسیاری از موارد هست که مثلا ممکنه شما قصد داشته باشین یک داده ای رو از طریق واحد ADC قرائت بکنین و بررسی بکنین که سینگال دریافتی دارای نویز هست یا خیر.

بعد از بررسی این مسئله، خصوصا در کاربردهای کنترل موتور و به منظور قرائت جریان ممکن هست شما بخواین جریان قرائت شده توسط ADC رو فیلتر کنین و بررسی کنین که این فیلتر چقدر کارآمده! تو چنین مواردی هست که این ویژگی میتونه به کمک ما بیاد. البته که واضحه این قضیه میتونه برای موارد دیگه ای هم استفاده بشه و کار ما رو راه بندازه!

برای فعال کردن حالت trace به صورت زمان واقعی نیازی به انجام کارهای پیچیده نیست! ما در این آموزش از میکروکنترلر STM32F103VET6 برای بررسی این موضوع استفاده میکنیم. در نرم افزار stm32cubemx با فعال کردن کریستال خارجی و تنظیم فرکانس میکرو روی 72MHz کار ما تموم خواهد شد. 

تنها مسئله ای که باید در نظر گرفته بشه، انتخاب پایه ی اختصاصی میکرو برای استفاده از قابلیت Serial Wire Viewer(SWV) هست. به همین منظور شما به سادگی در قسمت جستجوی پین ها میتونین SWO رو وارد کنین و بعد از پیدا کردن این پایه گزینه مناسب رو براش فعال کنید.

در نهایت ما میتونیم بدون انجام تنظیمات دیگه ای، پروژه رو تولید کنیم.

نکته بسیار مهم: برای این که بتونیم از SWV استفاده کنیم لازم هست پایه ی SWO از پروگرامر ST-LINK خودمون رو به پایه ی مربوطه در میکروکنترلر متصل کنیم. در غیر این صورت این ویژگی در دسترس ما نخواهد بود!

برای این هدف پیشنهاد ما استفاده از پروگرامر ST-LINK V2.1 اصفهان درایو هست که ویژگی های بسیار جالبی رو در عین سادگی و سهولت دسترسی به پایه های مختلف اون  در اختیار شما قرار میده که میتونین با مراجعه به صفحه این محصول اون رو مطالعه کنین.

پروگرامر ST-LINK V2.1 اصفهان درایو

 

تنظیم کلاک میکرو به 72 مگاهرتز

 

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

انتخاب پایه ی PB3 به عنوان TRACESWO

 

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

در برنامه ی نوشته شده، متغیر i با یک تاخیر زمانی بین هر بار افزایش یا کاهش، صرفا قراره  50 بار با گام یک افزایش پیدا کنه و سپس به همین مقدار هم کاهش پیدا کنه، بنابراین قصد داریم یک شکل موج مثلثی به ساده ترین شکل ممکن ایجاد کنیم.

 

سورس کد

 

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

حالا نوبت به این میرسه که تنظیمات مورد نیاز برای فعال کردن SWV رو در نرم افزار KEIL انجام بدیم. با کلیک راست کردن روی اسم پروژه و انتخاب گزینه Options for target صفحه زیر برای ما باز میشه:

 

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

منوی options for target

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

حالا طبق تصاویر، گام های مورد نیاز رو طی میکنیم:

 

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

 

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

توجه داشته باشید که در سربرگ trace حتما مقدار Core Clock روی فرکانس میکرو باید تنظیم شه!

 

حالا با بردن برنامه به حالت دیباگ و انتخاب سربرگ VIEW، میتونیم logic analyzer رو فعال کنیم:

 

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

حالا باید از طریق گزینه setup متغیر i رو طبق تصویر به logic analyzer اضافه کنیم و مقدار ماکسیمم رو با توجه به نهایت مقدار i روی عدد مناسبی تنظیم کنیم:

 

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

نتیجه اجرای برنامه

 

نمایش داده به صورت گرافیکی(Plotting Data) در KEIL با میکروکنترلر STM32

 

logic analyzer دارای ویژگی های جالبی من جمله اندازه گیری فرکانس و زمان سپری شده بین دو نقطه که توسط ما انتخاب میشه رو داره. بررسی این ویژگی ها به سادگی با کمی کنکاش با این ابزار برای شما مشخص میشه و این بحث خارح از دامنه ی این آموزش قرار میگیره.

 

دانلود پروژه

ESF DRIVE Real Time Trace.rar

 

امیدواریم که از این آموزش استفاده برده باشید!

 

با سایر آموزش های اصفهان درایو همراه باشید!

 

 

۵
از ۵
۳ مشارکت کننده

بلاگ تخصصی اصفهان درایو