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.

[参考译文] TMS320F28375D:关于 ADC 触发器上的压降。

Guru**** 2419210 points
Other Parts Discussed in Thread: TMS320F28375D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/987794/tms320f28375d-about-voltage-drop-at-adc-trigger

器件型号:TMS320F28375D

我遇到了问题、因为 ADC 无法按预期工作。
底部列出了 ADC 设置。

========================================================================================
只有"0"作为从"ADCIND0"获取的数据返回。
========================================================================================
触发器正确完成、例如 ADCIND2、3等。可以获取信息。

我用示波器检查了它、但(很抱歉、我无法放置图像)
在触发时、ADCIND2会暂时降低电压、并立即返回到正常电压、并且可以进行正常采样。
在触发时、ADCIND0的负电压约为500nsec、1.5 μ s 内不会恢复正常电压。

如果软件方面的设置有任何错误、或者有类似的情况、您会告诉我吗?

[软件设置]
===========================================================================================================================================
/*通过 Init 调用以下函数。 ******** /

void ConfigureADC( void )

EALLOW;

//写入配置
AdcaRegs.ADCCTL2.bit.prescale = 8;//将 ADCCLK 分频器设置为/5
AdcbRegs.ADCCTL2.bit.prescale = 8;//将 ADCCLK 分频器设置为/5
AdccRegs.ADCCTL2.bit.prescale = 8;//将 ADCCLK 分频器设置为/5
AdcdRegs.ADCCTL2.bit.prescale = 8;//将 ADCCLK 分频器设置为/5
AdcSetMode (ADC_ADCA、ADC_resolution_12位、ADC_SIGNALMODE_SINGLE);
AdcSetMode (ADC_ADCB、ADC_Resolution、12位、ADC_SIGNALMODE_SINGLE);
AdcSetMode (ADC_ADCC、ADC_Resolution、12位、ADC_SIGNALMODE_SINGLE);
AdcSetMode (ADC_ADCD、ADC_Resolution、12位、ADC_SIGNALMODE_SINGLE);

//将脉冲位置设置为晚期
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;//中断脉冲生成时序。
AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdcdRegs.ADCCTL1.bit.INTPULSEPOS = 1;

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

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

EDIS;

void SetupADCSoftware( void )

uint16_t acqps;

//根据分辨率确定最小采集窗口(在 SYSCLKS 中)
if (adc_resolution_12bit =AdcaRegs.ADCCTL2.bit.resolution){// 12位或16位
acqps = 79;//400ns

否则{//分辨率为16位
acqps = 63;//320ns

/*选择要转换的通道和转换结束标志*/
EALLOW;
// ADC-A
AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 0;
// ad_in[1]
AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;
AdcaRegs.ADCSOC2CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 0xE;
// IP[1]
AdcaRegs.ADCSOC3CTL.bit.CHSEL = 3;
AdcaRegs.ADCSOC3CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC3CTL.bit.TRIGSEL = 0xE;
// VA_MNT
AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;
AdcaRegs.ADCSOC4CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC4CTL.bit.TRIGSEL = 0xE;

// ADC-B
AdcbRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 1;
// I_HP01
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 0;
AdcbRegs.ADCSOC0CTL.bit.ACQPS = acqps;
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 0xE;
// ad_in[2]
AdcbRegs.ADCSOC2CTL.bit.CHSEL = 2;
AdcbRegs.ADCSOC2CTL.bit.ACQPS = acqps;
AdcbRegs.ADCSOC2CTL.bit.TRIGSEL = 0xE;
// IP[2]
AdcbRegs.ADCSOC3CTL.bit.CHSEL = 3;
AdcbRegs.ADCSOC3CTL.bit.ACQPS = acqps;
AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 0xE;

// ADC-C
AdccRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 0;
// ad_in[3]
AdccRegs.ADCSOC2CTL.bit.CHSEL = 2;
AdccRegs.ADCSOC2CTL.bit.ACQPS = acqps;
AdccRegs.ADCSOC2CTL.bit.TRIGSEL = 0xE;
// IP[3]
AdccRegs.ADCSOC3CTL.bit.CHSEL = 3;
AdccRegs.ADCSOC3CTL.bit.ACQPS = acqps;
AdccRegs.ADCSOC3CTL.bit.TRIGSEL = 0xE;
// M_CUR
AdccRegs.ADCSOC4CTL.bit.CHSEL = 4;
AdccRegs.ADCSOC4CTL.bit.ACQPS = acqps;
AdccRegs.ADCSOC4CTL.bit.TRIGSEL = 0xE;

// ADC-D
AdcdRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 1;
// 15V_PWR_IN
AdcdRegs.ADCSOC0CTL.bit.CHSEL = 0;
AdcdRegs.ADCSOC0CTL.bit.ACQPS = acqps;
AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 0xE;
// ad_in[4]
AdcdRegs.ADCSOC2CTL.bit.CHSEL = 2;
AdcdRegs.ADCSOC2CTL.bit.ACQPS = acqps;
AdcdRegs.ADCSOC2CTL.bit.TRIGSEL = 0xE;
// IP[4]
AdcdRegs.ADCSOC3CTL.bit.CHSEL = 3;
AdcdRegs.ADCSOC3CTL.bit.ACQPS = acqps;
AdcdRegs.ADCSOC3CTL.bit.TRIGSEL = 0xE;

EDIS;


