Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Peach keyboard #1081

Closed
wants to merge 3 commits into from
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
8 changes: 8 additions & 0 deletions app/boards/arm/peach/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
set_property(GLOBAL APPEND PROPERTY extra_post_build_commands
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/../tools/uf2/utils/uf2conv.py
-c
-b 0x26000
-f 0xADA52840
-o ${PROJECT_BINARY_DIR}/${CONFIG_KERNEL_BIN_NAME}.uf2
${PROJECT_BINARY_DIR}/${CONFIG_KERNEL_BIN_NAME}.bin
)
8 changes: 8 additions & 0 deletions app/boards/arm/peach/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Copyright (c) 2021 The ZMK Contributors
# SPDX-License-Identifier: MIT

config BOARD_ENABLE_DCDC
bool "Enable DCDC mode"
select SOC_DCDC_NRF52X
default y
depends on (BOARD_PEACH_V1)
6 changes: 6 additions & 0 deletions app/boards/arm/peach/Kconfig.board
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Copyright (c) 2021 The ZMK Contributors
# SPDX-License-Identifier: MIT

config BOARD_PEACH_V1
bool "peach v1"
depends on SOC_NRF52840_QIAA
34 changes: 34 additions & 0 deletions app/boards/arm/peach/Kconfig.defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright (c) 2021 The ZMK Contributors
# SPDX-License-Identifier: MIT

if BOARD_PEACH_V1

config BOARD
default "Peach"

if USB

config USB_NRFX
default y

config USB_DEVICE_STACK
default y

endif # USB

config BT_CTLR
default BT

config ZMK_BLE
default y

config ZMK_USB
default y

config ZMK_BATTERY_VOLTAGE_DIVIDER
default y

config ZMK_KEYBOARD_NAME
default "Peach Rev1"

endif # BOARD_PEACH_V1
6 changes: 6 additions & 0 deletions app/boards/arm/peach/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Peach Rev1 keyboard

## Building Peach Rev1 ZMK firmware
```
west build -p -d build/peach -b peach_v1
```
6 changes: 6 additions & 0 deletions app/boards/arm/peach/board.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Copyright (c) 2021 The ZMK Contributors
# SPDX-License-Identifier: MIT

board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset")
include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake)
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
87 changes: 87 additions & 0 deletions app/boards/arm/peach/peach.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/*
# Copyright (c) 2021 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/

#include <nordic/nrf52840_qiaa.dtsi>
#include <dt-bindings/zmk/matrix_transform.h>

/ {
model = "PEACH";
compatible = "peach,v1";

chosen {
zephyr,code-partition = &code_partition;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zmk,kscan = &kscan0;
zmk,matrix_transform = &default_transform;
};
};

&adc {
status = "okay";
};

&gpiote {
status = "okay";
};

&gpio0 {
status = "okay";
};

&gpio1 {
status = "okay";
};

&spi1 {
compatible = "nordic,nrf-spim";
status = "okay";
};

&usbd {
status = "okay";
};


&flash0 {
/*
* For more information, see:
* http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
*/
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>;
};
code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>;
};

/*
* The flash starting at 0x000ec000 and ending at
* 0x000f3fff is reserved for use by the application.
*/

/*
* Storage partition will be used by FCB/LittleFS/NVS
* if enabled.
*/
storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>;
};

boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>;
};
};
};
107 changes: 107 additions & 0 deletions app/boards/arm/peach/peach_v1.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
/*
* Copyright (c) 2021 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/

/dts-v1/;
#include "peach.dtsi"


/ {
chosen {
zmk,kscan = &kscan0;
zmk,matrix_transform = &default_transform;
zmk,underglow = &led_strip;
};

default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
columns = <16>;
rows = <5>;
map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,15)
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,12) RC(1,13) RC(1,14) RC(1,15)
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,11) RC(2,12) RC(2,14) RC(2,15)
RC(3,0) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11) RC(3,13) RC(3,14) RC(3,15)
RC(4,0) RC(4,1) RC(4,2) RC(4,4) RC(4,6) RC(4,8) RC(4,10) RC(4,11) RC(4,13) RC(4,14) RC(4,15)
>;
};


kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row";

col-gpios
= <&gpio1 10 GPIO_ACTIVE_HIGH>
, <&gpio1 13 GPIO_ACTIVE_HIGH>
, <&gpio1 15 GPIO_ACTIVE_HIGH>
, <&gpio0 7 GPIO_ACTIVE_HIGH>
, <&gpio0 3 GPIO_ACTIVE_HIGH>
, <&gpio1 9 GPIO_ACTIVE_HIGH>
, <&gpio1 4 GPIO_ACTIVE_HIGH>
, <&gpio0 21 GPIO_ACTIVE_HIGH>
, <&gpio0 22 GPIO_ACTIVE_HIGH>
, <&gpio1 0 GPIO_ACTIVE_HIGH>
, <&gpio1 3 GPIO_ACTIVE_HIGH>
, <&gpio1 1 GPIO_ACTIVE_HIGH>
, <&gpio0 19 GPIO_ACTIVE_HIGH>
, <&gpio1 2 GPIO_ACTIVE_HIGH>
, <&gpio0 9 GPIO_ACTIVE_HIGH>
, <&gpio0 10 GPIO_ACTIVE_HIGH>
;

row-gpios
= <&gpio0 30 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio0 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio0 23 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio0 31 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio1 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
;
};

leds {
compatible = "gpio-leds";
blue_led: led_0 {
gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
};
};

ext-power {
compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
};

vbatt {
compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 3>;
output-ohms = <10000000>;
full-ohms = <(10000000 + 4000000)>;
};
};

&spi1 {
mosi-pin = <4>;
// Unused pins, needed for SPI definition, but not used by the ws2812 driver itself.
sck-pin = <6>;
miso-pin = <8>;

led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi";
label = "WS2812";

/* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;

/* WS2812 */
chain-length = <20>; /* number of LEDs */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
};
};
63 changes: 63 additions & 0 deletions app/boards/arm/peach/peach_v1.keymap
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
# Copyright (c) 2021 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/

