boards: introduce bytesatwork byteSENSI-L

The byteSENSI-L is a fun LoRa device based on nRF52 MCU that integrates
many sensors.

Signed-off-by: Rico Ganahl <rico.ganahl@bytesatwork.ch>
Signed-off-by: Guy Morand <guy.morand@bytesatwork.ch>
This commit is contained in:
Rico Ganahl 2024-03-27 11:25:36 +01:00 committed by David Leach
parent a9be65bec5
commit 45795d35b6
14 changed files with 449 additions and 0 deletions

View file

@ -0,0 +1,8 @@
# Copyright (c) 2024 bytesatwork AG
# SPDX-License-Identifier: Apache-2.0
config BOARD_ENABLE_DCDC
bool "DCDC mode"
select SOC_DCDC_NRF52X
default y
depends on BOARD_BYTESENSI_L

View file

@ -0,0 +1,6 @@
# Copyright (c) 2024 bytesatwork AG
# SPDX-License-Identifier: Apache-2.0
config BOARD_BYTESENSI_L
bool "bytesatwork bytesSENSI-L nRF52832"
select SOC_NRF52832_QFAA

View file

@ -0,0 +1,9 @@
# Copyright (c) 2024 bytesatwork AG
# SPDX-License-Identifier: Apache-2.0
if BOARD_BYTESENSI_L
config BT_CTLR
default BT
endif # BOARD_BYTESENSI_L

View file

@ -0,0 +1,5 @@
# Copyright (c) 2024 bytesatwork AG
# SPDX-License-Identifier: Apache-2.0
board_runner_args(jlink "--device=nRF52832_xxAA" "--speed=4000")
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

View file

@ -0,0 +1,7 @@
# Copyright (c) 2024 bytesatwork AG
# SPDX-License-Identifier: Apache-2.0
board:
name: bytesensi_l
vendor: bytesatwork
socs:
- name: nrf52832

View file

@ -0,0 +1,151 @@
/*
* Copyrigtt (c) 2024 bytesatwork AG
*
* SPDX-License-Identifier: Apache-2.0
*/
/dts-v1/;
#include <nordic/nrf52832_qfaa.dtsi>
#include "bytesensi_l_pinctrl.dtsi"
#include <zephyr/dt-bindings/gpio/gpio.h>
/ {
model = "bytesatwork BLE/LORA sensor board";
compatible = "bytesatwork,bytesensi-l";
chosen {
zephyr,console = &uart0;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
};
aliases {
/* Alias for lora samples */
lora0 = &lora;
};
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0xc000>;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = <0x0000C000 0x32000>;
};
slot1_partition: partition@3e000 {
label = "image-1";
reg = <0x0003E000 0x32000>;
};
scratch_partition: partition@70000 {
label = "image-scratch";
reg = <0x00070000 0xa000>;
};
storage_partition: partition@7a000 {
label = "storage";
reg = <0x0007a000 0x00005000>;
};
};
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
/* Enable 1-wire to enable i2c bus as well */
one-wire-gpio {
gpio-hog;
gpios = <7 GPIO_ACTIVE_HIGH>;
output-high;
};
};
&i2c0 {
compatible = "nordic,nrf-twi";
status = "okay";
clock-frequency = <I2C_BITRATE_STANDARD>;
pinctrl-0 = <&i2c0_default>;
pinctrl-1 = <&i2c0_sleep>;
pinctrl-names = "default", "sleep";
light_sensor: apds9960@39 {
status = "okay";
compatible = "avago,apds9960";
reg = <0x39>;
int-gpios = <&gpio0 25 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
};
temperature_sensor: tmp116@4a {
status = "okay";
compatible = "ti,tmp116";
reg = <0x4a>;
#address-cells = <1>;
#size-cells = <0>;
eeprom: ti_tmp116_eeprom@0 {
compatible = "ti,tmp116-eeprom";
reg = <0x0>;
read-only;
};
};
gas_sensor: ccs811@5a {
status = "okay";
compatible = "ams,ccs811";
reg = <0x5a>;
irq-gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
wake-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
};
pressure_sensor: lps22hb-press@5c {
status = "okay";
compatible = "st,lps22hb-press";
reg = <0x5c>;
};
};
&spi1 {
status = "okay";
compatible = "nordic,nrf-spi";
pinctrl-0 = <&spi1_default>;
pinctrl-1 = <&spi1_sleep>;
pinctrl-names = "default", "sleep";
cs-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>,
<&gpio0 5 GPIO_ACTIVE_LOW>;
lora: lora@0 {
status = "okay";
compatible = "semtech,sx1276";
reg = <0>;
reset-gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
dio-gpios =
<&gpio0 19 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
<&gpio0 20 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
<&gpio0 22 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
<&gpio0 23 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
spi-max-frequency = <1000000>;
power-amplifier-output = "pa-boost";
};
nor_flash: mx25r6435f@1 {
status = "okay";
compatible ="jedec,spi-nor";
size = <0x4000000>;
reg = <1>;
spi-max-frequency = <8000000>;
status = "okay";
jedec-id = [c2 28 17];
};
};

