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.

[参考译文] CCS:TI 28377D#39;s EMIF 接口与 ET1100 8位 uC 通信

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/597503/ccs-ti-28377d-s-emif-interface-communicate-with-et1100-8-bit-uc

工具/软件:Code Composer Studio

现在、我将使用28377d 和 ET1100来开发 ECAT 伺服。 我们使用8位 异步 µController 接口在28377和 ET1100之间传输数据。 至于 EMIF、我的配置如下(参考 TI 的演示项目"PDI_hal_test_app"):

              EMIF1Regs.ASYNC_CS2_CR.ALL = (EMIF_ASYNC_ASIZE_8  |// 8位存储器

                                          //接口

                              EMIF_ASYNC_TA_1    |//周转时间

                                          

                              EMIF_ASYNC_RHOLD_4  |//读取保持时间

                                           

                              EMIF_ASYNC_RSTROBE_10 |//读取选通时间

                                          

                              EMIF_ASYNC_RSETUP_6  |//读取设置时间

                                           

                              EMIF_ASYNC_whold_2  |//写入保持时间

                                           

                              EMIF_ASYNC_WSTROBE_8 |//写选通时间

                                          

                              EMIF_ASYNC_WSETUP_4  |//写入设置时间

                                           

                              EMIF_ASYNC_EW_ENABLE |//扩展等待

                                         

                              EMIF_ASYNC_SS_DISABLE  //选通选择模式

                                         

                             );

现在的问题是:当以直流模式运行且 TwinCAT 作为 ECAT 主站时、TwinCAT 每20秒发送0x1b 错误。 PDI 错误寄存器0x30d 的值为 alwas 0xff 而不是0。 我已向 ETG 寻求帮助。 将看门狗从读取 ET1100寄存器0x440更改为仅使用28377自己的计时器的软件看门狗后、再也没有0x1b 错误(0x1b 表示同步管理器看门狗错误或超时)。 这意味着 PDI 界面出现错误、导致从 ET1100错误读取0x440。 如果忽略此错误、PDO 和 SDO 等其他东西都正常工作。

 

实际上、如果我  完全使用以下 TI 演示项目"PDI_hal_test_app" EMIF 配置、当 ECAT 主站将从器件的状态从 PREOP 更改为 OP 时、通常会出现另一个问题、错误提示为"Read status 0x04、status 0x08 Expected "、然后从器件的状态进入 SAFEOP ERR。 两个 EMIF 配置的不同之处在于、我在每个 EMIF 读取级中添加了两个 CLK。 这可能会确保 PDI 的读取操作更加稳定。 但我不确定我猜的是不是对的。 如果我添加4个或更多读取 CLK、ECAT 伺服从器件将始终处于初始化 ERR 状态。 因此、我真的很困惑 EMIF 配置。 可以给我一些建议和帮助吗? 非常感谢。

 

              EMIF1Regs.ASYNC_CS2_CR.ALL = (EMIF_ASYNC_ASIZE_8  |// 8位存储器

                                           

                              EMIF_ASYNC_TA_1    |//周转时间

                                         

                              EMIF_ASYNC_RHOLD_2  |//读取保持时间

                                           

                              EMIF_ASYNC_RSTROBE_8 |//读取选通时间

                                           

                              EMIF_ASYNC_RSETUP_4  |//读取设置时间

                                          

                              EMIF_ASYNC_whold_2  |//写入保持时间

                                           

                              EMIF_ASYNC_WSTROBE_8 |//写选通时间

                                          

                              EMIF_ASYNC_WSETUP_4  |//写入设置时间

                                          

                              EMIF_ASYNC_EW_ENABLE |//扩展等待

                                          

                              EMIF_ASYNC_SS_DISABLE  //选通选择模式

                                         

                             );

