This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

GPIO pins don't work as expected.

Hi to everyone!

I have a custom board (based on nRF52832) with two LEDS and other GPIO ports. In some point of the code I have to activate one device by setting one port to 1. This is designed like that for power saving. But I realized this device never turns on.

Unless there is other way, I use the function nrf_gpio_cfg_output to configure the port and the functions nrf_gpio_pin_set and nrf_gpio_pin_clear to turn the device on and off, respectively.

After some tests I detected that even the LEDs (and the other GPIO ports) are not working correctly (but in nRF52832DK they worked). If I use nrf_gpio_cfg_output with one LED, then this LED lights up until I use again nrf_gpio_cfg_output with other port (for example with the other LED).

After configuring (I hope) the LEDs as output, when I use nrf_gpio_pin_clear the LEDs lights up and when I use nrf_gpio_pin_set the LEDs turn off. So the result I get is exactly the opposite I expected.

Any Ideas why this is happening?

Could be a problem with crystals or something like that?

Thanks in advance!

Parents
  • Hi AmbystomaLabs.

    This is a prototype board and we are looking for the problem to fix it (yes I did not design it).

    But recently I have seen in deep the Nordic files code (and retesting them with the nRF52832DK) and I realize that the code in boards.c also has this "problem" in mind (I do not know if it is finally a problem).

    I mean: In the function bsp_board_led_on, where the led should light up, the nrf_gpio_pin_write function is called with 0 as parameter and, in this write function, if 0 is the parameter, then nrf_gpio_pin_clear function is called (if not, then the nrf_gpio_pin_set is called`).

    In summary, bsp_board_led_on uses nrf_gpio_pin_clear to light up the leds and bsp_board_led_off uses nrf_gpio_pin_set to turn off the leds.

    What does the variable LEDS_ACTIVE_STATE mean with value 0?

Reply
  • Hi AmbystomaLabs.

    This is a prototype board and we are looking for the problem to fix it (yes I did not design it).

    But recently I have seen in deep the Nordic files code (and retesting them with the nRF52832DK) and I realize that the code in boards.c also has this "problem" in mind (I do not know if it is finally a problem).

    I mean: In the function bsp_board_led_on, where the led should light up, the nrf_gpio_pin_write function is called with 0 as parameter and, in this write function, if 0 is the parameter, then nrf_gpio_pin_clear function is called (if not, then the nrf_gpio_pin_set is called`).

    In summary, bsp_board_led_on uses nrf_gpio_pin_clear to light up the leds and bsp_board_led_off uses nrf_gpio_pin_set to turn off the leds.

    What does the variable LEDS_ACTIVE_STATE mean with value 0?

Children
No Data
Related