TI DSP入門芯片TMS320F28335
if((divsel == 1)||(divsel == 2))
{
EALLOW;
SysCtrlRegs.PLLSTS.bit.DIVSEL = divsel;
EDIS;
}
// If switching to 1/1
// * First go to 1/2 and let the power settle
// The time required will depend on the system, this is only an example
// * Then switch to 1/1
if(divsel == 3)
{
EALLOW;
SysCtrlRegs.PLLSTS.bit.DIVSEL = 2;
DELAY_US(50L);
SysCtrlRegs.PLLSTS.bit.DIVSEL = 3;
EDIS;
}
}
TMS320F28335 的外部中斷總結:
在這里我們要十分清楚DSP的中斷系統(tǒng)。C28XX一共有16個中斷源,其中有2個不可屏蔽的中斷RESET和NMI、定時器1和定時器2分別使用中斷13和14。這樣還有12個中斷都直接連接到外設中斷擴展模塊PIE上。說的簡單一點就是PIE通過12根線與28335核的12個中斷線相連。而PIE的另外一側(cè)有12*8根線分別連接到外設,如AD、SPI、EXINT等等。這樣PIE共管理12*8=96個外部中斷。這12組大中斷由28335核的中斷寄存器IER來控制,即IER確定每個中斷到底屬于哪一組大中斷(如IER |= M_INT12;說明我們要用第12組的中斷,但是第12組里面的什么中斷CPU并不知道需要再由PIEIER確定 )。接下來再由PIE模塊中的寄存器PIEIER中的低8確定該中斷是這一組的第幾個中斷,這些配置都要告訴CPU(我們不難想象到PIEIER共有12總即從PIEIER1-PIEIER12)。另外,PIE模塊還有中斷標志寄存器PIEIFR,同樣它的低8位是來自外部中斷的8個標志位,同樣CPU的IFR寄存器是中斷組的標志寄存器。由此看來,CPU的所有中斷寄存器控制12組的中斷,PIE的所有中斷寄存器控制每組內(nèi)8個的中斷。除此之外,我們用到哪一個外部中斷,相應的還有外部中斷的寄存器,需要注意的就是外部中斷的標志要自己通過軟件來清零。而PIE和CPU的中斷標志寄存器由硬件來清零。
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.XINT2 = ISRExint; //告訴中斷入口地址
EDIS; // This is needed to disable write to EALLOW protected registers
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block使能PIE
PieCtrlRegs.PIEIER1.bit.INTx5= 1; //使能第一組中的中斷5
IER |= M_INT1; // Enable CPU 第一組中斷
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
也就是說,12組中的每個中斷都要完成上面的相同配置,剩下的才是去配置自己的中斷。如我們提到的EXINT,即外面來個低電平我們就進入
中斷,完成我們的程序。在這里要介紹一下,DSP的GPIO口都可以配置為外部中斷口,其配置方法如下:
GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 0; //選擇他們是GPIO口
GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 0;
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 0;
GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO54 = 0;//選擇他們都是輸入口
GpioCtrlRegs.GPBDIR.bit.GPIO55 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO56 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO57 = 0;
GpioCtrlRegs.GPBQSEL2.bit.GPIO54= 0;//GPIO時鐘和系統(tǒng)時鐘一樣且支持GPIO
GpioCtrlRegs.GPBQSEL2.bit.GPIO55= 0;
GpioCtrlRegs.GPBQSEL2.bit.GPIO56= 0;
GpioCtrlRegs.GPBQSEL2.bit.GPIO57= 0;
GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 54;//中斷3選擇GPIO
GpioIntRegs.GPIOXINT4SEL.bit.GPIOSEL = 55;
GpioIntRegs.GPIOXINT5SEL.bit.GPIOSEL = 56;
GpioIntRegs.GPIOXINT6SEL.bit.GPIOSEL = 57;
XIntruptRegs.XINT3CR.bit.POLARITY= 0;//觸發(fā)模式為下降沿觸發(fā)
XIntruptRegs.XINT4CR.bit.POLARITY= 0;
XIntruptRegs.XINT5CR.bit.POLARITY= 0;
XIntruptRegs.XINT6CR.bit.POLARITY= 0;
XIntruptRegs.XINT3CR.bit.ENABLE = 1;//使能中斷
XIntruptRegs.XINT4CR.bit.ENABLE = 1;
XIntruptRegs.XINT5CR.bit.ENABLE = 1;
XIntruptRegs.XINT6CR.bit.ENABLE = 1;
注意一點就是外部中斷1和2只能對GPIO0—GPIO31配置;外部中斷3和4、5、6、7只對GPIO32—GPIO63配置。
基于TMS320F28335信號處理板的設計與實現(xiàn)
硬件系統(tǒng)設計
1.1 方案概述
該系統(tǒng)主要功能是DSC通過ADC采樣芯片對12路模擬信號進行同時采樣。在DSC中進行數(shù)據(jù)處理后通過異步串行收發(fā)器上傳到上位機。同時,上位機也可以通過異步收發(fā)器向DSC發(fā)送預先制定的命令,來控制信號處理板的工作模式和狀態(tài)。
按照功能要求,整個硬件電路可分為3部分:電源模塊、數(shù)字部分和模擬部分。其功能結構框圖如圖1所示。
1.2 電源模塊設計
整個處理板的外部輸入電壓為5 V和±12 V,分別通過對應的電壓轉(zhuǎn)換芯片為模擬和數(shù)字部分提供不同的電壓幅值。對于數(shù)字部分,電源模塊需要為DSC提供1.9 V的核電壓,同時為DSC的外圍和其他芯片提供3.3 V的外圍電壓。本系統(tǒng)選用LT1963AES8集成芯片提供1.9 V,LT1963AEST-3.3集成芯片提供3.3 V。對于模擬部分,系統(tǒng)要求輸入ADC的信號幅值范圍在±12V內(nèi),所以系統(tǒng)分別選用LT1086IT-12和LT11 75IT把輸入的±15V電壓轉(zhuǎn)換成±12V。
1.3 數(shù)字電路設計
數(shù)字部分電路主要是以DSC為中心的應用電路。該部分主要是對ADC傳送的數(shù)據(jù)進行處理、存儲,同時完成DSC同上位機的通信和數(shù)據(jù)傳輸。由圖1可以看到,它包含以下幾個部分。外圍SRAM擴展,EEPROM擴展電路,SCI上位機通信接口電路。
1.3.1 外圍SRAM擴展
考慮到TMS320F28335片內(nèi)的RAM資源有限,加上程序空間和數(shù)據(jù)空間RAM僅為34 kB,16位數(shù)據(jù)寬度,從而需要對片內(nèi)的RAM進行擴展,來滿足較大量程序的運行。本系統(tǒng)選用Cypress公司的CY7C1011CV33-12ZSXE集成芯片,利用TMS320F28335提供的XINTF接口完成片外RAM的擴展。
c++相關文章:c++教程
模數(shù)轉(zhuǎn)換器相關文章:模數(shù)轉(zhuǎn)換器工作原理
脈寬調(diào)制相關文章:脈寬調(diào)制原理 鎖相環(huán)相關文章:鎖相環(huán)原理
評論