欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Dsp學(xué)習(xí)筆記

      時(shí)間:2019-05-12 02:48:01下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《Dsp學(xué)習(xí)筆記》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《Dsp學(xué)習(xí)筆記》。

      第一篇:Dsp學(xué)習(xí)筆記

      GPIO作為通用I/O口使用

      a)EALLOW;//防止私自寫或覆蓋寄存器的內(nèi)容,加了這句,接下來可以操作寄存器了 b)GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;// GPIO0復(fù)用為普通I/O功能 c)GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;// 1,設(shè)置為輸出;0設(shè)置為輸入 d)EDIS;//加了這句,接下來不可以操作寄存器

      注:EALLOW,EDIS總是成對(duì)出現(xiàn)中斷過程(代碼以配置SCIB模塊的接收中斷為例,LSPCLK是37.5MHz)

      中斷共分三級(jí),1,外設(shè)級(jí);2,PIE級(jí);3,CPU級(jí);外設(shè)級(jí)的中斷標(biāo)志必須手動(dòng)清零;PIE級(jí)和CPU級(jí)的中斷標(biāo)志位由硬件自動(dòng)清零。中斷響應(yīng)例程:

      第一步,配置中斷源,即允許產(chǎn)生什么類型點(diǎn)中斷。例如,定時(shí)器中斷,串口中斷,外部中斷等。ScibRegs.SCICTL2.bit.RXBKINTENA =1;允許接收中斷

      第二步,配置PIE(外部中斷擴(kuò)展)

      a)InitPieCtrl();//初始化Pie控制

      b)InitPieVectTable();//初始化Pie向量表控制

      c)EALLOW;

      d)PieVectTable.SCIRXINTB=&scibreceive;//指定中斷服務(wù)程序地址e)EDIS;

      f)PieCtrlRegs.PIECTRL.bit.ENPIE=1;//使能從PIECTRL中讀取中斷向量 g)PieCtrlRegs.PIEIER9.bit.INTx3=1;//使能SCIB的接收中斷

      h)IER |= M_INT9;//允許外部中斷

      i)EINT;

      j)ERTM;

      第三步,中斷響應(yīng)

      在中斷服務(wù)程序里,必須用PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;//清楚中斷已響應(yīng)標(biāo)識(shí),再寫自己等程序代碼串口配置

      InitScibGpio();scib_echoback_init();AD轉(zhuǎn)換

      InitAdc();//允許ADC時(shí)鐘,帶隙和參考電路上電,核中模擬電路上電

      AdcRegs.ADCTRL2.all = 0x2000;//ADC模塊開始轉(zhuǎn)換

      程序在FLASH運(yùn)行時(shí),需要加如下兩句代碼:(不知道具體原因)

      MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);InitFlash();

      第二篇:DSP學(xué)習(xí)心得筆記

      DSP學(xué)習(xí)心得筆記

      ----------------白建成.baijc.icekoor 建立新工程過程中: 問題1:

      “GPIO_Study.c”, line 61: fatal error: could not open source file “DSP280x_Device.h” 1 fatal error detected in the compilation of “GPIO_Study.c”.解決方法:

      因?yàn)閜roject ?build options?compiler?preprocessor中,要包含的頭文件的地址沒有加進(jìn)去,你可以找到頭文件的地址,然后加進(jìn)去。

      問題2:

      undefined

      first referenced symbol

      in file---------

      ----------------_c_int00

      D:DSP studytest3DebugDSP280x_CodeStartBranch.obj FS$$MPY

      D:DSP studytest3DebugDSP280x_CpuTimers.obj FS$$TOL

      D:DSP studytest3DebugDSP280x_CpuTimers.obj >>

      error: symbol referencing errors'./Debug/GPIO_Study.out' not built 解決辦法都是下面:

      這個(gè)問題是因?yàn)闆]有加在庫文件,請(qǐng)?jiān)趐roject ?build options?linker?libraries中加入rts2800.lib。

      問題3:

      >> warning: creating.stack section with default size of 400(hex)words.Use

      -stack option to change the default size.>>

      error: can't allocate.stack, size 00000400(page 1)in RAMM1(avail:

      00000380)>>

      error: errors in input-./Debug/GPIO_Study.out not built 解決辦法: 這個(gè)問題是關(guān)于堆棧存儲(chǔ)大小的問題,他是說,創(chuàng)建堆棧段使用與設(shè)置400個(gè)字,并建議在“堆棧操作”中改變這個(gè)與設(shè)置。這時(shí),需要進(jìn)行如下修改就可通過:project? build options?Linker?basic,在Stack Size(-stack):填入800或者其他小于1024的數(shù)值。

      調(diào)試程序:

      在編譯完成之后,要來下載程序并進(jìn)行功能調(diào)試。File?Load Program,在工程文件夾下面的Debug文件夾下,選中**.out文件,點(diǎn)擊打開,便開始下載程序了。將**.out文件下載到目標(biāo)板上2812的RAM中。

      注意,這里是調(diào)試,所以將程序下載到RAM。等到最后您要固化程序的時(shí)候,就得下載到FLASH了,因?yàn)閿嚯娭?,RAM里面所有的數(shù)據(jù)都會(huì)消失。

      (Run和Animate的區(qū)別,Run是如果遇到斷點(diǎn)的話它就停下來了。而Animate就算遇到斷點(diǎn)時(shí)先停止DSP內(nèi)核,刷新窗口,然后接著繼續(xù)啟動(dòng)運(yùn)行,常用來連續(xù)刷新變量窗口和生成graph圖形等)——知識(shí)儲(chǔ)備。

      添加斷點(diǎn):

      加上斷點(diǎn)的方法很簡(jiǎn)單,只要在該行代碼前雙擊就行。雙擊之后,這行代碼前面會(huì)出現(xiàn)一個(gè)紅色圓塊。另外一種添加斷點(diǎn)的方法,就是在剛才的編譯工具欄上,點(diǎn)一下那個(gè)小手圖形的按鈕,前提是你要把光標(biāo)移動(dòng)到想要設(shè)置斷點(diǎn)的哪一行上。

      使用watch window:

      Watch window的作用是來觀察程序運(yùn)行過程中的各個(gè)變量的值。調(diào)用watch window的方法是點(diǎn)擊菜單欄的“View ”,“watch window”,這時(shí)watch window就會(huì)顯示在CCS下方的信息區(qū)域;

      選中所要觀察的變量,然后右鍵,在右鍵菜單中選擇add to watch window。

      調(diào)試代碼觀察:

      我們?cè)谡{(diào)試程序的時(shí)候經(jīng)常想讓程序從Main函數(shù)開使運(yùn)行,點(diǎn)Debug?Go main。既能看到源文件中代碼的執(zhí)行情況,又能看到匯編指令的執(zhí)行情況View?Mixed Source/Asm;

      關(guān)于F2812中用C語言來實(shí)現(xiàn)中斷的說明

      1.首先在.cmd中定位系統(tǒng)中斷表: MEMORY { PAGE 0 :

      ......................................PAGE 1 :

      ......................................PIE_VECT

      : origin = 0x000D00, length = 0x000100......................................} SECTIONS {...................................PieVectTable

      : > PIE_VECT,PAGE = 1.....................................} 2.在C中制定該中斷的結(jié)構(gòu)體:

      #pragma DATA_SECTION(PieVectTable,“PieVectTable”);struct PIE_VECT_TABLE PieVectTable;(在DSP28_GlobalVariableDefs.C中初始化)3.用一組常數(shù)(按照中斷向量的順序)初始化該名字為PIE_VECT_TABLE的表: typedef interrupt void(*PINT)(void);這里有些一問,一下應(yīng)該為函數(shù)名??

      // Define Vector Table: struct PIE_VECT_TABLE {

      // Reset is never fetched from this table.// It will always be fetched from 0x3FFFC0 in either // boot ROM or XINTF Zone 7 depending on the state of // the XMP/MC input signal.On the F2810 it is always // fetched from boot ROM.PINT

      PIE1_RESERVED;

      PINT

      PIE2_RESERVED;

      PINT

      PIE3_RESERVED;

      PINT

      PIE4_RESERVED;

      PINT

      PIE5_RESERVED;

      PINT

      PIE6_RESERVED;

      PINT

      PIE7_RESERVED;

      PINT

      PIE8_RESERVED;

      PINT

      PIE9_RESERVED;

      PINT

      PIE10_RESERVED;

      PINT

      PIE11_RESERVED;

      PINT

      PIE12_RESERVED;

      PINT

      PIE13_RESERVED;

      // Non-Peripheral Interrupts:

      PINT

      XINT13;

      // XINT13

      PINT

      TINT2;

      // CPU-Timer2

      PINT

      DATALOG;

      // Datalogging interrupt

      PINT

      RTOSINT;

      // RTOS interrupt

      PINT

      EMUINT;

      // Emulation interrupt

      PINT

      XNMI;

      // Non-maskable interrupt

      PINT

      ILLEGAL;

      // Illegal operation TRAP

      PINT

      USER0;

      // User Defined trap 0

      PINT

      USER1;

      // User Defined trap 1

      PINT

      USER2;

      // User Defined trap 2

      PINT

      USER3;

      // User Defined trap 3

      PINT

      USER4;

      // User Defined trap 4

      PINT

      USER5;

      // User Defined trap 5

      PINT

      USER6;

      // User Defined trap 6

      PINT

      USER7;

      // User Defined trap 7

      PINT

      USER8;

      // User Defined trap 8

      PINT

      USER9;

      // User Defined trap 9

      PINT

      USER10;

      // User Defined trap 10

      PINT

      USER11;

      // User Defined trap 11

      // Group 1 PIE Peripheral Vectors:

      PINT

      PDPINTA;

      // EV-A

      PINT

      PDPINTB;

      // EV-B

      PINT

      rsvd1_3;

      PINT

      XINT1;

      PINT

      XINT2;

      PINT

      ADCINT;

      // ADC

      PINT

      TINT0;

      // Timer 0

      PINT

      WAKEINT;

      // WD

      ..........................// Group 12 PIE Peripheral Vectors:

      PINT

      rsvd12_1;

      PINT

      rsvd12_2;

      PINT

      rsvd12_3;

      PINT

      rsvd12_4;

      PINT

      rsvd12_5;

      PINT

      rsvd12_6;

      PINT

      rsvd12_7;

      PINT

      rsvd12_8;};然后在使我們?cè)?cmd文件中定義的表有以上屬性: extern struct PIE_VECT_TABLE PieVectTable;(在.h文件中)4.初始化該表(在.c文件中)使之能夠?yàn)橹鞒绦蛩褂茫?const struct PIE_VECT_TABLE PieVectTableInit = {

      PIE_RESERVED, // Reserved space

      PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,// Non-Peripheral Interrupts

      INT13_ISR,// XINT13 or CPU-Timer 1

      INT14_ISR,// CPU-Timer2

      DATALOG_ISR,// Datalogging interrupt

      RTOSINT_ISR,// RTOS interrupt

      EMUINT_ISR,// Emulation interrupt

      NMI_ISR,// Non-maskable interrupt

      ILLEGAL_ISR,// Illegal operation TRAP

      USER0_ISR,// User Defined trap 0

      USER1_ISR,// User Defined trap 1

      USER2_ISR,// User Defined trap 2

      USER3_ISR,// User Defined trap 3

      USER4_ISR,// User Defined trap 4

      USER5_ISR,// User Defined trap 5

      USER6_ISR,// User Defined trap 6

      USER7_ISR,// User Defined trap 7

      USER8_ISR,// User Defined trap 8

      USER9_ISR,// User Defined trap 9

      USER10_ISR,// User Defined trap 10

      USER11_ISR,// User Defined trap 11

      // Group 1 PIE Vectors

      PDPINTA_ISR,// EV-A

      PDPINTB_ISR,// EV-B

      rsvd_ISR,XINT1_ISR,XINT2_ISR,ADCINT_ISR,// ADC

      TINT0_ISR,// Timer 0

      WAKEINT_ISR,// WD..........................// Group 12 E Vectors

      rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,};//-------------// InitPieVectTable:

      //-------------// This function initializes the PIE vector table to a known state.// This function must be executed after boot time.//

      void InitPieVectTable(void){ int16 i;Uint32 *Source =(void *)&PieVectTableInit;Uint32 *Dest =(void *)&PieVectTable;

      EALLOW;

      for(i=0;i < 128;i++)*Dest++ = *Source++;EDIS;

      // Enable the PIE Vector Table PieCtrl.PIECRTL.bit.ENPIE = 1;

      } 5.中斷服務(wù)程序:

      讓以上的數(shù)值指向你所要的服務(wù)程序,例如: PieVectTable.TINT2 = &ISRTimer2;那么,ISRTimer2也就成了中斷服務(wù)程序,×××切記:一定要在主程序的開始先聲明該程序: interrupt void ISRTimer2(void);

      ..........................然后按照您的需要編制該程序: interrupt void ISRTimer2(void){ CpuTimer2.InterruptCount++;}

      編程中遇到的問題:

      1、line 257: warning: last line of file ends without a newline; 解決方法:

      點(diǎn)擊出現(xiàn)的問題條,看光標(biāo)定位在哪里,然后一點(diǎn)點(diǎn)刪除,直到把編程的文字刪除,最后把刪除的寫出來,回車就行了,因?yàn)榛剀嚨母袷揭诰庉嫚顟B(tài)哈哈!

      28016的定時(shí)器筆記

      學(xué)過2812的人會(huì)知道,2812的定時(shí)器和28016的定時(shí)器的寄存器很不一樣。但是從功能上將差不多。

      關(guān)于28016定時(shí)器的時(shí)鐘的討論;

      定時(shí)器的時(shí)鐘是由SYSCLKOUT經(jīng)過TBCTL中的CLKDIV和HSPCLKDIV進(jìn)行配置;

      主要說明,我們應(yīng)該記得SYSCLKOUT和HSPCLK之間還可以分頻,但是在這里這個(gè)寄存器不影響。

      關(guān)于28016定時(shí)器的時(shí)鐘同步的討論;

      如果我們想使每個(gè)PWM模塊具有同步時(shí)鐘,我們可以通過軟件強(qiáng)制各個(gè)模塊之間同步,設(shè)定步驟如下:

      EPwm1Regs.TBCTL.bit.SYNCOSEL = 0 // Pass through

      EPwm2Regs.TBCTL.bit.SYNCOSEL = 0;// Pass through

      EPwm3Regs.TBCTL.bit.SYNCOSEL = 0;// Pass through

      EPwm1Regs.TBCTL.bit.SWFSYNC = 1;

      EPwm2Regs.TBCTL.bit.SWFSYNC = 1;

      EPwm3Regs.TBCTL.bit.SWFSYNC = 1;以上程序是設(shè)定PWM1/2/3同步,我們由于我們只采用向上計(jì)數(shù),所以不需要設(shè)定計(jì)數(shù)方向位。

      接下來如果我們想PWM1與PWM2輸出相位不一樣,保持某個(gè)相位差,我們可以通過寄存器設(shè)定;

      EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;

      EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;

      EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;

      EPwm1Regs.TBPHS.half.TBPHS = 0;

      EPwm2Regs.TBPHS.half.TBPHS = 250;

      EPwm3Regs.TBPHS.half.TBPHS = 500;首先使能,然后賦予值;

      關(guān)于一些其他的配置如下:

      EPwm3Regs.TBPRD = PWM3_TIMER_TBPRD;

      EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;

      // Count up

      EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;

      // Enable INT on Zero event

      EPwm3Regs.ETSEL.bit.INTEN = PWM3_INT_ENABLE;

      // Enable INT

      EPwm3Regs.ETPS.bit.INTPRD = ET_1ST;

      // Generate INT on 3rd event

      關(guān)于28016PWM配置的討論

      PWM1的A/B的獨(dú)立配置;

      除了counter-compare比較寄存器,CMPA,CMPB,主要還是配置控制寄存器CMPCTL,對(duì)于影子寄存器的配置,還有影子寄存器的裝載模式。這里主要講關(guān)于PWM中action qualifier的配置; 模式1:

      // Setup shadow register load on ZERO

      EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

      EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

      EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;

      EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

      // Set Compare values

      EPwm1Regs.CMPA.half.CMPA = EPWM1_MIN_CMPA;

      // Set compare A value

      EPwm1Regs.CMPB = 500;

      // Set Compare B value

      // Set actions

      EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;

      // Set PWM1A on Zero

      EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;

      // Clear PWM1A on event A, up coun

      EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;

      // Set PWM1B on Zero

      EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;

      // Clear PWM1B on event B, up count

      // Interrupt where we will change the Compare Values

      EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;

      // Select INT on Zero event

      EPwm1Regs.ETSEL.bit.INTEN = 1;

      // Enable INT

      EPwm1Regs.ETPS.bit.INTPRD = ET_3RD;

      // Generate INT on 3rd event

      其中紅色的為PWM的輸出方式配置,當(dāng)PWM1.A在counter==0時(shí),輸出為0,在counter==CMPA時(shí),且在向上計(jì)數(shù),輸出為1;而PWM1.B相反。

      模式二:

      // Set actions

      EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR;

      // Clear PWM2A on Period

      EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;

      // Set PWM2A on event A, up count

      EPwm2Regs.AQCTLB.bit.PRD = AQ_CLEAR;

      // Clear PWM2B on Period

      EPwm2Regs.AQCTLB.bit.CBU = AQ_SET;

      // Set PWM2B on event B, up count 其中紅色的為PWM的輸出方式配置,當(dāng)PWM1.A在counter==period時(shí),輸出為0,在counter==CMPA時(shí),且在向上計(jì)數(shù),輸出為1;而PWM1.B相同; 模式三:

      // Set Actions

      EPwm3Regs.AQCTLA.bit.CAU = AQ_SET;

      // Set PWM3A on event B, up count

      EPwm3Regs.AQCTLA.bit.CBU = AQ_CLEAR;

      // Clear PWM3A on event B, up count 其中紅色的為PWM的輸出方式配置,當(dāng)PWM1.A在counter==CMPA時(shí),輸出為1,在counter==CMPB時(shí),且在向上計(jì)數(shù),輸出為0,也就是計(jì)數(shù)在CMPA與CMPB之間時(shí)輸出為1;

      模式四:

      EPwm3Regs.AQCTLB.bit.ZRO = AQ_TOGGLE;

      // Toggle EPWM3B on Zero 此模式強(qiáng)制整個(gè)周期輸出高或者輸出地,與CMPA與CMPB無關(guān),關(guān)于28016PWM死區(qū)時(shí)間配置的討論

      主要與死區(qū)有關(guān)的是三個(gè)寄存器:

      Dead-Band Generator Control Register(DBCTL);

      Dead-Band Generator Rising Edge Delay Register(DBRED);

      Dead-Band Generator Rising Edge Delay Register(DBRED)Field Descriptions; 首先清楚延時(shí)時(shí)間的計(jì)算 為:DBRED*TBCLK; 然后弄懂DBCTL就可以了。

      注意理解下圖:

      弄懂3個(gè)控制位什么意思;

      OUT_MODE,POLSEL,IN_MODE 注意第二位,這位通常用在輸入為同一個(gè)通道時(shí),也就是IN_MODE=0X00/0X03時(shí)。簡(jiǎn)單看一些deadband的配置:

      EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;輸出之前,輸入上升沿下降沿都被延時(shí);

      EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;沒有取反過程;

      EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;輸入全部為A,此為習(xí)慣性的配置; EPwm1Regs.DBRED = 1000;EPwm1Regs.DBFED = 500;

      一周解決的為題:

      我的sin()函數(shù)能夠正常執(zhí)行,cos()函數(shù)也能正常執(zhí)行,但是當(dāng)sin()計(jì)算完再計(jì)算cos(),仿真環(huán)境就會(huì)進(jìn)入邏輯錯(cuò)誤中斷,請(qǐng)問怎么解決,是不是該重裝CCS。

      原因:之前一直把程序燒到RAM里,總是只能執(zhí)行一個(gè)sin()和cos()函數(shù),然后RAM的空間就不夠了,由于也不會(huì)改RAM空間的大小,所以就把程序直接下到flash里面,結(jié)果就好了。

      遇到CCS和仿真器連不上的問題;Error connecting to the target: Error 0x80000240/134 Fatal Error during: Initialization, OCS Unknown Error Sequence ID: 0 Error Code: 134 Error Class: 0x80000240 I/O Port = 240 解決辦法:

      我也試著解決這個(gè)問題,重裝了一次,結(jié)果沒有用。想著覺得是USB驅(qū)動(dòng)的問題,然后就在設(shè)備管理器中,把USB的驅(qū)動(dòng)刪除了,有重新裝了一遍,結(jié)果沒問題了。原因應(yīng)該是以前用的USB口安裝的驅(qū)動(dòng),又被用于安裝其他的驅(qū)動(dòng),結(jié)果以前的USB驅(qū)動(dòng)不能用了。

      第三篇:DSP學(xué)習(xí)心得筆記

      DSP學(xué)習(xí)心得筆記

      ----------------白建成.baijc.icekoor 引言:學(xué)習(xí)DSP的時(shí)間有兩個(gè)多月了,收獲很多新知識(shí),我們要每天都有進(jìn)步才行,以下內(nèi)容沒有特別的順序,跟具自己的學(xué)習(xí)情況寫的,如果有不對(duì)的地方希望指出來,如果有不懂得也可以問我,大家相互交流很重要,我的一個(gè)郵箱:baijc@163.com歡迎聯(lián)系!

      建立新工程過程中: 問題1:

      “GPIO_Study.c”, line 61: fatal error: could not open source file “DSP280x_Device.h” 1 fatal error detected in the compilation of “GPIO_Study.c”.解決方法:

      因?yàn)閜roject ?build options?compiler?preprocessor中,要包含的頭文件的地址沒有加進(jìn)去,你可以找到頭文件的地址,然后加進(jìn)去。

      問題2:

      undefined

      first referenced symbol

      in file---------

      ----------------_c_int00

      D:DSP studytest3DebugDSP280x_CodeStartBranch.obj FS$$MPY

      D:DSP studytest3DebugDSP280x_CpuTimers.obj FS$$TOL

      D:DSP studytest3DebugDSP280x_CpuTimers.obj >>

      error: symbol referencing errors'./Debug/GPIO_Study.out' not built 解決辦法都是下面:

      這個(gè)問題是因?yàn)闆]有加在庫文件,請(qǐng)?jiān)趐roject ?build options?linker?libraries中加入rts2800.lib。

      問題3:

      >> warning: creating.stack section with default size of 400(hex)words.Use

      -stack option to change the default size.>>

      error: can't allocate.stack, size 00000400(page 1)in RAMM1(avail:

      00000380)>>

      error: errors in input-./Debug/GPIO_Study.out not built 解決辦法:

      這個(gè)問題是關(guān)于堆棧存儲(chǔ)大小的問題,他是說,創(chuàng)建堆棧段使用與設(shè)置400個(gè)字,并建議在“堆棧操作”中改變這個(gè)與設(shè)置。這時(shí),需要進(jìn)行如下修改就可通過:project? build options?Linker?basic,在Stack Size(-stack):填入800或者其他小于1024的數(shù)值。

      調(diào)試程序:

      在編譯完成之后,要來下載程序并進(jìn)行功能調(diào)試。File?Load Program,在工程文件夾下面的Debug文件夾下,選中**.out文件,點(diǎn)擊打開,便開始下載程序了。將**.out文件下載到目標(biāo)板上2812的RAM中。

      注意,這里是調(diào)試,所以將程序下載到RAM。等到最后您要固化程序的時(shí)候,就得下載到FLASH了,因?yàn)閿嚯娭?,RAM里面所有的數(shù)據(jù)都會(huì)消失。

      (Run和Animate的區(qū)別,Run是如果遇到斷點(diǎn)的話它就停下來了。而Animate就算遇到斷點(diǎn)時(shí)先停止DSP內(nèi)核,刷新窗口,然后接著繼續(xù)啟動(dòng)運(yùn)行,常用來連續(xù)刷新變量窗口和生成graph圖形等)——知識(shí)儲(chǔ)備。

      添加斷點(diǎn):

      加上斷點(diǎn)的方法很簡(jiǎn)單,只要在該行代碼前雙擊就行。雙擊之后,這行代碼前面會(huì)出現(xiàn)一個(gè)紅色圓塊。另外一種添加斷點(diǎn)的方法,就是在剛才的編譯工具欄上,點(diǎn)一下那個(gè)小手圖形的按鈕,前提是你要把光標(biāo)移動(dòng)到想要設(shè)置斷點(diǎn)的哪一行上。

      使用watch window:

      Watch window的作用是來觀察程序運(yùn)行過程中的各個(gè)變量的值。調(diào)用watch window的方法是點(diǎn)擊菜單欄的“View ”,“watch window”,這時(shí)watch window就會(huì)顯示在CCS下方的信息區(qū)域;

      選中所要觀察的變量,然后右鍵,在右鍵菜單中選擇add to watch window。

      調(diào)試代碼觀察:

      我們?cè)谡{(diào)試程序的時(shí)候經(jīng)常想讓程序從Main函數(shù)開使運(yùn)行,點(diǎn)Debug?Go main。既能看到源文件中代碼的執(zhí)行情況,又能看到匯編指令的執(zhí)行情況View?Mixed Source/Asm;

      關(guān)于F2812中用C語言來實(shí)現(xiàn)中斷的說明

      1.首先在.cmd中定位系統(tǒng)中斷表: MEMORY { PAGE 0 :

      ......................................PAGE 1 :

      ......................................PIE_VECT

      : origin = 0x000D00, length = 0x000100......................................} SECTIONS {...................................PieVectTable

      : > PIE_VECT,PAGE = 1.....................................} 2.在C中制定該中斷的結(jié)構(gòu)體:

      #pragma DATA_SECTION(PieVectTable,“PieVectTable”);struct PIE_VECT_TABLE PieVectTable;(在DSP28_GlobalVariableDefs.C中初始化)3.用一組常數(shù)(按照中斷向量的順序)初始化該名字為PIE_VECT_TABLE的表: typedef interrupt void(*PINT)(void);這里有些一問,一下應(yīng)該為函數(shù)名??

      // Define Vector Table: struct PIE_VECT_TABLE {

      // Reset is never fetched from this table.// It will always be fetched from 0x3FFFC0 in either // boot ROM or XINTF Zone 7 depending on the state of // the XMP/MC input signal.On the F2810 it is always // fetched from boot ROM.PINT

      PIE1_RESERVED;

      PINT

      PIE2_RESERVED;

      PINT

      PIE3_RESERVED;

      PINT

      PIE4_RESERVED;

      PINT

      PIE5_RESERVED;

      PINT

      PIE6_RESERVED;

      PINT

      PIE7_RESERVED;

      PINT

      PIE8_RESERVED;

      PINT

      PIE9_RESERVED;

      PINT

      PIE10_RESERVED;

      PINT

      PIE11_RESERVED;

      PINT

      PIE12_RESERVED;

      PINT

      PIE13_RESERVED;

      // Non-Peripheral Interrupts:

      PINT

      XINT13;

      // XINT13

      PINT

      TINT2;

      // CPU-Timer2

      PINT

      DATALOG;

      // Datalogging interrupt

      PINT

      RTOSINT;

      // RTOS interrupt

      PINT

      EMUINT;

      // Emulation interrupt

      PINT

      XNMI;

      // Non-maskable interrupt

      PINT

      ILLEGAL;

      // Illegal operation TRAP

      PINT

      USER0;

      // User Defined trap 0

      PINT

      USER1;

      // User Defined trap 1

      PINT

      USER2;

      // User Defined trap 2

      PINT

      USER3;

      // User Defined trap 3

      PINT

      USER4;

      // User Defined trap 4

      PINT

      USER5;

      // User Defined trap 5

      PINT

      USER6;

      // User Defined trap 6

      PINT

      USER7;

      // User Defined trap 7

      PINT

      USER8;

      // User Defined trap 8

      PINT

      USER9;

      // User Defined trap 9

      PINT

      USER10;

      // User Defined trap 10

      PINT

      USER11;

      // User Defined trap 11

      // Group 1 PIE Peripheral Vectors:

      PINT

      PDPINTA;

      // EV-A

      PINT

      PDPINTB;

      // EV-B

      PINT

      rsvd1_3;

      PINT

      XINT1;

      PINT

      XINT2;

      PINT

      ADCINT;

      // ADC

      PINT

      TINT0;

      // Timer 0

      PINT

      WAKEINT;

      // WD

      ..........................// Group 12 PIE Peripheral Vectors:

      PINT

      rsvd12_1;

      PINT

      rsvd12_2;

      PINT

      rsvd12_3;

      PINT

      rsvd12_4;

      PINT

      rsvd12_5;

      PINT

      rsvd12_6;

      PINT

      rsvd12_7;

      PINT

      rsvd12_8;};然后在使我們?cè)?cmd文件中定義的表有以上屬性: extern struct PIE_VECT_TABLE PieVectTable;(在.h文件中)4.初始化該表(在.c文件中)使之能夠?yàn)橹鞒绦蛩褂茫?const struct PIE_VECT_TABLE PieVectTableInit = {

      PIE_RESERVED, // Reserved space

      PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,// Non-Peripheral Interrupts

      INT13_ISR,// XINT13 or CPU-Timer 1

      INT14_ISR,// CPU-Timer2

      DATALOG_ISR,// Datalogging interrupt

      RTOSINT_ISR,// RTOS interrupt

      EMUINT_ISR,// Emulation interrupt

      NMI_ISR,// Non-maskable interrupt

      ILLEGAL_ISR,// Illegal operation TRAP

      USER0_ISR,// User Defined trap 0

      USER1_ISR,// User Defined trap 1

      USER2_ISR,// User Defined trap 2

      USER3_ISR,// User Defined trap 3

      USER4_ISR,// User Defined trap 4

      USER5_ISR,// User Defined trap 5

      USER6_ISR,// User Defined trap 6

      USER7_ISR,// User Defined trap 7

      USER8_ISR,// User Defined trap 8

      USER9_ISR,// User Defined trap 9

      USER10_ISR,// User Defined trap 10

      USER11_ISR,// User Defined trap 11

      // Group 1 PIE Vectors

      PDPINTA_ISR,// EV-A

      PDPINTB_ISR,// EV-B

      rsvd_ISR,XINT1_ISR,XINT2_ISR,ADCINT_ISR,// ADC

      TINT0_ISR,// Timer 0

      WAKEINT_ISR,// WD..........................// Group 12 E Vectors

      rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,};//-------------// InitPieVectTable:

      //-------------// This function initializes the PIE vector table to a known state.// This function must be executed after boot time.//

      void InitPieVectTable(void){ int16 i;Uint32 *Source =(void *)&PieVectTableInit;Uint32 *Dest =(void *)&PieVectTable;

      EALLOW;

      for(i=0;i < 128;i++)*Dest++ = *Source++;EDIS;

      // Enable the PIE Vector Table PieCtrl.PIECRTL.bit.ENPIE = 1;

      } 5.中斷服務(wù)程序:

      讓以上的數(shù)值指向你所要的服務(wù)程序,例如: PieVectTable.TINT2 = &ISRTimer2;那么,ISRTimer2也就成了中斷服務(wù)程序,×××切記:一定要在主程序的開始先聲明該程序: interrupt void ISRTimer2(void);

      ..........................然后按照您的需要編制該程序: interrupt void ISRTimer2(void){ CpuTimer2.InterruptCount++;}

      編程中遇到的問題:

      1、line 257: warning: last line of file ends without a newline; 解決方法:

      點(diǎn)擊出現(xiàn)的問題條,看光標(biāo)定位在哪里,然后一點(diǎn)點(diǎn)刪除,直到把編程的文字刪除,最后把刪除的寫出來,回車就行了,因?yàn)榛剀嚨母袷揭诰庉嫚顟B(tài)哈哈!

      28016的定時(shí)器筆記

      學(xué)過2812的人會(huì)知道,2812的定時(shí)器和28016的定時(shí)器的寄存器很不一樣。但是從功能上將差不多。

      關(guān)于28016定時(shí)器的時(shí)鐘的討論;

      定時(shí)器的時(shí)鐘是由SYSCLKOUT經(jīng)過TBCTL中的CLKDIV和HSPCLKDIV進(jìn)行配置;

      主要說明,我們應(yīng)該記得SYSCLKOUT和HSPCLK之間還可以分頻,但是在這里這個(gè)寄存器不影響。

      關(guān)于28016定時(shí)器的時(shí)鐘同步的討論;

      如果我們想使每個(gè)PWM模塊具有同步時(shí)鐘,我們可以通過軟件強(qiáng)制各個(gè)模塊之間同步,設(shè)定步驟如下:

      EPwm1Regs.TBCTL.bit.SYNCOSEL = 0 // Pass through

      EPwm2Regs.TBCTL.bit.SYNCOSEL = 0;// Pass through

      EPwm3Regs.TBCTL.bit.SYNCOSEL = 0;// Pass through

      EPwm1Regs.TBCTL.bit.SWFSYNC = 1;

      EPwm2Regs.TBCTL.bit.SWFSYNC = 1;

      EPwm3Regs.TBCTL.bit.SWFSYNC = 1;以上程序是設(shè)定PWM1/2/3同步,我們由于我們只采用向上計(jì)數(shù),所以不需要設(shè)定計(jì)數(shù)方向位。

      接下來如果我們想PWM1與PWM2輸出相位不一樣,保持某個(gè)相位差,我們可以通過寄存器設(shè)定;

      EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;

      EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;

      EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;

      EPwm1Regs.TBPHS.half.TBPHS = 0;

      EPwm2Regs.TBPHS.half.TBPHS = 250;

      EPwm3Regs.TBPHS.half.TBPHS = 500;首先使能,然后賦予值;

      關(guān)于一些其他的配置如下:

      EPwm3Regs.TBPRD = PWM3_TIMER_TBPRD;

      EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;

      // Count up

      EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;

      // Enable INT on Zero event

      EPwm3Regs.ETSEL.bit.INTEN = PWM3_INT_ENABLE;

      // Enable INT

      EPwm3Regs.ETPS.bit.INTPRD = ET_1ST;

      // Generate INT on 3rd event 關(guān)于28016PWM配置的討論

      PWM1的A/B的獨(dú)立配置;

      除了counter-compare比較寄存器,CMPA,CMPB,主要還是配置控制寄存器CMPCTL,對(duì)于影子寄存器的配置,還有影子寄存器的裝載模式。

      這里主要講關(guān)于PWM中action qualifier的配置; 模式1:

      // Setup shadow register load on ZERO

      EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

      EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

      EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;

      EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

      // Set Compare values

      EPwm1Regs.CMPA.half.CMPA = EPWM1_MIN_CMPA;

      // Set compare A value

      EPwm1Regs.CMPB = 500;

      // Set Compare B value

      // Set actions

      EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;

      // Set PWM1A on Zero

      EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;

      // Clear PWM1A on event A, up coun

      EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;

      // Set PWM1B on Zero

      EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;

      // Clear PWM1B on event B, up count

      // Interrupt where we will change the Compare Values

      EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;

      // Select INT on Zero event

      EPwm1Regs.ETSEL.bit.INTEN = 1;

      // Enable INT

      EPwm1Regs.ETPS.bit.INTPRD = ET_3RD;

      // Generate INT on 3rd event

      其中紅色的為PWM的輸出方式配置,當(dāng)PWM1.A在counter==0時(shí),輸出為0,在counter==CMPA時(shí),且在向上計(jì)數(shù),輸出為1;而PWM1.B相反。模式二:

      // Set actions

      EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR;

      // Clear PWM2A on Period

      EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;

      // Set PWM2A on event A, up count

      EPwm2Regs.AQCTLB.bit.PRD = AQ_CLEAR;

      // Clear PWM2B on Period

      EPwm2Regs.AQCTLB.bit.CBU = AQ_SET;

      // Set PWM2B on event B, up count 其中紅色的為PWM的輸出方式配置,當(dāng)PWM1.A在counter==period時(shí),輸出為0,在counter==CMPA時(shí),且在向上計(jì)數(shù),輸出為1;而PWM1.B相同; 模式三:

      // Set Actions

      EPwm3Regs.AQCTLA.bit.CAU = AQ_SET;

      // Set PWM3A on event B, up count

      EPwm3Regs.AQCTLA.bit.CBU = AQ_CLEAR;

      // Clear PWM3A on event B, up count 其中紅色的為PWM的輸出方式配置,當(dāng)PWM1.A在counter==CMPA時(shí),輸出為1,在counter==CMPB時(shí),且在向上計(jì)數(shù),輸出為0,也就是計(jì)數(shù)在CMPA與CMPB之間時(shí)輸出為1;

      模式四:

      EPwm3Regs.AQCTLB.bit.ZRO = AQ_TOGGLE;

      // Toggle EPWM3B on Zero 此模式強(qiáng)制整個(gè)周期輸出高或者輸出地,與CMPA與CMPB無關(guān),關(guān)于28016PWM死區(qū)時(shí)間配置的討論

      主要與死區(qū)有關(guān)的是三個(gè)寄存器:

      Dead-Band Generator Control Register(DBCTL);

      Dead-Band Generator Rising Edge Delay Register(DBRED);

      Dead-Band Generator Rising Edge Delay Register(DBRED)Field Descriptions; 首先清楚延時(shí)時(shí)間的計(jì)算 為:DBRED*TBCLK; 然后弄懂DBCTL就可以了。

      注意理解下圖:

      弄懂3個(gè)控制位什么意思;

      OUT_MODE,POLSEL,IN_MODE 注意第二位,這位通常用在輸入為同一個(gè)通道時(shí),也就是IN_MODE=0X00/0X03時(shí)。簡(jiǎn)單看一些deadband的配置:

      EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;輸出之前,輸入上升沿下降沿都被延時(shí);

      EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;沒有取反過程;

      EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;輸入全部為A,此為習(xí)慣性的配置; EPwm1Regs.DBRED = 1000;EPwm1Regs.DBFED = 500;

      一周解決的為題:

      我的sin()函數(shù)能夠正常執(zhí)行,cos()函數(shù)也能正常執(zhí)行,但是當(dāng)sin()計(jì)算完再計(jì)算cos(),仿真環(huán)境就會(huì)進(jìn)入邏輯錯(cuò)誤中斷,請(qǐng)問怎么解決,是不是該重裝CCS。

      原因:之前一直把程序燒到RAM里,總是只能執(zhí)行一個(gè)sin()和cos()函數(shù),然后RAM的空間就不夠了,由于也不會(huì)改RAM空間的大小,所以就把程序直接下到flash里面,結(jié)果就好了。

      遇到CCS和仿真器連不上的問題;Error connecting to the target: Error 0x80000240/134 Fatal Error during: Initialization, OCS Unknown Error Sequence ID: 0 Error Code: 134 Error Class: 0x80000240 I/O Port = 240 解決辦法:

      我也試著解決這個(gè)問題,重裝了一次,結(jié)果沒有用。想著覺得是USB驅(qū)動(dòng)的問題,然后就在設(shè)備管理器中,把USB的驅(qū)動(dòng)刪除了,有重新裝了一遍,結(jié)果沒問題了。原因應(yīng)該是以前用的USB口安裝的驅(qū)動(dòng),又被用于安裝其他的驅(qū)動(dòng),結(jié)果以前的USB驅(qū)動(dòng)不能用了。

      2011.1.19 我在用dsp中的cos()與sin()函數(shù)時(shí),對(duì)他們的結(jié)果做驗(yàn)證,發(fā)現(xiàn)他們有的計(jì)算出來的結(jié)果,和我用計(jì)算器計(jì)算出來的結(jié)果不一樣,還差不少。解決辦法:

      首先堅(jiān)信CCS的函數(shù)計(jì)算不會(huì)輕易的出錯(cuò),然后我就去查程序的問題,查不好長(zhǎng)時(shí)間覺得沒問題,就繼續(xù)看程序運(yùn)行的結(jié)果,結(jié)果發(fā)現(xiàn)有些計(jì)算正確,有些不正確,就在想執(zhí)行過程中難道有隨機(jī)性,結(jié)果突然想到中斷的問題,我是在中斷中作了個(gè)旋轉(zhuǎn)矢量,通過中斷來使它旋轉(zhuǎn),而直接把中斷中的值,拿來在每個(gè)sin,cos中用,所以才出問題的。結(jié)果改動(dòng)了一點(diǎn)就行了,將中斷中的值,在用的地方,重新付給另一個(gè)變量,這樣就能解決了。因?yàn)閟in,cos執(zhí)行需要時(shí)間較長(zhǎng),而普通的賦值卻不是。Flash API Error #65535: The device is in limp mode, operation failed。以前一直沒有問題,不知道怎么突然就這樣了。解決辦法:

      燒寫的插件(網(wǎng)上這么叫)沒有裝好的原因,我覺得就是仿真器第一次沒連接好,拔掉再連接幾次就行了。

      2011.1.20 fatal error: file “D:DSP studyADC_StudyDebugADC_Study.obj” has a

      Tag_Memory_Model attribute value of “2” that is different than one

      previously seen(“1”);combining incompatible files 解決辦法:

      問題的出現(xiàn)可能是你lib下的庫有所改變引起的,project->built options->linker->libraries->rts2800_ml.lib,因?yàn)橹耙恢庇盟?,后來改成rts2800.lib就出現(xiàn)這個(gè)問題了,改回去就可以了。

      data verification failed at address 0x8000 Please verify target memory and memory map 解決方法:

      可能是gel的問題,重新載入幾次,如果不行的話,就把仿真器重新接幾次,問題就應(yīng)該沒有了,多數(shù)是硬件的問題。

      針對(duì)CCS的圖像顯示,一個(gè)方式為對(duì)程序中的某些變量畫圖,另一種方式是對(duì)DSP采集的數(shù)據(jù)畫圖,兩者在方法上有所不同。

      首先聲明畫圖很簡(jiǎn)單,只要把重要的記住就可以了,其他的嘗試怎么用就OK了,不用刻意去學(xué),浪費(fèi)時(shí)間;

      至于這張圖中各個(gè)欄代表什么,你隨便找個(gè)資料就給你 說得很清楚,但是沒有一份資料教你怎么用的,這就是 網(wǎng)上資料的弊端。

      你只要把右圖畫綠線的看懂就總夠了,其他的試著改變參 數(shù),看看結(jié)果你就明白了。

      接下來給你看看我的配置:

      Dual time 和single time的區(qū)別在于顯示幾個(gè)波形 Svpwm_Time1和 Svpwm_Time0 是我程序內(nèi)部的 兩個(gè)變量,也就是SVPWM的t1,t0,記得前面加 &,不然結(jié)果不對(duì),Acquisition Buffer Size設(shè)為1,因?yàn)槲蚁胪ㄟ^終端來調(diào)試,每次終端,然后刷新 一次數(shù)據(jù),這樣很方便,找點(diǎn)資料看,這里不詳 細(xì)說明了,還有采樣時(shí)間,根據(jù)你的要求來定。波形如下:

      是不是很matlab中一樣哈!

      另一種方式,不能采用中斷了,因?yàn)橹袛鄷r(shí)間太長(zhǎng),影響采樣速度。

      建議:在程序中建一個(gè)大的數(shù)組,然后運(yùn)行一段時(shí)間,再將數(shù)組顯示在CCS中,Acquisition Buffer Size 此時(shí)不能為1了,要和你的數(shù)組一樣長(zhǎng),Display Data Size等于Acquisition Buffer Size就可以,顯示出來就可以了。

      如下圖:這是我AD采樣的波形,采集一個(gè)正弦波形,采用兩個(gè)通道。

      2011.01.24 error: symbol “_main” redefined: first defined in “D:DSP

      studyDSP_PerfectDsp_Perfect_110121WPerfectDebugPerfect.obj”;

      redefined in “D:DSP

      studyDSP_PerfectDsp_Perfect_110121WPerfectDebugSCI_485.obj” 解決辦法:

      這個(gè)問題是系統(tǒng)編譯以后,在perfect.c和SCI_485.c中分別有main();結(jié)果編譯會(huì)報(bào)錯(cuò)。

      2011.01.22 “D:DSP studyDSP_PerfectDsp_Perfect_110121WcmdF28016.cmd”, line 125: error:

      run placement fails for object “.ebss”, size 0x3ba(page 1).Available

      ranges:

      RAMM1

      size: 0x380

      unused: 0x380

      max hole: 0x380

      error: errors encountered during linking;“./Debug/Perfect.out” not built 解決辦法:

      雙擊錯(cuò)誤提示,進(jìn)入錯(cuò)誤的地方,原因是我們申明的變量數(shù),超過了RAMM1的聲明的大小,所以找過RAMM1,然后把size擴(kuò)大就可以了,RAMM1

      : origin = 0x000480, length = 0x000400

      /* on-chip RAM block M1 */,注意但是不能超過1024,也就是說最大是0x000400。同時(shí)也把project? build options?Linker?basic,在Stack Size(-stack):填入800或者其他小于1024的數(shù)值。以免以后有出些不明的問題。

      第四篇:DSP學(xué)習(xí)心得筆記(更新20140717)

      DSP學(xué)習(xí)心得筆記

      ----------------白建成.baijc.icekoor 引言:學(xué)習(xí)DSP的時(shí)間有兩個(gè)多月了,收獲很多新知識(shí),我們要每天都有進(jìn)步才行,以下內(nèi)容沒有特別的順序,跟具自己的學(xué)習(xí)情況寫的,如果有不對(duì)的地方希望指出來,如果有不懂得也可以問我,大家相互交流很重要,我的一個(gè)郵箱:baijc@163.com歡迎聯(lián)系!

      建立新工程過程中: 問題1:

      “GPIO_Study.c”, line 61: fatal error: could not open source file “DSP280x_Device.h” 1 fatal error detected in the compilation of “GPIO_Study.c”.解決方法:

      因?yàn)閜roject ?build options?compiler?preprocessor中,要包含的頭文件的地址沒有加進(jìn)去,你可以找到頭文件的地址,然后加進(jìn)去。

      問題2:

      undefined

      first referenced symbol

      in file---------

      ----------------_c_int00

      D:DSP studytest3DebugDSP280x_CodeStartBranch.obj FS$$MPY

      D:DSP studytest3DebugDSP280x_CpuTimers.obj FS$$TOL

      D:DSP studytest3DebugDSP280x_CpuTimers.obj >>

      error: symbol referencing errors'./Debug/GPIO_Study.out' not built 解決辦法都是下面:

      這個(gè)問題是因?yàn)闆]有加在庫文件,請(qǐng)?jiān)趐roject ?build options?linker?libraries中加入rts2800.lib。

      問題3:

      >> warning: creating.stack section with default size of 400(hex)words.Use

      -stack option to change the default size.>>

      error: can't allocate.stack, size 00000400(page 1)in RAMM1(avail:

      00000380)>>

      error: errors in inputCobing LiuCSDN.pdf》

      第五篇:DSP學(xué)習(xí)總結(jié)

      DSP學(xué)習(xí)總結(jié)

      根據(jù)一學(xué)期以來對(duì)DSP這門課程的學(xué)習(xí),學(xué)到了很多DSP相關(guān)的知識(shí)。了解了如何根據(jù)實(shí)際需求選擇DSP芯片,也知道了C54x的匯編和鏈接過程,還掌握了C54x的尋址方式。對(duì)于老師的授課方法也有一定的見解。

      開始學(xué)DSP的時(shí)候比較著急,因?yàn)橐哺杏X什么都不會(huì),不知道從哪里下手。手上的資料只有書,后來去圖書館看了兩本,一本是《DSP原理與開發(fā)》,除了有詳細(xì)的理論說明之外,還會(huì)在每個(gè)章節(jié)之后配上一個(gè)例程,缺點(diǎn)就是錯(cuò)誤也不少,估計(jì)時(shí)間太倉促,校對(duì)沒做好。另一本書是清華大學(xué)出版社的《TMS320C28X系列DSP的CPU與外設(shè)》,是從TI的英文的技術(shù)手冊(cè)翻譯過來的,分上、下兩冊(cè),可以作為工具書,很實(shí)用,缺點(diǎn)是沒有例子。書看了一兩遍,覺得還是一頭霧水。后來有相應(yīng)的實(shí)驗(yàn)開課,慢慢對(duì)DSP有點(diǎn)了解了,剛開始都不知道怎么建PROJECT,后來問了同學(xué),然后再看TI的例程,仿照它的程序框架,邊看例程,邊對(duì)著實(shí)驗(yàn)指導(dǎo)書,看得主要是如何初始化,需要對(duì)每個(gè)外設(shè)進(jìn)行哪些寄存器的初始化,寄存器為什么這樣設(shè)置,程序如何進(jìn)中斷,如何出中斷等等。邊看書邊做實(shí)驗(yàn),效率會(huì)高很多,也就能慢慢理解了。

      對(duì)于剛學(xué)DSP的新手我覺得掌握一些初級(jí)知識(shí)就差不多了。

      第一步:硬件入門。1.先學(xué)習(xí)DSP的硬件基礎(chǔ):了解CPU結(jié)構(gòu)、中斷、EMIF、HPI、GPIO、SPI、Timer、供電方式、時(shí)鐘;2.了解DSP互連的存儲(chǔ)器:SDRAM、FLASH、FIFO、雙口RAM、SDSRAM等不需深入研究;3.了解CPLD/FPGA的硬件結(jié)構(gòu)、連接原理、VerilogHDL編程語言需深入研究;4.了解DSP Bootloader不需深入研究;5.了解DSP和外部通信的接口:PCI、USB、LAN、UART等,有時(shí)間可以看看DM642的VideoPort

      第二步:工具入門。1.學(xué)習(xí)數(shù)字電路、模擬電路、電路分析的知識(shí);2.學(xué)好一種PCB繪制軟件如Protel DXP2006;3.學(xué)習(xí)信號(hào)完整性、學(xué)習(xí)傳輸線理論,特性阻抗知識(shí);

      關(guān)于老師上課的方式我認(rèn)為:1.太多的理論知識(shí)枯燥乏味,因?yàn)橛袑?shí)驗(yàn)課,我覺得老師可以根據(jù)實(shí)驗(yàn)要做的內(nèi)容在課堂上深入講解,這樣在講述的同時(shí)能讓同學(xué)們認(rèn)真聽,認(rèn)真記以便于實(shí)驗(yàn)課程的順利完成,比純理論效果會(huì)好點(diǎn)。2.課上應(yīng)該多講解一些例子,由淺而深,我覺得上課關(guān)鍵是調(diào)動(dòng)同學(xué)的積極性,能吸引學(xué)生的很多是夾雜著現(xiàn)實(shí)生活中的事,中國(guó)的DSP才剛剛起步,發(fā)展正方興未艾,嚴(yán)格意義上符合DSP兩大核心特征的公司,更是非常之少,整個(gè)國(guó)內(nèi)網(wǎng)絡(luò)展示廣告領(lǐng)域?qū)τ贒SP的理解都遠(yuǎn)遠(yuǎn)沒有達(dá)到普及的程度,有很大的發(fā)展?jié)摿?,讓同學(xué)們意識(shí)到學(xué)習(xí)DSP是有用的。

      下載Dsp學(xué)習(xí)筆記word格式文檔
      下載Dsp學(xué)習(xí)筆記.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        DSP學(xué)習(xí)小結(jié)(共5篇)

        根據(jù)一學(xué)期以來對(duì)DSP這門課程的學(xué)習(xí),學(xué)到了很多DSP相關(guān)的知識(shí)。了解了如何根據(jù)實(shí)際需求選擇DSP芯片,也知道了C54x的會(huì)變和鏈接過程,還掌握了C54x的尋址方式,尤其是直接和簡(jiǎn)介尋......

        學(xué)習(xí)筆記

        我們的福音——“厲行節(jié)約,反對(duì)浪費(fèi)”有感好客中國(guó)人,設(shè)宴必有剩?!边@是流傳在中國(guó)大部分地區(qū)的陳規(guī)陋習(xí)??腿俗吆?,主家只有滿桌的剩菜、剩飯、剩酒,才能充分表達(dá)主人那顆虛榮......

        學(xué)習(xí)筆記(模版)

        學(xué)習(xí)筆記 學(xué)習(xí)時(shí)間:2014年5月27日16:30—17:30 學(xué)習(xí)地點(diǎn):CT遠(yuǎn)程室 參加人員:醫(yī)技支部全體黨員 學(xué)習(xí)內(nèi)容:關(guān)于開展機(jī)關(guān)黨員“踐行三嚴(yán)三實(shí)、做合格人民公仆“村社區(qū)黨員”在黨愛黨......

        2014學(xué)習(xí)筆記

        時(shí)間:2014年1月8日 地點(diǎn):三樓會(huì)議室 人員:全體黨員、職工 形式:集中學(xué)習(xí) 主講人:張曉波 學(xué)習(xí)內(nèi)容:十八屆三中全會(huì)精神 一、全面深化改革的重大意義和指導(dǎo)思想 二、堅(jiān)持和完善基本......

        學(xué)習(xí)筆記之一

        【學(xué)習(xí)筆記之一】近平在黨的群眾路線教育實(shí)踐活動(dòng)工作會(huì)議上的 重要講話精神 黨的群眾路線教育實(shí)踐活動(dòng)工作會(huì)議于2013年6月18日在北京召開,習(xí)近平出席會(huì)議并發(fā)表重要講話。 ■......

        學(xué)習(xí)筆記

        論謀生與敬業(yè)——教師心得體會(huì) 對(duì)于敬業(yè)的老師來講,教育不是犧牲而是享受;教育不是重復(fù)而是創(chuàng)造;教育不是謀生的手段而是生活的本質(zhì);這是一名特級(jí)教師講過的一句話。他的話讓......

        學(xué)習(xí)筆記

        習(xí)近平總書記“1·5”重要講話學(xué)習(xí)筆記 在學(xué)習(xí)貫徹黨的十九大精神研討班開班式上,習(xí)近平總書記指出,“在新時(shí)代,我們黨必須以黨的自我革命來推動(dòng)黨領(lǐng)導(dǎo)人民進(jìn)行的偉大社會(huì)革命......

        學(xué)習(xí)筆記

        時(shí)間4月10日 地點(diǎn):四樓會(huì)議室 內(nèi)容:在集團(tuán)公司保持黨的純潔性學(xué)習(xí)教育基層組織建設(shè)年活動(dòng)動(dòng)員大會(huì)暨黨風(fēng)廉政建設(shè)工作會(huì)議上的講話——黨委書記、董事長(zhǎng) 武華太 黨委書記、董......