DSP شرکت TI سری 2000 و آموزش آن

آرم DSP سری TI

در این صفحه یکی از جامع ترین آموزش های راه اندازی DSP های سری 2000 را آموزش می بینید.

معرفی تراشه های DSP


پردازنده های DSP شبیه یک میکروکنترلر (مانند ARM) کار می کنند و کد نویسی آنها به زبان C و اسمبلی است با این تفاوت که جهت پردازش سیگنال های دیجیتال بهینه تر شده اند. سرعت این پردازنده ها بسیار زیاد می باشد. اولین سری DSP ساخت شرکت Texas Instruments در اواخر دهه ی 1970 با سرعت 10MHz وارد بازار شد. قدرت این پردازنده در حل یک تحلیل فوریه FFT به قدری بود که 20 سال بعد پردازنده ی پنتیوم با سرعت 200MHz می توانست این کار را انجام دهد.



می توان علاوه بر پردازش سیگنال با این نوع پردازنده، از آن به عنوان یک میکروکنترلر پرسرعت استفاده نمود (سرعت این پردازنده ها با نسخه های موجود در بازار بیش از 150 مگاهرتز تا چند گیگاهرتز است. بعضی از سری های این پردازنده می توانند تا 8 برابر فرکانس کاریشان کار نمایند مثلا اگر فرکانس آنها 1GHz باشد، سرعت اجرای دستورات 8GIPS میلیارد دستور خواهد بود).

معمولا پردازش سیگنال با FPGA و DSP انجام می شود. اما به دلیل قیمت بسیار بالای FPGA در پردازش های سبک از DSP استفاده می شود. برای مقایسه یک DSP با قیمت 100 هزار تومان می تواند کاری را انجام دهد که یک FPGA با قیمت 2 میلیون تومان آن را انجام می دهد. البته FPGA به دلیل پردازش موازی قابلیت های بسیاری به طراح می دهد ولی برای پردازش های سبک DSP بهترین است.

کار کردن با این تراشه ها کمی سخت است (ولی سخت تر از FPGA نیست) زیرا:

1) پایه های این تراشه ها بسیار آسیب پذیرند و با اتصال کوتاه شدن یا اضافه ی ولتاژ (معمولا بیش از 3.3 ولت) آسیب می بینند

2) نرم افزار مورد استفاده ی آنها Code Composer Studio است که یک نرم افزار حرفه ای است و کار کردن با آن سخت است

3) منابع آموزشی خوبی برای آنها وجود ندارد و حتی در کلاس های خصوصی نیز فقط تئوری کار با کامپایلر گفته می شود نه کار با پردازنده

4) برای شروع یادگیری مستندات (فایلهای PDF) بسیاری وجود دارد و این باعث گیج شدن برنامه نویس می شود

5) به نظر من شخصی که DSP کار می کند باید به یک میکروکنترلر تسلط داشته باشد. من خودم 3 روزه DSP را راه انداختم چون از قبل با سایر میکروها کار کرده بودم و در همین مدت خیلی اذیت شدم چون نه کتاب خوبی برای این پردازنده ها بود و نه در اینترنت مطلب خوبی. از این گذشته سایت تگزاس اینسترومنت ایران را تحریم کرده! و باید با فیل……. وارد این سایت بشیم تا مستندات را دانلود کنیم!

6) ‍‍‍پروگرمر JTAG این پردازنده ها در دو مدل XDS510 و XDS560 ساخته می شوند که مدل اصل آنها 6 میلیون و مدل چینی XDS510 حدود 500 هزارتومان (قیمت های سال 93) قیمت دارند. البته می توان از طریق پورت Serial یا USB مستقیما بدون نیاز به پروگرمر این تراشه ها را برنامه ریزی کرد ولی داشتن یک پروگرمر JTAG برای تحلیل خط به خط برنامه به حل مشکلات برنامه کمک می کند (البته افراد حرفه ای نیاز به این نوع پروگرمر های گران قیمت ندارند).

اما آموزشی که در این سایت قرار داده می شود، مشکلات فوق را تا حدی حل کرده است و برای نخستین بار در یک سایت اینترنتی آموزشی به این شکل برای DSP قرار داده می شود و حکم سرنخ را برای آنهایی که می خواهند یادگیری DSP را شروع کنند، دارد.

لازم به ذکر است که پس از یادگیری این پردازنده به دلیل اینکه با زبان C برای آن برنامه می نویسیم، برنامه نویسی بسیار راحت شده و درد سرهای کد VHDL یا Verilog در FPGA و زمان طولانی سنتز را نخواهد داشت.