View file

@ -0,0 +1,18 @@
# Copyright (c) 2024 bytesatwork AG
# SPDX-License-Identifier: Apache-2.0
identifier: bytesensi_l
name: bytesatwork byteSENSI-L
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
ram: 64
flash: 512
supported:
- ble
- gpio
- i2c
- lora
- spi
vendor: bytesatwork

View file

@ -0,0 +1,16 @@
# Copyright (c) 2024 bytesatwork AG
# SPDX-License-Identifier: Apache-2.0
# Enable MPU
CONFIG_ARM_MPU=y
# enable GPIO
CONFIG_GPIO=y
# Enable hardware stack protection
CONFIG_HW_STACK_PROTECTION=y
# enable console over segger RTT
CONFIG_CONSOLE=y
CONFIG_RTT_CONSOLE=y
CONFIG_USE_SEGGER_RTT=y

View file

@ -0,0 +1,54 @@
/*
* Copyrigtt (c) 2024 bytesatwork AG
*
* SPDX-License-Identifier: Apache-2.0
*/
&pinctrl {
uart0_default: uart0_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 11)>,
<NRF_PSEL(UART_RX, 0, 12)>;
};
};
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 11)>,
<NRF_PSEL(UART_RX, 0, 12)>;
low-power-enable;
};
};
i2c0_default: i2c0_default {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 16)>,
<NRF_PSEL(TWIM_SCL, 0, 15)>;
};
};
i2c0_sleep: i2c0_sleep {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 16)>,
<NRF_PSEL(TWIM_SCL, 0, 15)>;
low-power-enable;
};
};
spi1_default: spi1_default{
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 2)>,
<NRF_PSEL(SPIM_MOSI, 0, 3)>,
<NRF_PSEL(SPIM_MISO, 0, 4)>;
};
};
spi1_sleep: spi1_sleep{
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 2)>,
<NRF_PSEL(SPIM_MOSI, 0, 3)>,
<NRF_PSEL(SPIM_MISO, 0, 4)>;
low-power-enable;
};
};
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View file

