-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
feat: preonic keyboard #1575
feat: preonic keyboard #1575
Changes from 1 commit
4bb241e
84de55f
7f69790
eeaf31a
e4b577e
8c6b398
2c18a96
dff9b36
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# | ||
# Copyright (c) 2020 The ZMK Contributors | ||
# | ||
# SPDX-License-Identifier: MIT | ||
# | ||
|
||
list(APPEND EXTRA_DTC_FLAGS "-qq") | ||
|
||
if(CONFIG_PINMUX) | ||
zephyr_library() | ||
zephyr_library_sources(pinmux.c) | ||
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers) | ||
endif() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Preonic V3 board configuration | ||
|
||
# Copyright (c) 2020 The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
config BOARD_PREONIC_REV3 | ||
bool "Preonic V3 Keyboard" | ||
depends on SOC_STM32F303XC |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# Preonic keyboard configuration | ||
|
||
# Copyright (c) 2020 The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
if BOARD_PREONIC_REV3 | ||
|
||
config ZMK_KEYBOARD_NAME | ||
default "Preonic V3" | ||
|
||
config ZMK_USB | ||
default y | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ditto, there's really no reason not to enable USB for an onboard keyboard, so move to _defconfig file as well. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Understood. Will look at it tonight. Many thanks for the notes :) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||
|
||
endif # BOARD_PREONIC_REV3 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# | ||
# Copyright (c) 2020 The ZMK Contributors | ||
# | ||
# SPDX-License-Identifier: MIT | ||
# | ||
|
||
board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") | ||
board_runner_args(jlink "--device=STM32F303VC" "--speed=4000") | ||
|
||
include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) | ||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
/* | ||
* Copyright (c) 2017 I-SENSE group of ICCS | ||
* | ||
* SPDX-License-Identifier: MIT | ||
*/ | ||
|
||
#include <kernel.h> | ||
#include <device.h> | ||
#include <init.h> | ||
#include <drivers/pinmux.h> | ||
#include <sys/sys_io.h> | ||
|
||
#include <pinmux/stm32/pinmux_stm32.h> | ||
|
||
/* pin assignments for STM32F3DISCOVERY board */ | ||
static const struct pin_config pinconf[] = { | ||
#ifdef CONFIG_UART_1 | ||
{STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, | ||
{STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, | ||
#endif /* CONFIG_UART_1 */ | ||
#ifdef CONFIG_UART_2 | ||
{STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, | ||
{STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, | ||
#endif /* CONFIG_UART_2 */ | ||
#ifdef CONFIG_I2C_1 | ||
{STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, | ||
{STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, | ||
#endif /* CONFIG_I2C_1 */ | ||
#ifdef CONFIG_I2C_2 | ||
{STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, | ||
{STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, | ||
#endif /* CONFIG_I2C_2 */ | ||
#ifdef CONFIG_SPI_1 | ||
#ifdef CONFIG_SPI_STM32_USE_HW_SS | ||
{STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, | ||
#endif /* CONFIG_SPI_STM32_USE_HW_SS */ | ||
{STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, | ||
{STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, | ||
{STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, | ||
#endif /* CONFIG_SPI_1 */ | ||
#ifdef CONFIG_SPI_2 | ||
#ifdef CONFIG_SPI_STM32_USE_HW_SS | ||
{STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, | ||
#endif /* CONFIG_SPI_STM32_USE_HW_SS */ | ||
{STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, | ||
{STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, | ||
{STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, | ||
#endif /* CONFIG_SPI_2 */ | ||
#ifdef CONFIG_USB_DC_STM32 | ||
{STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, | ||
{STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, | ||
#endif /* CONFIG_USB_DC_STM32 */ | ||
#ifdef CONFIG_CAN_1 | ||
{STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, | ||
{STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, | ||
#endif /* CONFIG_CAN_1 */ | ||
}; | ||
|
||
static int pinmux_stm32_init(struct device *port) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are any of these pinmux bits actually used yet? If not, I'd say please skip this piece altogether, and if/when work happens on things like RGB, that requires SPI, then it can get added then, preferably using the newer pinctrl Zephyr approach instead. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. file deleted |
||
ARG_UNUSED(port); | ||
|
||
stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); | ||
|
||
return 0; | ||
} | ||
|
||
SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
/* | ||
* Copyright (c) 2020 The ZMK Contributors | ||
* | ||
* SPDX-License-Identifier: MIT | ||
*/ | ||
|
||
/dts-v1/; | ||
#include <st/f3/stm32f303Xc.dtsi> | ||
petejohanson marked this conversation as resolved.
Show resolved
Hide resolved
|
||
#include <dt-bindings/zmk/matrix-transform.h> | ||
|
||
/ { | ||
model = "Preonic PCD, rev3"; | ||
compatible = "preonic,rev3", "st,stm32f303"; | ||
|
||
chosen { | ||
zephyr,sram = &sram0; | ||
zephyr,flash = &flash0; | ||
zmk,kscan = &kscan0; | ||
zmk,matrix_transform = &layout_grid_transform; | ||
}; | ||
|
||
layout_grid_transform: keymap_transform_0 { | ||
compatible = "zmk,matrix-transform"; | ||
columns = <6>; | ||
rows = <10>; | ||
map = < | ||
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) | ||
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(5,0) RC(5,1) RC(5,2) RC(5,3) RC(5,4) RC(5,5) | ||
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(6,0) RC(6,1) RC(6,2) RC(6,3) RC(6,4) RC(6,5) | ||
RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(7,0) RC(7,1) RC(7,2) RC(7,3) RC(7,4) RC(7,5) | ||
RC(8,0) RC(8,1) RC(8,2) RC(9,3) RC(9,4) RC(9,5) RC(9,0) RC(9,1) RC(9,2) RC(8,3) RC(8,4) RC(8,5) | ||
>; | ||
}; | ||
|
||
layout_mit_transform: keymap_transform_1 { | ||
compatible = "zmk,matrix-transform"; | ||
columns = <6>; | ||
rows = <10>; | ||
map = < | ||
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) | ||
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(5,0) RC(5,1) RC(5,2) RC(5,3) RC(5,4) RC(5,5) | ||
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(6,0) RC(6,1) RC(6,2) RC(6,3) RC(6,4) RC(6,5) | ||
RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(7,0) RC(7,1) RC(7,2) RC(7,3) RC(7,4) RC(7,5) | ||
RC(8,0) RC(8,1) RC(8,2) RC(9,3) RC(9,4) RC(9,0) RC(9,1) RC(9,2) RC(8,3) RC(8,4) RC(8,5) | ||
>; | ||
}; | ||
|
||
layout_2x2u_transform: keymap_transform_2 { | ||
compatible = "zmk,matrix-transform"; | ||
columns = <6>; | ||
rows = <10>; | ||
map = < | ||
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) | ||
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(5,0) RC(5,1) RC(5,2) RC(5,3) RC(5,4) RC(5,5) | ||
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(6,0) RC(6,1) RC(6,2) RC(6,3) RC(6,4) RC(6,5) | ||
RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(7,0) RC(7,1) RC(7,2) RC(7,3) RC(7,4) RC(7,5) | ||
RC(8,0) RC(8,1) RC(8,2) RC(9,3) RC(9,5) RC(9,1) RC(9,2) RC(8,3) RC(8,4) RC(8,5) | ||
>; | ||
}; | ||
|
||
kscan0: kscan_0 { | ||
compatible = "zmk,kscan-gpio-matrix"; | ||
label = "KSCAN"; | ||
diode-direction = "col2row"; | ||
row-gpios | ||
= <&gpioa 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
, <&gpioa 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
, <&gpioa 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
, <&gpiob 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
, <&gpioc 13 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
, <&gpioc 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
, <&gpioc 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
, <&gpioa 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
, <&gpioa 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
, <&gpioa 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> | ||
; | ||
col-gpios | ||
= <&gpiob 11 GPIO_ACTIVE_HIGH> | ||
, <&gpiob 10 GPIO_ACTIVE_HIGH> | ||
, <&gpiob 2 GPIO_ACTIVE_HIGH> | ||
, <&gpiob 1 GPIO_ACTIVE_HIGH> | ||
, <&gpioa 7 GPIO_ACTIVE_HIGH> | ||
, <&gpiob 0 GPIO_ACTIVE_HIGH> | ||
; | ||
}; | ||
|
||
}; | ||
|
||
&usb { | ||
status = "okay"; | ||
}; | ||
|
||
&flash0 { | ||
/* | ||
* For more information, see: | ||
* http://docs.zephyrproject.org/latest/guides/dts/index.html#flash-partitions | ||
*/ | ||
partitions { | ||
compatible = "fixed-partitions"; | ||
#address-cells = <1>; | ||
#size-cells = <1>; | ||
|
||
/* Set 6Kb of storage at the end of the 256Kb of flash */ | ||
storage_partition: partition@3e800 { | ||
label = "storage"; | ||
reg = <0x0003e800 0x00001800>; | ||
}; | ||
}; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
/* | ||
* Copyright (c) 2020 The ZMK Contributors | ||
* | ||
* SPDX-License-Identifier: MIT | ||
*/ | ||
|
||
#include <behaviors.dtsi> | ||
#include <dt-bindings/zmk/keys.h> | ||
#include <dt-bindings/zmk/bt.h> | ||
|
||
#define DEFAULT 0 | ||
#define LOWER 1 | ||
#define RAISE 2 | ||
|
||
/ { | ||
chosen { zmk,matrix_transform = &layout_grid_transform; }; | ||
keymap { | ||
compatible = "zmk,keymap"; | ||
default_layer { | ||
// ------------------------------------------------------------------------------------------------- | ||
// | GRAV | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BSPC | | ||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | DEL | | ||
// | ESC | A | S | D | F | G | H | J | K | L | ; | ' | | ||
// | SHIFT | Z | X | C | V | B | N | M | , | . | / | RET | | ||
// | | LGUI | LALT | LCTL | LOWER | SPACE | SPACE | RAISE | LEFT | DOWN | UP | RIGHT | | ||
bindings = < | ||
&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSPC | ||
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp DEL | ||
&kp ESC &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT | ||
&kp LSHIFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp SLASH &kp RET | ||
&none &kp LCTRL &kp LALT &kp LGUI &mo LOWER &kp SPACE &kp SPACE &mo RAISE &kp LEFT &kp DOWN &kp UP &kp RIGHT | ||
>; | ||
}; | ||
lower { | ||
// ------------------------------------------------------------------------------------------ | ||
// | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | BSPC | | ||
// | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | DEL | | ||
// | DEL | F1 | F2 | F3 | F4 | F5 | F6 | - | + | [ | ] | | | | ||
// | | F7 | F8 | F9 | F10 | F11 | F12 | | LCTL | HOME | END | | | ||
// | LALT | | | | | | | | NEXT | VOL- | VOL+ | PLAY | | ||
bindings = < | ||
&kp LS(GRAVE) &kp LS(N1) &kp LS(N2) &kp LS(N3) &kp LS(N4) &kp LS(N5) &kp LS(N6) &kp LS(N7) &kp LS(N8) &kp LS(N9) &kp LS(N0) &kp BSPC | ||
&kp LS(GRAVE) &kp LS(N1) &kp LS(N2) &kp LS(N3) &kp LS(N4) &kp LS(N5) &kp LS(N6) &kp LS(N7) &kp LS(N8) &kp LS(N9) &kp LS(N0) &kp DEL | ||
&kp DEL &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp MINUS &kp PLUS &kp LEFT_BRACKET &kp RIGHT_BRACKET &kp PIPE | ||
&none &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &none &kp LCTRL &kp HOME &kp END &none | ||
&kp LALT &none &none &none &trans &none &none &none &kp C_NEXT &kp C_VOL_UP &kp C_VOL_UP &kp C_PLAY | ||
>; | ||
}; | ||
raise { | ||
// ------------------------------------------------------------------------------------------- | ||
// | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BSPC | | ||
// | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | DEL | | ||
// | DEL | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | | ||
// | | F7 | F8 | F9 | F10 | F11 | F12 | # | \ | PGUP | PGDN | | | ||
// | | | | | | SHIFT | | | NEXT | VOL- | VOL+ | PLAY | | ||
bindings = < | ||
&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSPC | ||
&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp DEL | ||
&kp DEL &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp MINUS &kp KP_EQUAL &kp LEFT_BRACKET &kp RIGHT_BRACKET &kp BSLH | ||
&none &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp HASH &kp BSLH &kp PG_UP &kp PG_DN &none | ||
&none &none &none &none &none &kp LSHIFT &none &trans &kp C_NEXT &kp C_VOL_DN &kp C_VOL_UP &kp C_PLAY | ||
>; | ||
}; | ||
}; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
identifier: preonic_rev3 | ||
name: PREONICREV3 | ||
type: keyboard | ||
arch: arm | ||
toolchain: | ||
- zephyr | ||
- gnuarmemb | ||
- xtools | ||
ram: 40 | ||
supported: | ||
- gpio | ||
- i2c | ||
- counter | ||
- spi | ||
- usb_device | ||
- lsm303dlhc | ||
- nvs | ||
- can | ||
- kscan |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# SPDX-License-Identifier: MIT | ||
|
||
CONFIG_SOC_SERIES_STM32F3X=y | ||
CONFIG_SOC_STM32F303XC=y | ||
# 72MHz system clock | ||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=72000000 | ||
|
||
|
||
# enable pinmux | ||
CONFIG_PINMUX=y | ||
|
||
# enable GPIO | ||
CONFIG_GPIO=y | ||
|
||
# clock configuration | ||
CONFIG_CLOCK_CONTROL=y | ||
|
||
# Clock configuration for Cube Clock control driver | ||
CONFIG_CLOCK_STM32_HSE_CLOCK=8000000 | ||
CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y | ||
# use HSE as PLL input | ||
CONFIG_CLOCK_STM32_PLL_SRC_HSE=y | ||
# produce 72MHz clock at PLL output | ||
CONFIG_CLOCK_STM32_PLL_PREDIV=1 | ||
CONFIG_CLOCK_STM32_PLL_MULTIPLIER=9 | ||
CONFIG_CLOCK_STM32_AHB_PRESCALER=1 | ||
CONFIG_CLOCK_STM32_APB1_PRESCALER=2 | ||
CONFIG_CLOCK_STM32_APB2_PRESCALER=1 | ||
CONFIG_ZMK_KSCAN_MATRIX_POLLING=y |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please update all the copyright dates.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Somehow your changes didn't show here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sorry, hadn't pushed. should be there now