adc转换程序.docx
- 文档编号:23657873
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:9
- 大小:16.57KB
adc转换程序.docx
《adc转换程序.docx》由会员分享,可在线阅读,更多相关《adc转换程序.docx(9页珍藏版)》请在冰豆网上搜索。
adc转换程序
//TIFile$Revision:
/main/1$
//Checkin$Date:
May27,200913:
04:
17$
//###########################################################################
//
//FILE:
Example_2823xAdcSeq_ovdTest.c
//
//TITLE:
DSP2823xADCSeqOverridemodeTest.
//
//ASSUMPTIONS:
//
//ThisprogramrequirestheDSP2823xheaderfiles.
//
//MakesuretheCPUclockspeedisproperlydefinedin
//DSP2833x_examples.hbeforecompilingthisexample.
//
//ConnectthesignaltobeconvertedtoChannelA0.
//
//Assupplied,thisprojectisconfiguredfor"boottoSARAM"
//operation.The2823xBootModetableisshownbelow.
//ForinformationonconfiguringthebootmodeofaneZdsp,
//pleaserefertothedocumentationincludedwiththeeZdsp,
//
//$Boot_Table:
//
//GPIO87GPIO86GPIO85GPIO84
//XA15XA14XA13XA12
//PUPUPUPU
//==========================================
//1111JumptoFlash
//1110SCI-Aboot
//1101SPI-Aboot
//1100I2C-Aboot
//1011eCAN-Aboot
//1010McBSP-Aboot
//1001JumptoXINTFx16
//1000JumptoXINTFx32
//0111JumptoOTP
//0110ParallelGPIOI/Oboot
//0101ParallelXINTFboot
//0100JumptoSARAM<-"boottoSARAM"//0011Branchtocheckbootmode
//0010Boottoflash,bypassADCcal
//0001BoottoSARAM,bypassADCcal
//0000BoottoSCI-A,bypassADCcal
//Boot_Table_End$
//
//DESCRIPTION:
//
//ChannelA0isconvertedforeverandloggedinabuffer(SampleTable)
//Usingsequencer1insequenceroverridemode.SequencerisSequentialmode
//withsamplerateof1/(3*40ns)=8.3MHz
//
//OpenamemorywindowtoSampletTabletoobservethebuffer
//RUNforawhileandstopandseethetablecontents.
//
//WatchVariables:
//SampleTable-Logofconvertedvalues.
//GPIO34-TogglesoneveryADCsequencerflag
//
//###########################################################################
//
//Originalsourceby:
S.S.
//
//$TIRelease:
2833x/2823xHeaderFilesV1.32$
//$ReleaseDate:
June28,2010$
//###########################################################################
#include"DSP28x_Project.h"//DeviceHeaderfileandExamplesIncludeFile
//Determinewhentheshifttorightjustifythedatatakesplace
//Onlyoneoftheseshouldbedefinedas1.
//Theothertwoshouldbedefinedas0.
#definePOST_SHIFT0//Shiftresultsaftertheentiresampletableisfull
#defineINLINE_SHIFT1//Shiftresultsasthedataistakenfromtheresultsregsiter
#defineNO_SHIFT0//Donotshifttheresults
//ADCstartparameters
#if(CPU_FRQ_150MHZ)//Default-150MHzSYSCLKOUT
#defineADC_MODCLK0x3//HSPCLK=SYSCLKOUT/2*ADC_MODCLK2=150/(2*3)=25.0MHz#endif
#if(CPU_FRQ_100MHZ)
#defineADC_MODCLK0x2//HSPCLK=SYSCLKOUT/2*ADC_MODCLK2=100/(2*2)=25.0MHz#endif
#defineADC_CKPS0x0//ADCmoduleclock=HSPCLK/1=25.5MHz/
(1)=25.0MHz
#defineADC_SHCLK0x1//S/HwidthinADCmoduleperiods=2ADCcycle
#defineAVG1000//Averagesamplelimit
#defineZOFFSET0x00//AverageZerooffset
#defineBUF_SIZE1024//Samplebuffersize
//Globalvariableforthisexample
Uint16SampleTable[BUF_SIZE];
main()
{
Uint16i;
Uint16array_index;
//Step1.InitializeSystemControl:
//PLL,WatchDog,enablePeripheralClocks
//ThisexamplefunctionisfoundintheDSP2833x_SysCtrl.cfile.
InitSysCtrl();
//Specificclocksettingforthisexample:
EALLOW;
SysCtrlRegs.HISPCP.all=ADC_MODCLK;//HSPCLK=SYSCLKOUT/ADC_MODCLKEDIS;
//Step2.InitializeGPIO:
//ThisexamplefunctionisfoundintheDSP2833x_Gpio.cfileand
//illustrateshowtosettheGPIOtoit'sdefaultstate.
//InitGpio();//Skippedforthisexample
//EnablethepinGPIO34asoutput
EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO34=0;//GPIOpin
GpioCtrlRegs.GPBDIR.bit.GPIO34=1;//Outputpin
EDIS;
//Step3.ClearallinterruptsandinitializePIEvectortable:
//DisableCPUinterrupts
DINT;
//InitializethePIEcontrolregisterstotheirdefaultstate.
//ThedefaultstateisallPIEinterruptsdisabledandflags
//arecleared.
//ThisfunctionisfoundintheDSP2833x_PieCtrl.cfile.
InitPieCtrl();
//DisableCPUinterruptsandclearallCPUinterruptflags:
IER=0x0000;
IFR=0x0000;
//InitializethePIEvectortablewithpointerstotheshellInterrupt
//ServiceRoutines(ISR).
//Thiswillpopulatetheentiretable,eveniftheinterrupt
//isnotusedinthisexample.Thisisusefulfordebugpurposes.
//TheshellISRroutinesarefoundinDSP2833x_DefaultIsr.c.
//ThisfunctionisfoundinDSP2833x_PieVect.c.
InitPieVectTable();
//Step4.InitializealltheDevicePeripherals:
//ThisfunctionisfoundinDSP2833x_InitPeripherals.c
//InitPeripherals();//Notrequiredforthisexample
InitAdc();//Forthisexample,inittheADC
//SpecificADCsetupforthisexample:
AdcRegs.ADCTRL1.bit.ACQ_PS=ADC_SHCLK;//Sequentialmode:
Samplerate=1/[(2+ACQ_PS)*ADCclockinns]
//=1/(3*40ns)=8.3MHz(for150MHzSYSCLKOUT)
//=1/(3*80ns)=4.17MHz(for100MHzSYSCLKOUT)
//IfSimultaneousmodeenabled:
Samplerate=1/[(3+ACQ_PS)*ADCclockinns]AdcRegs.ADCTRL3.bit.ADCCLKPS=ADC_CKPS;
AdcRegs.ADCTRL1.bit.SEQ_CASC=1;//1Cascadedmode
AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;
AdcRegs.ADCTRL1.bit.CONT_RUN=1;//Setupcontinuousrun
AdcRegs.ADCTRL1.bit.SEQ_OVRD=1;//EnableSequenceroverridefeature
AdcRegs.ADCCHSELSEQ1.all=0x0;//InitializeallADCchannelselectstoA0
AdcRegs.ADCCHSELSEQ2.all=0x0;
AdcRegs.ADCCHSELSEQ3.all=0x0;
AdcRegs.ADCCHSELSEQ4.all=0x0;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1=0x7;//convertandstorein8resultsregisters
//Step5.Userspecificcode,enableinterrupts:
//ClearSampleTable
for(i=0;i { SampleTable[i]=0; } //StartSEQ1 AdcRegs.ADCTRL2.all=0x2000; for(;;) {//TakeADCdataandlogtheminSampleTablearray //Initalizethearrayindex.Thispointstothecurrent //locationwithintheSampleTable array_index=0; for(i=0;i<(BUF_SIZE/16);i++) { //Waitforint1 while(AdcRegs.ADCST.bit.INT_SEQ1==0){} GpioDataRegs.GPBSET.bit.GPIO34=1;//SetGPIO34formonitoring-optional AdcRegs.ADCST.bit.INT_SEQ1_CLR=1; #ifINLINE_SHIFT SampleTable[array_index++]=((AdcRegs.ADCRESULT0)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT1)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT2)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT3)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT4)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT5)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT6)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT7)>>4); #endif//--INLINE_SHIFT #ifNO_SHIFT||POST_SHIFT SampleTable[array_index++]=((AdcRegs.ADCRESULT0)); SampleTable[array_index++]=((AdcRegs.ADCRESULT1)); SampleTable[array_index++]=((AdcRegs.ADCRESULT2)); SampleTable[array_index++]=((AdcRegs.ADCRESULT3)); SampleTable[array_index++]=((AdcRegs.ADCRESULT4)); SampleTable[array_index++]=((AdcRegs.ADCRESULT5)); SampleTable[array_index++]=((AdcRegs.ADCRESULT6)); SampleTable[array_index++]=((AdcRegs.ADCRESULT7)); #endif//--NO_SHIFT||POST_SHIFT while(AdcRegs.ADCST.bit.INT_SEQ1==0){} GpioDataRegs.GPBCLEAR.bit.GPIO34=1;//ClearGPIO34formonitoring-optionalAdcRegs.ADCST.bit.INT_SEQ1_CLR=1; #ifINLINE_SHIFT SampleTable[array_index++]=((AdcRegs.ADCRESULT8)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT9)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT10)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT11)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT12)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT13)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT14)>>4); SampleTable[array_index++]=((AdcRegs.ADCRESULT15)>>4); #endif//--INLINE_SHIFT #ifNO_SHIFT||POST_SHIFT SampleTable[array_index++]=((AdcRegs.ADCRESULT8)); SampleTable[array_index++]=((AdcRegs.ADCRESULT9)); SampleTable[array_index++]=((AdcRegs.ADCRESULT10)); SampleTable[array_index++]=((AdcRegs.ADCRESULT11)); SampleTable[array_index++]=((AdcRegs.ADCRESULT12)); SampleTable[array_index++]=((AdcRegs.ADCRESULT13)); SampleTable[array_index++]=((AdcRegs.ADCRESULT14)); SampleTable[array_index++]=((AdcRegs.ADCRESULT15)); #endif//--NO_SHIFT||POST_SHIFT } #ifPOST_SHIFT //Forpostshifting,shifttheADCresults //intheSampleTablebufferafterthebufferisfull. for(i=0;i { SampleTable[i]=((SampleTable[i])>>4); } #endif//--POST_SHIFT GpioDataRegs.GPBCLEAR.bit.GPIO34=1;//ClearGPIO34formonitoring-optional } } //===========================================================================//Nomore. //===========================================================================
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- adc 转换 程序