DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx

上传人:b****9 文档编号:13090110 上传时间:2022-10-04 格式:DOCX 页数:12 大小:669.58KB
下载 相关 举报
DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx_第1页
第1页 / 共12页
DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx_第2页
第2页 / 共12页
DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx_第3页
第3页 / 共12页
DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx_第4页
第4页 / 共12页
DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx

《DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

DSP28335-AD采样原理与程序讲解Word文档下载推荐.docx

ADC模块结构图

Note:

ADCENCLK使能以后,该ADCCLK才有效;

结果寄存器0-15并非与A0-A7、B0-B7一一对应,具体的对应方式由排序器决定;

ADC模块只有一个转换,所以在同一时刻只能有一个通道被送入到ADC转换模块中进行ADC转换;

送入的先后顺序由排序器决定,采样的结果依次送入ResultREG0-15。

当工作于双序列模式时,若ADC转换模块正在转换ADCB0-ADCB7中的某一通道时,ADCA0-ADCA7中的某一通道的转换信号送入ADC转换模块,则在转换结束ADCB0-ADCB7中的某一通道后再转换ADCA0-ADCA7中的某一通道;

当ADCA0-ADCA7中的某一通道与ADCB0-ADCB7中的某一通道同时送入ADC转换模块,则先转换ADCA0-ADCA7中的某一通道,即A0-A7的优先级高于B0-B7;

2、ADC时钟及采样频率

一般将ADCCLK配置为25MHz。

3、自动转换排序器的工作原理

ADC排序器由两个独立的8状态排序器(SEQ1和SEQ2)组成,这两个排序器也可以被级联为1个16状态的排序器(状态的意思是排序器能够自动转换的个数)。

两种情况如下图所示:

ADC可以工作在同步采样模式和顺序采样模式,对于每一次转换,CONVxx定义了当前哪一个通道被采样和转换;

在顺序采样模式中,CONVxx的四位都被定义为输入引脚,最高位定义了通道A或通道B,低三位定义了偏移量,例如0101b表示ADCINA5,1001b表示ADCINB1;

在同步采样模式中,CONVxx的最高位没有意义,第三位表示偏移量,例如0101b表示先对ADCINA5采样再对ADCINB5采样,1001b表示先对ADCINA1采样再对ADCINB1采样;

4、ADC相关寄存器介绍

4.1 ADCTRL1

RESET(14):

写0无影响:

写1复位整个ADC模块。

(在系统复位时,ADC模块会被复位,当在其他时刻需要复位ADC模块时,可以向该位写1,但是在写1后需要等待至少两个ADC时钟周期后才可以继续对ADC控制寄存器1进行操作)

SUSMOD(13:

12):

仿真悬挂模式位,通常向该位写入00:

忽略仿真悬挂;

ACQ_PS(11:

8):

该位控制SOC脉冲的宽度,决定采样开关关闭持续多长时间。

SOC脉冲的宽度等于(ACQ_PS+1)个ADC时钟周期.

CPS(7):

写0:

ADCCLK=Fclk/1;

写1:

ADCCLK=Fclk/2。

(Fclk=PrescaledHSPCLK(adcclkps[3:

0])),参考上面ADC时钟及采样频率部分。

CONT_RUN(6):

写0:

启动停止模式(在收到EOS信号后,排序器停止。

在下一个SOC信号到来时,排序器从上一次停止的地方开始。

);

写1:

连续转换模式。

