请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28379D 大家好、我购买了一款 C2000微控制器及其 controlCARD 和实验套件。 当我尝试使用 MCU 的 ADC 时、我遇到了以下问题:
我尝试将 ADC 连接到波形发生器。 该波形由 National Instruments 的 DAQ NI-USB-6356 (模拟输出)生成。
基本上、我复制了 MCU 的示例代码。 我将 ADC 设置为连续采样模式、并将512个采样点存储到存储器中。 然后、我使用 UART 端口显示指向终端(在我的主机上)的512点的值。
我使用了16位单端 ADC 设置。 连接如下所示:
我发现 ADC 的结果噪声很大。 结果如下所示:
下面是我使用的代码:
操作
{
//
//启用 ADCINT 标志
//
EALLOW;
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdcaRegs.ADCINTSEL1N2.bit.INT2E = 1;
AdcaRegs.ADCINTSEL3N4.bit.INT3E = 1;
AdcaRegs.ADCINTSEL3N4.bit.INT4E = 1;
AdcaRegs.ADCINTFLGCLR.ALL = 0x000F;
EDIS;
//
//初始化结果索引
//
resultsIndex = 0;
//
//软件强制启动 SOC0到 SOC7
//
AdcaRegs.ADCSOCFRC1.ALL = 0x00FF;
//
//继续采样,直到结果缓冲区已满
//
while (resultsIndex < results_buffer_size)
{
//
//等待第一组8个转换完成
//
while (0 = AdcaRegs.ADCINTFlG.bit.ADCINT3);
//
//清除前8个转换生成的两个 INT 标志
//
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
AdcaRegs.ADCINTFLGCLR.bit.ADCINT3 = 1;
//
//保存前8次转换的结果
//
//请注意,在此期间,第二个8次转换具有
//已被 EOC6->ADCIN1触发,将处于活动状态
//在保存前8个结果时转换
//
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT0;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT1;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT2;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT3;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT4;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT5;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT6;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT7;
//
//等待第二组8个转换完成
//
while (0 = AdcaRegs.ADCINTFlG.bit.ADCINT4);
//
//清除第二8次转换生成的两个 INT 标志
//
AdcaRegs.ADCINTFLGCLR.bit.ADCINT2 = 1;
AdcaRegs.ADCINTFLGCLR.bit.ADCINT4 = 1;
//
//保存第二个8次转换的结果
//
//请注意,在这段时间内,前8次转换具有
//已由 EOC14->ADCIN2触发,并且将处于活动状态
//在保存第二个8个结果时转换
//
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT8;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT9;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT10;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT11;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT12;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT13;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT14;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT15;
}
//
//禁用所有 ADCINT 标志以停止采样
//
EALLOW;
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;
AdcaRegs.ADCINTSEL1N2.bit.INT2E = 0;
AdcaRegs.ADCINTSEL3N4.bit.INT3E = 0;
AdcaRegs.ADCINTSEL3N4.bit.INT4E = 0;
EDIS;
for (I=0;I "="" estop0");="" scia_xmit('\n');="" delay_us(5000000);="" }while(1);="" do="" enable="" adcint="" flags="" eallow;="" adcaregs.adcintsel1n2.bit.int1e="1;" adcaregs.adcintsel1n2.bit.int2e="1;" adcaregs.adcintsel3n4.bit.int3e="1;" adcaregs.adcintsel3n4.bit.int4e="1;" adcaregs.adcintflgclr.all="0x000F;" edis;="" initialize="" results="" index="" resultsindex="0;" force="" start="" soc0="" soc7="" adcaregs.adcsocfrc1.all="0x00FF;" keep="" taking="" samples="" until="" buffer="" is="" full="" while(resultsindex="" ADCIN1、将处于活动状态
//在保存前8个结果时转换
//
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT0;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT1;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT2;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT3;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT4;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT5;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT6;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT7;
//
//等待第二组8个转换完成
//
while (0 = AdcaRegs.ADCINTFlG.bit.ADCINT4);
//
//清除第二8次转换生成的两个 INT 标志
//
AdcaRegs.ADCINTFLGCLR.bit.ADCINT2 = 1;
AdcaRegs.ADCINTFLGCLR.bit.ADCINT4 = 1;
//
//保存第二个8次转换的结果
//
//请注意,在这段时间内,前8次转换具有
//已由 EOC14->ADCIN2触发,并且将处于活动状态
//在保存第二个8个结果时转换
//
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT8;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT9;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT10;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT11;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT12;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT13;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT14;
AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT15;
}
//
//禁用所有 ADCINT 标志以停止采样
//
EALLOW;
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;
AdcaRegs.ADCINTSEL1N2.bit.INT2E = 0;
AdcaRegs.ADCINTSEL3N4.bit.INT3E = 0;
AdcaRegs.ADCINTSEL3N4.bit.INT4E = 0;
EDIS;
for (I=0;I "="" estop0");="" scia_xmit('\n');="" delay_us(5000000);="" }while(1);