#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/rgb.h>
#include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/outputs.h>
#include <dt-bindings/zmk/ext_power.h>

/ {
keymap {
compatible = "zmk,keymap";

default_layer {
/* Base layer
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┬────┬────┐
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │BSPC│BSPC│Del │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──┴────┼────┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Ins │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───────┼────┤
* │ Cap │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │Home│
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─────┬────┼────┤
* │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift │ ↑ │End │
* ├────┬───┴┬──┴─┬─┴───┴─┬─┴───┴─┬─┴───┴──┬┴───┼───┴┬─┬────┼────┼────┤
* │LCtl│LGui│LAlt│ Space │ Space │ Space │RCtl│Fn 1│ │ ← │ ↓ │ → │
* └────┴────┴────┴───────┴───────┴────────┴────┴────┘ └────┴────┴────┘
*/
bindings = <
&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS &kp EQUAL &kp BSPC &kp BSPC &kp DEL
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp BSLH &kp INS
&kp CAPS &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp APOS &kp ENTER &kp HOME
&kp LSHIFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp PERIOD &kp SLASH &kp RSHIFT &kp UP &kp END
&kp LCTRL &kp LGUI &kp LALT &kp SPACE &kp SPACE &kp SPACE &kp RCTRL &mo 1 &kp LEFT &kp DOWN &kp RIGHT
>;
};
function_layer {
/* Function layer
* ┌───┬────┬────┬────┬────┬────┬────┬────┬────┬───┬────┬────┬─────┬────┬────┬───────┐
* │ESC│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │F9 │ F10│ F11│ F12 │BSPC│BSPC│OUT TOG│
* ├───┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬─┴──┬─┴──┬─┴──┬──┴─┬──┴────┼───────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ DFU │BT CLR │
* ├─────┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴───────┼───────┤
* │RGBTOG│Mod+│Hue+│Sad+│Bri+│Eff+│ │ │ │ │ │ │ │BT NXT │
* ├──────┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴──────┬────┼───────┤
* │POWERTOG│Mod-│Hue-│Sad-│Bri-│Eff-│ │ │ │ │ │ │ ↑ │BT PRV │
* ├────┬───┴┬───┴─┬──┴────┴─┬──┴────┴─┬──┴────┴──┬─┴────┼────┴┬───┬────┼────┼───────┤
* │ │ │ │ │ │ │ │Fn 1 │ │ ← │ ↓ │ → │
* └────┴────┴─────┴─────────┴─────────┴──────────┴──────┴─────┘ └────┴────┴───────┘
*/
bindings = <
&kp ESC &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp BSPC &kp BSPC &out OUT_TOG
&none &none &none &none &none &none &none &none &none &none &none &none &none &bootloader &bt BT_CLR
&rgb_ug RGB_TOG &rgb_ug RGB_EFF &rgb_ug RGB_HUI &rgb_ug RGB_SAI &rgb_ug RGB_BRI &rgb_ug RGB_SPI &none &none &none &none &none &none &none &bt BT_NXT
&ext_power EP_TOG &rgb_ug RGB_EFR &rgb_ug RGB_HUD &rgb_ug RGB_SAD &rgb_ug RGB_BRD &rgb_ug RGB_SPD &none &none &none &none &none &none &kp UP &bt BT_PRV
&none &none &none &none &none &none &none &trans &kp LEFT &kp DOWN &kp RIGHT
>;
};
};
};
15 changes: 15 additions & 0 deletions app/boards/arm/peach/peach_v1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
identifier: peach_v1
name: Peach Rev1 BOARD
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
supported:
- adc
- usb_device
- ble
- RGB
- ieee802154
- watchdog
12 changes: 12 additions & 0 deletions app/boards/arm/peach/peach_v1.zmk.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
file_format: "1"
id: peach_v1
name: Peach Rev1 BOARD
type: board
arch: arm
features:
- keys
- RGB
outputs:
- usb
- ble
url: none
31 changes: 31 additions & 0 deletions app/boards/arm/peach/peach_v1_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Copyright (c) 2021 The ZMK Contributors
# SPDX-License-Identifier: MIT

CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_PEACH_V1=y

# Enable MPU
CONFIG_ARM_MPU=y

# enable GPIO
CONFIG_GPIO=y

CONFIG_USE_DT_CODE_PARTITION=y

CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_NVS=y
CONFIG_SETTINGS_NVS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y

# RGB
CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_WS2812_STRIP=y
CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y
CONFIG_ZMK_RGB_UNDERGLOW_ON_START=y

# enable deep sleep support
#CONFIG_ZMK_SLEEP=y
#CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=900000