TI DSP入門芯片TMS320F28335
作為一個電子硬件工程師,怎么不能懂DSP,或者我們中有一些同學對DSP的理解還不是很多,今天就讓我們給大家介紹一個DSP的入門芯片,來自TI的TMS320F28335。相信看過了這一系列的內(nèi)容,大家會對DSP有初步的了解。
TMS320F28335簡介:
TMS320F28335采用176引腳LQFP四邊形封裝,其功能結(jié)構(gòu)參見參考文獻。其主要性能如下:
高性能的靜態(tài)CMOS技術(shù),指令周期為6.67 ns,主頻達150 MHz;
高性能的32位CPU,單精度浮點運算單元(FPU),采用哈佛流水線結(jié)構(gòu),能夠快速執(zhí)行中斷響應(yīng),并具有統(tǒng)一的內(nèi)存管理模式,可用C/C++語言實現(xiàn)復雜的數(shù)學算法;
6通道的DMA控制器;
片上256 Kxl6的Flash存儲器,34 Kxl6的SARAM存儲器.1 Kx16 OTPROM和8 Kxl6的Boot ROM。其中Flash,OTPROM,16 Kxl6的SARAM均受密碼保護;
控制時鐘系統(tǒng)具有片上振蕩器,看門狗模塊,支持動態(tài)PLL調(diào)節(jié),內(nèi)部可編程鎖相環(huán),通過軟件設(shè)置相應(yīng)寄存器的值改變CPU的輸入時鐘頻率;
8個外部中斷,相對TMS320F281X系列的DSP,無專門的中斷引腳。GPI00~GPI063連接到該中斷。GPI00一GPI031連接到XINTl,XINT2及XNMI外部中斷,GPl032~GPI063連接到XINT3一XINT7外部中斷;
支持58個外設(shè)中斷的外設(shè)中斷擴展控制器(PIE),管理片上外設(shè)和外部引腳引起的中斷請求;
增強型的外設(shè)模塊:18個PWM輸出,包含6個高分辨率脈寬調(diào)制模塊(HRPWM)、6個事件捕獲輸入,2通道的正交調(diào)制模塊(QEP);
3個32位的定時器,定時器0和定時器1用作一般的定時器,定時器0接到PIE模塊,定時器1接到中斷INTl3;定時器2用于DSP/BIOS的片上實時系統(tǒng),連接到中斷INTl4,如果系統(tǒng)不使用DSP/BIOS,定時器2可用于一般定時器;
串行外設(shè)為2通道CAN模塊、3通道SCI模塊、2個McBSP(多通道緩沖串行接口)模塊、1個SPI模塊、1個I2C主從兼容的串行總線接口模塊;
12位的A/D轉(zhuǎn)換器具有16個轉(zhuǎn)換通道、2個采樣保持器、內(nèi)外部參考電壓,轉(zhuǎn)換速度為80 ns,同時支持多通道轉(zhuǎn)換;
88個可編程的復用GPIO引腳;
低功耗模式;
1.9 V內(nèi)核,3.3 V I/O供電;
符合IEEEll49.1標準的片內(nèi)掃描仿真接口(JTAG);TMS320F28335的存儲器映射需注意以下幾點:
片上外設(shè)寄存器塊0~3只能用于數(shù)據(jù)存儲區(qū),用戶不能在該存儲區(qū)內(nèi)寫入程序。
OTP ROM區(qū)(0x38 0000~0x38 03FF)為只讀空間,存儲A/D轉(zhuǎn)換器的校準程序,用戶不能對此空間寫入程序。
即使不應(yīng)用eCAN模塊,也應(yīng)使能時鐘模塊,將為eCAN分配的RAM空間用作一般RAM。
如果設(shè)置安全代碼,存儲器區(qū)域Ox33FF80~0x33FFF5需全部寫入數(shù)據(jù)0x0000,而不能用于存儲程序或數(shù)據(jù)。反之,0x33FF80~Ox33FEF可以存儲數(shù)據(jù)或程序,其中0x33FFF0~Ox33FFF5只能存儲數(shù)據(jù)。
仿真工具和開發(fā)環(huán)境:
TMS320F28335開發(fā)工具有:標準的優(yōu)化C/C++編譯/匯編/連接器,CCS集成開發(fā)環(huán)境,評估板和XDS510仿真器。其中CCS是一個界面友好,功能完善的集成的開發(fā)平臺,具有編輯、匯編、編譯、軟硬件仿真調(diào)試功能。
TMS320F28335 的ADC:
TMS320F28335上有16通道、12位的模數(shù)轉(zhuǎn)換器ADC。他可以被配置為兩個獨立的8通道輸入模式,也可以通過配置AdcRegs.ADCTRL1.bit.SEQ_CASC=1,將其設(shè)置為一個16通道的級聯(lián)輸入模式。輸入的方式可以通過配置 AdcRegs.ADCTRL1.bit.ACQ_PS=1,將其設(shè)置為順序采集。即從低通道開始到高通道結(jié)束。 值得注意的是片上ADC的輸入電壓范圍為0--3V,一旦超過3V,片上的ADC模塊將會被燒掉。TI上的DATASHEET介紹其ADC的精度可達到12位,實際上達到不了。經(jīng)測試,我們估計最好的時候可以達到11位就不錯了。下面我們來簡單介紹一下ADC模塊的原理。其數(shù)字值由下面公司來計算,其中公式中的3為片內(nèi)參考電壓Digital Value=4096*(Input Analog Voltage-ADCLO)/3 ;(when 0 V 《 input 《 3 V)。ADC可以分為SEQ1和SEQ2兩個模塊,其中SEQ1包括ADCIN00--ADCIN07;SEQ2包括ADCIN08--ADCIN15。SEQ1模塊可以通過軟件、PWM、外部中斷引腳來啟動,而SEQ2不可以通過外部中斷引腳來啟動。另外就是ADC可以與DMA進行數(shù)據(jù)交換。
TMS320F28335 的時鐘介紹:
TMS320F28335上有一個基于PLL電路的片上時鐘模塊,為CPU及外設(shè)提供時鐘有兩種方式:一種是用外部的時鐘源,將其連接到X1引腳上或者XCLKIN引腳上,X2接地;另一種是使用振蕩器產(chǎn)生時鐘,用30MHz的晶體和兩個20PF的電容組成的電路分別連接到X1和X2引腳上,XCLKIN引腳接地。我們常用第二種來產(chǎn)生時鐘。此時鐘將通過一個內(nèi)部PLL鎖相環(huán)電路,進行倍頻。由于F28335的最大工作頻率是150M,所以倍頻值最大是5。其中倍頻值由PLLCR的低四位和PLLSTS的第7、8位來決定。其詳細的倍頻值可以參照TMS320F28335的Datasheet。下面是F28335的時鐘設(shè)置:
void InitPll(Uint16 val, Uint16 divsel)
{
// Make sure the PLL is not running in limp mode
if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0)
{
// Missing external clock has been detected
// Replace this line with a call to an appropriate
// SystemShutdown(); function.
asm(“ ESTOP0”);
}
// DIVSEL MUST be 0 before PLLCR can be changed from
// 0x0000. It is set to 0 by an external reset XRSn
// This puts us in 1/4
if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
{
EALLOW;
SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
EDIS;
}
// Change the PLLCR
if (SysCtrlRegs.PLLCR.bit.DIV != val)
{
EALLOW;
// Before setting PLLCR turn off missing clock detect logic
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
SysCtrlRegs.PLLCR.bit.DIV = val;
EDIS;
// Optional: Wait for PLL to lock.
// During this time the CPU will switch to OSCCLK/2 until
// the PLL is stable. Once the PLL is stable the CPU will
// switch to the new PLL value.
//
// This time-to-lock is monitored by a PLL lock counter.
//
// Code is not required to sit and wait for the PLL to lock.
// However, if the code does anything that is timing critical,
// and requires the correct clock be locked, then it is best to
// wait until this switching has completed.
// Wait for the PLL lock bit to be set.
// The watchdog should be disabled before this loop, or fed within
// the loop via ServiceDog()。
// Uncomment to disable the watchdog
DisableDog();
while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)
{
// Uncomment to service the watchdog
// ServiceDog();
}
EALLOW;
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
EDIS;
}
// If switching to 1/2
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個中斷源,其中有2個不可屏蔽的中斷RESET和NMI、定時器1和定時器2分別使用中斷13和14。這樣還有12個中斷都直接連接到外設(shè)中斷擴展模塊PIE上。說的簡單一點就是PIE通過12根線與28335核的12個中斷線相連。而PIE的另外一側(cè)有12*8根線分別連接到外設(shè),如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個的中斷。除此之外,我們用到哪一個外部中斷,相應(yīng)的還有外部中斷的寄存器,需要注意的就是外部中斷的標志要自己通過軟件來清零。而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信號處理板的設(shè)計與實現(xiàn)
硬件系統(tǒng)設(shè)計
1.1 方案概述
該系統(tǒng)主要功能是DSC通過ADC采樣芯片對12路模擬信號進行同時采樣。在DSC中進行數(shù)據(jù)處理后通過異步串行收發(fā)器上傳到上位機。同時,上位機也可以通過異步收發(fā)器向DSC發(fā)送預先制定的命令,來控制信號處理板的工作模式和狀態(tài)。
按照功能要求,整個硬件電路可分為3部分:電源模塊、數(shù)字部分和模擬部分。其功能結(jié)構(gòu)框圖如圖1所示。
1.2 電源模塊設(shè)計
整個處理板的外部輸入電壓為5 V和±12 V,分別通過對應(yīng)的電壓轉(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è)計
數(shù)字部分電路主要是以DSC為中心的應(yīng)用電路。該部分主要是對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的擴展。
XINTF是TMS320F28335所提供的一個非復用異步總線,用來完成外部異步器件的擴展。XINTF可以映射外設(shè)到3個固定的內(nèi)存映射區(qū)域,當外部資源掛接到某個區(qū)域時,則需要通過XINTF的一個片選信號來進行外部資源的選定。
CY7C1011CV33-12ZSXE是一個CMOS的靜態(tài)RAM存儲器,其容量大小為64 kB,16位數(shù)據(jù)寬度。圖2是外圍SRAM擴展電路連接圖。
圖2 外圍SRAM擴展電路連接圖
如圖2所示,本系統(tǒng)選用ZONE7區(qū)域作為RAM的外圍擴展。DSC通過其XZCS7管腳向片外SRAM發(fā)送片選信號。WE信號用來控制DSC對片外SRAM的讀寫,當DSC的XWEo管腳為低電平,則DSC對片外RAM進行讀寫操作;XWEo為高電平,同時DSC的XRD管腳為低電平,則為讀操作。
1.3.2 EEPROM擴展
考慮到系統(tǒng)在加電后,需要對一些設(shè)備的狀態(tài)進行一些初始化,而這些初始化的數(shù)據(jù)在設(shè)備運轉(zhuǎn)時又需要不斷改變。因此,在設(shè)備運轉(zhuǎn)過程中,實時將數(shù)據(jù)加以保存,以至于設(shè)備斷電后數(shù)據(jù)依舊存在。本系統(tǒng)利用TMS320F28335的SPI接口外擴了一個EEPROM保存設(shè)備運轉(zhuǎn)時實時獲取的初始化數(shù)據(jù)。本系統(tǒng)選用Atmel公司的AT25160集成芯片。該芯片的容量為2 kB,其寬度為8位數(shù)據(jù)寬度。模塊電路如圖3所示。
圖3 EEPROM鏈接
如圖3所示,DSC通過SPISTEA管腳發(fā)送片選信號選中EEPROM,通過SPICLKA管腳發(fā)送SPI傳輸時鐘,而數(shù)據(jù)的寫入和讀出則分別通過SPIS-IMOA和SPISOMIA管腳完成。EEPROM中的HOLD管腳用來暫停與主設(shè)備間串行數(shù)據(jù)傳輸,WP管腳則用來進行對EEPROM的寫保護,如果其為低電平,則主機無法向其寫人數(shù)據(jù)。系統(tǒng)對兩管腳輸入高電平,保證EEPROM在讀寫操作過程中一直可以進行而不被中斷。
1.3.3 SCI上位機通信接口
為了實現(xiàn)上位機同DSC異步的通信和數(shù)據(jù)傳輸,本系統(tǒng)利用TMS320F28335所提供的SCI接口來完成所需要求。SCI是一個2線的異步串行端口,即常說的UART。其數(shù)據(jù)的收發(fā)支持全雙工通信,內(nèi)部收發(fā)均有一個16級的FIFO來緩存數(shù)據(jù)。為了保證數(shù)據(jù)可靠,SCI提供奇偶校驗,數(shù)據(jù)溢出檢測等操作。SCI接口輸出信號的電平是LV—TTL電氣標準,通過RS232收發(fā)轉(zhuǎn)換器加以驅(qū)動,獲得RS232電氣標準的信號,以便上位機接收。
1.4 模擬電路設(shè)計
模擬部分電路主要是以ADC為中心的應(yīng)用電路。其主要實現(xiàn)模擬信號的處理,采集等工作。其中核心部分為AD轉(zhuǎn)換。
AD轉(zhuǎn)換部分,主要是通過數(shù)字采樣來完成模擬信號到數(shù)字信號的轉(zhuǎn)變。本系統(tǒng)選用的ADC芯片是美國模擬電氣公司的AD7656。模數(shù)轉(zhuǎn)換芯片AD7656是高集成度、6通道6 bit逐次逼近(SAR)型ADC,內(nèi)含1個2.5 V基準電壓和基準緩沖器。該器件的功耗比最接近的同類雙極性ADC降低了60%。AD7656在每通道250kb·s-1采樣速率下的精度是同類產(chǎn)品的兩倍??梢杂梢_和軟件選擇模擬電壓范圍:10 V或5 V;模擬電源電壓范圍為4.75~5.25 V,因而大范圍的工作電壓使其無需電平轉(zhuǎn)換等其他措施便可以直接與DSC相連;提供有并行和串行接口??梢怨ぷ髟?40~85℃。標準模式5 V供電,250 kb·s-1時的功耗為140 mW,待機時僅為100μW。基于iCOMS技術(shù)制造的AD7656可以滿足工業(yè)領(lǐng)域?qū)Ψ直媛?、多通道、轉(zhuǎn)換速率和功耗等方面的較高要求。
AD7656支持和DSC的并口、串口數(shù)據(jù)傳輸,通過SER/PAR SEL管腳的高低電平的選擇,來控制采樣后數(shù)字信號的傳輸方式。當其為高電平,則使用串行傳輸方式,反之則使用并行傳輸方式。本系統(tǒng)選用并行傳輸方式。在具體的轉(zhuǎn)換過程中,每片AD7656內(nèi)部的6條采樣通路可以分為A、B、C共3組,其中每組通路包含2路通路。3組通路可以同時采樣,也可以單獨采樣,而每組內(nèi)的兩條通路同時采樣。管腳CONVSTA,CONVSTB,CONVSTC分別用來對A、B、C采樣通路進行控制。當一個上升沿電平到達任一管腳,則該管腳對應(yīng)模數(shù)轉(zhuǎn)換的2路通路被啟動,開始完成模數(shù)轉(zhuǎn)換。當把三管腳連接,3組采樣通路,即所有的6條采樣通路同時采樣。系統(tǒng)選用3組通路同時采樣。
當DSC連接有多片ADC時,則需要通過CS片選管腳來進行ADC的選擇。當采樣開始,BUSY管腳將從低電平變?yōu)楦唠娖剑谡麄€采樣的過程中,BUSY一直保持高電平,當采樣結(jié)束,BUSY則從高電平變?yōu)榈碗娖?,此時DSC就可以開始讀取數(shù)據(jù)。本系統(tǒng)則利用該管腳作為DSC外部中斷源的輸入管腳。當BUSY上電平由高變低,則通知DSC產(chǎn)生中斷,來進行數(shù)據(jù)的讀取。
本系統(tǒng)選用2片AD7656完成12路數(shù)據(jù)采樣,通過DSC的XINTF ZONE6把ADC設(shè)備映射到DSC上,進行數(shù)據(jù)傳輸。通過地址譯碼和邏輯控制實現(xiàn)2片ADC同DSC的連接。具體結(jié)構(gòu)如圖4所示。
圖4 系統(tǒng)DSC通ADC連
圖4中左下角為邏輯部分,通過DSC的地址線BA17和BA18完成對ADC的選擇。可以得到ADC0和ADC1在DSC中的地址映射為0x180000和0x1400 00。而外部輸入40 kHz的時鐘,作為ADC的采樣頻率。兩個ADC對應(yīng)DSC的同一個中斷,當任意一片ADC采樣完畢,都會引起DSC的中斷,從而進行采樣數(shù)據(jù)的讀取。
2.系統(tǒng)軟件設(shè)計
如前所述,整個信號處理板一共有12路模擬信號通路,通過傳感器接收到12路模擬信號。2片AD7656把12路模擬信號轉(zhuǎn)換為數(shù)字信號傳送給TMS320F28335,在TMS320F28335中對這些采集到的數(shù)據(jù)做相應(yīng)處理后通過SCI傳送給上位機。同時對有必要保存的數(shù)據(jù)通過SPI接口保存到EEPROM中。整個采集、通信過程由上位機發(fā)送相關(guān)的命令來加以控制。程序的流程如圖5所示。
圖5 系統(tǒng)軟件流程圖
在主函數(shù)中,程序首先完成相應(yīng)模塊的初始化,設(shè)定好CPU運行的時鐘,選定好各個模塊的工作模式,然后讀取EEPROM中的設(shè)備初始化數(shù)據(jù),后進行入等待狀態(tài)。此時CPU等待ADC采樣的數(shù)據(jù),當ADC采樣過程結(jié)束,則進入ADC中斷響應(yīng)函數(shù),在此函數(shù)中,主要完成數(shù)據(jù)的讀取,對于小信號,通過程控放大器放大其幅值,然后存儲到自定義的緩存區(qū)中。兩個串口工作方式均由上位機發(fā)送命令,從而觸發(fā)SCI的串口收中斷服務(wù)函數(shù)。然后在中斷服務(wù)函數(shù)中完成對應(yīng)命令要求。系統(tǒng)選用串口1完成采集數(shù)據(jù)向上位機的傳輸,串口0完成向EEPROM發(fā)送需保存的數(shù)據(jù)和一些相關(guān)操作。而SCI0和SCI1分別對應(yīng)DSC外設(shè)中斷的INT9.1和INT9.3,外部中斷XINT1對應(yīng)INT1.4。程序設(shè)置兩個串口的傳輸速率均為38.4 kb·s-1。
在設(shè)備工作時,由于SCI1的中斷源是上位機的命令發(fā)送,系統(tǒng)規(guī)定上位機每20ms發(fā)送一個數(shù)據(jù)接受命令,因此SCI1的中斷響應(yīng)周期為td= 20 ms。而由于采樣率為40 kHz,因此ADC的中斷服務(wù)函數(shù)響應(yīng)周期為0.025 ms。系統(tǒng)規(guī)定采集一組數(shù)據(jù)的個數(shù)為50,那么采集一組數(shù)據(jù)的時間即為tc=1.25 ms,所以在一次SCI1中斷過程中,ADC會采集16組數(shù)據(jù)??紤]到串口傳輸?shù)牟ㄌ芈蕿?8.4kb·s-1,因此傳送一個16位的數(shù)據(jù)時間為tt=0.417 ms。而一組數(shù)據(jù)采集時間加上串口數(shù)據(jù)傳輸?shù)臅r間為tc+tt=1.667 ms《
4 結(jié)束語
所設(shè)計的信號處理板以TMS320F28335為核心處理器,利用AD7656完成模擬信號采樣的功能硬件平臺。TMS320F28335片內(nèi)集成了豐富的外圍資源,通過驅(qū)動軟件的配置和硬件系統(tǒng)的設(shè)計,可以方便、高效地完成大量數(shù)字信號的處理和運算。AD7656的6路模擬信號采集和16位高精度的模擬信號采樣,較好地完成了模擬信號的數(shù)字化轉(zhuǎn)換,減少了模擬信號采樣的失真。實驗證明,信號處理板所采集到的數(shù)字信號的誤差值約為1.37 mV,可達14位的采樣精度。