nRF54L15 P0.01 cannot be configured/used as GPIO input while P0.03 works

Hello Nordic team,

I am working with an nRF54L15dk and have an issue using P0.01 as a GPIO input.

P0.03 works correctly with the same GPIO configuration, but P0.01 does not respond to the input signal.

According to the nRF54L Series documentation, P0 is the GPIO port associated with the low-power domain, and all P0 pins should support general-purpose GPIO functionality. P0 also supports GPIO SENSE/DETECT and GPIOTE.

Issue

  • P0.03: GPIO input works correctly.
  • P0.01: GPIO input does not work.
  • UARTE30 is disabled in my application.
  • I have also tried enabling CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y, but this did not resolve the issue.
  • I tested P0.01 using a minimal GPIO configuration rather than relying on a peripheral.

The basic configuration is:

const struct device *gpio0 = DEVICE_DT_GET(DT_NODELABEL(gpio0));

int ret = gpio_pin_configure(gpio0, 1, GPIO_INPUT | GPIO_PULL_UP);

printk("P0.01 configure ret = %d\n", ret);

while (1) {
    printk("P0.01 = %d\n", gpio_pin_get(gpio0, 1));
    k_sleep(K_MSEC(500));
}

I also compared this directly with P0.03:

gpio_pin_configure(gpio0, 3, GPIO_INPUT | GPIO_PULL_UP);

P0.03 behaves as expected.

I have verified that UARTE30 is disabled, so P0.01 should not be occupied by UARTE30 in my application.

I would like to understand:

  1. Is there any specific restriction, erratum, or configuration requirement for P0.01 on the nRF54L15?
  2. Is there any low-power-domain/GPIO configuration that can prevent P0.01 from functioning as a normal GPIO input?
  3. Is P0.01 affected by any GRTC, UICR, pin configuration, or other hardware ownership that is not visible through the normal Zephyr GPIO configuration?
  4. Are there any known issues with P0.01 on the particular nRF54L15 silicon revision?
  5. Is there a recommended register-level test to verify that P0.01 is actually configured as GPIO input?

I would appreciate any guidance on how to debug this further.

Thank you.

Parents
  • Ok, try to uncheck the other VCOM as well, press write config and then power cycle the DK.

    Note that you have a GPIO with pullup, meaning when it is not connected to anything, it will be pulled up to VDD. To simulate a button press, connect the white wire from P0.01 to GND. The two upper pins to the far left of P0 are GND, so you can use these.

    BR,
    Edvin

  • Hi Edvin,

    It's still not working on my side. Can you please give me the hex file you used to get it working from your side?!

    regards,

  • This is the one from my application:

    6278.zephyr.hex

    You can use the commands:

    nrfutil device erase
    nrfutil device program --firmware zephyr.hex
    nrfutil device reset

    to flash it, or you can use nRF Connect for desktop -> nRF Programmer.

    If it says something about the device being read-protected, please use "nrfutil device recover" first.

    When the application starts, LED0 should start blinking once every second.

    Note that this application doesn't have any Debounce on the input pin. This means that it will trigger 1, 2 or many times every time you short the pins. So do it a few times to make sure that it triggers an odd amount of times (or else it will just toggle LED3 2 or 4 times, and you don't really see it). 

    But using this .hex file still means you need to disable the VCOMs in the Board Configurator app. This configuration is not changed by the .hex file.

    If this doesn't work. What is your end goal? Are you going to use a button on P0.01? Or are you planning to connect it to some other device? And are you going to use a DK for this, or to have your own PCB?

    Best regards,

    Edvin

  • Your code worked on my dev kit. I was wondering what the difference might be between your setup and mine. When I decided to use nrf54l15dk/nrf54l15/cpuapp as the board target instead of the non-secure target, it worked. So, the problem seems to be with nrf54l15dk/nrf54l15/cpuapp/ns.

    regards,

  • Hi Edvin,

    I got this working with the nrf54l15dk/nrf54l15/cpuapp/ns by adding 

    CONFIG_TFM_LOG_LEVEL_SILENCE=y in prj.conf.
    thanks for the help.
    regards,
Reply Children
No Data
Related