(当收到EOS信号后,排序器停止。

在下一个SOC信号到来时,排序器的行为取决于SEQ_OVRD位的状态,当SEQ_OVRD为0时,排序器从头开始排序;

当SEQ_OVRD为1时,排序器从上一次停止的地方开始。

SEQ_OVR(5):

设置:

采样模式为顺序采样的级联模式;

MAX_CONV.all=0x0001;

//最大转换通道为2个

ADCCHSELSEQ1.bit.CONV00=0x0;

//ADCINA0

ADCCHSELSEQ1.bit.CONV01=0x3;

//ADCINA3

若CONT_RUN=1;

SEQ_OVR=0;

则采样结果只在结果寄存器0和1中;

SEQ_OVR=1;

则采样结果只在结果寄存器0--15中;

若CONT_RUN=0;

则采样结果只在结果寄存器0--15中。

SEQ_CASC(4):

双序列模式;

级联模式。

4.2 ADCTRL2

ePWM_SOCB_SEQ(15):

无影响;

写1:

通过Epwm_SOCB信号允许级联排序器开始。

RST_SEQ1:

立即复位排序器到ONV00;

SOC_SEQ1:

写0:

清除一个没被处理的SOC触发信号;

软件触发,从当前停止为止启动SEQ1。

INT_ENA_SEQ1:

通过INT_SEQ1的中断请求被禁止;

通过INT_SEQ1的中断请求被使能;

INT_MOD_SEQ1:

INT_SEQ1在每一次SEQ1排序器结束时产生;

INT_SEQ1每隔一次SEQ1排序器结束时产生;

ePWM_SOCA_SEQ1:

SEQ1不能通过ePWMxSOCA的触发开始;

允许SEQ1、SEQ通过ePWMxSOCA的触发开始;

EXT_SOC_SEQ1:

允许外部中断XINT2触发启动SEQ1;

4.3 ADCTRL3

ADCBGRFDN:

写00:

带隙和参考电路掉电;

写11:

带隙和参考电路上电;

ADCPWDN:

除带隙和参考电路外,AD内部所有的模拟电路掉电;

AD内部所有的模拟电路上电;

ADCCLKPS:

结合ADC时钟及采样频率理解

0000 HSPCLK/[(ADCTRL1[7]+1)]

0001 HSPCLK/[2*(ADCTRL1[7]+1)]

0010 HSPCLK/[4*(ADCTRL1[7]+1)]

0011 HSPCLK/[6*(ADCTRL1[7]+1)]

1111 HSPCLK/[30*(ADCTRL1[7]+1)]

SMODE_SEL:

顺序采样模式;

同步采样模式。

4.4 ADCMAXCONV

MAX_CONVn:

最大通道转换数。

FORSEQ1:

MAX_CONV1[2:

0]

FORSEQ2:

MAX_CONV2[2:

FORSEQ:

MAX_CONV1[3:

4.5 ADCST

EOS_BUF2:

SEQ2的序列缓冲结束位;

INT_SEQ2_CLR:

清除SEQ2中断标志INT_SEQ2.该位不会影响EOS_BUF2位

SEQ2_BSY:

读0:

SEQ2空闲,等待触发;

读1:

SEQ2正在工作;

INT_SEQ2:

没有SEQ2中断事件发生;

SEQ2中断事件发生。

4.6 ADCREFSEL

4.7 ADCCHSELSEQ1

4.8 ADCRESULTn

5、ADC采样例程

Example1:

配置ADC为顺序采样、级联模式,最大采样通道为1,对ADCINA0进行连续采样AVG次,并将采样的结果放在SampleTable[BUF_SIZE]中。

在本例中ADCLK=12.5MHz。

#include"

DSP28x_Project.h"

//DeviceHeaderfileandExamplesIncludeFile

#defineAVG1000//Averagesamplelimit

#defineZOFFSET0x00//AverageZerooffset

#defineBUF_SIZE2048//Samplebuffersize

//Globalvariableforthisexample

Uint16SampleTable[BUF_SIZE];

main()

{

Uint16i;

//Step1.InitializeSystemControl:

//PLL,WatchDog,enablePeripheralClocks

//ThisexamplefunctionisfoundintheDSP2833x_SysCtrl.cfile.

InitSysCtrl();

//Specificclocksettingforthisexample:

EALLOW;

SysCtrlRegs.HISPCP.all=0x3;

//HSPCLK=SYSCLKOUT/ADC_MODCLK

EDIS;

//Step2.InitializeGPIO:

//ThisexamplefunctionisfoundintheDSP2833x_Gpio.cfileand

//illustrateshowtosettheGPIOtoit'

sdefaultstate.

//InitGpio();

//Skippedforthisexample

//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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1