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.

[参考译文] TMS320F2.8379万D:F2837xD Delfino ADC

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/579155/tms320f28379d-f2837xd-delfino-adc

部件号:TMS320F2.8379万D

大家好,

我们正在开发F2.8379万D Delfino part 337球栅。 要求是在16位模式下使用同步V/I对采样3相电压和电流。 我对Delfino中的4个ADC模块有点困惑,因此请确认此方案是否按预期工作。 所有SOC的触发源均为timer0。 SOC0应触发VA和IA模拟采样,SOC1 Vb,IB和SOC2 VC和IC。

 

                         差速器输入       模块         SOC

               VA        C2,C3                  C              0

               IA        D0,D1                    D              0

               VB        C4,C5                    C              1

               IB        D2,D3                    D        1.              

               VC        B4,B5                    B              2

               IC        D4,D5                    D              2 <-最后一次转换

此外,在spruhm8f中提到SOCC和SOCD,这是否属于拼写错误?

提前感谢

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

    SOC编号不会决定采样的顺序。 对于每个ADC模块,如果接收到触发器,采样将立即开始,SOC编号仅确定转换的优先级。

    您可以在4个ADC中的每一个上使用SOC0同时获取前4个样本,然后在其中两个ADC上使用SOC1获取其余2个样本。 如果还有其他触发源,则最好为尚未使用的两个ADC配置SOC1的伪转换,以确保ADC始终同步运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢Devin,

    我已经说过所有SOC都是由timer0触发的,但没有其他任何内容,在这种情况下,SOC编号具有一些优先级(顺序),对吗? 如果我对第一对VA/IA使用SOC0,对Vb/IB使用SOC1,对VC/IC使用SOC2,是否按该顺序工作(同样仅限单源触发Timer0)?

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

    因此,如您在上述场景中所配置的那样,当发生计时器0触发时,第一组转换将是:

    ADCC SOC0 (C2/C3 = VA)与ADCD SOC0 (D0/D1 = IA)并联,ADCB SOC2 (B4/B5 = VC)

    那么下一组转换将是

    ADCC SOC1 (C4/C5 = Vb)与ADCD SOC1 (D3/D4 = IB)并行

    然后下一组将是

    ADCD SOC2 (D4/D5 = IC)

    基本上每个ADC都有自己的一组SOC,并独立运行以确定下一个转换将是什么。 事实上,ADC真正独立运行,因此如果您不将并行发生的样品的S+H持续时间配置为相同,则一个ADC将先于其他ADC开始下一个转换,这可能会导致性能问题(请参阅TRM部分,了解如何确保同时进行样品)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次感谢您的澄清!
    换言之,上述目标是同步3相电压和电流的成对转换,但不能使用3个ADC模块来实现。 只能使用如下所示的2个模块完成? 遗憾的是,B1必须保存用于DAC,因此我的应用程序中需要所有3个模块B,C和D。


    差速器输入 模块 SoC

    VA B0,B1. B 0

    IA d0,d1 D 0

    vb B2,B3 B 1.

    IB D2,D3 D 1.

    VC. B4,B5 B 二

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

    您还应该能够使用ADC A。在使用所有DAC通道时,肯定可以转换3对转换。

    例如,样本组1 = A2/A3 || B2/B3 || C2/C3 || D0/D1,然后样本组2 = A4/A5 || B4/B5

    如果您不想使用ADCA,可以使用伪转换在3轮中将其用于固定计时槽,这可能类似于:

    B2/B3 || C8/C9 || D2/D3,然后B8/B9 || C4/C5 || D4/D5,然后B4/B5 || C8/C9 || D0/D1
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上,如果您只想使用ADCB和ADD,您可以:

    B2/B3 || D0/D1然后B4/B5 || D2/D3然后B14/B15 || D4/D5
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉,我忘记提到ADCA用于其他设备(daca,DACB和其他一些12位信号),所以我们没有。 B14/B15解决方案听起来很有趣。 我会研究一下。 这对ADC来说是一个非常好的练习。 感谢您的帮助!

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

    您是否已查看TRM中有关如何维护同步采样的部分? 我们不建议在与其他ADCC的异步中运行ADCA,特别是当您对某些ADC使用16位模式时。 相反,您可以(手动)在同一ADC上的转换组之间切换分辨率。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,我已经咨询过TRM,发现有时会很混乱,比如提到SOCC和SOCD可能是打字错误。

    我们打算以12位独立使用ADCA,并与其他3个模块(16位)异步使用,可能与另一个触发源一起使用。 这是为了读取3相Vs和is之外的其他传感器。 ADCA上的某些信道也可能是软件SOC强制类型。 TRM指出混合分辨率可能会导致异步操作,但在ADCA上,我们可能打算对所有信道执行此操作。 您是否看到此设置的任何缺点?

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

    我提交了一个TT,以更正对SOCC和SOCD的TRM引用。 (ePWM确实有比较C和比较D,但它们不会映射到它们自己的独立SOC触发器。)

    如果您独立于16位ADC使用ADCA,则16位ADC可能会与12位ADC异步操作。 这将影响16位和12位ADC的性能,但这种影响在16位ADC中将更加明显。 我们实际上明确不支持这种操作模式,因为性能会很差。

    您可以在ADCA上使用所有12位输入,但需要确保它们不会与其他ADC上的转换重叠。

    一个更简单的解决方案是混合ADC中的分辨率,并在规定的时间内进行所有12位转换。 有几种方法可以实现此目的,但最简单的方法可能是更改ISR中16位结果的分辨率,然后更改ISR中12位结果的分辨率。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Devin,

    您的意思是不是相位差还是实际信号失真? ADC模块之间是否完全独立运行,且具有不同的触发源,特别是在可能发生重叠时? 实际上,我已经考虑过您建议的解决方案(动态更改分辨率),但我认为如果我将整个模块与单独的触发器专门用于这12位目的,我就不需要它了。 失真可能是一个交易障碍,但 对于我们的预期用途而言,不同步不是问题。

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

    您好,Ed,

    性能将下降。  对于16位,性能下降非常糟糕,因此我们不建议/支持此模式。  对于12位,我们指定ENOB和ADC到ADC隔离(基本上是内部ADC到ADC的串音)的性能下降:

    您可以在标题为"确保同步操作"的章节的TRM中阅读有关哪些内容符合/不符合异步标准的更多信息, 但简短的描述是,您想要以锁定步骤操作所有ADC ...因此,对于给定ADC,使用相同的分辨率和信号模式配置,并且对于每个SOC,使用相同的触发源和相同的S+H持续时间(不同的信道选择是可以的)。  

    更改ADC分辨率和再次采样之间不需要等待时间。  执行此操作的首选方法是使用ADC setMode函数。  如果这花费的时间太长,您也可以翻转位以获得分辨率并发送信号mode...in。这种情况下,使用功能将模式设置为16位以加载正确的净尺寸...由于未加载12位特定的净尺寸,在12位模式下性能将略有下降。 但这并不是对性能的重大影响。  

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

    很高兴能进行这次讨论。 否则,我们会忽略ADC的串谈。 虽然我可以看到这是要求更严格,更复杂的采样方案中的一个重要漏洞源,在该方案中需要混合12位和16位转换。 对我们来说,我们只需翻倒国际社会的投资报告中的一些部分,并加以处理。 我假设每次完成ADC ISR时,都会对4个模块中的每个模块执行此操作,例如:

    在16位ISR中

    中断无效ADCB1_ISR(void)                  // 16位ADC

    PIECtrlRegs.PIEACK/ALL = PIEACK_Group1;//必须确认PIE组

    。。

    。。

    //更改为12位分辨率

    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);

    }

    和12位ADC ISR

    中断无效ADCA1_ISR(void)                  // 12位ADC

    PIECtrlRegs.PIEACK/ALL = PIEACK_Group1;//必须确认PIE组

    。。

    。。

    //更改为16位分辨率

    AdcSetMode (ADC_ADCA,ADC_Resolution _16BIT,ADC_SIGNALMODE_SINGLE);
    AdcSetMode (ADC_ADCB,ADC_Resolution _16BIT,ADC_SIGNALMODE_SINGLE);
    AdcSetMode (ADC_ADCC,ADC_Resolution _16BIT,ADC_SIGNALMODE_SINGLE);
    AdcSetMode (ADC_ADCD,ADC_Resolution _16BIT,ADC_SIGNALMODE_SINGLE);

    }

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

    是的,这正是我们的建议。

    然后,您可以使用SOCA ePWM触发器触发一组转换,使用SOCB触发器执行其他具有一定相位差异的转换,您可以使用具有"突发模式"的相同触发源在采样组之间切换, 或者,您可以使用与GPIO关联的外部中断以软件方式触发第一组ISR内的第二组转换。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Devin,

    我曾考虑过这个计划... 如果采样其中一个分辨率比另一个分辨率快得多,即不交叉(或您可能称之为LOCKSTEPPING),会发生什么情况? 假设ISR读取速度更快的16位样本,然后将分辨率更改为12位,但在触发较慢的12位采样之前,下一次转换仍为16位。 这是否会对读取为12位的16位样本造成问题?

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

    切换分辨率之前,您一定要确保所有样本均已完成。

    以错误的分辨率采样不会有损坏设备的危险。

    如果样片应该是16位,但在ADC处于12位模式时触发,那么样片实际上应该是正常的,仅在12位分辨率下,不会从差分信号的任何共模噪声抑制中受益。

    如果样例假定为12位模式,但在ADC处于16位模式时触发,则该样例可能会损坏,因为ADC将对不相关的差分信号对进行采样,而不是真正的差分信号对。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这根本不是好消息。 正如我所说,我们打算完全独立于其他3个16位模块使用12位模块ADCA,这也意味着随机采样。 根据您的解释,这是不可能的。 所有模块之间必须存在某种锁步或交错关系,才能使分辨率混合正常工作。 如果是真的,这可能是ADC功能的一个主要弱点!

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

    这是准确的;如果您使用的是混合分辨率,您将需要将4个ADC系统视为可并行进行4个转换的单个ADC。 如果在某些插槽中没有转换,则执行虚拟转换。 您要同时在整个系统的分辨率之间切换。 如果您有多个异步循环,这可能会变得丑陋,因为您需要确保ADC不会转换为切换分辨率。

    如果您只使用12位分辨率,则可以在176引脚和337球封装上独立/异步操作ADC,但性能会有所降低。 在BGA软件包中,性能下降非常小。