// EPWM5软件 ADConversion 触发 ADCSOCB。
EALLOW;
EPwm5Regs.ETSEL.bit.SOCBSEL = 1;// EPwm5Regs.TBCTR 上的 EPWM5SOCB =零
EPwm5Regs.ETPS.bit.SOCBPRD = 1;//在第1个偶数上生成 SOCB
EPwm5Regs.ETSEL.bit.SOCBEN = 1;//启用 SOCB 生成
EDIS;


/***** 使用 EPWM5中断****调用以下函数 /

test1 = AdcResultRegs.ADCRESULT4;//未确认
test2 = AdcaResultRegs.ADCRESULT4;//未确认
test3 = AdcdResultRegs.ADCRESULT0;// NG
TEST4 = AdcaResultRegs.ADCRESULT3;//确定
Test5 = AdcbResultRegs.ADCRESULT3;//确定
TEST6 = AdccResultRegs.ADCRESULT3;//确定
TEST7 = AdcdResultRegs.ADCRESULT3;//确定

最恰当的考虑。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="421456" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/987794/tms320f28375d-about-voltage-drop-at-adc-trigger "]我使用示波器检查了它,但(很抱歉我无法放置图像)

    如果您可以找到另一种共享方式、图像会很有帮助。 我的理解是、您还应该能够将图像拖放到文本编辑窗口中。

    [引用 userid="421456" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/987794/tms320f28375d-about-voltage-drop-at-adc-trigger "]触发器已正确完成,例如 ADCIND2、3等。可以获取信息。

    D2和 D3转换结果是否符合预期?

    [引用 userid="421456" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/987794/tms320f28375d-about-voltage-drop-at-adc-trigger "]触发时,ADCIND0的负电压约为500nsec

    您能否澄清一下负电压的含义?  它是压降吗?  如果是、是低于0V、还是低于直流稳态电平?  您能否确认 DIP 是否与 SOC 触发器一致?

    [报价 userid="421456" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/987794/tms320f28375d-about-voltage-drop-at-adc-trigger "]在1.5usec[/quot]下无法恢复正常电压[/报价]

    您是否可以尝试使用较大的 ACQPS 进行 D0转换?

    [引用 userid="421456" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/987794/tms320f28375d-about-voltage-drop-at-adc-trigger ]/adc D
    AdcdRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 1;
    // 15V_PWR_IN
    AdcdRegs.ADCSOC0CTL.bit.CHSEL = 0;
    AdcdRegs.ADCSOC0CTL.bit.ACQPS = acqps;
    AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 0xE;[/引用]

    您是否使用15V 分压器将采样电压纳入 ADC 范围? 如果是、此 ADC 电荷共享应用手册 可能会有所帮助。

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

    我将放置一个示波器的图像。
    ・红线是"D0"
    ・粉色线为"D2"
    μ・引脚直接连接到 C28的端子上进行测量。

    两个点0是相同的。
    红线被绘制为2.5V 的预期值。

    *昨天我说过500nsec、但正确的是400nsec。 *
    在"D2"线路中、ADC 工作、电压在大约50 nsec 后恢复到原始位置、但
    在 ADC 运行后、"D0"线路下降至低于0V 的位置400nsec (采样期间)。

    "d0"是主电源分压后的电压值、范围0-20V 和预期值15V 通过 MAX 3.3转换并输入到 TMS320F28375D 的 ADC。

    如果出现电压下降、主电源本身的电压将下降、所有微型计算机也将停止。
    此外、由于每个 ADC 周期都会发生压降、我认为这不是电源侧的问题。

    关于 ACQPS 的扩展、如果您使用示波器进行检查、结果是0或更短的时间会延长设定值的增加量。

    当 ADC 如上图所示移动时、电压下降是否正常?

    如果使用相同的设置将 CHSEL 更改为3、则可以获得相同的值
    作为另一 SOC 采集的数据、因此我认为设置是正确的。

    上图获取分配给 ADCDIN0的56Pin。
    在这种情况下、如果我将 CHSEL 设置为0、我不知道只返回0。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="421456" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/987794/tms320f28375d-about-voltage-drop-at-adc-trigger/3649438 #3649438"]当 ADC 如上图所示移动时、电压下降是否正常?

    当 ADC 采样电容器打开并充电时、通常会看到输入信号出现小压降。 您的 D2信号就是这种行为的一个很好的示例。

    看到输入电压稳定在 F2837x 的 VSS/VSSA 以下是不正常的。 F2837x 无法生成负电压、因此这表明存在一些外部影响、导致电压下降到如此低的水平。 在我看来、F2837x 与15V 分压器具有不同的接地基准。

    您能否检查电路板设计上的电源域、以确定潜在的接地不匹配原因或负电压注入路径?

    [引用 userid="421456" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/987794/tms320f28375d-about-voltage-drop-at-adc-trigger/3649438 #3649438">上述图像获取分配给 ADCDIN0的56引脚。
    在这种情况下、如果我将 CHSEL 设置为0、我不知道只返回0。

    F2837x 只能解释正电压、因此负电压被削波至0。

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

    谢谢您、被叫方。

    运算放大器和电压传感器夹在分配源和 ADC 之间、但原因是由于电压传感器的绝缘电压电源未发送正确的电压、并且运算放大器未正常运行。

    经确认、可以从运算放大器输出正常电压、并且可以通过向电压传感器输入正确的电压从 ADC 输出预期值。

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

    Gougki ono,

    感谢您报告您的解决方案结果。 我很高兴听到您能够解决此问题!

    Tommy