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.

[参考译文] F29H850TU:CMPxH (CMPxHN) 反相输入的 CMPSS 外部引脚选项在 F29x 中不工作

Guru**** 2647175 points

Other Parts Discussed in Thread: HSEC180ADAPEVM

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1584675/f29h850tu-cmpss-external-pin-option-for-inverting-input-of-cmpxh-cmpxhn-is-not-working-in-f29x

器件型号: F29H850TU
主题中讨论的其他器件: HSEC180ADAPEVM

我使用 CMPSS3H 模块。
我已通过外部引脚将其配置为 CMP3H 比较器的反相输入、方法是将 Cmpss3Regs.COMPCTL.COMPHSOURCE 设置为 1。
我有 SOM EVM-EVM (controlCARD)。
我已将 B0 和 B5 配置为 CMPSS3H 引脚的正负输入:
image.png 

我已使用 AnalogSubsysRegs 执行以下操作:

AnalogSubsysRegs.CMPHPMXSEL.bit.CMP3HPMXSEL = 0x1;// B0 source for CMPSS3 COMPH-Postive input
AnalogSubsysRegs.CMPHNMXSEL.bit.CMP3HNMXSEL = 0x1;// B5 source for CMPSS3 COMPH-Negative input

这两个引脚的 GPIO 引脚编号分别为 170 和 175。
我将 DACA 和 DACB 分别连接到 HP 和 HN。
DACA 和 DACB 的输入是两个以不同速率运行的 0-4000 计数器、因此我确信在比较时、它们将返回某种形式的 0 和 1:
image.png

然而、CMPSS3H 的 COMPHSTS 输出始终保持为 1、并且不会不时在 0 和 1 之间切换。:
image.png
我看到 Cmpss3Regs 中的所有内容都已按预期配置:
image.png
但是、该外部引脚选项未进行比较。

为 F29x 提供的 CMPSS 示例不对 CMPSS 使用此外部引脚选项;F29x SDK 中的这两个示例都仅将内部 DAC 用于反相输入。

我需要了解除了 AnalogSubsysRegs 之外是否需要完成一些额外的寄存器设置、以使此外部引脚比较正常工作、就像要设置的任何 GPIO 寄存器一样、即使我已选中 GPFAMUXSEL 寄存器、该寄存器指向这两个 GPIO 默认为模拟值:
image.png
image.png
image.png


总之、我已经检查了内部 DAC 功能、可以正常工作、就像 CMPSS3H 的预期一样。

但是、这个外部引脚功能并不能正常工作。
我需要了解我的实现是否有问题、或者处理器本身是否有问题、您需要从您的角度进行修复

