مقدمه: کتابخانه CMSIS-DSP چیست؟
کتابخانه CMSIS-DSP (مخفف Cortex Microcontroller Software Interface Standard - Digital Signal Processing) یک مجموعه نرمافزاری غنی و قدرتمند است که توسط شرکت ARM به صورت اختصاصی برای میکروکنترلرهای مبتنی بر هستههای پردازشی Cortex-M توسعه یافته است. این کتابخانه شامل بیش از ۶۰ تابع پایه برای پردازش سیگنالهای دیجیتال و محاسبات پیچیده ریاضی است که طیف وسیعی از نیازهای مهندسان امبدد سیستم (Embedded Systems) را پوشش میدهد.
چرا باید از کتابخانه CMSIS-DSP استفاده کنیم؟
در برنامهنویسی میکروکنترلرها، سرعت اجرای دستورات و استفاده بهینه از منابع سختافزاری از اهمیت بالایی برخوردار است. دلایل اصلی استفاده از این کتابخانه عبارتند از:
بهینهسازی حداکثری: کدهای این کتابخانه برای معماری پردازندههای ARM Cortex-M بهینهسازی شدهاند و نسبت به توابع استاندارد زبان C (مانند کتابخانه
math.h) با سرعت بسیار بیشتری اجرا میشوند.پشتیبانی از سختافزار FPU: در میکروکنترلرهایی مانند سری STM32F3 یا STM32F4 که دارای واحد محاسبات اعشاری سختافزاری (FPU) هستند، این کتابخانه به صورت مستقیم از این واحد استفاده میکند که زمان محاسبات اعشاری را به شدت کاهش میدهد.
تنوع توابع: این کتابخانه شامل توابع پایهای ریاضی (سینوس، کسینوس، جذر سریع)، فیلترهای دیجیتال (FIR, IIR)، تبدیلات ماتریسی، توابع آماری و تبدیل سریع فوریه (FFT) است.
آموزش گامبهگام افزودن CMSIS-DSP به محیط KEIL
برای اضافه کردن این کتابخانه به پروژه خود در محیط Keil MDK، مراحل زیر را به دقت دنبال کنید:
گام اول: ایجاد پروژه و باز کردن ابزار RTE ابتدا پروژه خود را برای میکروکنترلر مورد نظر (در اینجا STM32F303RET) در Keil ایجاد کنید. سپس از نوار ابزار بالا، روی گزینه Manage Run-Time Environment (RTE) (آیکونی شبیه به یک لوزی سبز رنگ) کلیک کنید.
گام دوم: انتخاب کتابخانههای CMSIS در پنجره باز شده، بخش CMSIS را پیدا کرده و آن را باز کنید.
تیک گزینه CORE را فعال کنید.
تیک گزینه DSP را نیز فعال کنید (معمولاً زیرشاخهای به نام Library دارد، آن را انتخاب کنید). سپس روی دکمه OK کلیک کنید تا فایلهای مربوطه به درخت پروژه شما (Project Workspace) افزوده شوند.
گام سوم: فعالسازی FPU در تنظیمات پروژه میکروکنترلر STM32F303RET دارای هسته Cortex-M4 به همراه FPU است. برای استفاده از این قابلیت:
از منوی بالا روی Options for Target (آیکون چوب جادو) کلیک کنید.
در تب Target، بخش Floating Point Hardware را پیدا کرده و آن را روی Use Single Precision تنظیم کنید.
گام چهارم: تعریف ماکروی پردازنده برای اینکه کتابخانه بداند از کدام هسته پردازشی استفاده میکنید، باید یک ماکرو تعریف کنید.
در همان پنجره Options for Target، به تب C/C++ بروید.
در بخش Preprocessor Symbols و در کادر Define، عبارت
ARM_MATH_CM4را وارد کنید (اگر از میکروکنترلری با هسته متفاوت استفاده میکنید، این عبارت تغییر میکند، مثلاًARM_MATH_CM3).تنظیمات را تایید (OK) کنید.
مثال کاربردی: محاسبه سینوس یک زاویه در STM32F303RET
اکنون که کتابخانه به درستی به پروژه افزوده شده است، قصد داریم مقدار سینوس زاویه ۴۵ درجه (پی چهارم رادیان) را با استفاده از توابع سریع CMSIS-DSP محاسبه کنیم.
برای این کار باید فایل هدر arm_math.h را به کدهای خود اضافه کنیم و از تابع arm_sin_f32 بهره ببریم.

نتیجهگیری
استفاده از کتابخانه CMSIS-DSP در میکروکنترلرهای سری STM32، به ویژه پردازندههایی نظیر STM32F303RET که به سختافزار FPU مجهز هستند، میتواند راندمان محاسباتی پروژه شما را به طرز چشمگیری ارتقا دهد. با طی کردن مراحل ذکر شده در محیط KEIL، به راحتی میتوانید از توابع پیشرفته این کتابخانه در پروژههای صنعتی و پردازش سیگنال خود بهرهمند شوید.
نویسنده: محمد حسینی
امیدواریم از این آموزش استفاده برده باشید!
با سایر آموزش های اصفهان درایو همراه باشید!