میکروکنترلر هایی با عنوان OMAP ساخت شرکت TI هستند که جزء کم مصرف ترین میکروکنترلر ها هستند و برنامه نویسی آنها در Code Composer Studio انجام می شود. این میکروکنترلر ها در اکثر گوشی های همراه بکار می روند.




آموزشی که در این سایت قرار میگیرد با نرم افزار Code Composer Studio V3.3 است. و برای پردازنده های DSP سری 2000 شرکت TI مخصوصا TMS320F2812. ورژن 5 این نرم افزار هم ساخته شده است که کمی تغییر کرده است ولی برای کار کردن با این ورژن نیازی به تغییرات زیاد در کد های نوشته شده نیست که اگر وقت کنم (مانند همین ایام نوروز) آموزش آن را هم مینویسم همچنین آموزش سری 5000 از DSP های TI.

خب بریم سر اصل مطلب

قبل از شروع آموزش باید یک فایل را از سایت www.ti.com دانلود کنید. بدون داشتن این فایل بسیار سخت است که با DSP کار کنید. کافی است که وارد این سایت بشوید و عبارت زیر را جستجو کنید:

281x C/C++ Header Files and Peripheral Examples

بعد از جستجو باید یک فایل Zip را دانلود کنید و بعد از باز کزدن آن باید شکلی شبیه شکل زیر باشد:


در این فایل Zip یک فایل PDF و یک فایل اجرایی قرار دارد. فایل اجرایی را نصب کنید. پس از نصب به پوشه ی نصب شده بروید معمولا C:/tidcs در این پوشه چند فایل وجود دارد:

DSP281x_common: شامل توابع نوشته شده و نام رجیستر های بخش های مختلف DSP است

DSP281x_headers: شامل کتابخانه های موجود برای پوشه ی خط بالا است

DSP281x_examples: شامل مثال هایی برای کار با بخش های مختلف DSP است

doc: راهنمای کار با توابع فوق است. خب نام این پوشه ها را خوب بخاطر بسپارید.

ابتدا این نرم افزار را نصب کنید. نصب این نرم افزار بسیار ساده است و نیازی به Crack ندارد (به زودی فایل نصب این نرم افزار را در اینترنت آپلود می کنم)

بعد از نصب دو آیکون طبق شکل زیر بر روی صفحه ی دسکتاپ دیده می شود:


ابتدا باید وارد Setup CCStudio v3.3 بشوید تا مدل DSP را انتخاب کنید. این فایل را باز کنید

در صفحه ی باز شده طبق شکل زیر در قسمت Family مدل C28xx را انتخاب کرده و در قسمت Platform گزینه ی Simulator را انتخاب کنید. سایر گزینه ها برای پروگرمر JTAG می باشند. سپس F28xx Simulator Tutorial را انتخاب کرده (می توانید برای مدل 2812 گزینه ی F2812 Device Simulator را انتخاب نمایید) و در پایین صفحه بر روی Add کلیک کنید


سپس طبق شکل زیر بر روی کلید Save and Quit کلیک کرده و yes را فشار دهید تا نرم افزار CCS اجرا شود.


هنگام اجرای نرم افزار شکل زیر دیده می شود:


بعد از با شدن نرم افزار وارد منوی Project شده و New را انتخاب کنید.


در صفحه ی باز شده محل ذخیره ی پروژه را طبق شکل زیر تنظیم کنید و روی ok کلیک کنید.


سپس برای تنظیم پروژه وارد منوی Project و سپس Build Options بشوید.


در صفحه ی باز شده وارد Compiler>Advanced شده و تیک Large Memory Model که در حالتی استفاده می شود که حجم کد شما بیش از 64KB باشد را بردارید.


سپس وارد Compiler>Preprocessor شده و در قسمت Include Search Path باید آدرس زیر را وارد کنید

Proj_dir)\DSP281x_headers\include,$(Proj_dir)\DSP281x_Common\include)$


این دو آدرس همان فایل هایی که در اول آموزش از سایت ti.com دانلود کردید یعنی دو پوشه ی

DSP281x_common

DSP281x_headers

که باید این دو پوشه را در محل ذخیره ی پروژه کپی کنید و در نهایت در صفحه ی زیر کلید ok را بزنید.


بعد از انجام این کار باید یک کتابخانه را به برنامه اضافه نمایید. این کتابخانه دستورات از قبل نوشته شده ای می باشد که برای زبان C اضافه کردن آن الزامی است. این کتابخانه در مسیر زیر قرار دارد:

