mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
boards/hip-badge: add HiP Badge board definition
This commit is contained in:
parent
55b5c47bc8
commit
82d7368415
21
boards/hip-badge/Kconfig
Normal file
21
boards/hip-badge/Kconfig
Normal file
@ -0,0 +1,21 @@
|
||||
# Copyright (c) 2023 Benjamin Valentin
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU Lesser
|
||||
# General Public License v2.1. See the file LICENSE in the top level
|
||||
# directory for more details.
|
||||
|
||||
config BOARD
|
||||
default "hip-badge" if BOARD_HIP_BADGE
|
||||
|
||||
config BOARD_HIP_BADGE
|
||||
bool
|
||||
default y
|
||||
select BOARD_COMMON_ESP32C3
|
||||
select CPU_MODEL_ESP32C3
|
||||
select HAS_ESP_JTAG
|
||||
select HAS_PERIPH_I2C
|
||||
|
||||
select HAVE_SAUL_GPIO
|
||||
select HAVE_SGP30
|
||||
|
||||
source "$(RIOTBOARD)/common/esp32c3/Kconfig"
|
5
boards/hip-badge/Makefile
Normal file
5
boards/hip-badge/Makefile
Normal file
@ -0,0 +1,5 @@
|
||||
MODULE = board
|
||||
|
||||
DIRS = $(RIOTBOARD)/common/esp32c3
|
||||
|
||||
include $(RIOTBASE)/Makefile.base
|
9
boards/hip-badge/Makefile.dep
Normal file
9
boards/hip-badge/Makefile.dep
Normal file
@ -0,0 +1,9 @@
|
||||
ifeq (,$(filter stdio_% slipdev_stdio,$(USEMODULE)))
|
||||
USEMODULE += stdio_usb_serial_jtag
|
||||
endif
|
||||
|
||||
ifneq (,$(filter saul_default,$(USEMODULE)))
|
||||
USEMODULE += sgp30
|
||||
endif
|
||||
|
||||
include $(RIOTBOARD)/common/esp32c3/Makefile.dep
|
10
boards/hip-badge/Makefile.features
Normal file
10
boards/hip-badge/Makefile.features
Normal file
@ -0,0 +1,10 @@
|
||||
CPU_MODEL = esp32c3
|
||||
|
||||
# common board and CPU features
|
||||
include $(RIOTBOARD)/common/esp32c3/Makefile.features
|
||||
|
||||
# additional features provided by the board
|
||||
FEATURES_PROVIDED += periph_i2c
|
||||
|
||||
# unique features provided by the board
|
||||
FEATURES_PROVIDED += esp_jtag
|
3
boards/hip-badge/Makefile.include
Normal file
3
boards/hip-badge/Makefile.include
Normal file
@ -0,0 +1,3 @@
|
||||
PORT_LINUX ?= /dev/ttyACM0
|
||||
|
||||
include $(RIOTBOARD)/common/esp32c3/Makefile.include
|
62
boards/hip-badge/doc.txt
Normal file
62
boards/hip-badge/doc.txt
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Benjamin Valentin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup boards_hip_badge HiP Badge
|
||||
* @ingroup boards_esp32c3
|
||||
* @brief Support for the Hacking in Parallel Badge
|
||||
* @author Benjamin Valentin <benjamin.valentin@ml-pa.com>
|
||||
*/
|
||||
|
||||
The HiP Badge is a board that was given to participants of the 2022 *Hacking in Parallel* event.
|
||||
|
||||
![Image of the HiP badge with custom frame and SAO (I2C) expander](https://camo.githubusercontent.com/834dbee4ed9a9a90480bd1a239e54718f3a9613b694d0a2e26a3b25e55ce2d82/68747470733a2f2f6d61747269782d636c69656e742e6d61747269782e6f72672f5f6d61747269782f6d656469612f72302f646f776e6c6f61642f6d6f6e65726f2e736f6369616c2f757351777a4f656957516e6671546247416845734b684a76)
|
||||
|
||||
# Features
|
||||
|
||||
- ESP32-C3FH4AZ SoC
|
||||
- I2C via SAO headers
|
||||
- UART via pin headers
|
||||
- 16 WS2812B LEDs
|
||||
- USB-C Serial/JTAG
|
||||
- 3 User button / 1 Reset button
|
||||
- ST25DV04K NFC/I2C EEPROM (TODO: driver)
|
||||
|
||||
# Flashing the device
|
||||
|
||||
The device can be programmed using the USB-C Serial/JTAG feature.
|
||||
Just plug in a cable to your computer and flash the device with
|
||||
|
||||
make BOARD=hip-badge flash
|
||||
|
||||
This should automatically reset the ESP32C3 into bootloader mode and start the download process.
|
||||
If for some reason this gets stuck or the badge does not register as a /dev/ttyACMx device, you
|
||||
can manually force it into bootloader mode by pressing the reset button (SW3/blue) while holding
|
||||
the BOOT button (SW4).
|
||||
When doing this, the device will still be in bootloader mode after flashing, you have to press
|
||||
the reset button (SW3/blue) again to start your application.
|
||||
|
||||
There is currently still a bug in the USB Serial stdio implementation: After flashing or a reboot,
|
||||
there is no output. Do a manual reset (press the reset button) to restore output.
|
||||
|
||||
# Bugs
|
||||
|
||||
The event (and badge) were organized on short notice (6 Weeks), so there are some hardware issues:
|
||||
|
||||
- No WiFi/BLE antenna. There is a pad on the back of the PCB where a socket was supposed to be, but
|
||||
nothing is connected. You can try solder something onto it yourself, but the trace is already long
|
||||
and winded.
|
||||
BLE works with the existing trace alone (on short range), WiFi/ESP Now does not.
|
||||
- IR transceiver broken. Can be fixed with a steady hand?
|
||||
- SGP30 air quality sensor is only populated on some boards (red case)
|
||||
- MAX17048 fuel gauge not populated
|
||||
|
||||
# Resources
|
||||
|
||||
- [Badge Clinic](https://wiki.hip-berlin.de/index.php?title=Badge_Clinic)
|
||||
- [Design files](https://gitlab.com/tidklaas/hip-badge/)
|
1
boards/hip-badge/hip-badge.config
Normal file
1
boards/hip-badge/hip-badge.config
Normal file
@ -0,0 +1 @@
|
||||
CONFIG_MODULE_STDIO_USB_SERIAL_JTAG=y
|
117
boards/hip-badge/include/board.h
Normal file
117
boards/hip-badge/include/board.h
Normal file
@ -0,0 +1,117 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Benjamin Valentin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_hip_badge
|
||||
* @brief Board definitions for the HiP Badge
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @author Benjamin Valentin <benjamin.valentin@ml-pa.com>
|
||||
*/
|
||||
|
||||
#ifndef BOARD_H
|
||||
#define BOARD_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @name Button pin definitions
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Tact A GPIO pin definition
|
||||
*/
|
||||
#define BTN0_PIN GPIO2
|
||||
|
||||
/**
|
||||
* @brief button GPIO mode definition
|
||||
*
|
||||
* Since the GPIO of the button is pulled up with an external resistor, the
|
||||
* mode for the GPIO pin has to be GPIO_IN.
|
||||
*/
|
||||
#define BTN0_MODE GPIO_IN
|
||||
|
||||
/**
|
||||
* @brief Default interrupt flank definition for the button GPIO
|
||||
*/
|
||||
#ifndef BTN0_INT_FLANK
|
||||
#define BTN0_INT_FLANK GPIO_FALLING
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Tact B GPIO pin definition
|
||||
*/
|
||||
#define BTN1_PIN GPIO8
|
||||
|
||||
/**
|
||||
* @brief Default button GPIO mode definition
|
||||
*
|
||||
* Since the GPIO of the button is pulled up with an external resistor, the
|
||||
* mode for the GPIO pin has to be GPIO_IN.
|
||||
*/
|
||||
#define BTN1_MODE GPIO_IN
|
||||
|
||||
/**
|
||||
* @brief Default interrupt flank definition for the button GPIO
|
||||
*/
|
||||
#ifndef BTN1_INT_FLANK
|
||||
#define BTN1_INT_FLANK GPIO_FALLING
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief BOOT button GPIO pin definition
|
||||
*
|
||||
* The HiP-Badge has a BOOT button connected to GPIO9, which can be
|
||||
* used as button during normal operation. Since the GPIO9 pin is pulled up,
|
||||
* the button signal is inverted, i.e., pressing the button will give a
|
||||
* low signal.
|
||||
*/
|
||||
#define BTN2_PIN GPIO9
|
||||
|
||||
/**
|
||||
* @brief Default button GPIO mode definition
|
||||
*/
|
||||
#define BTN2_MODE GPIO_IN_PU
|
||||
|
||||
/**
|
||||
* @brief Default interrupt flank definition for the button GPIO
|
||||
*/
|
||||
#ifndef BTN2_INT_FLANK
|
||||
#define BTN2_INT_FLANK GPIO_FALLING
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @brief WS281x LEDs are connected to GPIO10
|
||||
*/
|
||||
#ifndef WS281X_PARAM_PIN
|
||||
#define WS281X_PARAM_PIN GPIO10
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief There are 16 WS281x LEDs
|
||||
*/
|
||||
#ifndef WS281X_PARAM_NUMOF
|
||||
#define WS281X_PARAM_NUMOF 16
|
||||
#endif
|
||||
|
||||
/* include common board definitions as last step */
|
||||
#include "board_common.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* end extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* BOARD_H */
|
||||
/** @} */
|
57
boards/hip-badge/include/gpio_params.h
Normal file
57
boards/hip-badge/include/gpio_params.h
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Benjamin Valentin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_hip_badge
|
||||
* @brief Board specific configuration of direct mapped GPIOs
|
||||
* @file
|
||||
* @author Benjamin Valentin <benjamin.valentin@ml-pa.com>
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef GPIO_PARAMS_H
|
||||
#define GPIO_PARAMS_H
|
||||
|
||||
#include "board.h"
|
||||
#include "saul/periph.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief LED and Button configuration
|
||||
*/
|
||||
static const saul_gpio_params_t saul_gpio_params[] =
|
||||
{
|
||||
{
|
||||
.name = "SW1",
|
||||
.pin = BTN0_PIN,
|
||||
.mode = BTN0_MODE,
|
||||
.flags = SAUL_GPIO_INVERTED
|
||||
},
|
||||
{
|
||||
.name = "SW2",
|
||||
.pin = BTN1_PIN,
|
||||
.mode = BTN1_MODE,
|
||||
.flags = SAUL_GPIO_INVERTED
|
||||
},
|
||||
{
|
||||
.name = "Boot",
|
||||
.pin = BTN2_PIN,
|
||||
.mode = BTN2_MODE,
|
||||
.flags = SAUL_GPIO_INVERTED
|
||||
},
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GPIO_PARAMS_H */
|
||||
/** @} */
|
74
boards/hip-badge/include/periph_conf.h
Normal file
74
boards/hip-badge/include/periph_conf.h
Normal file
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Benjamin Valentin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_hip_badge
|
||||
* @brief Peripheral configurations for the HiP Badge
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @author Benjamin Valentin <benjamin.valentin@ml-pa.com>
|
||||
*/
|
||||
|
||||
#ifndef PERIPH_CONF_H
|
||||
#define PERIPH_CONF_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @name I2C configuration
|
||||
*
|
||||
* One I2C interface I2C_DEV(0) is defined and available via the SAO headers.
|
||||
*
|
||||
* The GPIOs listed in the configuration are only initialized as I2C signals
|
||||
* when module `periph_i2c` is used. Otherwise they are not allocated and
|
||||
* can be used for other purposes.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#ifndef I2C0_SPEED
|
||||
#define I2C0_SPEED I2C_SPEED_FAST /**< I2C bus speed of I2C_DEV(0) */
|
||||
#endif
|
||||
#ifndef I2C0_SCL
|
||||
#define I2C0_SCL GPIO6 /**< SCL signal of I2C_DEV(0) */
|
||||
#endif
|
||||
#ifndef I2C0_SDA
|
||||
#define I2C0_SDA GPIO5 /**< SDA signal of I2C_DEV(0) */
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name UART configuration
|
||||
*
|
||||
* ESP32-C3 provides 2 UART interfaces at maximum:
|
||||
*
|
||||
* UART_DEV(0) uses fixed standard configuration.<br>
|
||||
* UART_DEV(1) is used for IrDA (untested).<br>
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#define UART0_TXD GPIO21 /**< direct I/O pin for UART_DEV(0) TxD, can't be changed */
|
||||
#define UART0_RXD GPIO20 /**< direct I/O pin for UART_DEV(0) RxD, can't be changed */
|
||||
|
||||
#define UART1_TXD GPIO7 /**< IrDA TX - Bad Choice? */
|
||||
#define UART1_RXD GPIO3 /**< IrDA RX - Bad Choice? */
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* end extern "C" */
|
||||
#endif
|
||||
|
||||
/* include common peripheral definitions as last step */
|
||||
#include "periph_conf_common.h"
|
||||
|
||||
#endif /* PERIPH_CONF_H */
|
||||
/** @} */
|
Loading…
Reference in New Issue
Block a user