谢谢
Sumukh.

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

    嗨、Sumukh、

    即使您检查了 GPFAMUXSEL、也要检查焊盘隔离、模拟开关使能位以及模拟子系统的任何电源/时钟门控。

    如果期望使用同相行为、是否为 CMPSS 正确设置了极性或反相选项?

    您可以倒转测试吗? 强制负输入高于正输入、然后查看输出是否切换。 有时、接线错误意味着两个输入最终相等或负值始终高于、因此输出保持在一种状态。

    此致、

    Masoud

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

    您好、Masoud。

    不是。 即使在做了您建议的事情之后、它也不起作用。
    我再次尝试使用 CMPSS2、但这也没有按预期进行比较。

    我来详细解释一下我使用外部引脚比较在 CMPSS2H HB0 和 HN0 引脚上观察到的情况:

    我有 DACA 从 0 计数到 4000、DACB 设置为 2000、因此对这两个寄存器进行比较将从比较器产生一个方波、该波在 2000 值时由 0 和 1 组成。

    我使用跳线将 DACA(扩展坞上的引脚 9)连接到 CMP2P (HP0/A6;扩展坞上的引脚 15)、
    使用跳线将 DACB(扩展坞上的引脚 11)连接到 CMP2N (HN0/A7;扩展坞上的引脚 17):

    对于 HP 和 HN、AnalogSubsysRegs 均为 0:



    我看到 CMPSS 示例有几个 GPIO API 调用需要设置、因此我在自己的代码中使用了它们、如下所示:

    A6 和 A7 GPIO 调用:


    我在自己的代码中使用了相同的 API:


    我要传递到 gpio_setPinConfig () 的值分别适用于 GPIO 224 和 225、如上所述的 A6 和 A7:


    因此、我假设上述所有设置都正确、并且只需使用外部引脚功能即可。

    当我运行代码时、我看到现在发生了比较。
    然而,这是完全不正确的。

    我看到、 当 DACA (HP0) 本身约为 1250 时、CMPSS2 的 COMPHSTS 位从 0 切换到 1、而不是按预期在 2000 中切换:

    当 DACA (HP0) 达到 1250 以上时、COMPHSTS 变为 1。
    当 DACA (HP0) 从 4000 恢复到 0 时、COMPHSTS 变为 0。
    当 DACA (HP0) 再次达到 1250 以上时、COMPHSTS 再次变为 1、并重复此循环。
    在这段时间里、DACB (HN0) 在 2000 年仍然存在。
    比较器似乎甚至没有考虑我要传递给 DACB 的值(即 2000)、而只是与 1250 进行比较、后者在任何地方都没有配置。

    当我交换 DACA 和 DACB 时、即 HB0 为 DACB、HN0 为 DACA、我会看到相同的行为:
    当 DACA (HN0) 达到超过 1250 时、COMPHSTS 变为 0。
    当 DACA (HN0) 从 4000 恢复到 0 时、COMPHSTS 变为 1。
    当 DACA (HN0) 再次达到 1250 以上时、COMPHSTS 再次变为 0、并重复此循环。
    在这段时间里、DACB (HP0) 在 2000 年一直保持不变。


    我已经放置一个断点、在切换到 1 时检查所有寄存器。
    当 COMPHSTS 从 0 切换到 1 时、DAC 寄存器如下:

    CMPSS2Regs:


    如上图所示、COMPHSOURCE 指向使用外部引脚而不是内部 DAC、如图所述:

    CMPSS2 的 AnalogSubsysregs 寄存器也正确 (HB0 和 HN0):

    GPIO224 和 GPIO225 是 A6 和 A7 的 AGPIO 引脚、因此必须根据您共享的图像设置它们。
    它们也已正确设置:

    AGPIOCTRLH.GPIO224,225

    GPHAMSEL.GPIO224,225

    因此、本质上、HP 和 HN 已配置为 ADC、这些模拟引脚可接受电压进行比较:


    现在正在进行比较、只是传递给 DACB 的值不正确。
      对板上的两个 DAC 使用外部引脚功能时是否存在问题? 即使 DAC 寄存器值正确、它们在电压电平上是否会相互干扰?
    在上述配置中、某些寄存器是否仍然缺失/不正确?

    我查看了器件勘误表、没有发现 DAC/CMPSS 有任何电流问题。

    当我为 CMPSS2 禁用 COMPACE 位时、即使内部 DAC 根本不用于 CMPSS 比较、比较也会停止。

    如果您需要更多信息、请告诉我。

    谢谢
    Sumukh.


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

    嗨、Sumukh、

    您选择的模拟网络已共享/连接。 A0 = DACOUT1(内部 MCU DAC)和 A6/A7 = CMP2/CMP2N 均引出至 controlSOM 连接器和 XDS110 接头。 官方引脚排列明确指出、这些引脚还通过仿真器接头连接到 XDS110 板(及其 DAC)。 如果该 DAC/输出路径或任何默认填充处于活动状态、它可以偏置您的节点并使有效阈值看起来更接近中标度、而不是您预期的 2000。

    在扫描 DACA/DACB 时、请测量 SOM 侧 J1.119 (A0/DACOUT1)、J1.120 (A6/HP0)、J1.118 (A7/HN0) 处的实际电压。 这将立即显示某个节点是否接近中标度。

    此外、您还注意到、即使您认为未使用内部 DAC、禁用 COMPACE 也会停止比较。 这对我来说很有趣。 这意味着 DAC 模块仍在比较器路径中使用。 模块多路复用器经过配置、使得仅当内部 DAC 被禁用/以特定方式进行配置时、外部引脚选项才有条件地可用。

    Masoud

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

    尊敬的 Masoud:

    我检查了 DACB 电压、结果似乎始终接近零。
    这是为什么大约 1000 本身的比较产生 1 ,而不是在 2048 这是中尺度(出 4096 )。

    我看到、尽管每个 寄存器看起来都正确、但 DACB 引脚会产生接近 0V 的电压:

    使用 SysCtl_enablePeripheral() API 调用启用外设时钟:


    DACA 和 DACB 具有如下所示的相同寄存器位值(均启用)


    AnalogSubsysRegs 也是正确的:


    DevCfgRegs:


    DACA 工作正常。 即使两个寄存器的配置相同并且似乎配置正确、DACB 也不会产生电压。

    器件勘误表中无内容、也没有其他文章突出显示了该内容。

    无论是单独配置还是与 DACA 一起配置、即使 DACVALA 寄存器显示了合适的值、DACB 似乎也不会产生任何输出。

    让我知道您对它的看法。

    此致、
    Sumukh.

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

    尊敬的 Masoud:  
    请告诉我 DACB 是否实际正常工作。  
    我还看到了这篇文章: F29H85X-DACB-EVM:使用的 DACB 输出 — C2000 微控制器论坛 — C2000Tm︎ 微控制器 — TI E2E 支持论坛、因此我需要知道 SOM 是否确实有问题。

    谢谢。此致、
    Sumukh.

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

    您好:

    我已经对 F29 SOM 进行了采样、收到电路板后您会更新吗?

    此致、

    Masoud

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

    嗨、Sumukh、

    下面的引脚图中标记为 DACB 的标准是我们用于为各种连接器分配引脚的标准。 这意味着、如果器件中有 DAC A 和 DAC B、则应该将它们分配给该器件。

    以 F29 MCU 和 F29-DACAOUT 引脚图为例、除了 A0 中的 SOM 外、E0 中还有 DACC_OUT。 但是、HSEC180ADAPEVM 板不包含该引脚。

    它仅适用于 F29 SOM J1B-95。

    此致、

    Masoud

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

    因此、总之、只有 DACA 随提供  HSEC180ADAPEVM  视图。 没有其他 DAC 可供使用。 我是对的吗?

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

    是的、没错。

    此致、

    Masoud