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.

[参考译文] TMS320F28379D:ADC 寄存器值不合适

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1474404/tms320f28379d-adc-register-value-is-not-appropriate

器件型号:TMS320F28379D
主题中讨论的其他器件:SysConfig

工具与软件:

您好!

我正在尝试使用28379D 控制卡读取 ADC 值。 输入电流通过传感器传输到 ADC 引脚、并且我已将代码配置为相应地读取值。

在调试窗口中、 ADCBRESULT5 ADCBRESULT4 固定在大约15xx (未施加电流时)。 但是、有时会计算出的值 ADCBRESULT5 - ADCBRESULT4 尖峰达到65000、从而导致依赖于电流测量的控制器不稳定。

随附的屏幕截图是在控制器关闭时从调试窗口中获取的。 该屏幕截图所示 ADCRESULT5 ADCRESULT4 和两个值之间的差异。

下面是 ADC 设置。

我正在使用中 ADCA1至 ADCA5 ADCB1至 ADCB5 、当前问题发生在上 ADCB5 ADCB4 .

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void setupADCSOC(void)
{
EALLOW;
//ADCA
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0; // SOC0(=ADCA0)
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 9; // Sample window is 10 SYSCLK cycles
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1; // Trigger on CPUTIMER0
AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1; // SOC1(=ADCA1)
AdcaRegs.ADCSOC1CTL.bit.ACQPS = 9; // Sample window is 10 SYSCLK cycles
AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 1; // Trigger on CPUTIMER0
//
AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2; // SOC2(=ADCA2)
AdcaRegs.ADCSOC2CTL.bit.ACQPS = 9; // Sample window is 10 SYSCLK cycles
AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 1; // Trigger on CPUTIMER0
AdcaRegs.ADCSOC3CTL.bit.CHSEL = 3; // SOC3(=ADCA3)
AdcaRegs.ADCSOC3CTL.bit.ACQPS = 9; // Sample window is 10 SYSCLK cycles
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    伊恩津、

    要解决该问题、我需要完整的代码。 您是否向 ADC 引脚施加直流电压以进行测试和验证? 您如何为主控件中的 ADC 设置 SoC?

    我建议使用 SysConfig 工具自动生成所需的图形初始化。 稍后您可以直接将其复制到您的代码中。

    此致!

    Masoud。

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

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void setupADC(void)
    {
    //single ended
    AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    EALLOW;
    //ADCA
    AdcaRegs.ADCCTL2.bit.PRESCALE = 1;
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1; //EOC -->
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; //ADC
    //ADCB
    AdcbRegs.ADCCTL2.bit.PRESCALE = 1;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    在操作转换器时观察 ADC 值时、读数会波动、如上图所示。