GPIO Configuration in nRF Connect SDK 1.9.1

Hi, I am exploring the nRF connect SDK v1.9.1. along with that i have my own custom build nRF52840 board (custom board) . in that i have enabled LED,Buttons, ADC sensors, spi sensors, neopixel led, and  some GPIOs .

I have created the custom board file based on the nrf52840 dk board file .

Now i want to map the pins and i want to access it as output and also pin interrupt .

to achieve  that configuration .

I have tried  two method

1. Example of blinky (zephyr/samples/basic/blinky)

       in my custom .dts  file

i made this things

leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
			label = "Green LED 0";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		pwm_led0: pwm_led_0 {
			pwms = <&pwm0 36>;
		};
	};
	neo {
		compatible = "neo-switch";
		neo_switch0: neo-switch_0 {
			gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
			label = "neo switch";
		};
	};
	
	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio1 2 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
			label = "Push button switch 0";
		};
		button1: button_1 {
			gpios = <&gpio1 15 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
			label = "Push button switch 1";
		};
	};

check i want to config P0.06 as output . How i suppose to configure here and i tried to make devicetree get binding but

#define NEO_NODE DT_ALIAS(neoswitch)

#if DT_NODE_HAS_STATUS(NEO_NODE, okay)
#define NEOSWITCH   DT_GPIO_LABEL(NEO_NODE, gpios)
#define NEOPIN      DT_GPIO_PIN(NEO_NODE, gpios)
#endif

void main(void)
{
    int err;
    const struct device *neo_dev;
    neo_dev = device_get_binding(NEOSWITCH);
    //if(neo_dev == NULL)
    //    return;
    
    err = dk_leds_init();
    if (err) {
            printk("LEDs init failed (err %d)\n", err);
            return;
    }
    err = dk_buttons_init(button_changed);
    if (err) {
            printk("Cannot init buttons (err: %d)\n", err);
    }
}

2. I am trying to implement #include <nrfx/hal/nrf_gpio.h>   based on this link https://devzone.nordicsemi.com/f/nordic-q-a/70735/gpio-pin-configuration/290413#290413

how to interface nrf_gpio drivers into the prj.conf

my current prj.conf is

#
# Copyright (c) 2020 Nordic Semiconductor
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

# Network shell
CONFIG_SHELL=y
CONFIG_OPENTHREAD_SHELL=y
CONFIG_SHELL_ARGC_MAX=26
CONFIG_SHELL_CMD_BUFF_SIZE=416

# Enable OpenThread features set
CONFIG_OPENTHREAD_NORDIC_LIBRARY_MASTER=y

CONFIG_NET_L2_OPENTHREAD=y

# Generic networking options
CONFIG_NETWORKING=y

CONFIG_ASSERT=y
CONFIG_ASSERT_NO_COND_INFO=y
CONFIG_MBEDTLS_SHA1_C=n
CONFIG_FPU=y

CONFIG_GPIO_SHELL=y
CONFIG_DK_LIBRARY=y
CONFIG_GPIO=y
CONFIG_GPIO_NRFX=y

also i have created .overlay file for my board like

/* Copyright (c) 2020 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
 */

&uart0 {
	status = "okay";
	hw-flow-control;
};
neo {
		compatible = "neo-switch";
		neo_switch0: neo-switch_0 {
			gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
			label = "neo switch";
		};
	};

/ {
	/*
	* In some default configurations within the nRF Connect SDK,
	* e.g. on nRF52840, the chosen zephyr,entropy node is &cryptocell.
	* This devicetree overlay ensures that default is overridden wherever it
	* is set, as this application uses the RNG node for entropy exclusively.
	*/
	chosen {
		zephyr,entropy = &rng;
	};
};

Parents Reply Children
Related