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.

LP-EM-CC2340R5: DIO25

Part Number: LP-EM-CC2340R5
Other Parts Discussed in Thread: CC2340R5,

关于CC2340R5的IO25脚,我需要设置其输出高/低电平,在syscfg配置后,使用GPIO_write(CONFIG_GPIO_25, 1);

却无法使其输出高电平,其他的IO引脚可以正常的输出高电平。求解

  • 您好,

    理论上IO25脚是可以通过syscfg配置为高/低电平的。

    考虑CC2340R5的IO25脚是否被占用。

    您使用的是哪个例程,SDK版本?

    您对代码修改过哪些地方?

  • 您好,使用的是LP-EM-CC2340R5开发板,没有进行任何的更改,也没有占用,例程的话我使用的是gpiointerrupt的例程,SDK版本是目前最新的7.20.1.10。

    只是简单的输出高低电平,并没有进行改动,只是增加了DIO25脚输出高电平;

    /*
     *  ======== mainThread ========
     */
    void *mainThread(void *arg0)
    {
        /* Call driver init functions */
        GPIO_init();
    
        /* Configure the LED and button pins */
        //GPIO_setConfig(CONFIG_GPIO_LED_0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
        //GPIO_setConfig(CONFIG_GPIO_LED_1, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
        GPIO_setConfig(CONFIG_GPIO_KEY_INPUT, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING |GPIO_CFG_SHUTDOWN_WAKE_LOW);
    
        /* Turn on user LED */
        //GPIO_setConfig(CONFIG_GPIO_VCCON, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
        //GPIO_write(CONFIG_GPIO_VCCON, 1);
        GPIO_write(CONFIG_GPIO_14, 1);
    
    //    GPIO_write(CONFIG_GPIO_0, 1);
    //    GPIO_write(CONFIG_GPIO_1, 1);
    //    GPIO_write(CONFIG_GPIO_2, 1);
    //    GPIO_write(CONFIG_GPIO_5, 1);
    //    GPIO_write(CONFIG_GPIO_6, 1);
    //    GPIO_write(CONFIG_GPIO_7, 1);
    //    GPIO_write(CONFIG_GPIO_8, 1);
    //    GPIO_write(CONFIG_GPIO_9, 1);
    //    GPIO_write(CONFIG_GPIO_10, 1);
    //    GPIO_write(CONFIG_GPIO_11, 1);
    //    GPIO_write(CONFIG_GPIO_12, 1);
    //    GPIO_write(CONFIG_GPIO_13, 1);
    //    GPIO_write(CONFIG_GPIO_18, 1);
    //    GPIO_write(CONFIG_GPIO_19, 1);
    //    GPIO_write(CONFIG_GPIO_21, 1);
    //    GPIO_write(CONFIG_GPIO_23, 0);
        GPIO_write(CONFIG_GPIO_24, 1);
        GPIO_write(CONFIG_GPIO_25, 1);
    
        /* Install Button callback */
        GPIO_setCallback(CONFIG_GPIO_KEY_INPUT, gpioButtonFxn0);
    
        /* Enable interrupts */
        GPIO_enableInt(CONFIG_GPIO_KEY_INPUT);
    
        /*
         *  If more than one input pin is available for your device, interrupts
         *  will be enabled on CONFIG_GPIO_BUTTON1.
         */
    //    if (CONFIG_GPIO_BUTTON_0 != CONFIG_GPIO_BUTTON_1)
    //    {
    //        /* Configure BUTTON1 pin */
    //        GPIO_setConfig(CONFIG_GPIO_BUTTON_1, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING |GPIO_CFG_SHUTDOWN_WAKE_LOW);
    //
    //        /* Install Button callback */
    //        GPIO_setCallback(CONFIG_GPIO_BUTTON_1, gpioButtonFxn1);
    //        GPIO_enableInt(CONFIG_GPIO_BUTTON_1);
    //    }
    
        return (NULL);
    }

    能用的IO口我都尝试了一遍,只发现IO25不能输出高电平。你们可以试一下,看看IO25能不能输出高电平。

  • 明确您的问题,稍后我会在开发板尝试复现您的问题,请稍等。

  • 您好,请问您是否修改过GPIO驱动层配置,变量定义是直接写在当前文件下吗?

  • 修改驱动层配置?我只是简单的在syscfg配置了引脚,然后在函数里面调用GPIO_write,可以看我上面提供的代码,跟其他IO口是一样的配置,只有IO25拉不高。你们测试的时候能拉高吗?

  • 我新建gpiointerrupt发现IO25可以拉高,原先用的是basic_ble例程使用的是从机模式,在里面配置的IO25拉不高电平,关于是否修改过驱动层我也不太清楚,请问如果修改了,我该怎么查看并恢复?

  • 查看了DIO25引脚并没有特殊之处,昨天我这边测试是可以拉高的,DIO25可以输出高电平。

    您是如何在syscfg进行配置的,可以放个图片上来吗?

    我看您代码中配置了三个参数,启用上拉电阻/中断下降沿触发/低电平唤醒系统。

    驱动层代码是无法修改的,如果您在改动驱动层代码,会有一个弹窗提示您;就算改动了下次编译会恢复至驱动层的原本代码。

  • 目前我新建了一个basic_ble,发现IO25也可以拉高,但是重新试了原先的工程还是拉不高,不知道其中的原因了

  • 好的,配置的三个参数是IO15的,并不是IO25.

    配置如下

  • 截图中我开启了Value Inversion,和Initial Output State 设置为high,我也尝试了取消勾选Value Inversion,和Initial Output State 设置为low,测试结果一样,都是低电平

  • 新建gpiointerrupt发现IO25可以拉高,原先用的是basic_ble例程使用的是从机模式,在里面配置的IO25拉不高电平

    关于您描述的两种情形,新建例程gpiointerrupt或basic_ble,DIO25可以拉高不会出现异常。

    新建了一个basic_ble,发现IO25也可以拉高,但是重新试了原先的工程还是拉不高

    原先的工程修改过哪些地方?DIO25引脚有特殊用处吗?

  • 看GPIO配置,并没有用作其他设置了,因为如果配置了其他设置的话,在GPIO再配置的话会显示资源冲突。

  • 最好的方式还是对比新建工程和原来的工程有什么区别。

    如果方便的话,您可将两个工程文件夹发送至我的邮箱。

    我会使用beyong compare工具软件工具对比看看。

  • 好的,那我发送到你的邮箱吧

  • 您好,

    我已将邮件发送至您TI信息中的邮箱账号,请注意查收。

    您可将工程文件通过邮件发送给我。

  • 好的,工程文件已发送,麻烦你了

  • 您好,

    我这边刚私信了您,您看看信息。

  • 您好,

    我使用beyond compare软件,对比了您发我的两个工程simple_peripheral_tc2和basic_ble,您可以在邮箱看到两个工程文件不同之处。

    查看下来,您在工程上修改过很多地方,包括common 文件夹也进行了很多修改。

    我们使用beyond compare软件或这种可追溯修改的工具时,不希望看到那么多不同的文件,会增大查找难度。

    这边回顾了您问题出现的流程,给出以下几点建议:

    1.在不要勾value inversion的情况下,重新烧录看下。

    2.从您的程序一点一点还原成例程,或者从例程一点一点加东西成您想要的的程序。

    3.着重看下这三条注释的代码,可能是问题出现的原因。

    4.如果还不行,您可以更详尽地描述您在syscfg修改的过程,我这边尝试一比一还原,观察下来应该是syscfg的问题比较大。

  • 1.我勾选与不勾选都试过,结果是一样的,无法拉高。

    3.三条注释的代码没有别的用处,只是当时为了测试如何进入低功耗时的语句,并没有涉及到IO25.

  • 1.您新建一个工程,只对GPIO进行配置和修改(拉高DIO25),是没有问题的吗?

    2.目前来说,在有蓝牙透传项目的基础上修改GPIO会出现异常,是这样的吗?

  • 1.是的,新建的没有问题

    2.目是,目前在我自己的透传项目会出现这个问题

  • 如果是添加了蓝牙透传代码,引脚不能拉高的话。

    那么建议您尝试将蓝牙透传相关代码注释掉,再编译烧录,看看是否可行。

  • 哎,现在不使用IO25了,更换了,后续有时间再试了,感谢了。

  • 不客气,后续如果有测试结果随时来论坛交流。

  • 及时响应问题,但问题目前还没有解决,后续有时间我会尝试找出问题并跟进

  • 感谢反馈,测试结果可以继续在此帖反馈,祝您后续研发进展顺利!