665|0

1907

帖子

0

资源

一粒金砂(高级)

TMS320F28377学习笔记——通过定时器触发ADC连续采样 [复制链接]

作为TI的C2000系列最新产品的28377S(D),ADC模块是其核心的信号采集功能。28377的ADC是一个逐次逼近型(SAR)ADC,可选择分辨率为16位或12位。具体ADC特性如下图的数据手册所示:
image-20201011213840-1.png image-20201011213900-2.png
这次学习,我采用Timer定时器作为触发源来触发ADC在SOC0上的的连续转换。由上图可以看到,ADC支持的触发类型有:

软件触发
所有的EPWM-ADCSOCA或B
GPIO XINT2
CPU 定时器0/1/2(每个C28x内核)
ADCINT1/2
所以,通过CPU的定时器来触发采样是可行的。下面来看ADC的模块框图:
11.png
我们通过Timer触发ADC的SOC0转换序列对ADCIN0进行持续采样:采样方式为单端12位采样。
image-20201011214015-3.png
接下来需要配置ADC的SOC采样序列,包括采样窗时间,转换的通道选择,触发源选择等:
12.png
下面附上程序部分:

void ConfigureADC(void){

EALLOW;
AdcaRegs.ADCCTL2.bit.PRESCALE = 6; //ADC时钟预分频:200M/4=50MHz
AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE); //配置ADCA为12位转换精度,单端模式
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADC中断脉冲位置发生在在转换结束时,在ADC结果锁存到结果寄存器之前的一个周期
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; //内核中的所有模拟电路都通电
DELAY_US(1000); //delay for 1ms to allow ADC time to power up
EDIS;Uint16 acqps;

if(ADC_RESOLUTION_12BIT == AdcaRegs.ADCCTL2.bit.RESOLUTION)
    {
        acqps = 14; //12位单端模式下采样时间最快75ns,ACQPS>=14,
    }
else  //resolution is 16-bit
    {
        acqps = 63; //16位差分模式下采样时间最快320ns,ACQPS>=63
    }

EALLOW;
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;     //SOC0将转换ADCINA2
AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps; //设置采样窗时间
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 2;   //SOC0触发源选择为CPU1 Timer1
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0; //EOC0触发ADCINT1
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;   //ADCINT1中断使能
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //ADCINT1中断标志位清零
EDIS;}


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/8 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表