首页 DSP模数转换单元

DSP模数转换单元

举报
开通vip

DSP模数转换单元第七讲F28335的ADC(一)、F28335中ADC结构及特点(二)、F28335中ADC的工作模式(三)、F28335中ADC的校准(四)、F28335中ADC的时钟与结果Email:zdh2010_1234@163.com密码:zdh2010**F28335的ADC结构F28335的ADC模块一共有16个采样通道;A组、B组采样通道分别使用采样保持器A(S/H-A)及采样保持器B(S/H-B);ADC模块具有多个输入通道,但是内部只有一个转换器当有多路信号需要转换时,ADC模块通过AnalogMUX模拟多路服...

DSP模数转换单元
第七讲F28335的ADC(一)、F28335中ADC结构及特点(二)、F28335中ADC的工作模式(三)、F28335中ADC的校准(四)、F28335中ADC的时钟与结果Email:zdh2010_1234@163.com密码:zdh2010**F28335的ADC结构F28335的ADC模块一共有16个采样通道;A组、B组采样通道分别使用采样保持器A(S/H-A)及采样保持器B(S/H-B);ADC模块具有多个输入通道,但是内部只有一个转换器当有多路信号需要转换时,ADC模块通过AnalogMUX模拟多路服用器的控制,保证同一时间只允许1路信号输入到ADC的转换器,这就是SOC排序器的作用;F28335的ADC的主要特点与F2812的ADC相同点12位的分辨率,内置双组采样/保持器(S/H);16路模拟输入(0~3V);2个模拟输入复选器:每通道8路模拟输入;2个采样/保持单元(每组一个);支持串行、并行2种采样工作模式;2个独立的8通道序列化:双序列化模式+级联模式;16个独立的结果转换寄存器(可分别设定地址),用于保存转换结构;ADC采样端口的最高输入电压为3v,实际应用最大值设定在3v的80%左右,若电压超过3v或输入负压都会烧毁DSP。与F2812的ADC不同点281x系列ADC模块的时钟频率最高可配置成25MHz,采样频率最高为12.5MHz,但2833x系列ADC模块的时钟频率最高只可配置成12.5MHz,采样频率最高为6.25MHz;3种序列启动(SOC)方式中除相同的软件直接启动和外部引脚启动外,第三种281x是EVA、EVB事件管理器启动,而在F28335中是ePWM1~6模块启动;281x不具备ADC采样校准功能,只能借助外部引脚电平的准确度来提高其采样精度,而28335芯片出厂时已将该功能程序ADC_Cal()固化于TI保留的OTPROM中,用户只需上电调用即可281x的ADC转换结果存放在结果寄存器的高12位,2833x的ADC转换结果可根据ADC的映射关系存放在结果寄存器的低12位。ADC功能框图(级联模式)12-bitA/DConverterResultSelectResultMUXRESULT0...RESULT1RESULT2RESULT15CHSEL00(state0)CHSEL01(state1)CHSEL02(state2)CHSEL03(state3)CHSEL15(state15)...MAX_CONV1AutosequencerStartSequenceTriggerSOCEOCSoftwareEVAEVBExtPin(ADCSOC)MUXAADCINA0ADCINA1ADCINA7...MUXBADCINB0ADCINB1ADCINB7...S/HAS/HMUXS/HBAdcRegs.ADCCHSELSEQ1.bit.CONV00=0x3;.   AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x2;ADC功能框图(双序列模式)12-bitA/DConverterSoftwareEVAExtPin(ADCSOC)ResultSelectResultMUXRESULT0...RESULT1RESULT7ResultSelectRESULT8...RESULT9RESULT15CHSEL00(state0)CHSEL01(state1)CHSEL02(state2)CHSEL07(state7)...MAX_CONV1AutosequencerStartSequenceTriggerSOC1/EOC1SEQ1CHSEL08(state8)CHSEL09(state9)CHSEL10(state10)CHSEL15(state15)...MAX_CONV2AutosequencerStartSequenceTriggerSEQ2SequencerArbiterSOC2/EOC2SoftwareEVBMUXAADCINA0ADCINA1ADCINA7...MUXBADCINB0ADCINB1ADCINB7...S/HAS/HMUXS/HB顺序采样的级联模式顺序采样的双序列模式同步采样的级联模式同步采样的双序列模式ADC的4种工作方式ADC的工作方式寄存器设置SEQ_CASC(ADC排序器选择标志位)置0:双序列模式;SEQ1和SEQ2作为2个8状态序列发生器工作置1:级联模式;SEQ1和SEQ2作为单个16状态序列发生器工作(SEQ)ADC控制寄存器ADCCTRL1ADC的工作方式寄存器设置SMODE_SEL(ADC采样模式选择位)置0:选择顺序采样模式;置1:选择同步采样模式。ADC控制寄存器ADCCTRL3ADC的工作方式寄存器设置MAXCONV2:SEQ2序列最大转换数。对于SEQ2操作使用MAXCONV2定义其最大转换通道数。MAXCONV1:SEQ1序列最大转换数。对于SEQ1操作或级联操作下使用MAXCONV1定义其最大转换通道数。ADC最大转换通道寄存器MAXCONV顺序采样的级联模式按照A6、A7、A4、A5、A2、A3、B0、B2的顺序采集8个通道AdcRegs.ADCTRL3.bit.SMODE_SEL=0x0;//顺序采样模式AdcRegs.ADCtrl1.bit.SEQ_CASC=0x01;//级联模式AdcRegs.ADCMAXCONV.all=0x0007;//8个通道AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x6;//ADCINA6AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x7;//ADCINA7AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x4;//ADCINA4AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x5;//ADCINA5AdcRegs.ADCCHSELSEQ2.bit.CONV04=0x2;//ADCINA2AdcRegs.ADCCHSELSEQ2.bit.CONV05=0x3;//ADCINA3AdcRegs.ADCCHSELSEQ2.bit.CONV06=0x8;//ADCINB0AdcRegs.ADCCHSELSEQ2.bit.CONV07=0xA;//ADCINB2//按该方式ADC结果寄存器存放的数据ADCINA6->ADCRESULT0ADCINA7->ADCRESULT1ADCINA4->ADCRESULT2ADCINA5->ADCRESULT3ADCINA2->ADCRESULT4ADCINA3->ADCRESULT5ADCINB0->ADCRESULT6ADCINB2->ADCRESULT7顺序采样的级联模式顺序采样的双序列模式按照A0、A2、A1、A3、A5、A4、B0、B4、B2、B6的顺序采集AdcRegs.ADCTRL3.bit.SMODE_SEL=0x0;//顺序采样模式AdcRegs.ADCtrl1.bit.SEQ_CASC=0x00;//双序列模式AdcRegs.ADCMAXCONV.all=0x0035;//A组6个,B组4个AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//ADCINA0AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x2;//ADCINA2AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x1;//ADCINA1AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x3;//ADCINA3AdcRegs.ADCCHSELSEQ2.bit.CONV04=0x5;//ADCINA5AdcRegs.ADCCHSELSEQ2.bit.CONV05=0x4;//ADCINA4AdcRegs.ADCCHSELSEQ3.bit.CONV08=0x8;//ADCINB0AdcRegs.ADCCHSELSEQ3.bit.CONV09=0xC;//ADCINB4AdcRegs.ADCCHSELSEQ3.bit.CONV10=0xA;//ADCINB2AdcRegs.ADCCHSELSEQ3.bit.CONV11=0xE;//ADCINB6//按该方式ADC结果寄存器存放的数据ADCINA0->ADCRESULT0ADCINA2->ADCRESULT1ADCINA1->ADCRESULT2ADCINA3->ADCRESULT3ADCINA5->ADCRESULT4ADCINA4->ADCRESULT5ADCINB0->ADCRESULT6ADCINB4->ADCRESULT7ADCINB2->ADCRESULT8ADCINB6->ADCRESULT9顺序采样的双序列模式同步采样的级联模式ADC模块一共采样10个通道,按照A6、B6、A7、B7、A2、B2、A5、B5、A3、B3顺序AdcRegs.ADCTRL3.bit.SMODE_SEL=0x1;//同步采样模式AdcRegs.ADCtrl1.bit.SEQ_CASC=0x01;//级联模式AdcRegs.ADCMAXCONV.all=0x0005;//10个通道AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x6;//A6、B6AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x7;//A7、B7AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x2;//A2、B2AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x5;//A5、B5AdcRegs.ADCCHSELSEQ2.bit.CONV04=0x3;//A3、B3同步采样的级联模式//按该方式ADC结果寄存器存放的数据ADCINA6->ADCRESULT0ADCINB6->ADCRESULT1ADCINA7->ADCRESULT2ADCINB7->ADCRESULT3ADCINA2->ADCRESULT4ADCINB2->ADCRESULT5ADCINA5->ADCRESULT6ADCINB5->ADCRESULT7ADCINA3->ADCRESULT8ADCINB3->ADCRESULT9同步采样的双序列模式ADC一共采样16个通道,按照A0、B0、A1、B1、A2、B2、A3、B3、A4、B4、A5、B5、A6、B6、A7、B7的顺序。AdcRegs.ADCtrl1.bit.SEQ_CASC=0x00;//双序列模式AdcRegs.ADCTRL3.bit.SMODE_SEL=0x1;//同步模式AdcRegs.ADCMAXCONV.all=0x0033;//每个排序器4对AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//A0B0AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x1;//A1B1AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x2;//A2B2AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x3;//A3B3AdcRegs.ADCCHSELSEQ3.bit.CONV08=0x4;//A4B4AdcRegs.ADCCHSELSEQ3.bit.CONV09=0x5;//A5B5AdcRegs.ADCCHSELSEQ3.bit.CONV10=0x6;//A6B6AdcRegs.ADCCHSELSEQ3.bit.CONV11=0x7;//A7B7同步采样的双序列模式//按该方式ADC结果寄存器存放的数据ADCINA0->ADCRESULT0ADCINB0->ADCRESULT1ADCINA1->ADCRESULT2ADCINB1->ADCRESULT3ADCINA2->ADCRESULT4ADCINB2->ADCRESULT5ADCINA3->ADCRESULT6ADCINB3->ADCRESULT7ADCINA4->ADCRESULT8ADCINB4->ADCRESULT9ADCINA5->ADCRESULT10ADCINB5->ADCRESULT11ADCINA6->ADCRESULT12ADCINB6->ADCRESULT13ADCINA7->ADCRESULT14ADCINB7->ADCRESULT15ADC的上电校准功能预先把AD采样偏移量存放于ADCOFFTRIM寄存器中,再将AD转换结果加上该值后传送到结果寄存器ADCRESULTn。校正操作在ADC模块中进行,因此时序不受影响。芯片出厂时已将该功能程序ADC_Cal()固化于TI保留的OTPROM中,可被BootROM自动调用。ADC_Cal()采用特定校正数据对ADCREFSEL与ADCOFFTRIM寄存器进行初始化。ADC_cal()的调用方法之一指针函数法第一步:先将ADC_Cal定义为OTPROM中函数的指针:#defineADC_Cal(void(*)(void))0x380080第二步:先调用ADC_Cal函数,注意调用该函数前要先使能ADC时钟。EALLOW;SysCtrlRegs.PCLKCR0.bit.ADCENCLK=1;(*ADC_Cal)();SysCTRLRegs.PCLKCR0.bit.ADCENCLK=0;EDIS;ADC_cal()的调用方法之二汇编函数调用法第一步:将ADC_Cal汇编程序添加至工程中,以下为ADC_cal()的源代码.def_ADC_cal;定义代码段名称为ADC_cal.asg"0x711C",ADCREFSEL_LOC;ADCREFSEL的地址0x711C.sect".adc_cal";自定义初始化段.adc_cal_ADC_calMOVWDP,#ADCREFSEL_LOC>>6;右移6bit得DP=0x7100MOV@28,#0X1111;ADCREFSEL =0X1111MOV@29,#0x2222;ADCOFFTRIM =0x2222LRETR汇编函数调用法第二步:将.adc_cal段加入到CMD文件中MEMORY{PAGE0:ADC_CAL:origin=0x380080,length=0x000009}SECTIONS{.adc_cal:load=ADC_CAL,PAGE=0,TYPE=NOLOAD}ADC_cal()的调用方法之二汇编函数调用法第三步:使用ADC之前先调用ADC_Cal函数,注意调用该函数前要先使能ADC时钟。EALLOW;SysCtrlRegs.PCLKCR0.bit.ADCENCLK=1;(*ADC_Cal)();SysCTRLRegs.PCLKCR0.bit.ADCENCLK=0;EDIS;ADC_cal()的调用方法之二ADC模块的时钟ADC模块的结果A/D转换器只有12位,使用16位结果寄存器存储时必然有4位是保留位。当结果寄存器映射在外设帧2时,采用左对齐方式当结果寄存器映射在片内时,采用右对齐方式ADC模块的结果模拟电压结果寄存器3.011111111111100001.501111111111100000.0007000000000001000000000000000000000按照左对齐方式,当模拟输入电压为0V、3V、1.5V、0.0007V时结果寄存器数据voidInit_ADC(){SysCtrlRegs.PCLKCR0.bit.ADCENCLK=1;//使能ADC时钟AdcRegs.ADCTRL3.all=0x00E0;//上电带隙参考电路、ADC核Timer_usDelay(5000);//延时5msAdcRegs.ADCTRL1.all=0x0490;//CPS=1,采样保持为ADCCLK×5//排序器级联,启动/停止模式AdcRegs.ADCTRL2.all=0x4040;//复位SEQ1和SEQ2,禁止ADC中断AdcRegs.ADCTRL3.bit.SMODE_SEL=0;//顺序采样AdcRegs.ADCTRL3.bit.ADCCLKPS=1;//ADCCLK=HSPCLK/4AdcRegs.ADCMAXCONV.all=0x07;//顺序采样的级联模式,共16通道AdcRegs.ADCCHSELSEQ1.all=0x05432;//通道选择顺序AdcRegs.ADCCHSELSEQ2.all=0x098BA;}ADC模块的初始化例程
本文档为【DSP模数转换单元】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
传雄
暂无简介~
格式:ppt
大小:755KB
软件:PowerPoint
页数:0
分类:企业经营
上传时间:2021-10-23
浏览量:3