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.

[参考译文] LAUNCHXL-F28P65X:LAUNCHXL-F28P65X 相关问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1655864/launchxl-f28p65x-launchxl-f28p65x-related-issues

器件型号: LAUNCHXL-F28P65X

您好:  

客户当前正在按照官方配置例程使用 CMPSS 进行 PWM 跳闸实验。


目前、下列功能已被证实正常:
CMPSS 输入选择为 A0 (CMPIN1P)
2.当 A0 直接连接到 3.3V 时、比较器输出有效、GPO14(通过 OUTPUTXBAR 输出)被拉高。
当 AO 直接连接到 GND 时、GPO14 会拉至低电平。
4.说明 CMPSS、XBAR 和 GPO14 的输出链路工作正常。


接下来、客户希望通过 DAC 输出三角波信号并将其连接到 A0 以观察 CMPSS 的比较结果和 GPO14 状态的变化。


测试方法如下:
DAC 输出振幅约为 0V~3V(涵盖 CMPSS DAC 阈值)的三角波。
2. DAC 输出连接到 A0 输入端子。
3. CMPSS 配置应符合正式例程。


但实际现象是:
1. GPO14 保持固定状态、当三角波越过阈值时不翻转。
2.使用示波器确认 AO 引脚上三角波信号的存在和正常振幅。
3.如果 A0 再次直接连接到 3.3V 或 GND、GPO14 可以正常运行。


因此、我想问:
CMPSS 输入是否支持直接连接到 DAC 输出的动态模拟信号以进行比较?
2. CMPSS 对输入信号是否有带宽、采样方法或其他限制?
3.是否仍需要配置数字滤波器、同步模式或其他相关模块?
4.官员是否有使用 DAC 输出三角波驱动 CMPSS 进行比较的参考例程或配置说明?

示波器的黄色波形表示 DA 输出、蓝色波形表示 GPO14。

image_1781619003648.jpg

 

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

    尊敬的 Jeno:

    根据所述的症状、有两个高概率原因值得在任何其他原因之前立即解决。 您看到的行为 (GPO14 在三角波存在时保持固定状态、但正确响应静态 3.3V 或 GND) 与锁存输出配置或未正确配置 A0 引脚以实现模拟模式一致。 两者都是常见的疏忽、易于验证。


    根本原因 1:输出配置为锁存模式

    如果 CMPSS 输出配置为锁存模式、则无论后续的比较器转换如何、第一个跳变事件都会锁存输出并保持输出。 这与您的症状完全匹配。 检查输出配置并切换至异步模式以进行初始测试:

    // Latched mode — output will not follow the signal after first event
    CMPSS_configOutputsHigh(CMPSS1_BASE,
        CMPSS_TRIPOUT_LATCH |
        CMPSS_TRIP_LATCH);
    
    // Async mode — output follows comparator in real time, use this first
    CMPSS_configOutputsHigh(CMPSS1_BASE,
        CMPSS_TRIPOUT_ASYNC_COMP |
        CMPSS_TRIP_ASYNC_COMP);

    如果最终应用中需要锁存模式、则每个周期必须显式清除锁存:

    CMPSS_clearFilterLatchHigh(CMPSS1_BASE);

    根本原因 2:A0 引脚未配置为模拟模式

    即使将引脚用作模拟输入、也必须在 GPIO 多路复用器寄存器中显式启用模拟模式。 如果数字缓冲器在引脚上保持有效状态、它将与传入的模拟信号发生冲突或覆盖传入的模拟信号。 这就解释了为什么 3.3V 或 GND 等硬轨电压仍然会产生正确的响应(这些电平足够强以支配地位)、而动态 DAC 信号的行为不符合预期。

    将以下内容添加到引脚初始化中:

    GPIO_setAnalogMode(0, GPIO_ANALOG_ENABLED);

    这将设置相应的 GPIOANASEL 寄存器位并禁用引脚上的数字 I/O 缓冲器。 即使该引脚仅用作模拟输入、也需要它。


    支持基准配置

    下面是一个完整的配置、涵盖 CMPSS、内部 DAC 基准、数字滤波器旁路以及到 GPO14 的输出 XBAR 路由。 使用此项作为基准、以确认您的设置与预期行为匹配:

    void ConfigureAnalogPin_A0(void)
    {
        GPIO_setAnalogMode(0, GPIO_ANALOG_ENABLED);
    }
    
    void ConfigureCMPSS(void)
    {
        SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_CMPSS1);
    
        CMPSS_enableModule(CMPSS1_BASE);
    
        // Use internal DAC as the negative reference for the high comparator
        CMPSS_configHighComparator(CMPSS1_BASE, CMPSS_INSRC_DAC);
    
        // Set threshold to midpoint — adjust to match your signal range
        // 2048 = approximately 1.65V with VDDA = 3.3V reference
        CMPSS_setDACValueHigh(CMPSS1_BASE, 2048);
    
        // Use VDDA as DAC reference, update on SYSCLK, load from shadow register
        CMPSS_configDAC(CMPSS1_BASE,
            (CMPSS_DACREF_VDDA |
             CMPSS_DACVAL_SYSCLK |
             CMPSS_DACSRC_SHDW));
    
        // Async output — bypasses latch and filter for initial validation
        CMPSS_configOutputsHigh(CMPSS1_BASE,
            CMPSS_TRIPOUT_ASYNC_COMP |
            CMPSS_TRIP_ASYNC_COMP);
    
        // Minimal filter configuration — effectively bypassed
        CMPSS_configFilterHigh(CMPSS1_BASE, 0, 1, 1);
        CMPSS_initFilterHigh(CMPSS1_BASE);
    }
    
    void ConfigureOutputXBAR(void)
    {
        XBAR_setOutputMuxConfig(OUTPUTXBAR_BASE,
            XBAR_OUTPUT1,
            XBAR_OUT_MUX00_CMPSS1_CTRIPH);
    
        XBAR_enableOutputMux(OUTPUTXBAR_BASE,
            XBAR_OUTPUT1,
            XBAR_MUX00);
    
        GPIO_setPinConfig(GPIO_14_OUTPUTXBAR1);
        GPIO_setDirectionMode(14, GPIO_DIR_MODE_OUT);
        GPIO_setAnalogMode(14, GPIO_ANALOG_DISABLED);
    }

    建议的调试序列

    在将复杂性重新添加到配置之前、请完成以下步骤以隔离问题:

    1. 添加 GPIO_setAnalogMode(0, GPIO_ANALOG_ENABLED) 到您的 PIN 初始化并重新测试。
    2. 确认 CMPSS 输出设置为 ASYNC_COMP MODE、将锁存器和滤波器作为变量。
    3. 验证内部 DAC 阈值是否处于三角波的实际摆幅范围内。 如果将阈值设置为高于 DAC 输出的峰值、则比较器永远不会跳闸。
    4. 最后一个隔离步骤是、 CMPSS_getStatus(CMPSS1_BASE) 在环路中轮询、并根据该状态切换单独的 GPIO。 这确认问题是在 CMPSS 本身还是 XBAR 和 GPO14 路径的下游。

    如需直接解答原始问题:CMPSS 是一款连续时间模拟比较器、完全支持动态模拟信号、包括 DAC 驱动的波形。 不存在采样限制。 带宽足以满足典型三角波频率。 数字滤波器和 SYNC 模式是可选的、应在初始启动期间进行旁路。 上面的配置反映了此用例的标准推荐方法。

    如果在上述更改后问题仍然存在、请分享您当前的 CMPSS 初始化代码、我们可以进一步审查。

    此致、

    Zackary Fleenor