帶你了解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 的外部中斷總結(jié):
在這里我們要十分清楚DSP的中斷系統(tǒng)。C28XX一共有16個(gè)中斷源,其中有2個(gè)不可屏蔽的中斷RESET和NMI、定時(shí)器1和定時(shí)器2分別使用中斷13和14。這樣還有12個(gè)中斷都直接連接到外設(shè)中斷擴(kuò)展模塊PIE上。說的簡單一點(diǎn)就是PIE通過12根線與28335核的12個(gè)中斷線相連。而PIE的另外一側(cè)有12*8根線分別連接到外設(shè),如AD、SPI、EXINT等等。這樣PIE共管理12*8=96個(gè)外部中斷。這12組大中斷由28335核的中斷寄存器IER來控制,即IER確定每個(gè)中斷到底屬于哪一組大中斷(如IER |= M_INT12;說明我們要用第12組的中斷,但是第12組里面的什么中斷CPU并不知道需要再由PIEIER確定 )。接下來再由PIE模塊中的寄存器PIEIER中的低8確定該中斷是這一組的第幾個(gè)中斷,這些配置都要告訴CPU(我們不難想象到PIEIER共有12總即從PIEIER1-PIEIER12)。另外,PIE模塊還有中斷標(biāo)志寄存器PIEIFR,同樣它的低8位是來自外部中斷的8個(gè)標(biāo)志位,同樣CPU的IFR寄存器是中斷組的標(biāo)志寄存器。由此看來,CPU的所有中斷寄存器控制12組的中斷,PIE的所有中斷寄存器控制每組內(nèi)8個(gè)的中斷。除此之外,我們用到哪一個(gè)外部中斷,相應(yīng)的還有外部中斷的寄存器,需要注意的就是外部中斷的標(biāo)志要自己通過軟件來清零。而PIE和CPU的中斷標(biāo)志寄存器由硬件來清零。
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組中的每個(gè)中斷都要完成上面的相同配置,剩下的才是去配置自己的中斷。如我們提到的EXINT,即外面來個(gè)低電平我們就進(jìn)入
中斷,完成我們的程序。在這里要介紹一下,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時(shí)鐘和系統(tǒng)時(shí)鐘一樣且支持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;
注意一點(diǎn)就是外部中斷1和2只能對(duì)GPIO0—GPIO31配置;外部中斷3和4、5、6、7只對(duì)GPIO32—GPIO63配置。
基于TMS320F28335信號(hào)處理板的設(shè)計(jì)與實(shí)現(xiàn)
硬件系統(tǒng)設(shè)計(jì)
1.1 方案概述
該系統(tǒng)主要功能是DSC通過ADC采樣芯片對(duì)12路模擬信號(hào)進(jìn)行同時(shí)采樣。在DSC中進(jìn)行數(shù)據(jù)處理后通過異步串行收發(fā)器上傳到上位機(jī)。同時(shí),上位機(jī)也可以通過異步收發(fā)器向DSC發(fā)送預(yù)先制定的命令,來控制信號(hào)處理板的工作模式和狀態(tài)。
按照功能要求,整個(gè)硬件電路可分為3部分:電源模塊、數(shù)字部分和模擬部分。其功能結(jié)構(gòu)框圖如圖1所示。
1.2 電源模塊設(shè)計(jì)
整個(gè)處理板的外部輸入電壓為5 V和±12 V,分別通過對(duì)應(yīng)的電壓轉(zhuǎn)換芯片為模擬和數(shù)字部分提供不同的電壓幅值。對(duì)于數(shù)字部分,電源模塊需要為DSC提供1.9 V的核電壓,同時(shí)為DSC的外圍和其他芯片提供3.3 V的外圍電壓。本系統(tǒng)選用LT1963AES8集成芯片提供1.9 V,LT1963AEST-3.3集成芯片提供3.3 V。對(duì)于模擬部分,系統(tǒng)要求輸入ADC的信號(hào)幅值范圍在±12V內(nèi),所以系統(tǒng)分別選用LT1086IT-12和LT11 75IT把輸入的±15V電壓轉(zhuǎn)換成±12V。
1.3 數(shù)字電路設(shè)計(jì)
數(shù)字部分電路主要是以DSC為中心的應(yīng)用電路。該部分主要是對(duì)ADC傳送的數(shù)據(jù)進(jìn)行處理、存儲(chǔ),同時(shí)完成DSC同上位機(jī)的通信和數(shù)據(jù)傳輸。由圖1可以看到,它包含以下幾個(gè)部分。外圍SRAM擴(kuò)展,EEPROM擴(kuò)展電路,SCI上位機(jī)通信接口電路。
1.3.1 外圍SRAM擴(kuò)展
考慮到TMS320F28335片內(nèi)的RAM資源有限,加上程序空間和數(shù)據(jù)空間RAM僅為34 kB,16位數(shù)據(jù)寬度,從而需要對(duì)片內(nèi)的RAM進(jìn)行擴(kuò)展,來滿足較大量程序的運(yùn)行。本系統(tǒng)選用Cypress公司的CY7C1011CV33-12ZSXE集成芯片,利用TMS320F28335提供的XINTF接口完成片外RAM的擴(kuò)展。
c++相關(guān)文章:c++教程
模數(shù)轉(zhuǎn)換器相關(guān)文章:模數(shù)轉(zhuǎn)換器工作原理
脈寬調(diào)制相關(guān)文章:脈寬調(diào)制原理 鎖相環(huán)相關(guān)文章:鎖相環(huán)原理
評(píng)論