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.

[参考译文] TMS320F28376D:比较器 DAC 问题上的偏移

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/646754/tms320f28376d-offset-on-comparators-dac-issue

器件型号:TMS320F28376D
主题中讨论的其他器件:C2000WARE

大家好,  

请使用 TMS 器件  TMS320F28376DPTPT  。   

我使用 所有板载比较 器,但仅在其中一些比较器上( 不同芯片上的不同比较器编号),我看到 DAC 上有一个问题: 存在大约300mV 的偏移  。 因此,如果我将 DAC 基准设置为零,比较器将不会改变状态,除非 输入中的 I m 超过300mV ,并且所有输入范围都存在偏移(因此 比较器的阈值为1V,我需要1.3V 的输入)。

在连接方案中,我使用。

我清除 寄存器 DACHVAL ,CPRIPH 保持高电平 (比较器低电平 )直到 CMPINxP 的输入 达到300mV。   我使用 内部 ADC 检查了相同的输入电压 ,并且可以正确地看到300mV 输入 ,因此电路板上没有问题。

如前   所述,不同设备上的不同比较器(有些比较器按我的预期工作)存在问题。

请你弄错了吗?

谢谢你  

此致

Calro

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

    您好、Carlo、

    真有意思。 CMPSS 偏移远小于300mV。 为了更好地了解正在发生的情况、我需要一些细节和细节。

    1.这是定制板吗?

    2. COMPDAC、VDDA 或 VDAC 的基准选项是什么? 电压是多少?

    3、哪种 CMPSS 起作用?哪种 CMPSS 不起作用?

    4.您是否在高电平和低电平比较器上看到了相同的问题?

    5.是否启用或禁用磁滞?

    6.驱动同相比较器输入的是什么?

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

    卡洛、

    您是从 COMPSTS 寄存器还是通过 X-BAR 观察比较器状态?  如果它是 X-BAR、请确保多路复用器选择不是两个比较器之间的 OR'd 信号(MUXn.1是 OR'd)。

    Tommy

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

    嗨,Tommy,

    谢谢,让我再次检查,我会回来的

    此致

    卡洛

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

    大家好、

    卡洛问我。

    提前感谢您的帮助。 当有人在这个论坛上回答问题时、我总是会解决问题、因此我非常感谢您的帮助。

    随附了一个自述文件、我在其中尝试解释我正在执行的操作以及我如何配置模拟比较器。 我希望这一点已经很清楚。

    我可以附加项目、但我必须征得我的上司的许可、直到星期一我才可以。

    再次感谢您的帮助、

    此致、

    Andrea Marcianesi

    e2e.ti.com/.../ReadMe.docx

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

    尊敬的 Andrea:

    感谢您提供额外的详细信息。 由于 cmpss 配置代码应该已经足够、因此不需要提供工程。 查看您的配置代码、您会想到一些问题。

    1.您已启用 Xbar 的异步路径,但您也正在配置过滤器。 那么、您使用哪条路径来检查跳闸、压缩寄存器或 GPIO?

    2.调用"CMPSS_Init2"后代码中是否有延迟? 比较器有一个加电时间、为了实现正常运行、需要满足这个要求。

    3.如果切换到使用压缩程序,是否会看到相同的问题?

    此外、如果您不使用 CMPSS 中的另一个 compdac、通常是一个好主意。 在您的情况下、您不使用 compl、因此您应该将0xFFF 写入 DACLVALS、这样您就不会因为同相输入进入两个比较器而受到任何干扰跳闸。

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

    1) 1)您已启用 Xbar 的异步路径、但您也正在配置滤波器。 那么、您使用哪条路径来检查跳闸、压缩寄存器或 GPIO?
    我正在使用 GPIO:使用这些设置
    gpst_cmpssRegs[e_ecmpss]->COMPCTL.bit.CTRIPHSEL = 0
    gpst_cmpssRegs[e_ecmpss]->COMPCTL.bit.CTRIPOUTHSEL = 0

    无论是否配置了滤波器、我都选择比较器的异步输出。

    然后、借助这些设置、我将比较器输出到 GPIO

    OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX0= 0;OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX0= 1;
    OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX1= 0;

    很明显、对于 cmps1子模块。 我弄错了吗?
    2) 2)您在调用"CMPSS_Init2"后代码中是否有延迟? 比较器有一个加电时间、为了实现正常运行、需要满足这个要求。
    我使用以下6个函数配置了6个 cmpss。
    CMPSS_Init2 (e_CMPSS_1、0.0、0.0、e_cmp_pwm_1_sync);
    CMPSS_Init2 (e_CMPSS_2、0.0、0.0、e_cmp_pwm_2_sync);
    CMPSS_Init2 (e_CMPSS_3、0.0、0.0、e_cmp_pwm_3_sync);
    CMPSS_Init2 (e_CMPSS_4、0.0、0.0、e_CMP_PWM_4_SYNC);
    CMPSS_Init2 (e_CMPSS_5、0.0、0.0、e_CMP_PWM_5_SYNC);
    CMPSS_Init2 (e_CMPSS_6、0.0、0.0、e_CMP_PWM_6_SYNC);

    每个寄存器的末尾都有比较器 gpst_cmpssRegs[e_ecmpss]->COMPCTL.bit.COMPDACE= 1的启用

    在这些函数之后、我配置了 EPWM 和其他内容、但由于模拟比较器已启用、因此已经在工作。 那么我应该插入什么延迟以及在哪里? 我应该在配置和 gpst_cmpssRegs[e_ecmpss]->COMPCTL.bit.COMPDACE= 1指令之间放置一些 NOP 结构?


    3) 3)如果切换到使用 compl、您是否会看到相同的问题?
    是的、我使用以下指令将 compl 配置为输出、

    OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX1= 0;
    OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX1= 1;

    而不是
    OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX0= 0;
    OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX0= 1;

    行为完全相同:当模拟输入电压低于330mv 时、当 Cmpss1Regs.DACLVALS.bit.DACVAL=0时、gpio58变为高电平。 COMPL 和 COMPH 有2种不同的 DAC?

    4) 4)此外、如果您不使用 CMPSS 中的另一个 compdac、通常也是一个好主意。 在您的情况下、您不使用 compl、因此您应该将0xFFF 写入 DACLVALS、这样您就不会因为同相输入进入两个比较器而受到任何干扰跳闸。

    我尝试听从您的建议、将0xFFF 写入 DACLVALS、但没有任何变化。
    图12-1. CMPSS 模块方框图。COMPH 无法影响 COMPL 输出、反之亦然。 我弄错了吗? 同相输入中的干扰怎么可能会影响 COMPH 的输出?

    我还将项目发送到 Carlo、这样可以确保没有任何错误的配置、这显然是我看不到的。 如果您也可以查看该项目(非常短)、它将非常有帮助。

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

    安德烈

    1.好的。 只是希望确保异步路径是您预期的输出路径、而不是滤波器。 您的配置的输出 XBar 设置正常。

    2.当比较器启用"COMPDACE=1时、带隙和比较器电路需要一段时间才能完全上电。 在数据手册中、这被指定为比较器加电时间10us。 实际上、比较器的上电速度比上电速度快得多、但由于您看到的是意外行为、我们需要涵盖所有不太可能的途径。 您可以使用"delay_US"函数。 您无需在每次对"CMPSS_Init2"进行函数调用后放置它、您可以在配置最后一个比较器后调用它一次。

    3、是的、每个 CMPSS 模块有2个不同的 COMPDAC、但它们共享一些组件。

    4.好的。 一般来说、即使问题得到解决、您仍然必须遵循该建议、因为正如我在前面提到的、COMPDAC 共享一些组件、因此 COMPH 或 COMPL 上的跳闸会暂时干扰另一个组件。 数据手册中将其指定为"CMPSS DAC 输出干扰/干扰时间"。

    现在、我倾向于做一个坏的部分、但我认为这一点还为时过早、因此我们需要排除其他所有问题。 我需要你澄清几个问题。

    5.这是定制板吗?

    6.如何为6 CMPSS 提供同相输入? 这个电压源是全部6个、还是每个 CMPSS 都有自己的电压源?

    比较器是一个非常敏感的器件、因此在两个输入非常接近时查找跳闸点不是一个可靠的测试。 您是否可以尝试改用滤波器路径、也可以查看 COMPSTS 寄存器以确保在 GPIO 跳闸时设置它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.好的
    2.我添加了 delay_us (10)结构、但没有变化。
    不错
    4.是的,现在我找到了它。 我不知道是否存在交叉比较器干扰、无论如何、100LSB 是+-80mV、而不是300mv。 无论如何,你的建议是好的,我会从现在开始跟进。

    我想提醒大家、我在另一个具有不同 DSP 的电路板上遇到了同样的问题。 在这种情况下、cmps1和3受到不同的宏偏移的影响。

    5.是的
    每个 CMPSS 都有自己的。 所有器件都配置了相似但分离的硬件滤波器(RC)。
    7.检查 COMPSTS 寄存器非常困难、因为我在 epwm1中断服务例程中设置 DAC 值、但 epwm1输出配置为具有最大占空比、该最大占空比可通过 PWM 通过直流事件2传入的比较器跳闸来缩短。 当我将 DAC 值设为0时、我看到输出中的最大 PWM 频率、如果模拟同相输入低于300mv、则表示 PWM 永远不会被 comp 短接。 超过300mv 时、PWM 为0、这意味着一旦 pwm1更新 dacval、COMP 跳闸并切断 PWM。 这是比较器的 DAC 似乎具有300mv 直流偏移的另一个证明。

    我真的希望您可以查看我的卡洛应该为您提供的代码。

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

    安德烈

    我收到了来自 Carlo 的项目。 从快速看、没有什么是真正的问题。 此时、不清楚问题是软件问题还是硬件问题。 为了帮助排除软件或硬件问题、我附加了一个我希望您运行的代码。 这是一种您正在做的事情的内在过程、但它是等效的。 而不是为跳闸扫描同相输入、而是扫描 compdac。

    代码的工作方式是将缓冲 DAC 设置为中间代码并扫描跳闸的 comph 和 compl。 您需要将缓冲 DAC 的输出从外部连接到相应 cmpss 的同相输入。 如果您的电路板上不能做到这一点、您可以改用外部电压源并将其设置为1.65V、但如果您在此测试中使用缓冲 DAC、我更愿意这样做。

    将随附的代码放在 C2000Ware 的 cmpss_asynch 示例代码中。

    在所有6个 cmpss 上运行它、并报告您在每个 cmpss 的 comph_untrip_code、comph_trip_code、compl_untrip_code 和 compl_trip_code 中找到的内容。

    /cfs-file/__key/communityserver-discussions-components-files/171/cmpss_5F00_trip_5F00_cpu01.c

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

    您好、Frank、

    我想我理解您的意思。

    我将尝试您的代码、即使我无法将 DAC 输出连接到同相比较器的输入引脚、因此我想我将使用外部电压、 但我想我可以为您提供 每个 cmpss 的 comph_untrip_code、comph_trip_code、compl_untrip_code 和 compl_trip_code 的值。

    我只需要一些时间,因为今天即将结束,明天我在假日,星期五是公共假日,所以直到星期一,我才不会讨论这个问题。

    我将在我结束时通知您。

    谢谢 Frank

    Andrea。

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

    弗兰克、晚上好

    我分析了您提供的代码、发现了与我的测试设备相关的问题、这对解决该问题有很大帮助。 最后、DAC 和比较器工作正常。

    这实际上解决了我的问题、但在向您问好之前、我想问您的建议是什么、异步输出或您使用的数字滤波器输出是什么?

    非常感谢您的帮助和建议、

    此致、

    Andrea Marcianesi。

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

    很高兴听到问题得到解决!

    异步或滤波器输出取决于您的应用。 如果您希望从 cmpss 中获得最快速度、则需要使用异步输出。 但是、如果使用异步、如果两个输入电平非常接近且系统噪声很大、则误跳闸的可能性非常高。 另一方面、如果您需要稳定的系统、则应使用滤波器输出。 但是、这也有缺点、因为使用滤波器会延迟您的行程。

    因此、最终需要做出折衷。 我认为在大多数情况下、滤波器是足够的、因为您可以使用窗口和阈值设置来查找应用的最大可接受延迟。