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.

[参考译文] SK-AM62A-LP:如何在 MCU-R5固件中配置 MCU-GPIO 的去抖时间??

Guru**** 2483325 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware

器件型号:SK-AM62A-LP

团队成员、您好!

如何在 MCU-R5 (FreeRTOS)固件中配置 GPIO 去抖时间? 我们需要为输入 GPIO (MCU-GPIO)配置去抖时间
请提供 API 详细信息等、以配置 MCU-GPIO 的去抖时间。
注意: 我们在 MCU-R5内核上运行应用程序、 以及在 A-53内核上运行的 Linux。
谢谢!
Nisarg
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Nisarg:

    感谢您访问德州仪器(TI) E2E 支持论坛。

    我已经为您提供了意见并正在努力。 请等待一段时间再回来。

    此致、

    Tushar

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

    您好 Nisarg:

    感谢您的耐心。

    请提供 API 详细信息等、以配置 MCU-GPIO 的去抖时间。

    请参阅 第 6.1.2节 I/O 去抖控制寄存器  了解有关配置去抖控制寄存器的详细信息。

    请参阅  表6-1. 去抖周期值  了解可以配置的去抖周期值。

    此致、

    Tushar

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

    Tushar、您好!

    根据您的建议、我们确定了以下 API、用于根据文档配置和设置去抖时间。 请查看以下 API 流程、如果有任何缺失、请告知我们。 如果需要在以下详细信息和 API 详细信息中进行任何更正、请告知我。

    ==============================================================================================

    /* MCU_PADCONFIG16 (MCU_GPIO0_16)物理地址为0x04084040 (MCU_PADCFG_CTRL0_CFG0_PADCONFIG16)*/


    readDinDataValue = HW_RD_REG32 (0x4084040);

    /*在中配置 MCU_CTRL_MMR_DBOUNCHE_CFG1寄存器
    对于 MCU_GPIO0_16为* MCU_PADCFG_CTRL0_CFG0_PADCONFIG16。
    * MCU_CTRL_MMR_DBOUNCHE_CFG1寄存器包含
    *用于焊盘的去抖周期 PADCONFIGx [13–11]去抖_SEL 字段设置为1h .*/

    configureDebounceRegValue = readDinDataValue | 0x800;
    HW_WR_REG32 (0x4084040、configureDebounceRegValue);

    /*在 MCU_CTRL_MMR_DBOUNCHE_CFG1 (0x04504084)寄存器中为*/设置去抖周期值

    /* 2表示2.93毫秒内的去抖周期 */

    HW_WR_REG32 (0x04504084、2);

    ==============================================================================================

    我们使用物理地址来读取和写入使用的寄存器 HW_RD_REG32 ()  和  HW_WR_REG32 () API。

    是否是正确的方法? 请提供确认。

    谢谢!

    Nisarg

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

    您好 Nisarg:

    是否是正确的方法? 请提供确认。

    是的、以上流程似乎可以。

    您可以 在 CCS 窗口的"Memory Browser"中查看相同的内容。 值是否正确更新?

    此致、

    Tushar

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

    尊敬的 Tushar:

    我们在以下代码中尝试配置的去抖 10ms MCU_GPIO0_16  ( MCU_PADCONFIG16 或者会与  物理地址 正弦值 0x04084040 )

    并尝试生成的继续在该引脚上执行输入中断 ( MCU_GPIO0_16  )  消息流 1kHz 输入信号 (占空比为50%)(使用函数发生器生成输入信号)、但我们观察到并非每个生成 ISR  10ms 但获取 ISR 457ms、根据去抖时间设置、这是不正确的。

    1kHz = 1毫秒持续时间  

    代码片段:-

    /*Set Debounce-Time for DIN Pin */
    uint8_t setDINDebounceTime(uint8_t time)
    {
        uint8_t retValue = SUCCESS;
        uint32_t configureDebounceRegValue = 0;
        uint32_t readDinDataValue = 0;
    
        /* MCU_PADCONFIG16 (MCU_GPIO0_16) Physical Address is 0x04084040 */
        readDinDataValue = HW_RD_REG32(DIN_PHY_ADDRESS);
    
        /* Configure MCU_CTRL_MMR_DBOUNCE_CFG1 register in the
         * MCU_PADCFG_CTRL0_CFG0_PADCONFIG16 for MCU_GPIO0_16.
         * The MCU_CTRL_MMR_DBOUNCE_CFG1 register contains the
         * debounce period for pads with PADCONFIGx[13-11] DEBOUNCE_SEL fields set to 1h.*/
         
        configureDebounceRegValue = readDinDataValue | 0x800;
        HW_WR_REG32(DIN_PHY_ADDRESS, configureDebounceRegValue);
    
        /*Set Debounce-Period value in MCU_CTRL_MMR_DBOUNCE_CFG1 (0x04504084) registers for */
        HW_WR_REG32(MCU_CTRL_MMR_DBOUNCE_CFG1_PHY_ADDR, time);   /* time means Debounce-Period in mili-second*/
    
        return retValue;
    }

    在 ISR 中、切换一个测试 GPIO、并使用该 TEST-GPIO 上的 CRO 捕获以下测试结果。

    在上面的 API 代码中添加额外打印内容、在设置去抖时间之前和设置去抖时间(10毫秒去抖时间)之后检查以下寄存器值

    /* MCU_GPIO0_16 ( MCU_PADCONFIG16 )*/
    #define DIN_PHY_ADDRESS 0x04084040

    /* MCU_CTRL_MMR_DBOUNCHE_CFG1 PHY 地址*/
    #define MCU_CTRL_MMR_DBOUNCHE_CFG1_PHY_ADDR 0x04504084

    请帮助我们解决上述问题、为什么去抖时间不能根据设置值工作? 请查看上述 API 和详细信息、并告知我们是否需要添加其他设置。 我们正在等待您的回复。

    谢谢  

    Nisarg

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

    尊敬的 Tushar:

    是否有上述问题的最新情况?

    谢谢!

    Nisarg

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

    尊敬的 Tushar:

    是否有上述问题的最新情况?

    谢谢!

    Nisarg

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

    您好 Nisarg:

    感谢您的耐心。

    我在内部进行检查。 请等待一段时间再回来。

    此致、

    Tushar

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

    您好 Nisarg:

    您能否确认您是否更改了 GPIO 的频率?

    您还能否说明 GPIO 的工作频率是多少?

    此致、

    Tushar

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

    尊敬的 Tushar:

    我们没有更改 GPIO 的任何频率。 我们使用 GPIO 的默认设置检查了去抖。

    1) 1)我们如何设置/更改 GPIO 的频率?  

    2) 2)如何检查 GPIO 的当前工作频率?

    请提供  GPIO 的频率配置详细信息和相关 API 信息。

    谢谢!

    Nisarg

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

    您好 Nisarg:

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5303684 #5303684"]

    1) 1)我们如何设置/更改 GPIO 的频率?  

    2) 2)如何检查 GPIO 的当前工作频率?

    [报价]

    请参阅 AM62A 器件的时钟树工具、了解与时钟相关的信息和可视化。 请参阅  时钟树

    请参阅下面的屏幕截图。

    此致、

    Tushar

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

    Tushar、您好!

    我们根据提供的链接进行了检查、发现了以下有关 MCU_GPIO0的内容

    但我们的问题是: 如何使用 CCS 工具和配置/更改 MCU_GPIO0频率  "example.syscfg" 情况?

    我们使用检查了板载 MCU_GPIO0电流时钟相关信息 "k3conf" 命令

    命令:-

    k3conf 显示设备| grep "MCU_GPIO"

    第七十九章

    k3conf 转储 parent_clock 79 0

    如何使用 CCS 工具和配置/更改 MCU_GPIO0频率  "example.syscfg"  情况? 或提供命令/API 来配置 MCU_GPIO0中去抖支持所需的频率???

    谢谢!

    Nisarg  

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

    Tushar、您好!

    是否有任何更新?

    谢谢!

    Nisarg

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

    Tushar、您好!

    是否有任何更新?

    谢谢!

    Nisarg

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

    您好 Nisarg:

    为什么要更改 GPIO 时钟频率?

    是测试用途还是实时应用?

    此致、

    Anil。

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

    您好 Nisarg:

    您能告诉我们您的中断需要多长时间处理吗?  

    这也是延迟的一部分(即~457ms)吗?

    您要使用什么方法来捕获上述波形?

    您是否在中断服务例程开始时使用 GPIO 切换?  

    我一直在尝试复制您的用例、但无法看到~457ms 的延迟。

    我不使用 GPIO 切换和捕获波形、而是在 ISR 处理一开始就使用时间戳并计算从上次发生时间差。

    我每隔1秒写入一次 GPIO1_26引脚(该引脚连接到 MCU_GPIO0_15)、我没有看到花费~457ms 的任何延迟。 您还在计算 ISR 处理时间吗?

    请参阅以下代码。

    /*
     *  Copyright (C) 2021-2023 Texas Instruments Incorporated
     *
     *  Redistribution and use in source and binary forms, with or without
     *  modification, are permitted provided that the following conditions
     *  are met:
     *
     *    Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     *    Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the
     *    distribution.
     *
     *    Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    #include <kernel/dpl/DebugP.h>
    #include <kernel/dpl/ClockP.h>
    #include <kernel/dpl/CycleCounterP.h>
    #include <kernel/dpl/AddrTranslateP.h>
    #include <kernel/dpl/HwiP.h>
    #include "ti_drivers_config.h"
    #include "ti_drivers_open_close.h"
    #include "ti_board_open_close.h"
    
    /*
     * This example configures a GPIO pin in input mode
     * and configures it to generate interrupt on rising edge.
     * The application waits for 5 key presses, prints the
     * number of times the keys are pressed and exits.
     */
    
    #define GPIO_DIR_INPUT      (1U)
    #define GPIO_DIR_OUTPUT     (0U)
    
    uint32_t            gGpioBaseAddr1 = GPIO1_26_BASE_ADDR;
    uint32_t            gGpioBaseAddr2 = MCU_GPIO0_16_BASE_ADDR;
    HwiP_Object         gGpioHwiObject;
    volatile uint32_t   gGpioIntrDone = 0;
    
    static void GPIO_bankIsrFxn(void *args);
    
    extern void Board_gpioInit(void);
    extern void Board_gpioDeinit(void);
    void Sciclient_gpioIrqSet(uint16_t src_index, uint16_t dst_host_irq);
    void Sciclient_gpioIrqRelease(uint16_t src_index, uint16_t dst_host_irq);
    extern uint32_t Board_getGpioButtonIntrNum(void);
    #if defined(__C7504__)
    extern uint32_t Board_getGpioButtonEventId(void);
    #endif
    extern char* Board_getGpioButtonSwitchNum(void);
    
    #define MCU_GPIO_BASE 0x4201000
    
    
    void gpio_input_interrupt_main(void *args)
    {
        int32_t         retVal;
        uint16_t        eventId = HWIP_INVALID_EVENT_ID;
        uint32_t        waitCount = 5;
        HwiP_Params     hwiPrms;
    
        Board_gpioInit();
    
        CycleCounterP_reset();
    
        DebugP_log("GPIO Input Interrupt Test Started ...\r\n");
        DebugP_log("GPIO Interrupt Configured for Rising Edge ...\r\n");
    
    
        #if defined(__C7504__)
        eventId         = Board_getGpioButtonEventId();
        #endif
    
        /* Address translate */
        gGpioBaseAddr1 = (uint32_t) AddrTranslateP_getLocalAddr(gGpioBaseAddr1);
        /* Setup GPIO for interrupt generation */
        GPIO_setDirMode(gGpioBaseAddr1, GPIO1_26_PIN, GPIO1_26_DIR);
        GPIO_setTrigType(gGpioBaseAddr1, GPIO1_26_PIN, GPIO1_26_TRIG_TYPE);
    
        /* Address translate */
        gGpioBaseAddr2 = (uint32_t) AddrTranslateP_getLocalAddr(gGpioBaseAddr2);
        /* Setup GPIO for interrupt generation */
        GPIO_setDirMode(gGpioBaseAddr2, MCU_GPIO0_16_PIN, MCU_GPIO0_16_DIR);
        GPIO_setTrigType(gGpioBaseAddr2, MCU_GPIO0_16_PIN, MCU_GPIO0_16_TRIG_TYPE);
    
        GPIO_bankIntrEnable(gGpioBaseAddr2, GPIO_GET_BANK_INDEX(MCU_GPIO0_16_PIN));
    
    
        /* Register pin interrupt */
        HwiP_Params_init(&hwiPrms);
        hwiPrms.intNum   = CSLR_MCU_R5FSS0_CORE0_CPU0_INTR_WKUP_MCU_GPIOMUX_INTROUTER0_OUTP_7;
        hwiPrms.eventId   = eventId;
        hwiPrms.isPulse = 1;
        hwiPrms.callback = &GPIO_bankIsrFxn;
        hwiPrms.args     = (void *) MCU_GPIO0_16_PIN;
    
        retVal = HwiP_construct(&gGpioHwiObject, &hwiPrms);
        DebugP_assert(retVal == SystemP_SUCCESS );
    
    
        while(1)
        {
            GPIO_pinWriteHigh(gGpioBaseAddr1, GPIO1_26_PIN);
            ClockP_sleep(1);
            GPIO_pinWriteLow(gGpioBaseAddr1, GPIO1_26_PIN);
            ClockP_sleep(1);
        }
    
        /* Unregister interrupt */
        GPIO_bankIntrDisable(gGpioBaseAddr2, GPIO_GET_BANK_INDEX(MCU_GPIO0_16_PIN));
        GPIO_setTrigType(gGpioBaseAddr2, MCU_GPIO0_16_PIN, GPIO_TRIG_TYPE_NONE);
        GPIO_clearIntrStatus(gGpioBaseAddr2, MCU_GPIO0_16_PIN);
    
        HwiP_destruct(&gGpioHwiObject);
    
        DebugP_log("GPIO Input Interrupt Test Passed!!\r\n");
        DebugP_log("All tests have passed!!\r\n");
    
        Board_gpioDeinit();
    }
    
    volatile uint32_t time[1000] = {0};
    volatile uint32_t itr = 0;
    volatile uint32_t prev = 0;
    static void GPIO_bankIsrFxn(void *args)
    {
        uint32_t curr = CycleCounterP_getCount32();
        if(itr < 1000 && gGpioIntrDone > 5) /* ignoring first 5 iteration */
        {
            if(prev < curr)
            {
                time[itr] = (curr - prev) / 800;
            }
            else
            {
                time[itr] = ((0xFFFFFFFF - prev) + curr) / 800;
            }
            itr++;
        }
        uint32_t    pinNum = (uint32_t) args;
        uint32_t    bankNum =  GPIO_GET_BANK_INDEX(pinNum);
        uint32_t    intrStatus, pinMask = GPIO_GET_BANK_BIT_MASK(pinNum);
    
        /* Get and clear bank interrupt status */
        intrStatus = GPIO_getBankIntrStatus(gGpioBaseAddr2, bankNum);
        GPIO_clearBankIntrStatus(gGpioBaseAddr2, bankNum, intrStatus);
    
        /* Per pin interrupt handling */
        if(intrStatus & pinMask)
        {
            gGpioIntrDone++;
        }
        prev = CycleCounterP_getCount32();
    }

    我可以看到中断每1秒出现一次 您能否 在设置去抖时间并让我们了解结果后、尝试上述计算时间的方法。

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="16414" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5319336 #5319336"]

    您要使用什么方法来捕获上述波形?

    您是否在中断服务例程开始时使用 GPIO 切换?  

    [报价]

    Tushar、您好!

    在正常情况下、我们能够在每一个上获得中断 1ms 积分器  输入信号(占空比为50%)(不带去抖配置)
    但是在输入中断引脚上配置去抖时间(10毫秒)时发生了问题;我们不是 每10毫秒获得一次中断(对于 1kHz 输入信号(占空比为50%))、而是 在 457毫秒后得到中断、这是无效的。
    我们使用 CRO 和去抖来捕获这些波形 (10毫秒) 在此期间在输入中断 GPIO 引脚上配置。
    翻转了 TEST-GPIO (MCU_GPIO0_14;SoCBall 编号- E8) 在开始处 中断服务例程。 我们通过设置输入中断的去抖时间来捕获该波形  GPIO (MCU_GPIO0_16)并探测 CRO 上的 Test-GPIO (MCU_GPIO0_14)。
    我们尝试配置的去抖 MCU_GPIO0_16 (物理地址为0x04084040的 MCU_PADCONFIG16)为10毫秒 然后捕获这些 波形。
    1 KHz = 1毫秒持续时间
    请配置中断输入 GPIO 引脚上的去抖时间并测量时间。
    ISR 代码片段:-
    void DINTriggerISR(void *args)
    {
    	/*-TESTING ONLY-*/
        if(0 == gGpioDioCounter)
        {
            setGpioValue(MCU_GPIO_CAM_TRIGGER_PIN, GPIO_PIN_HIGH);
            gGpioDioCounter = 1;
        }
        else if(1 == gGpioDioCounter)
        {
            setGpioValue(MCU_GPIO_CAM_TRIGGER_PIN, GPIO_PIN_LOW);
            gGpioDioCounter = 0;
        }
    }
    请检查我们在上面旧注释中配置的去抖代码 MCU_GPIO0_16 (输入中断引脚)。 如果代码或信息中缺少任何内容、请检查并告知我们。
    谢谢!
    Nisarg
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Nisarg:

    我可以查看你所有的问题,并提供答复明天.

    此致、

    Anil。

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

    Anil、您好!

    是否有任何更新? 我们需要尽快找到一个解决方案。 (客户需要去抖 配置。)

    请在这方面帮助我们。  

    谢谢!

    Nisarg

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

    您好 Nisarg:

    我们正在处理这一问题。

    根据我的理解、我们要将25MHz 时钟馈送到 MCU_GPIO 并在去抖寄存器中配置值10。

    通常,GPIO 应等待10个 GPIO 输入时钟周期。 因此、我们可以在25MHz 上等待10GPIO 时钟周期、即0.4 μ s。

    然后、大约 GPIO 应该仅在1ms 切换、但没有发生这种情况。

    因此、我们从内部团队获取有关如何计算该去抖期的数据。

    我最初的怀疑是,这个问题可能是与去抖计算的问题.

    此致、

    Anil。

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

    Anil、您好!

    我们的要求是配置 0至21毫秒 根据我们当前的 MCU-GPIO 工作时钟频率进行去抖范围。 请提供有关如何配置以下寄存器以获得高于毫秒 范围的去抖时间值的详细信息

    /* MCU_GPIO0_16 (MCU_PADCONFIG16)(MCU_MCAN1_RX)*/
    #define DIN_PHY_ADDRESS 0x04084040

    /* MCU_CTRL_MMR_DBOUNCHE_CFG1 PHY 地址*/
    #define MCU_CTRL_MMR_DBOUNCHE_CFG1_PHY_ADDR 0x04504084

    谢谢!

    Nisarg

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

    您好 Nisarg:

    您可能会收到此问题的延迟回复、因为我们需要从设计团队那里获取有关如何根据 GPIO 时钟或晶体输入的时钟计算去抖周期的详细信息。

    获得这些信息后、我们可以告诉您是否可以满足您的去抖要求。

    此致、

    Anil。

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

    Anil、您好!

    是否有任何更新? 我们需要尽快找到一个解决方案。  我们需要尽快将其交付给客户。

    请在这方面帮助我们。  

    谢谢!

    Nisarg

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

    Nisarg

    下面是基于25MHz 源的延迟表。

    DB_cfg_5:0 GPIO 情况
    (32.768MHz (1))
    EQEP 情况
    (25MHz (1))
    DB_cfg_5:0 GPIO 情况
    (25MHz (1))
    EQEP 情况
    (250MHz (1))
    12月 目标值 漂移 人员 漂移 人员 12月 目标值 漂移 人员 漂移 人员
    0 000000 电容器 不适用 byass 不适用 32. 100000 0.04. 美国 4. ns
    1. 000001 1.95. ms 2.56. 美国 33. 100001 0.08. 美国 8. ns
    2. 000010 2.93. ms 3.84. 美国 34. 100010. 0.12. 美国 12. ns
    3. 000011 3.91. ms 5.12. 美国 35. 100011. 0.16. 美国 16. ns
    4. 000100 4.88 ms 6.40. 美国 36. 100100 0.20. 美国 20. ns
    5. 000101 5.86 ms 7.68 美国 37. 100101. 0.24. 美国 24. ns
    6. 000110 6.84. ms 8.96. 美国 38. 100110 0.28. 美国 28. ns
    7. 000111 7.81. ms 10.24. 美国 39. 100111. 0.32. 美国 32. ns
    8. 001000 8.79 ms 11.52. 美国 40. 101000 0.36. 美国 36. ns
    9. 001001 9.77 ms 12.80 美国 41. 101001. 0.40. 美国 40. ns
    10. 001010 10.74. ms 14.08. 美国 42. 101010 0.44. 美国 44. ns
    11. 001011 11.72. ms 15.36. 美国 43. 101011. 0.48. 美国 48. ns
    12. 001100 12.70 ms 16.64 美国 44. 101100 0.52. 美国 52. ns
    13. 001101. 13.67 ms 17.92. 美国 45. 101101. 0.56. 美国 56. ns
    14. 001110 14.65 ms 19.20. 美国 46. 101110. 0.60 美国 60. ns
    15. 001111 15.63. ms 20.48. 美国 47. 101111 0.64 美国 64 ns
    16. 010000 16.60. ms 21.76. 美国 48. 110000 0.68 美国 68 ns
    17. 010001 17.58. ms 23.04. 美国 49. 110001 0.72. 美国 72. ns
    18. 010010 18.55. ms 24.32. 美国 50. 110010. 0.76. 美国 76. ns
    19. 010011 19.53. ms 25.60. 美国 51. 110011. 0.80 美国 80 ns
    20. 010100 20.51. ms 26.88 美国 52. 110100 0.84. 美国 84. ns
    21. 010101. 21.48. ms 28.16. 美国 53. 110101 0.88 美国 88 ns
    22. 010110 15.63. ms 20.48. 美国 54. 110110 20.48. 美国 2.048 美国
    23. 010111. 31.25. ms 40.96. 美国 55. 110111. 40.96. 美国 4.096 美国
    24. 011000 46.88 ms 61.44 美国 56. 111000 61.44 美国 6.144. 美国
    25. 011001 62.50. ms 81.92. 美国 57. 111001. 81.92. 美国 8.192. 美国
    26. 011010 78.13. ms 102.40. 美国 58. 111010. 102.40. 美国 10.24. 美国
    27. 011011 93.75 ms 122.88 美国 59. 111011. 122.88 美国 12.288. 美国
    28. 011100 109.38. ms 143.36. 美国 60. 111100 143.36. 美国 14.336. 美国
    29. 011101 125.00 ms 163.84. 美国 61. 111101. 163.84. 美国 16.384. 美国
    30. 011110 140.63. ms 184.32. 美国 62. 111110. 184.32. 美国 18.432 美国
    31. 011111 156.25. ms 204.80 美国 63. 111111 204.80 美国 20.48. 美国

    我还会将其添加到下一版本的 TRM 中

    -保罗  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Paul、你好!
    1) 1)根据您提供的信息、-25MHz 表中没有毫秒范围、正确理解吗? 我们可以使用25 MHz GPIO 频率实现毫秒范围(1-21ms)的去抖延迟吗? 请对此作出澄清。
    [报价 userid="3381" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5364139 #5364139"]
    DB_cfg_5:0 GPIO 情况
    (32.768MHz (1))
    [报价]
    2) 2)根据您的表、您提到了 GPIO 级联-32.768MHz 用于毫秒范围去抖时间、 是32.768 MHz 还是32.768 KHz? 请澄清这一点。
    3)另外,我们如何使用提供的 GPIO 外壳频率表范围实现毫秒范围? 如何配置 GPIO-频率32.768kHz?  如果我们将 GPIO 频率配置为32.768kHz、那么它是否会影响  MCU-R5上的 GPIO 高电平或 GPIO 中断性能? 请告诉我们、较低 GPIO 频率配置是否会对性能产生任何其他影响。
    根据我们的要求、我们希望实现1ms 至21ms 的去抖时间。
    谢谢!
    Nisarg
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1)根据您提供的信息、-25MHz 表中没有毫秒范围、正确理解吗? 我们可以使用25 MHz GPIO 频率实现毫秒范围(1-21ms)的去抖延迟吗? 请提供对此的说明。

    正确、在使用25MHz 源时、提供的表中的值未在您所需的值范围内提供去抖周期。  

    2)根据您的表格、您已经提到 GPIO 级联-32.768MHz 用于毫秒级去抖时间、 是32.768 MHz 还是32.768 KHz? 请澄清这一点。

    下表显示了在使用32.768时、您有20个可能的值可满足您的要求 平均值 供电方。  

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5367364 #536764"]
    3)另外,我们如何使用提供的 GPIO 外壳频率表范围实现毫秒范围? 如何配置 GPIO-频率32.768kHz?  如果我们将 GPIO 频率配置为32.768kHz、那么它是否会影响  MCU-R5上的 GPIO 高电平或 GPIO 中断性能? 请告诉我们、较低 GPIO 频率配置是否会对性能产生任何其他影响。
    根据我们的要求、我们希望实现1ms 至21ms 的去抖时间。
    [报价]

     使用表中定义的20个可能值之一对 MCU_CTRL_MMR_CFG0_DBOUNCE_CFG (n)寄存器的 db_cfg 位字段进行编程。  

    您可以从10.74ms (001010b)开始。   

    您还需要 在相应的 PADCFG 寄存器中设置 DEBOUCE_SEL 位字段。 应对位字段进行编程、以选择您选择的 MCU_CTRL_MMR_CFG0_DBOUNCHE_CFG 寄存器、基本上是"n"值。  

    MCU_CTRL_MMR_CFG0_DBOUNCHE_CFG1 = 1
    MCU_CTRL_MMR_CFG0_DBOUNCHE_CFG2 = 2
    等等

     DEBOUCE_SEL 值0会禁用去抖。  保留值7。 不应使用它。  

    -保罗  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="3381" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5368301 #5368301"]
    3)另外,我们如何使用提供的 GPIO 外壳频率表范围实现毫秒范围? 如何配置 GPIO-频率32.768kHz?  如果我们将 GPIO 频率配置为32.768kHz、那么它是否会影响  MCU-R5上的 GPIO 高电平或 GPIO 中断性能? 请告诉我们、较低 GPIO 频率配置是否会对性能产生任何其他影响。
    根据我们的要求、我们希望实现1ms 至21ms 的去抖时间。

     使用表中定义的20个可能值之一对 MCU_CTRL_MMR_CFG0_DBOUNCE_CFG (n)寄存器的 db_cfg 位字段进行编程。  

    您可以从10.74ms (001010b)开始。   

    您还需要 在相应的 PADCFG 寄存器中设置 DEBOUCE_SEL 位字段。 应对位字段进行编程、以选择您选择的 MCU_CTRL_MMR_CFG0_DBOUNCHE_CFG 寄存器、基本上是"n"值。  

    MCU_CTRL_MMR_CFG0_DBOUNCHE_CFG1 = 1
    MCU_CTRL_MMR_CFG0_DBOUNCHE_CFG2 = 2
    等等

     DEBOUCE_SEL 值0会禁用去抖。  保留值7。 不应使用它。  

    [报价]

     Paul、你好!

    1)如何配置 "32.768kHz" 上的 GPIO 频率 "MCU_GPIO0" MCU-R5是什么? 它是否会影响任何其他 GPIO 域? 请提供 MCU-R5固件的所有配置详细信息。

    2) 2)我们可以配置 GPIO 频率 ("32.768kHz") 电压 MCU-GPIO 一些配置?

    3) 3)如果我们进行配置 MCU-GPIO 频率相同 32.768kHz 则它会影响 MCU-GPIO 高电平/低电平转换时间还是 MCU-GPIO -interrupt performance on MCU-R5? 请告诉我们、较低 GPIO 频率配置是否会对性能产生任何其他影响。

    谢谢!

    Nisarg

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

    Nisarg

    我已要求 SDK 团队回答问题1和2的软件方面问题  

    它是否会影响任何其他 GPIO 域?

    去抖只会影响   在各自 PADCFG 寄存器中对 DEBOUCE_SEL 位字段进行了编程的引脚/信号。   该数据表规定了哪些信号支持去抖功能。  

    3)如果我们进行了配置 MCU-GPIO 频率相同 32.768kHz 则它会影响 MCU-GPIO 高电平/低电平转换时间还是 MCU-GPIO -interrupt performance on MCU-R5? 请告知我们在较低 GPIO 频率配置的情况下是否存在任何其他性能影响。

    输入要求将保持在器件数据表中指定的值。  

    我正在查看去抖电路的延迟影响是什么。

    -保罗   

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

    您好 Nisarg:

    我可以回复一下、将 GPIO 频率更改为以32.768 KHz 的频率运行。

    但是、  如果我们将时钟速率更改为32.768kHz、CPU 可能需要更多周期来进行写入和读取操作、因为 I (接口)和 F (功能时钟)与 GPIO 在25MHz 上运行的情况相同。

    我真的不知道你上面的问题的任何线索。 GPIO 以25MHz 运行、配置的 GPIO 去抖周期值为10、 为什么您收到的中断的持续时间是455ms、而不是大约1ms。  根据上面提到的 Paul、如果 GPIO 在25MHz 时钟上运行、我们可能无法得到以毫秒为单位的去抖周期。

    我正在内部与 Paul 核实并告知您结果。

    此致、

    Anil。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    告诉我们如果低 GPIO 频率配置对性能有何其他影响。

    "只有当输入在设定的滤波器持续时间内保持稳定时、信号才被通过"   

    -保罗  

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

    您好 Nisarg:

    我在内部向 Paul 进行了检查、确认  GPIO IP 的时钟选择和去抖时钟选择不相同。

    我们可以独立配置它们。

    因此、请向 GPIO 而不是1KHz 信号提供10Hz、5Hz、3.3Hz、2.5Hz 和2Hz 信号的测试结果、并且不要更改 去抖 周期。

    根据上表、您已将去抖配置值配置为10、您可以保持原样、不更改 GPIO IP 时钟选择。 将 GPIO 中断类型配置为上升沿和下降沿。

    请分享上述频率信号的测试结果。

    根据我对上述输入的分析、您应该会获得正好为10Hz、5Hz、3.3Hz、2.5Hz 和2Hz 的中断。

    此致、

    Anil。

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

    Anil、您好!

    请澄清以下问题。

    [报价 userid="525901" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5385640 #5385640"]

    我在内部向 Paul 进行了检查、确认  GPIO IP 的时钟选择和去抖时钟选择不相同。

    [报价]

    请提供有关上述信息的更多详细信息。

    i) GPIO-IP 的时钟部分是什么?

    i) 去抖时钟选择是什么?

    III)此时钟选择与32.768KHz 和25 MHz GPIO 情况有何关系?

    IV)两者之间的区别是什么  32.768kHz 和  25MHz GPIO 情况?

     

    根据上表、您已将去抖配置值配置为10、可以保留理由且不更改 GPIO IP 时钟选择。 配置 GPIO 中断类型为上升沿和下降沿类型。

    10 (去抖配置值为10)值是否适用于25MHz GPIO 情况? 请提供更多详细信息。

    [报价 userid="525901" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5385640 #5385640"]因此、请向 GPIO 提供10Hz、5Hz、3.3Hz、2.5Hz 和2Hz 信号的测试结果、而不是1KHz 信号、并且不要更改 去抖 周期。

    对于上述输入信号、频率-时间表如下所示。 以下输入信号的占空比将是多少?  

    10Hz -> 100ms (毫秒)
    5Hz -> 200ms (毫秒)
    3.3Hz -> 303.03ms (毫秒)
    2.5Hz -> 400ms (毫秒)
    2Hz -> 500ms (毫秒)

    在这种情况下、是如何实现的 10 (去抖配置值为10)  的去抖工作中的值 10Hz (100毫秒) 的输入信号 25 MHz GPIO-CANETM 请提供更多有关这方面的信息。

    我们的最后一个问题是、您是否检查了  的去抖配置值10 (去抖配置值为10) 1kHz (1毫秒) 的输入信号 25MHz GPIO 情况 还是不呢?

    谢谢!

    Nisarg

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5389343 #5389343"]

    i) GPIO-IP 的时钟部分是什么?

    i) 去抖时钟选择是什么?

    III)此时钟选择与32.768KHz 和25 MHz GPIO 情况有何关系?

    IV)两者之间的区别是什么  32.768kHz 和  25MHz GPIO 情况?

    [报价]

    您好 Nisarg:

    正如我上面提到的, GPIO IP 时钟和去抖时钟的选择是不同的。

    目前,在 MCU+SDK 中,GPIO IP 以25MHz 运行。 您可以通过调用 SCI 客户端并获取响应来确认。

    SOC 在 GPIO 寄存器上写入数据或读取数据时。 GPIO 应以特定频率运行。

    请看  下面的评论。 可通过以下配置选择 GPIO 时钟频率。

    请勿更改除25MHz 之外的 GPIO IP 时钟、因为 I 和 F 时钟是相同的、因此该时钟会影响 GPIO 性能。

    [报价 userid="16414" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5305478 #5305478"]

    请参阅 AM62A 器件的时钟树工具、了解与时钟相关的信息和可视化。 请参阅  时钟树

    请参阅下面的屏幕截图。

    [报价]

    根据 Paul 的上述评论、去抖配置值可以配置为0到63个值。

    将0配置为31个值时、SOC 会自动为去抖时钟选择32.76KHz 时钟、GPIO 仍在25MHz 下运行。

    当您将32个值配置为63个值时、SOC 会自动选择一个25MHz 时钟来对时钟进行去抖、GPIO 以25MHz 运行。

    去抖时钟选择是用户的黑盒。 仅用户可以根据这些值配置0到63的值内部 SOC 去抖模块选择独立于 GPIO IP 的时钟选择、用户不能配置去抖时钟。

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5389343 #5389343"]

    10 (去抖配置值为10)值是否适用于25MHz GPIO 情况? 请提供更多详细信息。

    [报价]

    当您选择10时、去抖 时钟选择为32.768kHz、GPIO 仍在25MHz 下运行、对 GPIO 性能没有影响。

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5389343 #5389343"]

    对于上述输入信号、频率-时间表如下所示。 以下输入信号的占空比将是多少?  

    [/报价]
    我们的最后一个问题是、您是否检查了  的去抖配置值-10 (去抖配置值是10) 1kHz (1毫秒) 的输入信号 25MHz GPIO 情况 或不?

    请尝试50%占空比信号并分享测试结果。

    实际上、您已经配置了一个10毫秒的 去抖  周期 、并  向 GPIO 提供了一个1毫秒的信号。

    这不是 验证  去抖 周期的有效测试用例。

    为了 正确测试去抖周期、馈送信号时间周期应比 去抖周期长 。

    根据我的分析、您获得455ms 的时间 Ton/Toff 似乎没问题。

    为了确认我的分析、我让您测试上述频率并分享测试结果。

    问题分析点:  

    1ms 信号提供  给 GPIO、 去抖 周期为10ms。

     SoC 在10ms 后检测/捕获信号。

    我们假设 SOC 在10毫秒后检测到第一个高电平信号   ,然后在10毫秒后检测到下一个 高电平信号 ,再次 SOC 检测到高电平信号,而不检测到低电平。

    SoC 检测到相同的高信号直到455ms。 由于此 Ton 周期 、大约为~455ms

    在455ms 后的某个时刻、SOC 检测到  低电平信号 直到922ms。 因此、您将获得922毫秒的总时间周期。

    这是我的分析是否正确的原因、以确认我要求您在50%占空比下将馈送时钟频率更改为上述建议的频率并 分享 测试结果。

    此致、

    Anil。

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

    您好 Nisarg:

    我们需要您的输入来关闭该线程。

    完成您的测试后,请告知我们测试结果。

    此致、

    Anil。

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

    Anil、您好!

    根据您的要求、我们已捕获的结果  10Hz、5Hz 和2Hz I 向 GPIO 发送 nPUT 信号(占空比为50%时生成中断)并配置了去抖配置值 10. 将其放电。

    i) 黄色信号是输入信号(GPIO 输入中断)(屏幕截图中的第1个波形)

    ii)霓虹粉色信号表示来自 ISR 的 O/P 切换 GPIO 信号(屏幕截图中的第二个波形)

    1) 1) 10Hz 去抖十进制值的输入信号配置为10

     

    2) 2) 去抖十进制值为10的5Hz 输入信号

    3) 3) 2Hz 配置去抖十进制值为10的输入信号

    中断 ISR 逻辑

    void DINTriggerISR(void *args)
    {
        BaseType_t xHigherPriorityTaskWoken = pdFALSE;
        uint32_t statusRegister = 0;
    
        xTaskNotifyIndexedFromISR(TaskP_getHndl(&triggerDINTaskObj),
                                  0,
                                  statusRegister,
                                  eNoAction,
                                  &xHigherPriorityTaskWoken);
    
    #if 1 /*-TESTING ONLY-*/
        if (getGpioValue(MCU_GPIO_DIN_PIN))
        {
            setGpioValue(MCU_GPIO_CAM_TRIGGER_PIN, GPIO_PIN_HIGH);
        }
        else
        {
            setGpioValue(MCU_GPIO_CAM_TRIGGER_PIN, GPIO_PIN_LOW);
        }
    #endif
    
        portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
    }
    

    在上述所有结果中、我们观察到我们已配置去抖值 10 (10.74毫秒) 但我们正在得到一个延迟 14毫秒 b/w 输入信号检测到从 ISR 切换到 GPIO。 我们已经在上升沿和下降沿配置了中断。

    当去抖配置为10时、为什么我们得到14毫秒延迟的 b/w 2信号? 是预期行为吗? 请提供更多相关信息。

    [报价 userid="525901" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5389611 #5389611"]

    我们假设 SOC 在10毫秒后检测到第一个高电平信号   ,然后在10毫秒后检测到下一个 高电平信号 ,再次 SOC 检测到高电平信号,而不检测到低电平。

    SoC 检测到相同的高信号直到455ms。 由于此 Ton 周期 、大约为~455ms

    在455ms 后的某个时刻、SOC 检测到  低电平信号 直到922ms。 因此、您得到的总时间周期为922ms

    [报价]

    请更加明确地说明当去抖值配置为10时、哪个基极 SoC 检测到上述1KHz 输入信号。 它如何检测455毫秒的 Ton 周期? 需要有关这方面的更多信息。

    谢谢!

    Nisarg

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5391609 #5391609"]

    在上述所有结果中、我们观察到我们已配置去抖值 10 (10.74毫秒) 但我们正在得到一个延迟 14毫秒 b/w 输入信号检测到从 ISR 切换到 GPIO。 我们已经在上升沿和下降沿配置了中断。

    当去抖配置为10时、为什么我们得到14毫秒延迟的 b/w 2信号? 是预期行为吗? 请提供更多相关信息。

    [报价]

    您好 Nisarg:

    由于去抖 周期与实际输入不匹配、此处存在不同的问题。

    我不确定您的测试设置、它似乎在您的测试设置中包含了许多外设/应用。

    如果在测试设置中包含了许多外设、则在关键段期间可能会禁用中断、一旦这个关键段完成、中断就会恢复。

    由于此延迟、您的 GPIO 中断会延迟、并且需要使用 GPIO 测量时间、因此我们  还需要包含 GPIO 延迟时间。

    我建议 删除 除测试应用程序之外的所有应用程序,并切换 GPIO 直接写入 NORTOS 示例中的寄存器。

    根据上述结果、我们可以确认 您的结果是否与上述结果相同。

    如果 您仍获得上述结果、则表明 去抖表有问题。

    根据上述结果、我们需要将去抖 周期配置为始终小于输入频率。

    请更清楚地说明当去抖值配置为10时、哪个基底 SoC 检测到上述1KHz 输入信号。 它如何检测455毫秒的 Ton 周期? 需要有关此方面的更多信息。

    问题分析点:  

    1ms 信号提供给 GPIO、并配置为去抖 周期10ms。

     SoC 仅在10ms 后检测/捕获信号。

    从上表中您可以看到、即使信号为高电平、SOC 也会在第0毫秒时检测到0、因为去抖周期为10ms。

    恰好在10ms 时、SOC 检测到高电平。

    接下来、输入信号将在接下来的10ms 内从低电平变为高电平并在10个周期内从高电平变为低电平。

    恰好在20毫秒时、SOC 也检测到相同的高电平信号。

    接下来、输入信号将  在接下来的10ms 内从低电平变为高电平并在10个周期内从高电平变为低电平。

    正是在30毫秒后再次,SOC 检测到相同的高信号,等等...

    上述测试用例中没有发生 GPIO 转换。  

    因此、不会触发 GPIO 中断。

    在某些时候、GPIO 检测到低电平、表示您收到中断、而 SOC 检测到低电平信号的时间可能为455ms。

    同样的行为,低信号也和最后你得到922ms 的周期, 由于上述行为.

    实际上、您已经配置了一个10毫秒的去抖周期、并向 GPIO 提供了一个1毫秒的信号。

    这不是验证去抖 周期的有效测试用例。

    为了 正确测试去抖周期、馈送信号时间周期应比去抖周期更长 。

    此致、

    Anil。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="525901" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5393666 #5393666"]

    您好 Nisarg:

    由于去抖 周期与实际输入不匹配、此处存在不同的问题。

    我不确定您的测试设置、它似乎在您的测试设置中包含了许多外设/应用。

    如果在测试设置中包含了许多外设、则在关键段期间可能会禁用中断、一旦这个关键段完成、中断就会恢复。

    由于此延迟、您的 GPIO 中断会延迟、并且需要使用 GPIO 测量时间、因此我们  还需要包含 GPIO 延迟时间。

    我建议 删除 除测试应用程序之外的所有应用程序,并切换 GPIO 直接写入 NORTOS 示例中的寄存器。

    根据上述结果、我们可以确认 您的结果是否与上述结果相同。

    如果 您仍获得上述结果、则表明 去抖表有问题。

    [报价]

    Anil、您好!

    感谢这些详细信息、但我们已在无去抖配置下检查了相同的代码设置、并且我们发现 从哪个引脚到 GPIO 切换没有延迟 b/w 输入信号检测 ISR .  ( 在 MCU-R5 FreeRTOS 上运行的应用)

    1) 10Hz 输入信号、GPIO 输入中断引脚上具有无去抖配置。

    2) 5Hz 输入信号、GPIO 输入中断引脚上具有无去抖配置。

    3) 2) 2Hz 输入信号、GPIO 输入中断引脚上具有无去抖配置。

    请查看上述详细信息、并告知我们 是否仍需要更改测试设置。

    谢谢!

    Nisarg

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

    您好 Nisarg:

    根据以上结果、您的设置正常、但输入和输出之间存在一些偏差、因此第1波和第3波之间的间隔为0.5至1ms。

    您是否可以使用5、15 和20去抖值进行相同的测试?

    我怀疑上述扣减期似乎是问题所在。

    因此、根据上述不同去抖 值下的测试结果、我们将获得这方面的线索。

    此致、

    Anil。

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

    尊敬的 Anil:

    在上次测试期间、我们使用10Hz 输入信号捕获了以下不同的去抖时间结果。

    1) 1)去抖十进制值为15的10Hz 输入信号配置(15.63ms)

     

    2) 2) 10Hz 去抖十进制值的输入信号 配置为21 (21.48ms)

    请使用 a 查看上述不同的去抖时间结果  10Hz 输入信号。

     

    如果您需要更多详细信息、请告知我们。 我们正在等待您的回复。

    谢谢!

    Nisarg

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

    您好 Nisarg:

    根据上述结果、我怀疑 A 去抖表可能有问题。

    您的测试设置正常。

    还要注意的是、所有引脚多路复用模式都 不支持去抖功能。

    有关哪些引脚支持此功能的更多详细信息、请查看最新的数据表。

    我可以在内部与 Paul 核实、然后再回来。

    此致、

    Anil。

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

    尊敬的 Anil:

    感谢您的更新。

    我们仅使用支持去抖配置的引脚。

    我们在上捕获了上述结果 "MCU_GPIO0_16"(SoC 焊球:B9)

    我们正在等待您的回复。

    谢谢!

    Nisarg

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

    您好 Nisarg:

    感谢您提供以上信息。

    目前、我正在不断向硬件专家询问您的问题、讨论正在进行中。

    我将更新状态。 是否可以   在配置的情况下移动去抖时间小于软件端的实际去抖时间?

    例如、您需要10ms 的去抖时间来尝试配置去抖配置值7ms、然后您将得到软件端的去抖值为实际10ms。  

    同时、我也在与硬件专家合作、以便找出根本原因。

    此致、

    Anil。

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

    您好 Nisarg:

    当前状态是什么?
    您如何在应用中实现去抖?
    目前这个问题时间比较长、 我也在跟设计团队进行探讨。
    我的建议是、如果您目前陷入困境、请根据您的要求将去抖周期配置为1ms 至20ms、并检查结果。
    然后分析输出与实际去抖配置之间的误差。

    之后、将错误合并到软件中。 需要使用更多的 样本来确认这一测试、而不仅仅是一个样本。

    此致、

    Anil。

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

    Anil、您好!

    当前状态是什么?
    [报价]

    我们正在等待 TI 探讨如何实现在 MCU 上配置的精确去抖时间。

    您如何在应用程序中实施去抖?
    [报价]

    我们的要求仅是实现硬件去抖时间、因此在提供有关根本原因的信息之前、我们会被阻止。

    [报价 userid="525901" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5425267 #5425267"]

    目前这个问题时间比较长、 我也在跟设计团队进行探讨。
    我的建议是、如果您目前陷入困境、请根据您的要求将去抖周期配置为1ms 至20ms、并检查结果。
    然后分析输出与实际去抖配置之间的误差。

    之后、将错误合并到软件中。 需要使用更多的 样本来确认这一测试、而不仅仅是一个样本。

    [报价]

    我们需要与客户沟通此问题的根本原因、然后我们就上述建议的实施做出决定。 因此、请提供根本原因、无论这是硬件缺陷还是我们的配置不正确。 如果这是硬件缺陷、请提供 MCU 处理器当前支持的正确表格信息。

    谢谢!

    Nisarg

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

    您好 Nisarg:

    感谢您提供以上信息。

    在内部与硬件专家讨论、他们确认去抖验证测试可能存在问题。

    因此、我们不提供频率信号、而是发送需要更改的脉冲宽度、并且请查看 Paul 评论。

    请尝试使用 Paul 的建议并分享测试结果、并在10、15和21 去抖 配置下进行相同的测试。

    最好的测试方法是改变输入脉冲宽度、并搜索经过去抖电路时边沿上或被去抖电路阻断的宽度。  它们可能从非常短的脉冲开始、这些脉冲应始终被阻断并增加、直到看到通过;也可能从长脉冲开始、然后降低、直到被阻断。  这是测试去抖电路和验证延迟而不担心延迟的最佳方法。

    此致、

    Anil。

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

    Anil、您好!

    感谢您的答复!!!

    [报价 userid="525901" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5427811 #5427811"]

    感谢您提供以上信息。

    在内部与硬件专家讨论、他们确认去抖验证测试可能存在问题。

    因此、我们不提供频率信号、而是发送需要更改的脉冲宽度、并且请查看 Paul 评论。

    请尝试使用 Paul 的建议并分享测试结果、并在10、15和21 去抖 配置下进行相同的测试。

    [报价]

    请提供以上各点的更多详情。 频率信号还   根据占空比包含一定的导通/关断周期脉冲宽度。 请就 上述 问题提供更多的说明。 我们将相应地进行检查/测试并收集数据。

    我们已检查了 具有不同去抖值的输入频率信号、并已将结果与您共享。  我们正在等待您的回复。

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5403237 #5403237"]

    尊敬的 Anil:

    在上次测试期间、我们使用10Hz 输入信号捕获了以下不同的去抖时间结果。

    1) 1)去抖十进制值为15的10Hz 输入信号配置(15.63ms)

     

    2) 2) 10Hz 去抖十进制值的输入信号 配置为21 (21.48ms)

    请使用 a 查看上述不同的去抖时间结果  10Hz 输入信号。

     

    如果您需要更多详细信息、请告知我们。 我们正在等待您的回复。

    谢谢!

    Nisarg

    [报价]

    谢谢!

    Nisarg

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

    您好 Nisarg:

    我将您的查询路由到硬件专家、并将获得有关测试方法的更多详细信息。

    此致、

    Anil。

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

    Nisarg

    请在上面提供更多详细信息

    您应该能够使用与现有设置相同的设置。

    1.根据需要配置去抖值。  
    2.向 GPIO 管脚施加脉冲宽度小于去抖值的输入。 您可以从去抖设置的80%开始。 GPIO 不应出现输入脉冲、不应产生中断、也不应出现输出 GPIO 转换。  
    3.逐渐增大脉冲宽度直到输出 GPIO 转换。 这意味着输入脉冲已成功通过去抖滤波器并被 GPIO 输入识别。 输入脉冲的宽度应略大于去抖设置。

    您可以尝试在选择32KHz 和25MHz 去抖设置时进行此操作。  

    这是由另一个 保罗提出的。

    -保罗  

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

    Paul、你好!

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5396227 #5396227"]

    Anil、您好!

    感谢这些详细信息、但我们已在无去抖配置下检查了相同的代码设置、并且我们发现 从哪个引脚到 GPIO 切换没有延迟 b/w 输入信号检测 ISR .  ( 在 MCU-R5 FreeRTOS 上运行的应用)

    1) 10Hz 输入信号、GPIO 输入中断引脚上具有无去抖配置。

    2) 5Hz 输入信号、GPIO 输入中断引脚上具有无去抖配置。

    3) 2) 2Hz 输入信号、GPIO 输入中断引脚上具有无去抖配置。

    请查看上述详细信息、并告知我们 是否仍需要更改测试设置。

    谢谢!

    [报价]

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1368738/sk-am62a-lp-how-do-we-configure-mcu-gpio-debounce-time-in-the-mcu-r5-firmware/5403237 #5403237"]

    尊敬的 Anil:

    在上次测试期间、我们使用10Hz 输入信号捕获了以下不同的去抖时间结果。

    1) 1)去抖十进制值为15的10Hz 输入信号配置(15.63ms)

     

    2) 2) 10Hz 去抖十进制值的输入信号 配置为21 (21.48ms)

    请使用 a 查看上述不同的去抖时间结果  10Hz 输入信号。

     

    如果您需要更多详细信息、请告知我们。 我们正在等待您的回复。

    谢谢!

    Nisarg

    [报价]

    我们之前检查了具有不同去抖值的输入频率信号、并  在此论坛中与 TI 团队共享了结果(CRO 捕获的结果)。 请检查以上旧数据结果。 从上面的结果我们可以看到这一点 界限 之间的比较而言很重要

    上述信息是否不足以识别此问题?  如果您需要更多详细信息、请告知我们。 我们正在等待您的回复。

    我们需要与客户沟通此问题的根本原因。 因此、请提供根本原因、无论这是硬件缺陷还是我们的配置不正确。 如果这是硬件缺陷、请提供 MCU 处理器当前支持的正确表格信息。

    谢谢!

    Nisarg

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

    Nisarg

    我将由设计团队重新运行。  

    -保罗