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.8377万D:ADC在2.5V时返回4096个电压,而不是3V或3.3V电压

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/573259/tms320f28377d-adc-returns-4096-at-2-5v-instead-of-3v-or-3-3v

部件号:TMS320F2.8377万D
线程中讨论的其他部件: LMP7709LMP7704controlSUITETINA-TILM358DESIGNDRIVE

尊敬的先生/女士:

我正在使用 Delfino TMS320F2.8377万D controlCARD R 1.1 并读取ADC上的恒定电压。 我注意到它在2.5V而不是3V时“饱和”。 阅读信息表 e2e.ti.com:443/.../TMDSCNCD2.8377万D_2D00_Infosheet_5F00_v1_5F00_5.pdf,它清楚地指出,对于我的主板版本(R R 1.1),如果SW2处于向上位置,SW3处于左侧位置,则如果R42已填充,R43未填充,我应该得到Vrefhi=3。 这是我的主板上R42和R43的情况,我测量了R42处的稳压器(U13)电压输出,它是正确的(3V),而输入电压是3.3V。 此外,我已经检查了ADC响应,SW3在正确的位置,应该给出3.3V的Vrefhi,但我仍然得到相同的响应! SW3的两个位置使ADC在大约2.5V时饱和。 ADC可在最大2.5V下正常工作,因为我已经测试了ADC输入电压介于0和2.5V之间,并且我使用代码读取了比例值。 有什么想法? 我真的需要读取最大3V甚至3.3V的电压才能使用输出为0-3V的模拟传感器。

感谢您的参与,

Panagis Vovos