@ -0,0 +1,157 @@
.. _bytesensi_l:
bytesatwork byteSENSI-L
#######################
Overview
********
The byteSENSI-L is a fun LoRa device based on nRF52 MCU that integrates many
sensors.
.. image:: img/byteSENSI-L.jpg
:width: 800px
:align: center
:alt: byteSENSI-L
Hardware
********
Supported Features
==================
+-----------+------------+----------------------+
| Interface | Controller | Driver/Component |
+===========+============+======================+
| CLOCK | on-chip | clock_control |
+-----------+------------+----------------------+
| FLASH | on-chip | flash |
+-----------+------------+----------------------+
| GPIO | on-chip | gpio |
+-----------+------------+----------------------+
| I2C(M) | on-chip | i2c |
+-----------+------------+----------------------+
| MPU | on-chip | arch/arm |
+-----------+------------+----------------------+
| NVIC | on-chip | arch/arm |
+-----------+------------+----------------------+
| RADIO | on-chip | Bluetooth |
+-----------+------------+----------------------+
| RADIO | Semtech | LoRa |
+-----------+------------+----------------------+
| RTC | on-chip | system clock |
+-----------+------------+----------------------+
| RTT | Segger | console |
+-----------+------------+----------------------+
| WDT | on-chip | watchdog |
+-----------+------------+----------------------+
Connections and IOs
===================
External Connectors
-------------------
External Supply @ X1
+-------+--------------+---------------------------------------+
| PIN # | Signal Name | Function |
+=======+==============+=======================================+
| 1 | VBAT | Power input instead of CR2477 battery |
+-------+--------------+---------------------------------------+
| 2 | GND | Ground |
+-------+--------------+---------------------------------------+
Programming Connector @ SL1
+-------+--------------+
| PIN # | Signal Name |
+=======+==============+
| 1 | VBAT |
+-------+--------------+
| 2 | SWDIO |
+-------+--------------+
| 3 | GND |
+-------+--------------+
| 4 | SWDCLK |
+-------+--------------+
| 5 | GND |
+-------+--------------+
| 6 | NC (SWO) |
+-------+--------------+
| 7 | NC (Key) |
+-------+--------------+
| 8 | NC |
+-------+--------------+
| 9 | GND |
+-------+--------------+
| 10 | nReset |
+-------+--------------+
I2C Sensor @ X3
+-------+--------------+-------------------------+
| PIN # | Signal Name | Function |
+=======+==============+=========================+
| 1 | VBAT | Power out |
+-------+--------------+-------------------------+
| 2 | SCL | I2C clock at P0.15 |
+-------+--------------+-------------------------+
| 3 | SDA | I2C data at P0.16 |
+-------+--------------+-------------------------+
| 4 | INT | Interrupt at P0.13 |
+-------+--------------+-------------------------+
| 5 | I2C_ADDR | tied to VBAT |
+-------+--------------+-------------------------+
| 6 | GND | Ground |
+-------+--------------+-------------------------+
One Wire Sensor @ X2
+-------+----------------+-------------------------+
| PIN # | Signal Name | Function |
+=======+================+=========================+
| 1 | VDD | 4V8 |
+-------+----------------+-------------------------+
| 2 | IO | One Wire |
+-------+----------------+-------------------------+
| 3 | GND | Ground |
+-------+----------------+-------------------------+
External BLE Antenna @ J1
External LoRa Antenna @ J2
External GPS Antenna @ J3
Programming and Debugging
*************************
Flashing
========
The byteSENSI-L board can be flashed with the SEGGER JLink programmer.
You can build and flash applications in the usual way. Here is an example for
the :ref:`hello_world` application.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: bytesensi_l
:goals: build flash
:compact:
Debugging
=========
Debugging your application can be done with ``west debug``.
Serial console
==============
The byteSENSI-L board only uses Segger's RTT console for providing serial
console. There is no physical serial port available.
References
**********
* `bytesatwork website <https://www.bytesatwork.io/>`_
* `bytesatwork wiki <https://wiki.bytesatwork.io/>`_

View file

@ -0,0 +1,7 @@
# Copyright (c) 2024 bytesatwork AG
# SPDX-License-Identifier: Apache-2.0
# Suppress "unique_unit_address_if_enabled" to handle the following overlaps:
# - power@40000000 & clock@40000000 & bprot@40000000
# - acl@4001e000 & flash-controller@4001e000
list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled")

View file

@ -0,0 +1,10 @@
.. _boards-bytesatwork:
bytesatwork
###########
.. toctree::
:maxdepth: 1
:glob:
**/*

View file

@ -111,6 +111,7 @@ broadmobi Shanghai Broadmobi Communication Technology Co.,Ltd.
bticino Bticino International bticino Bticino International
buffalo Buffalo, Inc. buffalo Buffalo, Inc.
bur B&R Industrial Automation GmbH bur B&R Industrial Automation GmbH
bytesatwork bytesatwork AG
calaosystems CALAO Systems SAS calaosystems CALAO Systems SAS
calxeda Calxeda calxeda Calxeda
canaan Canaan, Inc. canaan Canaan, Inc.