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.

[参考译文] CCS/TMS320F28379D:ADC 单端与差分操作

Guru**** 2595805 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/673840/ccs-tms320f28379d-adc-single-ended-vs-differential-operation

器件型号:TMS320F28379D

工具/软件:Code Composer Studio

使用实验板上的 ADC 组件、我发现在单端模式下、ADC-A 的输入范围为0至3V。 我将 ADC-D 配置为在差分模式下测量信号、并且在经历了大量的头部刮擦后发现输入电压范围现在为+/-3V。 那么、在单端模式下、ADC 看起来是单极的、而在差分模式下、它是双极的吗? 我在任何描述这一点的文献中找不到任何内容、但我的器件正以这种方式工作。

1、这是正确的吗?

2.使用差分输入作为单极时、是否有方法配置 ADC?

BTW:ADC 工作得很好!

John

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

    我认为数据表的信令模式部分应该非常有用:
    www.ti.com/.../signal-mode-t4738267-67

    两种模式的电输入范围均为0至 VREFHI、即使在差分模式下、也不应向 ADC 引脚施加小于 VSSA 的电压。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Devin、

    但是...

    下面是简要的设置信息

    AdcSetMode (ADC_ADCD、ADC_Resolution_16BIT、ADC_SIGNALMODE_differential);

    const int nSampleWindow = 511; //采样和保持时间(这是最大值)
    CONST int nTriggerSel = 7; // ePWM2 SOCA 上的触发

    //测量左侧 Extensometer
    AdcdRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0将转换左侧扩展计
    AdcdRegs.ADCSOC0CTL.bit.ACQPS = nSampleWindow;
    AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = nTriggerSel;

    //测量正确的 Extensometer
    AdcdRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1将转换右侧扩展计;
    AdcdRegs.ADCSOC1CTL.bit.ACQPS = nSampleWindow;
    AdcdRegs.ADCSOC1CTL.bit.TRIGSEL = nTriggerSel;

    中断、读数等工作正常。 如果我将引脚 ADCD-2短接至 ADCD-3 (实验板上的引脚34至36)、我会在 ADCRESULT1中获得32777的十进制读数。 在 ADCD 的通道0/1上具有1.675V 电压时、我在 ADCRESULT0中得到51066。 因此该通道被32767偏移、就好像它也是双极的一样。 如果我施加-1.5V 电压、计数值会低于32767、并且工作正常。

    那么、我在这里说的是、我有很多测量经验、这个东西的运行方式确实就像在具有+/- 3V 范围的双极模式中??? 我不知道有什么其他方式来解释它。 我将软件设置为使用有符号 int 并减去0x7fff 偏移量、然后根据需要使用系数3.0 / 32767.0或6.0 / 65535.0。 读数在正还是负时都是死的?

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

    尊敬的 John:

    您可以在"10.1.3.5 预期转换结果"部分的 TRM ()中获取将引脚上的电压差转换为数字代码的公式(反之亦然)

    在使用公式之前、您需要满足数据表中的以下电气要求:

    • VIN+和 VIN-介于 VSSA 和 VDDA 之间
    • Vin+和 Vin-的共模为 VREFHI/2的+/-50mV。   

    当然、如果您不满足这些要求、它将产生一些输出、但确定输出的公式未定义、性能将不好、如果您对引脚施加小于-0.3V 的电压、则可能会损坏器件。  

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

    是的、我了解给定的规格、我没有告诉您施加的负电压是相对于 ADCINyP 和 ADCINyN、而不是 VREFLOW 或 VREFHI 的。 根据表10-3中给出的规格、ADC 和我的理解是一致的。 我相信差分规格中有一个排印错误。 它将 VREFHI < ADCINyP - ADCINyN <=-VREFHI 作为正常运行值、它应该<= VREFHI、而不是<=-VREFHI。

    根据表10-3中的其他定义、

    ADCINyP - ADCINyN <-VREFHI、RESULT = 0、ADCINyP - ADCINyN >= VREFHI、RESULT = 65535、因此 ADCINyP 和 ADCINyN 之间的差值可介于-VREFHI 和+VREFHI 之间。 在 VREFHI =3V 的情况下、输入之间的差值可介于-3V 至+3V 之间。

    因此、我们已经在这里的切线上消失了。 返回到我的原始问题。

    由于我们都同意 ADC 在差分配置中以双极模式运行、因此在配置为差分输入时、是否有方法将 ADC 配置为在单极模式下运行? 我们的信号将始终相对于 ADCINyP - ADCINyN、ADCRESULT 从32768到65535保持正、因此我们将丢失一个位。

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

    例如、如果 VREFHI = 3V 并且输入接近范围的底部:VIN+= 0.15V 和 Vin-= 2.85V

    然后(Vin+- Vin-)=(0.15 - 2.85)=-2.7V

    如果输入现在接近最大值、则假设:VIN+= 2.9V 且 Vin-= 0.1V

    然后(Vin+- Vin-)=(2.9 - 0.1)= 2.8V

    两者都在范围内
    -VREFHI < ADCINyP - ADCINyN≤VREFHI

    (我将提交要从文档中删除的额外'-'、谢谢)

    在这两个示例中、输入都是如此
    *为正电压
    *共模恰好是 VREFHI/2

    本视频可能还会有所帮助:
    training.ti.com/ti-precision-labs-adcs-sar-adc-input-types

    C2000器件具有"全差分"输入(非伪差分或真正差分)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Devin、

    同意。 但读数仍基于32768中间标度、两者之间的电压差为零。 如果是 VREFHI 对 VREFLO 感到兴奋的某种桥、那我就明白了。 我们的信号将接近于接地、因为它是低电平信号、而 VREFHI 用于高端信号、因此最好在单极模式下运行。 我假设不是。
    谢谢、
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:

    考虑输入的另一种方法是 Vin+与普通单端 ADC 完全相同:当 Vin+为0时、数字输出为0。 当 Vin+为 VREFHI 时、数字输出为最大数字值。 VIN-是该信号与共模电压的补充(如果 VREFHI = 3.0V、则为1.5V)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Devin、

    我并不是说矛盾、但重要的是 Vin+和 Vin-之间的差异。

    请考虑下表

    VIN+ VIN- VIN+- Vin- ADCRESULT
    0 0 0 0x7FFF
    2. 2. 0 0x7FFF
    3. 0 3. 0xFFFF
    0 3. -3. 0x0000

    是的、我同意它们是"全差分"输入。 相对于 Vin+和 Vin-之间的差异、ADC 正在运行双极模式、我真的想运行单极模式来拾取额外的位!

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

    您的前两行是无效输入、因此输出是什么真的无关紧要。 第一个 VCM 为0 (需要为 VREFHI/2 +/- 50mV)、第二个 VCM 为2V (需要为 VREFHI/2 +/- 50mV)。

    这种共模要求是因为输入是"全差分"而不是"真正差分"。 如果它们是"真正差分"、则可以使用任何共模输入电压、输出实际上只是输入之间的差异。