C:\CCStudio_v3.3\C2000\cgtools\lib\rts2800.lib


آن را مطابق شکل زیر با راست کلیک کردن در سمت چپ و انتخاب گزینه ی Add Files به پروژه اضافه نمایید.



نکته: بجای انجام این کار می توانستید وارد منوی Project>Build Options بشوید


و طبق شکل زیر وارد Linker>Libraries شده و در قسمت Incl. Libraries نام rts2800.lib را تایپ کنید.


همچنین وارد Linker>Basic شده و اندازه ی حافظه ی Stack را وارد نمایید (این حافظه متغیر های محلی و آدرس توابع وقفه را در خود نگه داری می کند). در صورت عدم تنظیم مقدار پیش فرض آن 0x400 است


مطابق شکل زیر با راست کلیک کردن در سمت چپ و انتخاب گزینه ی Add Files باید فایل های موجود در پوشه ی Source در دو پوشه ی

DSP281x_common

DSP281x_headers

را به برنامه اضافه نمایید.


شکل زیر آدرس این پوشه را در پوشه ی DSP281x_Common نشان می دهد.


فقط باید دقت کنید مطابق شکل زیر در قسمت File Of Types گزینه ی All Files انتخاب شده باشد. تمام این فایل ها را به پروژه اضافه کنید.


بعد از اضافه شدن این فایل ها باید دو فایل با نام DSP281x_SWPrioritized را حذف کنید. طبق شکل زیر


حال باید فایل Command را به پروژه اضافه کنیم. در ادامه در مورد این فایل بیشتر توضیح می دهم. در پوشه ی cmd در دو پوشه ی

DSP281x_common

DSP281x_headers

این فایل وجود دارد. طبق شکل های زیر دو فایل زیر را به پروژه اضافه کنید:

F2812_EzDSP_RAM_lnk.cmd

DSP281x_Headers_nonBIOS.cmd


در شکل بالا فایل F2812_XintBoot.cmd مخصوص خواندن کد های برنامه از حافظه ی خارجی و فایل F2812.cmd مخصوص خواندن کد های نوشته شده در حافظه ی دائم برنامه و فایل F2812_EzDSO_RAM_lnk.cmd مخصوص خواندن کد های نوشته شده در حافظه ی RAM است. یعنی DSP می تواند کد های برنامه را از حافظه ی RAM بخواند و اجرا کند یا از حافظه ی Flash داخلی یا از حافظه ی Flash خارجی که ما فعلا اجرای کدها را از RAM انتخاب می کنیم. در این مورد بیشتر توضیح خواهم داد.


شکل زیر قسمتی از محتویات فایل  DSP281x_Headers_nonBIOS.cmd را نشان می دهد.


در شکل فوق آدرس GPIOMUX که برابر 0x70C0 به طول 32 بایت (20 هگز) و GPIODAT که برابر 0x70E0 به طول 32 بایت است را بخاطر بسپارید که بعدا به درد می خورد.

