Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions boards/shields/x_nucleo_s2868a1/Kconfig.defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright (c) 2021 Nikos Oikonomou <nikoikonomou92@gmail.com>
# SPDX-License-Identifier: Apache-2.0

if SHIELD_X_NUCLEO_S2868A1

if IEEE802154

config SPI
default y
depends on IEEE802154

config IEEE802154_S2LP
default y
depends on IEEE802154

config NET_CONFIG_IEEE802154_DEV_NAME
default "IEEE802154_S2LP"
depends on IEEE802154_S2LP

endif # IEEE802154

endif # SHIELD_X_NUCLEO_S2868A1
5 changes: 5 additions & 0 deletions boards/shields/x_nucleo_s2868a1/Kconfig.shield
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright (c) 2021 Nikos Oikonomou <nikoikonomou92@gmail.com>
# SPDX-License-Identifier: Apache-2.0

config SHIELD_X_NUCLEO_S2868A1
def_bool $(shields_list_contains,x_nucleo_s2868a1)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
59 changes: 59 additions & 0 deletions boards/shields/x_nucleo_s2868a1/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
.. _x-nucleo-s2868a1:

X-NUCLEO-S2868A1: S2LP radio shield
###################################

Overview
********
The X-NUCLEO-S2868A1 expansion board is based on the S2-LP radio and operates
in the 868 MHz ISM frequency band. The expansion board is compatible with ST
morpho and Arduino UNO R3 connectors. The X-NUCLEO-S2868A1 interfaces with
the STM32 Nucleo microcontroller via SPI connections and GPIO pins. You can
change some of the GPIOs by mounting or removing the resistors.

.. image:: img/x-nucleo-s2868a1.jpg
:width: 350px
:height: 489px
:align: center
:alt: X-NUCLEO-S2868A1

More information about the board can be found at the `X-NUCLEO-S2868A1 website`_

Hardware
********

X-NUCLEO-S2868A1 provides the following key features:

- Based on S2-LP radio
- S2-LP narrow band ultra-low power sub-1 GHz transceiver tuned for 860 - 940 MHz frequency band
- Programmable RF output power up to +16 dBm
- Modulation schemes: 2-FSK, 2-GFSK, 4-FSK, 4-GFSK, OOK and ASK
- Air data rate from 0.1 to 500 kbps
- Ultra-low power consumption: 7 mA RX and 10 mA TX at +10 dBm
- IEEE 802.15.4g hardware packet support with whitening, FEC, CRC and dual SYNC word detection
- RX and TX 128 byte FIFO buffers
- Support to wireless M-Bus
- Excellent performance of receiver sensitivity (up to -130 dBm)
- Automatic acknowledgment, retransmission and timeout protocol engine
- Compatible with STM32 Nucleo boards
- Compatible with Arduino UNO R3 connectors
- Support to SMD and SMA antennas
- BALF-SPI2-01D3 IPD balun for matching network and harmonics filter
- Sigfox compatible
- 6LoWPAN compatible
- RoHS compliant


More information about X-NUCLEO-S2868A1 can be found in the
`X-NUCLEO-S2868A1 data sheet`_.

References
**********

.. target-notes::

.. _X-NUCLEO-S2868A1 website:
https://www.st.com/en/ecosystems/x-nucleo-s2868a1.html

.. _X-NUCLEO-S2868A1 data sheet:
https://www.st.com/resource/en/data_brief/x-nucleo-s2868a1.pdf
20 changes: 20 additions & 0 deletions boards/shields/x_nucleo_s2868a1/x_nucleo_s2868a1.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2021 Nikos Oikonomou <nikoikonomou92@gmail.com>
*
* SPDX-License-Identifier: Apache-2.0
*/

&arduino_spi {
status = "okay";
cs-gpios = <&arduino_header 1 GPIO_ACTIVE_LOW>; /* A1 */

s2lp@0 {
status = "okay";
compatible = "st,s2lp";
reg = <0x0>;
label = "s2lp";
spi-max-frequency = <4000000>;
sdn-gpios = <&arduino_header 13 GPIO_ACTIVE_LOW>; /* D7 */
rx-rdy-irq-gpios = <&arduino_header 5 (GPIO_PULL_UP|GPIO_ACTIVE_LOW)>; /* A5 */
};
};
1 change: 1 addition & 0 deletions drivers/ieee802154/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ zephyr_sources_ifdef(CONFIG_IEEE802154_CC13XX_CC26XX_SUB_GHZ ieee802154_cc13xx_c
zephyr_sources_ifdef(CONFIG_IEEE802154_RF2XX ieee802154_rf2xx.c)
zephyr_sources_ifdef(CONFIG_IEEE802154_RF2XX ieee802154_rf2xx_iface.c)
zephyr_sources_ifdef(CONFIG_IEEE802154_DW1000 ieee802154_dw1000.c)
zephyr_sources_ifdef(CONFIG_IEEE802154_S2LP ieee802154_s2lp.c)

if(CONFIG_SOC_CC1352R)
target_compile_definitions(zephyr PRIVATE "DeviceFamily_CC13X2")
Expand Down
2 changes: 2 additions & 0 deletions drivers/ieee802154/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ source "drivers/ieee802154/Kconfig.rf2xx"

source "drivers/ieee802154/Kconfig.dw1000"

source "drivers/ieee802154/Kconfig.s2lp"

menuconfig IEEE802154_UPIPE
bool "UART PIPE fake radio driver support for QEMU"
depends on (BOARD_QEMU_X86 || BOARD_QEMU_CORTEX_M3) && NETWORKING
Expand Down
67 changes: 67 additions & 0 deletions drivers/ieee802154/Kconfig.s2lp
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# ST Microelectronics s2lp 802.15.4 radio configuration options

# Copyright (c) 2021 Nikos Oikonomou <nikoikonomou92@gmail.com>
# SPDX-License-Identifier: Apache-2.0

menuconfig IEEE802154_S2LP
bool "ST S2LP Driver support"
depends on NETWORKING && SPI
select NET_L2_IEEE802154_SUB_GHZ if NET_L2_IEEE802154

if IEEE802154_S2LP

config IEEE802154_S2LP_DRV_NAME
string "S2LP Driver's name"
default "IEEE802154_S2LP"
help
This option sets the driver name

config IEEE802154_S2LP_RX_THREAD_PRIO
int
default 2
help
Hidden option for Rx thread priority.

config IEEE802154_S2LP_RX_STACK_SIZE
int "Driver's internal RX thread stack size"
default 800
help
This option sets the driver's stack size for its internal RX thread.
The default value should be sufficient, but in case it proves to be
a too little one, this option makes it easy to play with the size.

config IEEE802154_S2LP_INIT_PRIO
int "S2LP initialization priority"
default 80
help
Set the initialization priority number. Do not mess with it unless
you know what you are doing.

config IEEE802154_S2LP_SNIFF_MODE
bool "Enables SNIFF Mode feature"
help
If enabled the driver will utilize the radio's SNIFF Mode feature.

config IEEE802154_S2LP_FREQUENCY_BASE
int "S2LP frequency base in Hz"
default 868000000
help
The frequency base that will be used for the computation of the
operational frequency.

config IEEE802154_S2LP_MAX_FREQUENCY
int "S2LP maximum supported frequency in Hz"
default 930000000

config IEEE802154_S2LP_CHANNEL_SPACE
int "S2LP frequency spacing in Hz"
default 100000
help
The frequency spacing that will be used for the computation of the
operational frequency.

config IEEE802154_S2LP_DATARATE
int "S2LP desired datarate in bps"
default 38400

endif
Loading