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:28377s VREFHI 引脚输入电压问题和 ADC 值错误

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/636292/tms320f28377s-28377s-vrefhi-pin-input-voltage-question-and-adc-value-error

器件型号:TMS320F28377S
主题中讨论的其他器件:REF3030

早上好、下午好、晚上好。

我正在使用28377进行开发、ADC 结果值错误。

VREFHIA ~ D 输入3.0V (使用 REF3030)。
使用了一个大约10uF 的 MLCC 电容器。

向 ADCINA0引脚输入1.5V 电压

在12位模式下、结果应为2047、但输出为1770。

使用电源向 VREFHIA ~ D 引脚施加2.5V 电压可产生2048个电压。

这是正常的吗?我猜我的计算结果中会有2048个结果。

我应该将2.5V 电压输入 VREFHIA ~ D 吗?

初始化代码如下所示。

CalAdcINL (ADC_ADCA);


 我尝试通过命令进行校准、但值相同。

void ADCA_Initialize (void)
{

EALLOW;
DELAY_US (20000);

// ADC-B 모드 설정 및 加电
AdcaRegs.ADCCTL2.bit.prescale = 6; // ADCCLK = SYSCLK /4、SYSCLK = 200MHz
AdcSetMode (ADC_ADCA、ADC_resolution_12位、ADC_SIGNALMODE_SINGLE);
AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1;
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
DELAY_US (20000);

EDIS;


EALLOW;
// ADC-B SOC (채널 μ s、H시간 μ s、트리거소스 μ s)및 인터럽트 설정
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 14; //(S/H) 5ns =(ACQPS+1)/SYSCLK
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 7; // SOC0:ePWM2 SOCA/C 触发器

AdcaRegs.ADCSOC2CTL.bit.CHSEL = 1;
AdcaRegs.ADCSOC2CTL.bit.ACQPS = 14;
AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 7;

AdcaRegs.ADCSOC5CTL.bit.CHSEL = 2;
AdcaRegs.ADCSOC5CTL.bit.ACQPS = 14;
AdcaRegs.ADCSOC5CTL.bit.TRIGSEL = 7;

AdcaRegs.ADCSOC6CTL.bit.CHSEL = 3;
AdcaRegs.ADCSOC6CTL.bit.ACQPS = 14;
AdcaRegs.ADCSOC6CTL.bit.TRIGSEL = 7;

AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 6;
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
EDIS;

EALLOW;
EPwm2Regs.ETSEL.bit.SOCAEN = 1;
EPwm2Regs.ETSEL.bit.SOCASEL = 2;
EPwm2Regs.ETPS.bit.SOCAPRD = 1;
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm2Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm2Regs.TBCTL.bit.CLKDIV = 0;
EPwm2Regs.TBPRD = 10000 - 1;
EPwm2Regs.TBCTR = 0x0000;
EDIS;//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================




//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//步骤5. PWM
///-----------------
// InitEPwm1Gpio();

//时基子模块 초기화
EPwm1Regs.TBCTL.bit.PRDLD = TB_Immediate;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.HSPCLKDIV=1;
EPwm1Regs.TBCTL.bit.CLKDIV = 1;
EPwm1Regs.TBPRD = 37499;
EPwm1Regs.TBCTR = 0;

//计数器比较子模块 초기화
EPwm1Regs.CMPA.bit.CMPA = 18749;
EPwm1Regs.CMPB.bit.CMPB = 18749;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

//动作限定符 초기화
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
} 

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

    阅读此主题可能会很有用:
    e2e.ti.com/.../634661

    我将在这里提出一些相同的问题:
    *您的 ADC 输入的源阻抗是多少? 您已将 S+H 配置为允许的最小值(ACQPS = 14 => 75ns S+H)、只有当您具有真正好的输入驱动器时、才会使用该模式。 信号衰减是源阻抗过高和/或 S+H 持续时间过低的一种症状。
    *您的 VREFHI 输入是否已缓冲? 电源肯定具有良好的驱动强度、但如果您通过 BNC 电缆或其他接线将其驱动到电路板中、则由于电缆的阻抗、有效带宽将非常低。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。

    我已经解决了这个问题。

    源的运算放大器已损坏。

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

    感谢您将解决方案发布到问题。 很高兴您能让它正常工作!