2.此外、我发现 EMIF 写入操作比 EMIF 读取操作慢得多。 也就是说 、*XMEM_ps++=*pTxData++花费大约21us、而读取操作花费大约300ns/byte。 我不确定这是否与0x1b 错误有关。 谢谢你。

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

    您好!

    在0x1b 错误(SM WDOG 超时)上:-如果您看到从站堆栈检测到 WDOG 错误的次数等于 WDOG 计数器寄存器的值,则可能需要增加主站的默认看门狗超时。 但是、如果您看到从站堆栈正在检测 WDOG 状态错误、而看门狗错误计数器(0x442或0x443)未递增、则这是 PDI 的问题。 尝试将 RSTROBE 增大到56 (560ns 是 ET1100数据表中规定的绝对最长时间)并进行检查。 运行后、尝试递减 RSTROBE 并找到最佳值。

    请告诉我它是怎么发生的。 在 PDI 示例中配置的 EMIF 时序/设置用于演示、用户必须提供最终适用于其硬件的功能、因此如果您必须更改设置、这是可以的。

    修复后、我们可以讨论读取/写入周期。 我可以根据需要与团队中的其他 EMIF 专家联系。

    希望这对您有所帮助。

    此致

    Santosh Athuru

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

    您好!

    感谢你的答复。 如果我将 RSTROBE 增大到56、从器件将始终保持 INI ERR 状态。 当 RSTROBE 为10时、我在 TwinCAT 中读取0x442、该值始终为0。 虽然0x30d (PDI/CRC ERR)始终为0xff、但即使我写入0来对其进行复位、它也会很快返回到0xff。

    至于我更改演示的 EMIF 配置、我是说如果我不更改它、则会出现超时错误(预期为0x08并读取0x04、从器件落入 SAFEOP ERR、而不是 OP)、因此我猜 EMIF 配置肯定会有一些错误。 但如何更改它、我不清楚。 谢谢你。

    顺便说一下、EMIF 在基于200MHz 的时钟下运行。 即 、ClkCfgRegs.PERCLKDIVSEL.bit.EMIF1CLKDIV = 0x0;

    此致

    Yanpo、Li

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    顺便说一下、我的 EMIF CLK 配置如下:ClkCfgRegs.PERCLKDIVSEL.bit.EMIF1CLKDIV = 0x0;
    至于 EMIF、我认为每个阶段的时钟数不是越长越好。 我使用 EMIF 8位。

    此致
    Yanpo、Li
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、对于0x442、我发现只有在 OP 和 PREOP 之间切换状态时、0x442的值才会增加。 每个开关增加1。 谢谢你。

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

    Yanpo、

    我们能否首先确保您具有正确的 EMIF 配置、并且可以读取 ET1100寄存器(例如:0x140)以及写入和读取 ET1100的 RAM 位置? 您可以尝试100MHz 的 EMIFCLK 吗?  

    您的 EEPROM 是否针对8位微控制器异步访问进行了正确配置?

    PDI 错误肯定意味着您的 EMIF 配置或用于 EMIF 配置的 GPIO 有问题。 您是否总是遇到此错误计数器问题、或者在您更改 EMIF 配置时出现此问题。 我正在尝试了解您是否在项目中拥有到目前为止没有错误的 PDI 访问权限?

    此致

    Santosh Athuru

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

    我已从 TwinCAT 读取0x140、其值为0x0e09。 我现在还将 emifclk 更改为100MHz。 实际上、如果 TwinCAT 以非直流模式运行、则没有0x1b 错误。 所有 PDO 和 SDO 都能正常工作。 因此、我认为至少在大多数工作时间、EMIF 工作正常。 只有在某些情况下才会失败。

    我已经尝试了至少十种不同的配置。 但没有错误、都无法正常工作。 某些配置0x1b 错误大约每1分钟发生一次、某些错误大约每半分钟发生一次。 谢谢你。

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

    至于8位 EMIF、实际上每个读取操作仍然是16位、这可能是因为 TI 的基本变量长度是16位。 因此、当我读取一个16位数据时、我必须读取两次同一地址。 下面是一个读取示例。 至于写入操作、每个16位数据我只需要写入一次。 我不知道这是否正常。 谢谢你。

    void hw_EscReadIsr ( MEM_ADDR *pRXData,UINT16地址,UINT16 Len )

    uint16 *pTmpData =(uint16 *) pRXData;
    uint16 *XMEM_ps;
    uint16 Dummydata;
    uint16 i=0;
    Dint;
    for (i=0;<Len/2;i++))

    XMEM_ps =(uint16 *)(Address/2+I+ASRAM_CS2_START_ADDR);// 28377EMIF外设起始地址0x100000
    Dummydata =*XMEM_ps;//首次 主机 IRQ
    Dummydata =*XMEM_ps;//二次读取
    *pTmpData++= swap_word (Dummydata);

    EINT;


    void hw_EscWrite (MEM_ADDR * pTxData、UINT16 start_addr、UINT16 len)

    uint16 *XMEM_ps;
    uint16 i=0;

    for (i=0;<len/2;i++))

    XMEM_ps =(uint16 *)(start_addr/2+i+ASRAM_CS2_start_ADDR);// 28377EMIF外设起始地址0x100000

    *XMEM_ps++=*pTxData++;



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

    您好!

    [引用]至于8位 EMIF、实际上每个读取操作仍然是16位、可能是因为 TI 的基本变量长度是16位。 因此、当我读取一个16位数据时、我必须读取两次同一地址。 下面是一个读取示例。 至于写入操作、每个16位数据我只需要写入一次。 我不确定这是否正常。[/引述]

    是的、C28x 是16位处理器。 通过 EMIF 进行读/写操作时、如果外部存储器为8位、那么对于16位访问、EMIF 将把它拆分为2个8位访问并执行读/写操作。 您不必为此进行两次访问。

    此致、

    Vivek Singh  

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

    Yanpo、

     [引用 user4435347]\n 我已从 TwinCAT 读取0x140、其值为0x0e09。 我现在还将 emifclk 更改为100MHz。 实际上、如果 TwinCAT 以非直流模式运行、则没有0x1b 错误。 所有 PDO 和 SDO 都能正常工作。 因此、我认为至少在大多数工作时间、EMIF 工作正常。 只有在某些情况下才会失败。

    我已经尝试了至少十种不同的配置。 但没有错误、都无法正常工作。 某些配置0x1b 错误大约每1分钟发生一次、某些错误大约每半分钟发生一次。 谢谢。[/引述]

    参考上述内容、当读取寄存器0x140时、您是否也尝试写入 DPRAM 位置? 因此、使用此 EMIF 配置时、您没有 PDI 错误。

    只有启用 DCX 时出现问题您看到看门狗超时错误? 在本例中、您还会看到 WDOG 计数器递增吗? 您是否排除了任何 TwinCAT 配置问题? 您是否尝试提高从节点的 TwinCAT 的 SM WDOG 超时值?

    我希望您排除任何其他可能的错误、并确认从节点(TwinCAT 读取0x1B)正在检测 WDOG 超时、而 WDOG 错误计数器在我们怀疑 EMIF 配置之前不会递增。

    在转到"如何在 HAL API 中处理字节与16位字"之前、我们可以解决这个问题吗?

    此致

    Santosh Athuru

    此致
    桑托什

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

    我拥有一个有关写入 DPRAM 和读取 DPRAM 的小型程序。 在我的程序中、从0x2000到0x2064、我在每个寄存器中写入一个散列值、并将其读取并与写入值进行比较。 我发现有时它们真的不同。 如果我在 CCS 的调试模式中观察它们,那么我可以发现,例如,progaram 说当 i=10时,它们是不同的(程序在“返回1”中断点中输入)。 但此时,我将鼠标箭头移动到*XMEM_ps,弹出窗口显示的值是正确的。 而 mem_rDS[i]实际上是一个错误的、与*XMEM_ps 不同的值。

    我想如果我每次读取两次寄存器、这个问题就可以解决。 但是、即使我对每个寄存器进行了四次读取、这个问题仍然会发生。 我认为这就是为什么在 OP 模式下、有时会有程序读取0x440并获取错误的0值、并认为这是超时信号。 但现在很可能0x00的真值仍然为1、但程序读取的值错误为0。
    您能帮我先解决这个问题吗、那么我不需要读取每个寄存器两次或三次。 可能还可以同时解决其他超时问题。 谢谢你。

    XMEM_ps =(无符号短整型*) start_addr;// start_addr = 0x101000
    //
    //填充存储器
    //
    对于(i=0;i < mem_size*2;i++)

    MEM_WDS[i]= 0x1000*i+i*2;
    *XMEM_ps =(0x1000*i>>8)+(i*2<<0x8);
    XMEM_ps++;


    XMEM_ps =(无符号短整型*)(start_addr);
    对于(i=0;i < mem_size;i++)

    MEM_RDS[i]=* XMEM_ps;//首次读取
    MEM_RDS[i]=* XMEM_ps;//二次读取
    if (mem_rDS[i]!= mem_wds[i])

    返回(1);//在此处添加断点

    XMEM_ps++;

    返回(0);

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

    Beisdes、为了对其进行测试、我在 ecatslv.c 的函数" CheckIfEcatError"中添加了读取0x440、如下所示。 添加此项后,在 TwinCAT 的 DC OP 模式下,即使超过30分钟,也没有0x1b 错误。 因此、我想在此之前、当 TwinCAT 告诉我存在0x1b 错误、实际上没有超时错误、EMIF 读取操作中只有错误。 这也可以解释为什么0x30d 的值始终为0xff、即使在 INIT 状态下也是如此。
    但这只是一项测试、问题仍然存在。 我们必须知道为什么在执行读取操作后,有时会出现以下情况:mem_rDS[i]=*XMEM_ps;、mem_rDS[i]不同于*XMEM_ps,或者只有高字节或低字节与*XMEM_ps 相同。 甚至读取4次、这仍然会发生、甚至会变得更糟。 我无法理解为什么。 谢谢你。

    HW_EscReadWord (WdStatusOK、ESC_PD_WD_STATE);
    WdStatusOK = SWAPWORD (WdStatusOK);//0表示超时
    if (!(WdStatusOK 和 ESC_PD_WD_TRIGGER_MASK))

    /*设备处于 OP 状态*/
    HW_EscReadWord (WdStatusOK、ESC_PD_WD_STATE);//额外添加。 当从0x440获取0时、请再次读取它。
    if (!WdStatusOK & bEcatOutputUpdateRunning) /*如果额外读取的0x440再次得到0,则告知主器件超时0x1b 错误*/
    /*Slave Stack 代码工具:(#if !OP_PD_Required)删除了2807到2809行*/
    )

    AL_CONTRORIND (State_SAFEOP、ALSTATUSCODE_SMWATCHDOG);
    返回;



    此致、
    Yanpo、Li
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yanpo、
    在 EtherCAT 从站框的 TwinCAT 主站侧,如果您查看 EtherCAT->Advanced settings->memory 菜单并查看地址440。 您将看到 WD 状态为440、WD PDI/SM 计数器为442。 您能否在 TwinCAT 主站的位置442处写入0 (写入0后必须单击写入按钮)? 这将重置计数器。

    您可以在从站堆栈代码运行时执行上述操作、并清楚地检查从站堆栈何时检测到 WD 状态为0x0、计数器(TwinCAT 存储器窗口中的@442)递增或不递增。

    执行上述操作将得出 EMIF 存在问题的结论。 我编写了类似的调试代码、就像修复 EMIF 16位实现中的错误时那样、我必须增加 RSTROBE 时间。

    除了找出正确的 EMIF 设置外、此错误没有太多其他影响。 您说过您已将 EMIF 配置为200MHz、是否可以尝试使用100MHz 时钟进行 EMIF 设置及以下设置? 如果您使用200MHz、那么我会将这些值中的每一个值加倍。

    EMIF1Regs.ASYNC_CS2_CR.ALL =(EMIF_ASYNC_ASIZE 8|
    EMIF_ASYNC_TA_1|// WR 至 Rd 翻转
    EMIF_ASYNC_RHOLD_2|//
    EMIF_ASYNC_RSTROBE_56|//
    EMIF_ASYNC_RSETUP_4|//
    EMIF_ASYNC_whold_2|//
    EMIF_ASYNC_WSTROBE_28|//
    EMIF_ASYNC_WSETUP_4|
    EMIF_ASYNC_EW_ENABLE|// EMIF_ASYNC_EW_DISABLE
    EMIF_ASYNC_SS_DISABLE//选通模式禁用。
    );
    Emif1Regs.ASYNC_WCCR.bit.WP0 = 1; // EM1WAIT 的高电平有效等待极性。
    EMif1Regs.ASYNC_WCCR.bit.MAX_EXT_WAIT = 0x1;


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

    现在、我还认为 EMIF 存在问题。 我有一个小型程序、从0x2000开始在 ET1100的每个寄存器中写入一个固定值、然后将其读回。 比较它们,如果它们不相等,则比较 errcnt++。 在调试模式下、我测试 EMIF 的不同设置。 对于2、56、4 (EMIF_ASYNC_RHOLD_2 |//EMIF_ASYNC_RSTROBE_56 |//EMIF_ASYNC_RSETUP_4 |//)、我读回的全部为0。 当更改为2、28、4时、也全部为0。 直到更改为2、21、4时、我可以读回一些寄存器的值、大约15%是正确的。 当更改为2、20、4时、大约是50%。 当更改为2、18、4时、大约63%正确。 所有这些只需要读取一次。
    但是、当更改为2、14、4时、没有一个是正确的、我必须每读取两次寄存器、然后我可以回读正确的版本。 例如、每个寄存器中的 I WRITE 值为0x0001 0x1002 0x2003 0x3004、当 RSTROBE 大于18时、我回读的值也相同或为0。 当 RSTROBE 小于14时、如果我只对每个寄存器进行一次读取、那么我回读的值为0x0055 0x1001 0x2002 0x3003 0x4004、也就是说、我需要将它们作为一个整体进行处理、并将它们保留为1个字节。 但是、如果我只读取每个寄存器两次、如下所示、结果是正确的。
    MEM_RDS[i]=* XMEM_ps;
    MEM_RDS[i]=* XMEM_ps;
    如果通过这种方法我可以获得所有正确的值、也是可以的。 但是当我测试很多次时、我发现每隔100次到2000次就会出现一个错误。 这也可以解释为什么每隔大约1秒到20秒就会出现一个0x1b 错误。 如果我再次读取0x440、当我从中获取0时、几乎每次0x40~0x40~0x40~0x40~0x40~0x40~0x40~0x40~0x40~0x40~0x40~0x40~0x40~ 并且不再有0x1b 错误。 以下是我的测试程序。
    while (1)

    XMEM_ps =(无符号短整型*) START_addr;
    addcnt++;
    对于(i=0;i < mem_size*2;i++)//*** mem_size = 50***

    MEM_WDS[i]= 0x1000*i+(i+1);
    *XMEM_ps =(0x1000*i>>8)+(((i+1)<0x8);//mem_WDS[i];//
    XMEM_ps++;


    XMEM_ps =(无符号短整型*)(start_addr);
    对于(i=0;i < mem_size*2;i++)//*** mem_size = 50***

    MEM_rds1[i]=* XMEM_ps;
    MEM_RDS[i]=* XMEM_ps;

    if (mem_rDS[i]!= mem_wds[i])

    ErrCount++;//***在此处添加断点***
    addcnt=0;

    XMEM_ps++;



    当我在断点中放弃 addcnt 的值时、其值范围为100到2000。 到目前为止、EMIF 的最佳设置为2、9、4 (RSTROBE =9)。 addcnt 的值范围为400至2500。 但是、无论我如何更改设置、始终会出现错误、即使这些错误非常罕见。 那么、您能告诉我如何完全消除误差吗? 谢谢你。

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

    顺便说一下、我认为我必须详细说明错误的特征。 当程序进入断点位置时、当我将鼠标箭头移动到变量 mem_rds 时、显示的值确实是错误的。 但是,当我将鼠标阵列移动到*XMEM_ps 时,它的显示是非常正确的。 这意味着、如果我再次读取它、我可以再次获得正确的值。 我不知道为什么。 如果我为每个寄存器读取4次、情况也是一样的。 因此、我不能仅仅增加读取时间。 谢谢你。

    此致
    Yanpo、Li
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yanpo、
    我请求您浏览 EMIF ASYNC_CS2_CR 寄存器说明、以了解您要写入的每个位字段。 对于写入路径、您必须调整 W_SETUP、W_STROBE、W_HOLD 值以及读取路径的相应值。

    您还必须参阅 ET1100数据表、有关 ASIN8/16接口时序的 PDI 规格,并提供 EMIF ASYNC_CS2_CR 寄存器的值。

    为了确保写入正确进行、我将使用 TwinCAT 存储器窗口验证。 因为您不知道写入路径是不正确还是读取路径是正确的。 您还可以从 TwinCAT 写入 RAM 并验证 EMIF 读取路径。

    这就是我与 ET1100 ASHNC16 PDI 解决方案对话的16位 EMIF 接口的方法。

    同样、正如在上一个帖子中提到的 Vivek、C28x 在8位 EMIF 接口上每16位读取一次 EMIF 读取。

    引述: Vivek Singh 早先的答覆
    <:
    是的、C28x 是16位处理器。 通过 EMIF 进行读/写操作时、如果外部存储器为8位、那么对于16位访问、EMIF 将把它拆分为2个8位访问并执行读/写操作。 您不必为此进行两次访问。
    :>


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

    我已经解决了这个问题。 我要做的是将 wirte 0更改为 Emif1Regs.ASYNC_WCCR.bit.WP0。 对于中的 ET1100 BUSY 引脚在低电平下也有效。 谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yanpo、
    感谢您的更新。 我们已在 EEPROM 设置中将 BUSY 配置为高电平有效。 我很高兴您发现了这个问题。
    我将记录下一个版本中的设置。

    最恰当的考虑
    Santosh Athuru