讲师
希腊佩特雷大学

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

    您好,Panagis,

    这只发生在一个ADC上还是所有ADC上? 检查此情况的最佳位置是使用ADC输入14或15,这两个输入端连接到所有4个ADC。  

    检查参考电压的其他好位置是SW2的端子处以及电容器C15至C18之间。  

    请注意,此controlCARD修订版存在错误,其中用于驱动参考的放大器为LMP7709。  这是一个解补偿的运算放大器,因此不是单位增益稳定。  我不希望这会改变ADC参考的直流电平,而是可能在参考电压的顶部添加一些振荡,然后这些振荡会显示在ADC输出中。  您可以尝试用正确的运算放大器(LMP7704)替换此运算放大器,或者您可以尝试通过移除IC并将输入连接到输出来绕过缓冲器。  

      

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

    您好Devin:

    非常感谢您的回复。 我们注意到所有ADC信道都存在问题。 我们还测试了C15-C18电压,它们在3.0V电压下均得到良好调节。 因此,Vrefhi引脚确实连接到3V。

    知道Vrefhi绝对正确后,我们返回到编程参数。 令人惊讶的是,我们注意到了以下内容。 使用这些自动设置:

    我们的ADC中除了噪声(大约2800或4096)没有得到任何东西。 我们意识到必须将 ADC时钟预分频器(ADCCLK)降低到/4才能测量稳定的电压。 可能太快了。 但是,1.51V输入仍转换为大约2560/4096,4096,最大电压仍保持在2.48V。

    神奇的是,当我们将 低速外设时钟预分频器(LSPCLK)更改为/2时,一切都几乎正常。 我的意思是1.51V-->约2090,最大电压为2.9V。

    问题1) 当有单独的ADC时钟预分频器时,低速外设时钟预分频器会产生这样的影响?

             2)我们是否可以使用 AddaRegs.ADCOFFTRIM.Bit.OFFTRIM微调偏移(1.5V-->2048/4096) ,4096,我们如何才能做到这一点?

    我们的最后工作设置如下。

    如能在这些问题上提供任何帮助,将不胜感激。

    谢谢!

    Panagis

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

    您好,Panagis,

    我肯定会建议您仔细阅读设备数据表;例如,这将告诉您支持的ADCCLK最大值是多少:

    您可能还想查看您使用的S+H持续时间与源的外部阻抗;您只能使用低阻抗源的最小S+H持续时间(R < 50欧姆,C可能是~10pF)。

    LSPCLK没有理由直接影响ADC的运行。  ADC的触发确切程度如何? 触发器是否可能通过其中一个通信模块(例如 SPI)和LSPCLK的减慢是否降低了触发率?

    在中刻度上,ADC增益和偏移误差都将影响转换结果。  您可以使用偏移微调寄存器来重新微调ADC偏移。  该过程记录在设备技术参考手册中。  这通常不是必要的;出厂偏置饰件应该相当好。  用户不能对ADC增益错误进行硬件修正,但您可以对结果进行数字后处理,以便根据需要进行扩展。

    如果特定于该ADC通道的外部信号中存在偏移错误,则更好的策略是使用其中一个ADC后处理块(PPB)来消除仅该通道上的偏移错误。

    通常,如果不使用C代码+代码编写器工作室,我们很难调试软件问题。  您可能希望尝试使用CCS在controlSUITE中运行其中一个提供的ADC示例,以明确排除任何硬件问题。  然后,您可以与用于进一步调试软件的第三方工具的提供商合作。   

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

    Devin,您好!

    感谢您的快速回复。 我们使用C2000系列的时间还不到10年,从ezDspf2812开始,转向F2.8335万以获得更好的产品,最终使用f2.8377万d控制卡,因为TI还有一个未解决的问题,TI支持也给出了模糊建议 (详情请见此处)。 这些年来,我们一直在使用Simulink平台,因为我们使用了"快速原型",AKA "在进行控制的同时为电力工程研究人员节省了编码"。 我们在过去遇到过一些有关C2000系列的问题,但老实说,控制卡是迄今为止最大的失望。 我们已经浪费了大约半年的时间从f2.8355万移植我们的软件,而且我们还远远没有完成,我们还面临 着与Simulink,CCS或该卡有关的其他几个问题! 顺便说一下,  f2.8355万 (我们转至f2.8377万d控制卡的原因)的问题仍然是f2.8477万d控制卡的问题,它的成本只是更高...

    我们在手册中阅读了有关ADC 50MHz限制的内容,这就是为什么我们选择了/4作为ADC时钟。 如果我们将其进一步分割,就没有什么区别。 如果Mathworks没有为您的硬件提供适当的软件支持,您不应该让他们这样说。 例如,为什么ADC的时钟分配器没有预设为4,而是设置为/1,为什么 有/2/3选项,因为它不能在更高的速度上工作? 人们必须在问题出现后阅读手册才能理解这一点?

    从来没有,我们的传感器出现匹配阻抗问题,过去从未与预校准器(F2812或f2.8355万)发生过混淆,我们总是使用软件采样时间来触发ADC。 在代码测试ADC故障中,只有一个ADC块向SCI-A发送数据。 因此,在影响ADC时,低速外设预校准器绝对没有意义。  

    请告诉我们哪些外围设备属于低速级别?

    谢谢!

    Panagis

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

    您好,Panagis,

    SCI,SPI和McBSP似乎都在LSPCLK域上。  

    您是并行运行多个ADC,还是目前只使用一个ADC?  如果多个ADC在触发源,分辨率和S+H持续时间方面未同步,则并行运行时性能可能会降低。  如何实现这一点在TRM的“10.3 Tm1确保同步操作”一节中进行了说明,性能下降在数据表的“ENOB”和“ADC至ADC隔离”规范中进行了说明。 应该仍然可以使用软件触发并获得同步操作,但仅当外部GPIO用于触发时。  是否似乎Simulink正在根据ADCEXTSOC引脚配置执行此操作?

    ADC输入引脚上有多少电容?  ADC输入的采样率是多少?  如果您定期采样信号,您是否看到前几个样本与稳态之间的样本有任何变化?

    我会确保您的反馈能够提供给Mathworks。

    我可能无法直接帮助解决1.5 第二个ePWM峰值问题,但如果您仍在F2.8377万D器件上看到它,我可以让TI的其他人继续调试。  

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

    您好Devin:

    再次感谢您的回复。 在下面的示例中,我们仅使用一个ADC:

    正如您在下面看到的,我们使用0.0001s的采样时间,而不使用ADCINT。 这是相当慢的,意味着我们可以得到50Hz波形而不是"保持电压",因为低速外设被2除。 但问题是,为什么SCI影响ADC读取的值(将它们 全部升高,并在2.4V时饱和) ? 在所有测试中,  根据分频器的设置,ADC测量从 一开始就始终良好或一直不好,即我们在一段时间后看不到值稳定。

    最后,1.5s的峰值问题是我们考虑更换正在使用的主板并转到另一家公司的原因。 因此,对未解决问题的任何帮助都将节省我们的时间,并将为您提供支持信用。

    再次感谢,

    Panagis

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

    您好,Panagis,

    我认为问题可能是S+H窗口仅设置为'7'。  在此设备上,S+H窗口实际上由SYSCLK而不是ADCCLK计时。  这可确保在根据来自CPU时钟域的触发器启动样品时,不会出现任何抖动(它还提供了配置S+H窗口的更多分辨率)。  在任何情况下,如果SYSCLK设置为200MHz的标称值,并且S+H为7 SYSCLK,则S+H的长度仅为35ns。  此设备上的S+H最短持续时间为75ns,但您可能需要更多时间,具体取决于传感器/信号源的特性。

    我们在DS部分“ADC.ADC.1 5.8 输入模型”的数据表中提供了1.1 的输入模型。  在TRM章节“10.3 .........................................2 Choosing an Acquisition Window Duration”(选择采集窗口持续时间)中,我们提供了一些指导,说明如何粗略地估计给定信号源的S+H窗口需要多长时间。  如果您在e2e论坛上搜索我的帖子历史记录,我已经提供了一些更详细的信息,说明如何通过分析或使用TINA-TI (SPICE)来计算正确的S+H持续时间。  当然,如果采样率较低,而您不关心触发器到采样延迟,您可以将S+H配置设置为类似于100个SYSCLK周期的大值。  

    S+H持续时间不足将解释信号衰减问题。  

    我还会让Mathworks知道,他们可能应该将默认的S+H更改为'15' SYSCLK,甚至可以让用户以ns而不是周期来指定此值(或者他们至少应该向用户说明这是SYCLK中的值)。  

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

    非常感谢您提供的信息。 我们将研究所有这些参数并定义ADC的设置。 但是,我记得将窗口增加到更高的值,但我没有注意到任何改进,尽管其他设置可能在当时导致了问题。
    一旦我们计算出合适的设置,我将立即返回给您。 我们将从100个SYSCLK周期开始。 但请记住,我们始终使用恒定直流电压开始测量,因此不能用小窗口解释所有内容。

    峰值也是我们非常感兴趣的内容,因此如果您对此有任何反馈,请告知我(如果我们可以添加一些测量值)。

    此致,

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

    尊敬的Devin:

    我们今天按照您的说明进行了测试。 我们得到了一些非常有趣的结果。 对于SOC 100,我们获得的直流电压测量值与SOC=7的测量值相差毫伏。 由于输入电压是恒定的,大于100的SOC不应进一步改变读数,对吗? 我们将SOC增加到最大值(512),再次获得不同的读数。 我们正在讨论的是,对于完全调节的直流电压电源,在所有测量中保持电压稳定的测量值之间的电压介于10-20 mV之间。 不同SOC窗口的测量值之间的差异(所有SOC窗口都很大!) 对于我们的高压传感器(600V->3V)来说,确实是一个大问题。 对于超过SOC阈值的直流电来说,它不应该有任何区别,但奇怪的是,它会有区别。 如果我们可以进一步提高SOC,我们如何确保这不会再次改变我们的结果? 有什么想法? 我们有些困惑。  

    另一个问题是,为什么我们的F2.8335万 ADC没有遇到这样的麻烦,在这里,流程是一个5分钟的任务,设置了默认值???

    再次感谢,

    Panagis

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

    正如Devin指出的,您必须更加小心地设计输入阶段。 主要原因是S/H电容器值从2.8069万和2.8335万中的1.64 pF更改为14.5 pF。 这是很重要的。 基本上,这意味着所有输入都必须缓冲,或者您必须在ADC输入附近有相当大的电容器(最好具有低ESR和ESL)。

    如果您使用实验室工作台电源和不带任何缓冲区的controlCARD测试性能,您可能会遇到上述问题。

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

    即使是直流信号,您也必须考虑S+H持续时间;ADC中的采样电容器不能保证在任何特定电压下启动。

    当您说您的传感器从600V转至3V时,您是否使用分压器? 分压器的有效电阻将是两个电阻器的并联组合。 您可能需要平衡分频器的静态功耗与分频器驱动ADC的能力。 或者,您可能希望使用运算放大器缓冲分流器的输出。

    Mitja认为此器件上的ADC架构已从F2833x (管道)更改为F2837x (SAR)是正确的。 这是采样电容增加的部分原因(同时支持16位操作)。 请注意,F2837x的开关电阻低于F2833x,但总的来说,您需要更好的输入来驱动F2837x。 您肯定不会总是需要运算放大器或缓冲器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的Mitja和Devin:

    感谢双方的回复。 遗憾的是,如果我们没有为传感器使用缓冲输出,所有这些都是有意义的。 我们实际上使用OP-AMP并获得统一增益。

    此致,

    Panagis

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

    您使用哪种运算放大器?在将运算放大器输出驱动到引脚之前,您在运算放大器输出之后是否有R-C?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Panagis,

    我总是使用Simulink来调试代码。

    您在检查ADC结果时是否观察到很大的噪音? 特别是当您输入正弦波(切换至0至3 V)时? 我在ADC结果中听到了很大的噪音。 我想我们可能需要将过滤器焊接到实验板套件上。

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

    你好,建伟

    我不知道实验者套件。 但是,我对控制卡所做的 是在Simulink中将SOC设置为最大值(即512),并在"时钟参数"中将"低速外设"设置 为/2。 任何比这更快的事情都不起作用。 但是,我们的模型使用0.0001s的采样时间(这对于任何转换器应用程序来说都非常好,即每个正弦周期200个样本),因此SOC=512和L-S P时钟=/2,仍然比采样时间快得多。

    我希望这能有所帮助,

    Panagis

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

    您好Devin:

    很抱歉回复太晚。 我们使用LM358 (典型选择)。 否,我们在将其驱动到销之前没有任何R-C滤清器。 这是一个印刷版,所以我想我们也不应该有显著的消瘦元素。 以非常非常慢的ADC速率进行改进。 512的SOC (这是Simulink中的最大值)确实可以改善情况。 请注意,这是直流电压,因此这是很长的时间。

    谢谢!

    Panagis

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

    您好,Panagis,

    512也是硬件支持的最大S+H持续时间。

    对于ADC,输入为DC并不重要;您仍需要将ADC采样电容器(未知起始电压)稳定在可接受的误差范围内。  通常我们使用1/4LSB作为保守误差限制。

    LM358的转换速率为300mV/us,带宽为700KHz。  对于0-3V步进(S+H电容器的最坏情况下起始值),放大器可能需要3V * 90 % * 1us / 0.3V = 9us的时间来转换范围内的90 % ,然后再需要 227ns * 7.4 = 1.7us的时间来稳定到1/4LSB = 10.7us总时间。  

    注:300mV =(LSB/3)*4096 = 0.3 409.6

    注意:从0.3V稳定到1/4LSB的时间常数=-ln (0.25 / 409.6)= 7.4 TCS

    注:700KHz的时间常数=1/(2*PI*700KHz )=227ns

    512 * 5ns =仅2.56us,因此您需要使用更快的运算放大器(或者您也可以将SYSCLK显著降低)。  

    此计算仅考虑运算放大器本身。  由于ADC输入电容+印刷电路板跟踪电容可能小于LM358数据表中指定的负载(回转为30pF,沉降为20pF),因此沉降可能会稍微快一点。  但是,这并不考虑运算放大器的带宽与ADC输入本身的稳定时间之间的交互作用,而当时间不受运算放大器特性的支配时,这一点将更为重要。

    ADC时间常数的一阶近似值为14.5pF * 425ohms = 6.163ns。  对于满刻度步长(忽略回转),稳定到1/4 LSB的值是-ln(.25 / 4096)= 9.7 时间常数=60ns。 因此,如果有一个完美的运算放大器,我们可能会比DS的最小稳定时间(75纳秒)更好。

    要使用真正的运算放大器来满足75ns的要求,运算放大器+ ADC输入的有效TC需要为75ns / 9.7 =7.732ns或更低。  时间常数的交互方式的粗略近似值是将它们添加到RMS中,因此7.732ns = sqrt(6.163ns^2+ XNS^2)=>运算放大器时间常数需要为4.67ns或更低,这意味着运算放大器带宽至少需要为1/(2*PI*4.67ns)=34MHz。

    下面是一些满足S+H窗口持续时间所需的更近似运算放大器BWs:

    75ns => 34MHz

    100ns => 19MHz

    200ns => 8MHz

    1US => 1.5MHz

    请注意,这是一个相当粗略的估计,因为它不考虑运算放大器回转,而是使用运算放大器如何与ADC输入交互的大致近似值。  最佳做法是用香料模拟整个事物。    

    我建议您找到一个与LM358 (BW)的引脚兼容运算放大器,它的频率接近10MHz,从TI获取一些示例,然后尝试您的主板中的运算放大器。  

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

    这真的很有帮助。 Simulink模式中的默认值刚刚不起作用。

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

    你好,Devin,

    写得非常好,比较容易理解。

    最好在2.8377万参考手册中或至少在一份类似“使用TMS320F28xx 28xxx DSC设计模拟接口概述”- spraap6a的单独文档中发布像您这样的文本。

    如果TI发布的设计与此同步,这也将是一个很大的帮助。 但是,每种设计都有不同的界面。 我最喜欢的是DesignDRIVE开发套件。 每个模拟输入都有不同的缓冲运算放大器和不同的RC电路。 如果这是有意的,那么我希望看到一些评论,说明为什么这样设计。 我还希望在配置采集时间的代码中看到一些有关此问题的评论。 但我怀疑它只是复制以前的设计(这就是当今世界的运行方式)

    此致,Mitja

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

    我们正在努力生成一份应用说明,该说明就如何计算,模拟和测试足够的S+H持续时间提供了深入的指导,但我还没有明确的指导准则来确定何时发布。

    我将查看设计驱动器硬件和文档。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Devin。 感谢您的详细回复。 我们将仔细研究此问题,更换我们的运算放大器,并将结果反馈给您。 到那时,我们将以较慢的速度经营。

    Panagis