در کل در فایل DSP281x_Headers_nonBIOS.cmd آدرس تمامی رجیستر های DSP مشخص شده است (مانند رجیستر های ADC، SCI (UART)، SPI و غیره

در فایل F2812_EzDSP_RAM_lnk.cmd همانطور که در بالا گفته شد محل ذخیره ی برنامه در حافظه ی DSP مشخص می شود که بعدا در مورد آن صحبت می کنم.

حال تنظیم نرم افزار CCS به پایان رسیده است و می توانیم در این نرم افزار کد بنویسیم. برای این کار وارد منوی File و New بشوید.


سپس وارد منوی File شده و Save را انتخاب کنید و فایل را طبق شکل زیر با نام main.c ذخیره کنید.


در سمت چپ نرم افزار کلید راست کرده و با انتخاب add Flies فایل Main.c را به برنامه اضافه نمایید.


سپس کد تصویر زیر (که در فایل پیوست موجود است) را در این فایل کپی کنید.


فایل را ذخیره کنید. سپس وارد منوی Project>Save بشوید تا پروژه هم ذخیره شود.


حال نوبت که کامپایل برنامه رسیده است. وارد منوی Project بشوید و Build را کلیک کنید (دقت کنید با هربار انتخاب Build فقط فایل های تغییر کرده کامپایل می شوند در حالی که با انتخاب Build All تمامی فایل ها از اول کامپایل می شوند. بدیهی است که سرعت Build بسیار بیشتر از Build All است (البته در مرحله ی اول مانند هم هستند)).


بعد از کامپایل 3 هشدار دیده می شود که به دلیل ننوشتن سه خط در فایل cmd ایجاد شده است که این هشدار ها مشکلی ایجاد نمی کنند:


در این قسمت شما موفق شدید یک LED را با DSP روشن و خاموش نمایید که باید برنامه ی Main را در ادامه توضیح بدهم. اگر یادتان باشد در اول آموزش گفتم که مستندات زیادی برای کار با DSP وجود دارند. قبل از توضیح برنامه اشاره ای به این مستندات می کنم.

تصویر زیر قسمتی از دیتاشیت DSP مدل 2812 است. نام دقیق این دیتاشیت TMS320F2812 Data Manual است.


در تصویر فوق لیست مستندات مربوطه ارائه شده است. مثلا برای کارکردن با SPI در این پردازنده باید رجیستر های SPI را مقدار دهی نماییم. این رجیستر ها همانطور که در شکل بالا نشان داده است، در فایل SPRU059.PDF هستند که می توان این فایل را از سایت www.ti.com دانلود نمود یا اینکه در محل نصب نرم افزار به آدرس پیش فرض C:\CCStudio_v3.3\docs\PDF رفته و این فایل را باز کنیم. یکی از فایل های بسیار مهمی که برای کار با DSP لازم است و به نوعی با همه ی قسمت ها در ارتباط است، فایل SPRU078.PDF می باشد. این فایل در واقع رجیستر های کنترل کل DSP را توضیح داده است و نام آن System Control and Interrupts می باشد. در این فایل طریقه ی کنترل IO ها هم گفته شده است. در مورد این فایل کمی توضیح می دهم.


در شکل بالا فایل SPRU078 را در پوشه ی نصب نرم افزار مشاهده می کنید.

در شکل زیر قسمتی از فایل SPRU078 یعنی صفحه ی 92 آن دیده می شود:


اگر یادتان باشد گفتم که آدرس 0x70C0 مربوط به GPIOMUX و آدرس 0x70E0 مربوط به GPIODAT است. حال این سوال مطرح است که از کجا آین آدرس ها آمده اند. این آدرس ها را دیتاشیت DSP مشخص کرده است. یک بار دیگر به شکل بالا نگاه کنید. در قسمت GPIO MUX Registers نوشته شده است:

EALLOW Protected

و در قسمت GPIO Data Registers نوشته شده است Not EALLOW Protected. این به این معنی است که برای مقدار دهی به رجیستر های GPIOMUX باید حتما دستور اسمبلی EALLOW نوشته شود. در برنامه ی زبان C در شکل زیر در خط 14 برنامه این دستور نوشته شده است و با نوشتن دستور اسمبلی EDIS دستور EALLOW را غیر فعال می کنیم

دستور EALLOW به صورت زیر در زبان C تعریف شده است:

;(“define EALLOW #asm(”     EALLOW#


;(“define EDIS #asm(”     EDIS#


در این صفحه برای مقدار دهی رجیستر های ADC یا وقفه های خارجی یا … لازم نیست دستور اسمبلی EALLOW اجرا شود.


در شکل بالا در خط 10 برنامه دستور DINT وقفه ها را غیر فعال می کند (مانند cli در میکروکنترلر) (و دستور EINT وقفه ها را فعال می کند.)

حال اجازه دهید در مورد دو رجیستر GPIOMUX و GPIODAT توضیح دهم این رجیستر ها در 4 خط از برنامه ی فوق بکار رفته اند و به صورت زیر نوشته شده اند:

GpioMuxRegs.GPADIR.all=0xffff


دستور فوق کل پایه های پورت A را خروجی می کند

GpioMuxRegs.GPAMUX.all=0


دستور فوق کل پایه های پورت A را به صورت IO انتخاب می کند. پایه های پورت A می توانند در حالت دیگری هم استفاده شوند

GpioDataRegs.GPASET.all=0xffff


این دستور تمامی پایه های پورت A را یک می کند

GpioDataRegs.GPACLEAR.all=0xffff


این دستور تمامی پایه های پورت A را صفر می کند

ما در AVR برای خروجی کردن پایه ها می نوشتیم DDR یا برای صفر و یک کردن پایه ها می نوشتیم PORT اما در اینجا رجیستر کنترل IO ها بیشتر است و به صورت تخصصی تر بکار رفته اند. اجازه دهید فایل DSP281x_GPIO.h را بررسی کنیم. این فایل را طبق شکل زیر از پوشه ی Include پیدا کنید و آن را باز کنید.


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


همانطور که می بینید رجیستر GPAMUX هم به صورت بیتی و هم به صورت دو بایتی تعریف شده است و در انتها ی این فایل این رجیستر به صورت شکل زیر تعریف شده است:


یعتی برای دسترسی به رجیستر GPAMUX باید ابتدا بنویسیم

GpioMuxRegs و بعد ار نوشتن آن یک نقطه “.” قرار دهیم و بعد از آن هم در نرم افزار CCS پنجره ای باز می شود و می توانیم یکی از رجیستر های Mux را انتخاب کنیم که یکی از این رجیستر ها GPADIR و دیگری GPAMUX است. تا به اینجا متن به صورت شکل زیر تبدیل می شود:

GpioMuxRegs.GPAMUX


حال برای دسترسی به تمامی رجیستر 16 بیتی GPAMUX باید یک نقطه “.” قرار داده و سپس all را بنویسیم. مانند شکل زیر

GpioMuxRegs.GPAMUX.all


و یا برای دسترسی بیتی این رجیستر (مثلا پورت A.0) کافی است بنویسیم (با توجه به دو شکل بالاتر):

GpioMuxRegs.GPAMUX.PWM1_GPIOA0=value


که بجای Value باید عدد نوشته شود. اگر صفر بنویسیم این پایه IO و اگز 1 بنویسیم این پایه در حالت PWM1 کار خواهد نمود. سایر رجیستر ها در DSP نیز به این شکل مقدار دهی می شوند.




البته در سایر میکروکنترلر ها مانند AVR هم می توانیم ای کار را انجام دهیم. مثلا برای DDRA در AVR باید اینگونه بنویسیم. مثلا فرض کنید 4 پایه ی اول پورت A به موتور پله ای وصل شود و 2 پایه ی بعدی کنترل رله باشد و پایه ی بعدی کلید ON و پایه  ی بعدی کلید OFF باشد. در این صورت داریم:


در خط بالا عدد 0x3A آدرس DDRA در کل حافظه می باشد که از انتهای دیتاشیت AVR بدست آمده است. حال برای مقدار دهی به DDRA به این روش داریم:

DDRA_REG->Motor=0xF
;DDRA_REG->Relay=0b11
;DDRA_REG->ON_K=0
;DDRA_REG->OFF_K=0


در خط فوق پایه های موتور و رله خروجی و پایه های کلید ها ورودی می شوند.




در برنامه ی DSP فوق تابع delay با اجرای 600000 دستور تاخیری را ایجاد می نماید.

همچنین تابع InitSysCtrl فرکانس سیستم و PLL را تنظیم می کند. این تابع را در جستجوی CCS که به نام Find In File است جستجو کنید تا پیدا شود. برای DSP سه منبع مهم کلاک وجود دارد یکی کلاک CPU است که می تواند از خروجی PLL گرفته شود. دیگری LOPCLK و دیگری HIPCLK است. کلاک LOPCLK برای ماژول هایی با سرعت پایین مانند SCI یا همان UART و SPI و دیگری برای ادوات پرسرعت مانند CAN یا USB یا …. مقدار تنظیمی این کلاک ها را در فایل SPRU078 جستجو نمایید.

تابع InitPieCtrl جهت فعال کردن کلاک قسمت های مختلف DSP و تابع InitPieVectTable جهت تنظیم بردار های وقفه در DSP استفاده می شوند. دو رجیستر IER و IFR که در فایل SPRU078 توضیح داده شده اند برای کنترل وقفه های می باشند که صفر شده اند.

خب توضیح برنامه تمام شد. حا برویم سراغ فایل F2812_EzDSP_RAM_lnk.cmd که گفتم محل ذخیره شدن کد های برنامه را در حافظه ی RAM مشخص می کند. شکل زیر قسمتی از این فایل را نشان می دهد.


در شکل بالا شروع کد (BEGIN) آدرس 0x3F8000 به طول 2 بایت، آدرس RESET در 0x3F8004 (این آدرس در فایل اصلی 0x3FFFC0 می باشد که غلط است (دلیلش را میگویم) و من خودم آن را تغییر داده ام) به طول 2 بایت و آدرس RAMH0 از 3F8008 به طول حدود 4KB می باشد (باید 8 تا از آن کم کنیم یعنی FF7 که در شکل اشتباها FFE است). در فایل TMS320F2812 Data Manual.PDF فضای حافظه ی داخلی DSP مدل 2812 را به صورت زیر کشیده است:


همانطور که مشاهده می کنید آدرس شروع RAMH0 برابر 0x3F8000 و آدرس شروع RAMM0 برابر 0x000000 می باشد. در آدرس 0x3FF000 کد 4 کیلو بایتی وجود دارد که توسط شرکت TI در این حافظه قرار دارد. این کد کد Boot است و با روشن شدن DSP این کد اجرا می شود و DSP را در یکی از شش حالت زیر قرار می دهد:


مد های Boot در DSP بستگی به چهار پایه ی GPIOF4، GPIOF12، FPIOF3 و GPIOF2 دارد که در شکل بالا دیده می شود. در حالتی که فقط پایه ی GPIOF3 در موقع روشن شدن DSP یک باشد، کد از حافظه ی RAMH0 شروع به اجرا می شود. به همین دلیل RESET را در فضای RAMH0 انتقال داده ام.

در شکل بالا در حالت اول در شکل بالا برنامه از Flash داخلی اجرا می شود، در حالت دوم برنامه از حافظه ی EEPROM خارجی اجرا می شود، در حالت سوم BOOT از طریق UART است، حالت چهارم Boot از طریقRAMH0، حالت پنجم BOOT از حافظه ی OTP) One Time Programmable) که فقط یک بار قابل برنامه ریزی است و حالت ششم Boot از طریق پایه های پورت B. البته یک حالت هفتم هم وجود دارد و آن External Flash می باشد و آن هنگامی است که پایه ی MP/MC از DSP یک شود یعنی مد میکروپروسسور انتخاب شود. در این حالت DSP توانایی آدرس دهی حدود 2MB حافظه را دارد.

خب حال باید چگونه برنامه را شبیه سازی نماییم. برای شبیه سازی DSP مدل 280x مانند TMS320F28027 می توان از نرم افزار Proteus که یک نرم افزار بسیار عالی است استفاده کرد (در انتها برنامه ای جهت کار با این مدل ها قرار می دهم که با نرم افزار Proteus کار می کند)

حال برای شبیه سازی مدل 281x مانند TMS320F2812 فقط می توان از نرم افزار CCS استفاده نمود. برای این کار ابتدا وارد منوی File شده و Load Program را انتخاب نمایید.


و سپس آدرس فایل Blink_LED.out (که در پوشه ی Debug) قرار دارد را بدهید. (برای مدل های 280x که با نرم افزار پروتئوس شبیه سازی می شوند باید پسوند این فایل را از out به cof تغییر دهید با یک Rename ساده)


سپس صفحه ای مانند شکل زیر باز می شود:


در صفحه ی فوق کد کامپایل شده به زبان اسمبلی را نشان می دهد. این صفحه را ببندید و فایل Main.c را باز کنید و در قسمت نشان داده شده در شکل زیر راست کلیک کرده و Toggle Software Breakpoint را انتخاب نمایید.


سپس در سمت چپ صفحه گزینه ی نشان داده شده را بزنید (یا کلید F5)


بعد از آن باید فلش زرد رنگی کنار Breakpoint باشد. مطابق شکل زیر:


حال با فشردن کلید F10 و F11 می توان برنامه را خط به خط اجرا نمود. فرق این دو کلید با هم در این است که کلید F11 وارد توابع می شود ولی کلید F10 تابع را اجرا کرده و آن را د می کند.

اگر در پنجره ی Setup نرم افزار CCS در قسمت Platform گزینه ی XDS510 یا XDS560 را انتخاب کرده باشید (مانند شکل زیر)



در این صورت اگر وارد منوی GEL بشوید، میتوانید تمامی رجیستر ها را ببینید و آن ها را به صورت Realtime تغییر دهید. ولی در حالت simulator مانند شکل زیر این منو فقط دو گزینه دارد.


در شکل های زیر پایه های این مدل DSP یعنی 2812 وجود دارد. همانطور که مشاهده می کنید هر پورت حداکثر 16 پایه (و کمتر) دارد.


پایه های JTAG، نوسان ساز و ADC



پایه های پورت A و B



پایه های پورت D-E-F-G



پایه های مخصوص Flash خارجی (آدرس 19 بیتی و داده ی 16 بیتی)



پایه های تغذیه







تمام کد های زیر به صورت عملی تست شده اند و به درستی کار می کنند.

دانلود سورس کد Blink_LED مخصوص سری 281x

دانلود سورس کد Blink_LED مخصوص سری 280x قابل شبیه سازی با پروتئوس

دانلود شماتیک برد eZDSP پر فروش ترین برد شرکت Texas Instruments

دو فایل rar فوق را پس از خارج کردن از حالت فشرده دورن درایو C کپی کنید یعنی دو آدرس زیر

C:/Blink_LED

C:/Blink_LED2

دانلود برنامه ی ارتباط با پورت سریال از طریق ماژول SCI-A با سرعت 300bps و فرکانس 30MHz ورودی

دانلود برنامه ی خواندن کد ها از MMC به صورت SPI و ارسال آن از طریق ماژول SCI-A با سرعت 1200bps و فرکانس 30MHz ورودی

دانلود SPRC097 برای سری 281x

دانلود SPRC832 برای سری 2802x

دانلود SPRC530 برای سری 2833x

دانلود SPRC191 برای سری 280x

دیتاشیتهای انواع DSP (مستندات سری 2000 و 5000)

شماتیک برد آموزشی TMS320F28335

.

دانلود برنامه uniflash sl.8.2.0.4220

دانلود برنامه C2000Ware

دانلود کامپایلر برای سری 5000

.

لینک های دانلود نرم افزار Code Composer Studio V3.3

بخش اول نرم افزار CCS3.3

بخش دوم نرم افزار CCS3.3

بخش سوم نرم افزار CCS3.3

بخش چهارم نرم افزار CCS3.3

بخش پنجم نرم افزار CCS3.3

.

دانلود نرم افزار code composer studio V3.3 Platinum یا همان CCS3.3PLA

بخش اول

بخش دوم

بخش سوم

.

دانلود نرم افزار code composer studio V11 یا همان CCS11.2

بخش اول

بخش دوم

.

دانلود نرم افزار code composer studio V12 یا همان CCS12.1

بخش اول

بخش دوم

بخش سوم

38 thoughts on “DSP شرکت TI سری 2000 و آموزش آن

  1. اراکی says:

    فقط میتونم بگم انشاالله نتیجه این دست ودلبازی علمیتونو توی زندگیتون ببینید…یاحق

  2. Mona says:

    با سلام و خسته نباشید و تشکر از سایت خوبتون.
    میخواستم بدونم برای تبدیل فوریه از سیگنال صوت از کدام سری از dspها باید استفاده کنم؟اگه ممکنه یکم اطلاعات در این زمینه بدین.

    • محمد رضا بیگی says:

      سلام
      مچکرم

      اگر فرکانس خاصی مد نظرتون نیست با همه نوع dsp می شود

  3. حمید says:

    با عرض سلام و تشکر بابت مطلب بسیار مفیدتون
    این فایل های هدر برای dsp مدل 5507 رو از کجا باید بگیرم سایت تگزاس رو زیرو رو کردم پیدا نکردم

    • محمد رضا بیگی says:

      سلام متشکرم
      شاید ارائه نشده
      خودتون باید بنویسید

  4. سیدحسین says:

    این مدلی که اموزشش اینجاداده شده چه تفاوتی با
    داره؟
    TMS320C2xx

  5. الکترونیک قدرت says:

    رشته من برق قدرت است و میخواهم برای راه اندازی مبدل های قدرت از DSP استفاده کنم. منتها کلا با بحث های الکترونیکی مانند رجیستر و …. آشنایی ندارم. در واقع تنها درس مرتبط مدار منطقی بوده است که گذرانده ام. از مطالب گفته شده در این صفحه هم آنچنان سر در نیاوردم. بنظرتان از کجا شروع کنم.
    لازم به ذکر است که من نیازی به یاد گرفتن دقیق مطالب ندارم. تنها بتوانم یک مبدل را با DSP کنترل کنم کافی است.
    همچنین لازم به ذکر است که مبدل مورد نظر را با تمام جزئیات در متلب (MATLAB) شبیه سازی کرده ام اما برای پیاده سازی نمی دانم چکار باید کنم.

    • محمد رضا بیگی says:

      باید از یک تراشه ی ساده تر مانند AVR شروع به کار کنید بعدا بیایید سراغ DSP

  6. fatemeh says:

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

  7. بهروز says:

    باسلام وسپاس فراوان از شما .

    من این نرم افزار code composer v3.3 رو از سایتتون دانلود کردم منتها نمیتونم فایلهای مخصوص  setup link for  matlab رو نصب کنم و با این ارور برخورد میکنم :

    The installer needs a newer version of the microsoft java virtual machine

    اگه میشه راهنماییم کنید

    باتشکر 

  8. elham says:

    سلام

    ممنون از آموزشتون میخواستم بپرسم بدون پروگرامر هم میشه DSP رو پروگرام کرد؟ این آموزش بدون پروگرامر است؟ با استفاده از اتصال USB به DSP میتوان پروگرام رو انجام داد؟ من کابل USB رو که به evaluation board می‏زنم unkonwn device هست مشکل از کجاست؟ ممنون

    • محمد رضا بیگی says:

      از طریق ارتباط سریال هم میتوان DSP را برنامه ریزی نمود ولی در این آموزش از پروگرمر استفاده شده است تا بتوان طرح را عیب یابی هم کرد.

  9. امید پاسبانی says:

    با سلام در انتهای مطلب به جمله زیر می رسید

    در این صورت اگر وارد منوی GEL بشوید، میتوانید تمامی رجیستر ها را ببینید و آن ها را به صورت Realtime تغییر دهید. ولی در حالت simulator مانند شکل زیر این منو فقط دو گزینه دارد.

    بعد چند شکل از پایه ها نشان می دهید و دیگه هیچی …یعنی ادامه نداشت بعد چه اتفاقی قراره بیفته؟ اگار مطلب نا تموم میمونه

    • محمد رضا بیگی says:

      هدف این آموزش چگونگی کار با نرم افزار ccs بود و راه اندازی آن

      ادامه ی کار را خودتان باید انجام دهید. دیگر کد نویسی است و زبان سی

  10. رحمان says:

    با سلام و خسته نباشین

    اگه امکانش هس لینک ورژن 3.3 رو کامنت کنین
    من خیلی جاها گشتم پیداش نکردم

    با تشکر

  11. محمدرضا انصاری پور says:

    بسمه تعالی

    سلام این کاملترین توضیحی بود که من تو کل اینترنت دیدم اگه میشه هر وقت توانستید این کلاس dsp رو برگزار کنید یه جوری اطلاع رسانی کنید حالا شده مثلا با پیامک که خیلی خوبه

     

  12. عقیل says:

    سلام استاد عزیز

    دستتون درد نکنه واقعا مطالب عالی بود انشالا خداوند امثال شما رو زیاد کنه. با تشکر

  13. حسین says:

     با عرض سلام و خسته نباشید خدمت شما  و تشکر از مطالب مفیدی که در این سایت قرار دادین

    امکانش هست که در مورد c.c.s ورژن 6 و کار با آن به خصوص پردازنده 320f28335 اگه مطلبی دارین روی سایت قرار بدین؟

  14. زهرا says:

     خیلی ممنون از لطفتون توضیحات جامعی داشت. فقط میشه نحوه نصب برنامه رو(ده تا بخش داره) توضیح بدید. از فیلمش متوجه نشدم.

    • محمد رضا بیگی says:

      نصب برنامه خیلی ساده است و فقط next زده می شود

      البته در ورژن 5 و 6 باید بعد از نصب Crack هم اجرا شود که آن هم در سایت های مختلف نشان داده شده است

  15. آرش says:

    واقعا باید دست افرادی چون شما را بوسید که این همه برای ترویج علم زحمت می کشید .

  16. محسن says:

    بسمه تعالی

    برای اموزش DSP کلاس های آموزشی نمی گذارید؟

    بنده به سدت علاقه دارم DSP را به صورت حرفه ای یاد بگیرم

    اگر امکانش هست مثل ARM , AVR کلاس آموزشی بگذارید

    • محمد رضا بیگی says:

      در حال حاضر امکانات سخت افزاری برای برگزاری کلاس DSP نداریم

  17. محسن زارع فر says:

    با سلام

    تازه با سایت شمارآشنا شدم.

    دستتون درد نکنه . بسیار عالی بود . فکرکنم تنها سایت فارسی که تا حالا اینطوری در مورد DSP توضیح داده شما هستید.

    خسته نباشید .منتظر مطالب جدیدتون هستم.

  18. امین says:

    سلام و صد سلام

    واقعا عالیه

    تازه همین چند دقیه پیش با این سایت آشنا شدم ، اما تازه توی همین نگاه اول هم عالی بود

    واقعا جای تشکر داره ، بعد از کلی زیر و رو کردن اینترنت بالاخره مطلب به درد به خور پیدا کردم !!!!

    • محمد رضا بیگی says:

      دلیلش اینه که ایران تحریم است

      باید با فی ….تر ش …کن باز بشه

  19. مهدی says:

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

    وقتی که include ها به پروژه اضافه می کنم به عنوان document  میشناسه و هیچکدام از فایل های با پسوند  h رو به  includ اضافه نمیکنه و روند اجرای برنامه به صورت کامل مختل میشه.

    ممنون میشم که راهنمایی کنید علت چیست و چه باید کرد

    • محمد رضا بیگی says:

      وقتی include را می نویسیم دیگر نیازی به اضافه کردن آن در document پروژه نیست

      و در Project Options باید مسیر include را تنظیم کنیم تا مشکل حل شود

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

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