boards: arm: nrf21540dk_nrf52840: migrate to pinctrl
Use pinctrl instead of `-pin` properties. Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
This commit is contained in:
parent
746ded3b57
commit
dee0c6b155
|
@ -184,15 +184,32 @@ more than one UART for connecting peripheral devices:
|
|||
|
||||
1. Add devicetree overlay file to the main directory of your application:
|
||||
|
||||
.. code-block:: console
|
||||
.. code-block:: devicetree
|
||||
|
||||
&pinctrl {
|
||||
uart1_default: uart1_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(UART_TX, 0, 14)>,
|
||||
<NRF_PSEL(UART_RX, 0, 16)>;
|
||||
};
|
||||
};
|
||||
/* required if CONFIG_PM_DEVICE=y */
|
||||
uart1_sleep: uart1_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(UART_TX, 0, 14)>,
|
||||
<NRF_PSEL(UART_RX, 0, 16)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
$ cat nrf21540dk_nrf52840.overlay
|
||||
&uart1 {
|
||||
compatible = "nordic,nrf-uarte";
|
||||
current-speed = <115200>;
|
||||
status = "okay";
|
||||
tx-pin = <14>;
|
||||
rx-pin = <16>;
|
||||
pinctrl-0 = <&uart1_default>;
|
||||
pinctrl-1 = <&uart1_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
In the overlay file above, pin P0.16 is used for RX and P0.14 is used for TX
|
||||
|
@ -203,24 +220,13 @@ See :ref:`set-devicetree-overlays` for further details.
|
|||
|
||||
Selecting the pins
|
||||
==================
|
||||
To select the pin numbers for tx-pin and rx-pin:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
tx-pin = <pin_no>
|
||||
|
||||
Open the `nRF52840 Product Specification`_, chapter 7 'Hardware and Layout'.
|
||||
Pins can be configured in the board pinctrl file. To see the available mappings,
|
||||
open the `nRF52840 Product Specification`_, chapter 7 'Hardware and Layout'.
|
||||
In the table 7.1.1 'aQFN73 ball assignments' select the pins marked
|
||||
'General purpose I/O'. Note that pins marked as 'low frequency I/O only' can only be used
|
||||
in under-10KHz applications. They are not suitable for 115200 speed of UART.
|
||||
|
||||
Translate the 'Pin' into number for devicetree by using the following formula::
|
||||
|
||||
pin_no = b\*32 + a
|
||||
|
||||
where ``a`` and ``b`` are from the Pin value in the table (Pb.a).
|
||||
For example, for P0.1, ``pin_no = 1`` and for P1.0, ``pin_no = 32``.
|
||||
|
||||
References
|
||||
**********
|
||||
|
||||
|
|
159
boards/arm/nrf21540dk_nrf52840/nrf21540dk_nrf52840-pinctrl.dtsi
Normal file
159
boards/arm/nrf21540dk_nrf52840/nrf21540dk_nrf52840-pinctrl.dtsi
Normal file
|
@ -0,0 +1,159 @@
|
|||
/*
|
||||
* Copyright (c) 2022 Nordic Semiconductor
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
&pinctrl {
|
||||
uart0_default: uart0_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(UART_TX, 0, 6)>,
|
||||
<NRF_PSEL(UART_RTS, 0, 5)>;
|
||||
};
|
||||
group2 {
|
||||
psels = <NRF_PSEL(UART_RX, 0, 8)>,
|
||||
<NRF_PSEL(UART_CTS, 0, 7)>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
uart0_sleep: uart0_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(UART_TX, 0, 6)>,
|
||||
<NRF_PSEL(UART_RX, 0, 8)>,
|
||||
<NRF_PSEL(UART_RTS, 0, 5)>,
|
||||
<NRF_PSEL(UART_CTS, 0, 7)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
uart1_default: uart1_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(UART_RX, 1, 1)>;
|
||||
bias-pull-up;
|
||||
};
|
||||
group2 {
|
||||
psels = <NRF_PSEL(UART_TX, 1, 2)>;
|
||||
};
|
||||
};
|
||||
|
||||
uart1_sleep: uart1_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(UART_RX, 1, 1)>,
|
||||
<NRF_PSEL(UART_TX, 1, 2)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
i2c0_default: i2c0_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(TWIM_SDA, 0, 26)>,
|
||||
<NRF_PSEL(TWIM_SCL, 0, 27)>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c0_sleep: i2c0_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(TWIM_SDA, 0, 26)>,
|
||||
<NRF_PSEL(TWIM_SCL, 0, 27)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
i2c1_default: i2c1_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(TWIM_SDA, 0, 30)>,
|
||||
<NRF_PSEL(TWIM_SCL, 0, 31)>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c1_sleep: i2c1_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(TWIM_SDA, 0, 30)>,
|
||||
<NRF_PSEL(TWIM_SCL, 0, 31)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
pwm0_default: pwm0_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(PWM_OUT0, 0, 13)>;
|
||||
nordic,invert;
|
||||
};
|
||||
};
|
||||
|
||||
pwm0_sleep: pwm0_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(PWM_OUT0, 0, 13)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
spi0_default: spi0_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 0, 27)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 0, 26)>,
|
||||
<NRF_PSEL(SPIM_MISO, 0, 29)>;
|
||||
};
|
||||
};
|
||||
|
||||
spi0_sleep: spi0_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 0, 27)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 0, 26)>,
|
||||
<NRF_PSEL(SPIM_MISO, 0, 29)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
spi1_default: spi1_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 0, 31)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 0, 30)>,
|
||||
<NRF_PSEL(SPIM_MISO, 1, 8)>;
|
||||
};
|
||||
};
|
||||
|
||||
spi1_sleep: spi1_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 0, 31)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 0, 30)>,
|
||||
<NRF_PSEL(SPIM_MISO, 1, 8)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
spi2_default: spi2_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 0, 19)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 0, 20)>,
|
||||
<NRF_PSEL(SPIM_MISO, 0, 21)>;
|
||||
};
|
||||
};
|
||||
|
||||
spi2_sleep: spi2_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 0, 19)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 0, 20)>,
|
||||
<NRF_PSEL(SPIM_MISO, 0, 21)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
spi3_default: spi3_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 1, 15)>,
|
||||
<NRF_PSEL(SPIM_MISO, 1, 14)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 1, 13)>;
|
||||
};
|
||||
};
|
||||
|
||||
spi3_sleep: spi3_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 1, 15)>,
|
||||
<NRF_PSEL(SPIM_MISO, 1, 14)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 1, 13)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
/dts-v1/;
|
||||
#include <nordic/nrf52840_qiaa.dtsi>
|
||||
#include "nrf21540dk_nrf52840-pinctrl.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Nordic nRF21540 DK NRF52840";
|
||||
|
@ -155,75 +156,75 @@
|
|||
compatible = "nordic,nrf-uarte";
|
||||
status = "okay";
|
||||
current-speed = <115200>;
|
||||
tx-pin = <6>;
|
||||
rx-pin = <8>;
|
||||
rx-pull-up;
|
||||
rts-pin = <5>;
|
||||
cts-pin = <7>;
|
||||
cts-pull-up;
|
||||
pinctrl-0 = <&uart0_default>;
|
||||
pinctrl-1 = <&uart0_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
arduino_serial: &uart1 {
|
||||
status = "okay";
|
||||
current-speed = <115200>;
|
||||
rx-pin = <33>;
|
||||
rx-pull-up;
|
||||
tx-pin = <34>;
|
||||
pinctrl-0 = <&uart1_default>;
|
||||
pinctrl-1 = <&uart1_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
arduino_i2c: &i2c0 {
|
||||
compatible = "nordic,nrf-twi";
|
||||
status = "okay";
|
||||
sda-pin = <26>;
|
||||
scl-pin = <27>;
|
||||
pinctrl-0 = <&i2c0_default>;
|
||||
pinctrl-1 = <&i2c0_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
compatible = "nordic,nrf-twi";
|
||||
/* Cannot be used together with spi1. */
|
||||
/* status = "okay"; */
|
||||
sda-pin = <30>;
|
||||
scl-pin = <31>;
|
||||
pinctrl-0 = <&i2c1_default>;
|
||||
pinctrl-1 = <&i2c1_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
&pwm0 {
|
||||
status = "okay";
|
||||
ch0-pin = <13>;
|
||||
ch0-inverted;
|
||||
pinctrl-0 = <&pwm0_default>;
|
||||
pinctrl-1 = <&pwm0_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
compatible = "nordic,nrf-spi";
|
||||
/* Cannot be used together with i2c0. */
|
||||
/* status = "okay"; */
|
||||
sck-pin = <27>;
|
||||
mosi-pin = <26>;
|
||||
miso-pin = <29>;
|
||||
pinctrl-0 = <&spi0_default>;
|
||||
pinctrl-1 = <&spi0_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
&spi1 {
|
||||
compatible = "nordic,nrf-spi";
|
||||
status = "okay";
|
||||
sck-pin = <31>;
|
||||
mosi-pin = <30>;
|
||||
miso-pin = <40>;
|
||||
pinctrl-0 = <&spi1_default>;
|
||||
pinctrl-1 = <&spi1_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
&spi2 {
|
||||
compatible = "nordic,nrf-spi";
|
||||
status = "disabled";
|
||||
sck-pin = <19>;
|
||||
mosi-pin = <20>;
|
||||
miso-pin = <21>;
|
||||
pinctrl-0 = <&spi2_default>;
|
||||
pinctrl-1 = <&spi2_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
fem_spi: &spi3 {
|
||||
status = "okay";
|
||||
sck-pin = <47>;
|
||||
miso-pin = <46>;
|
||||
mosi-pin = <45>;
|
||||
cs-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
|
||||
|
||||
pinctrl-0 = <&spi3_default>;
|
||||
pinctrl-1 = <&spi3_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
nrf_radio_fem_spi: nrf21540_fem_spi@0 {
|
||||
compatible = "nordic,nrf21540-fem-spi";
|
||||
status = "okay";
|
||||
|
|
|
@ -25,3 +25,5 @@ CONFIG_UART_CONSOLE=y
|
|||
|
||||
# additional board options
|
||||
CONFIG_GPIO_AS_PINRESET=y
|
||||
|
||||
CONFIG_PINCTRL=y
|
||||
|
|
Loading…
Reference in a new issue