This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28377S:TMS320F28377S

Guru**** 2027820 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/708625/tms320f28377s-tms320f28377s

器件型号:TMS320F28377S

您好,

我正在使用 TMS320F 28377S ADC。 当以10mV 为单位输入 ADC 的输入电压时、ADC 的结果需要是线性的、但在我使用的系统中、ADC 结果值不是线性的、而是级联的。 出什么问题了?

ADC 转换周期为10ms、所有通道均可立即读取

测试结果如下。

   < ADC 结果>
3.40                2501
3.41                2511.
3.42                2517.
3.43                2518
3.44                2533
3.45                2543

我的系统设置如下  


 EALLOW;

 AdcaRegs.ADCCTL2.bit.prescale = 15;
 AdcbRegs.ADCCTL2.bit.prescale = 15;

 AdcSetMode (ADC_ADCA、ADC_resolution_12位、ADC_SIGNALMODE_SINGLE);
 AdcSetMode (ADC_ADCB、ADC_Resolution、12位、ADC_SIGNALMODE_SINGLE);

 //将脉冲位置设置为晚期
 AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1;
 AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;

 //为 ADC 加电
 AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
 AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;

 //延迟1ms 以允许 ADC 加电时间
 DELAY_US (1000);

 //选择要转换的通道和转换结束标志
 //ADCA
 AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;
 AdcaRegs.ADCSOC3CTL.bit.CHSEL = 3;
 AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;
 AdcaRegs.ADCSOC5CTL.bit.CHSEL = 5;

 AdcaRegs.ADCSOC2CTL.bit.ACQPS = 30;  
 AdcaRegs.ADCSOC3CTL.bit.ACQPS = 30;
 AdcaRegs.ADCSOC4CTL.bit.ACQPS = 30;
 AdcaRegs.ADCSOC5CTL.bit.ACQPS = 30;

 AdcaRegs.ADCINTSEL1N2.bit.INT1E =  1;  
 AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 5;
 AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

 //ADCB
 AdcbRegs.ADCSOC0CTL.bit.CHSEL = 0;  
 AdcbRegs.ADCSOC2CTL.bit.CHSEL = 2;  
 AdcbRegs.ADCSOC3CTL.bit.CHSEL = 3;  

 AdcbRegs.ADCSOC0CTL.bit.ACQPS = 30;  
 AdcbRegs.ADCSOC2CTL.bit.ACQPS = 30;  
 AdcbRegs.ADCSOC3CTL.bit.ACQPS = 30;

 AdcbRegs.ADCINTSEL1N2.bit.INT1E = 1;   
 AdcbRegs.ADCINTSEL1N2.bit.INT1SEL = 3;
 AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
 EDIS;

ADC 结果如下所示

 AdcaRegs.ADCSOCFRC1.ALL = 0x003C;//SOC2、3、4、5
 while (AdcaRegs.ADCINTFlG.bit.ADCINT1 = 0);
 AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

 US_resulta2 = AdcaResultRegs.ADCRESULT2;
 US_resulta3 = AdcaResultRegs.ADCRESULT3;
 US_resulta4 = AdcaResultRegs.ADCRESULT4;
 US_resulta5 = AdcaResultRegs.ADCRESULT5;


 AdcbRegs.ADCSOCFRC1.ALL = 0x000D;//SOC0、2、3
 //等待 ADCB 完成,然后确认标志
 while (AdcbRegs.ADCINTFlG.bit.ADCINT1 = 0);
 AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

 US_resultb0 = AdcbResultRegs.ADCRESULT0;
 US_resultb2 = AdcbResultRegs.ADCRESULT2;
 US_resultb3 = AdcbResultRegs.ADCRESULT3;

请给我们一点意见、了解问题是什么

谢谢、Steven Kim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您如何以10mV 为单位改变输入电压? 输入电压是否准确测量? 您能否共享输入电压图? 这些结果是否来自相同或不同的 ADC 实例(ADCA 和 ADCB)?

    谢谢
    Vasudha
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vasudha

    输入电压随电源的变化而变化、电源输出范围为+25.00~0.00、输入电压在手册中应用(3.40v -> 3.41v -> 3.42v -> 3.43v -> 3.44v -> 3.45v)

    在另一项测试中、我使用了函数发生器。 输入 斜率为 正弦波、 正弦波电压 为3.00~3.30v、1周期为100sec。

    ADC 结果不随随机电压变化、我附加了 ADC 结果

    e2e.ti.com/.../7711.SineWave_5F00_Input_5F00_vs_5F00_ADC.xlsx

    谢谢