This commit is contained in:
zhiayang 2024-03-27 20:59:02 -04:00 committed by GitHub
commit ac9e2067cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 215 additions and 20 deletions

View file

@ -2,11 +2,11 @@ config BOARD_ENABLE_DCDC
bool "Enable DCDC mode"
select SOC_DCDC_NRF52X
default y
depends on (BOARD_MIKOTO_520)
depends on (BOARD_MIKOTO)
choice BOARD_MIKOTO_CHARGER_CURRENT
prompt "Charge current to supply to attached batteries"
depends on (BOARD_MIKOTO_520)
depends on (BOARD_MIKOTO)
config BOARD_MIKOTO_CHARGER_CURRENT_40MA
bool "40mA charge current, for battery capacity 40mAh or higher"
@ -26,4 +26,4 @@ config BOARD_MIKOTO_CHARGER_CURRENT_350MA
config BOARD_MIKOTO_CHARGER_CURRENT_NONE
bool "Disable charge current"
endchoice
endchoice

View file

@ -3,6 +3,6 @@
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_MIKOTO_520
bool "mikoto_520"
config BOARD_MIKOTO
bool "mikoto"
depends on SOC_NRF52840_QIAA

View file

@ -3,7 +3,7 @@
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
if BOARD_MIKOTO_520
if BOARD_MIKOTO
config BOARD
default "mikoto"
@ -25,4 +25,4 @@ choice BOARD_MIKOTO_CHARGER_CURRENT
default BOARD_MIKOTO_CHARGER_CURRENT_100MA
endchoice
endif # BOARD_MIKOTO_520
endif # BOARD_MIKOTO

View file

@ -0,0 +1,59 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
/ {
pro_micro: connector {
compatible = "arduino-pro-micro";
#gpio-cells = <2>;
gpio-map-mask = <0xffffffff 0xffffffc0>;
gpio-map-pass-thru = <0 0x3f>;
gpio-map
= <0 0 &gpio0 4 0> /* D0 */
, <1 0 &gpio0 8 0> /* D1 */
, <2 0 &gpio0 17 0> /* D2 */
, <3 0 &gpio0 20 0> /* D3 */
, <4 0 &gpio0 22 0> /* D4/A6 */
, <5 0 &gpio0 24 0> /* D5 */
, <6 0 &gpio1 8 0> /* D6/A7 */
, <7 0 &gpio1 2 0> /* D7 */
, <8 0 &gpio1 4 0> /* D8/A8 */
, <9 0 &gpio1 6 0> /* D9/A9 */
, <10 0 &gpio0 9 0> /* D10/A10 */
, <16 0 &gpio0 10 0> /* D16 */
, <14 0 &gpio1 13 0> /* D14 */
, <15 0 &gpio0 2 0> /* D15 */
, <18 0 &gpio0 29 0> /* D18/A0 */
, <19 0 &gpio0 31 0> /* D19/A1 */
, <20 0 &gpio0 25 0> /* D20/A2 */
, <21 0 &gpio0 11 0> /* D21/A3 */
;
};
pro_micro_a: connector_a {
compatible = "arduino-pro-micro";
#gpio-cells = <2>;
gpio-map-mask = <0xffffffff 0xffffffc0>;
gpio-map-pass-thru = <0 0x3f>;
gpio-map
= <0 0 &gpio0 29 0> /* D18/A0 */
, <1 0 &gpio0 31 0> /* D19/A1 */
, <2 0 &gpio0 25 0> /* D20/A2 */
, <3 0 &gpio0 11 0> /* D21/A3 */
, <6 0 &gpio0 22 0> /* D4/A6 */
, <7 0 &gpio1 8 0> /* D6/A7 */
, <8 0 &gpio1 4 0> /* D8/A8 */
, <9 0 &gpio1 6 0> /* D9/A9 */
, <10 0 &gpio0 9 0> /* D10/A10 */
;
};
};
pro_micro_d: &pro_micro {};
pro_micro_i2c: &i2c0 {};
pro_micro_spi: &spi0 {};
pro_micro_serial: &uart0 {};

View file

@ -17,7 +17,7 @@
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_RX, 0, 4)>,
<NRF_PSEL(UART_TX, 0, 8)>;
<NRF_PSEL(UART_TX, 0, 8)>;
low-power-enable;
};
};
@ -25,14 +25,14 @@
i2c0_default: i2c0_default {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 17)>,
<NRF_PSEL(TWIM_SCL, 0, 20)>;
<NRF_PSEL(TWIM_SCL, 0, 20)>;
};
};
i2c0_sleep: i2c0_sleep {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 17)>,
<NRF_PSEL(TWIM_SCL, 0, 20)>;
<NRF_PSEL(TWIM_SCL, 0, 20)>;
low-power-enable;
};
};

View file

@ -6,8 +6,6 @@
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include "arduino_pro_micro_pins.dtsi"
#include "mikoto_520-pinctrl.dtsi"
/ {
model = "mikoto";

View file

@ -1,5 +1,5 @@
identifier: mikoto_520
name: mikoto_520
identifier: mikoto
name: mikoto
type: mcu
arch: arm
toolchain:

View file

@ -1,6 +1,6 @@
file_format: "1"
id: mikoto_520
name: Mikoto 5.20
id: mikoto
name: Mikoto
type: board
arch: arm
outputs:
@ -8,3 +8,8 @@ outputs:
- ble
url: https://github.com/zhiayang/mikoto
exposes: [pro_micro]
revisions:
- "5.20"
- "7.1"
- "7.3"
default_revision: "5.20"

View file

@ -0,0 +1,8 @@
/*
* Copyright (c) 2023 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include "mikoto-pinctrl.dtsi"
#include "arduino_pro_micro_pins_v5.dtsi"

View file

@ -0,0 +1,8 @@
/*
* Copyright (c) 2023 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include "mikoto-pinctrl.dtsi"
#include "arduino_pro_micro_pins_v6.dtsi"

View file

@ -0,0 +1,2 @@
CONFIG_I2C=y
CONFIG_ZMK_MAX17048=y

View file

@ -0,0 +1,45 @@
/*
* Copyright (c) 2023 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include "mikoto-pinctrl.dtsi"
#include "arduino_pro_micro_pins_v6.dtsi"
&pinctrl {
i2c1_default: i2c1_default {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 23)>,
<NRF_PSEL(TWIM_SCL, 0, 19)>;
};
};
i2c1_sleep: i2c1_sleep {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 23)>,
<NRF_PSEL(TWIM_SCL, 0, 19)>;
low-power-enable;
};
};
};
&i2c1 {
status = "okay";
compatible = "nordic,nrf-twi";
pinctrl-0 = <&i2c1_default>;
pinctrl-1 = <&i2c1_sleep>;
pinctrl-names = "default", "sleep";
builtin_fuel_gauge: max17048@36 {
compatible = "zmk,maxim-max17048";
status = "okay";
reg = <0x36>;
};
};
/ {
chosen {
zmk,battery = &builtin_fuel_gauge;
};
};

View file

@ -2,11 +2,10 @@
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_MIKOTO_520=y
CONFIG_BOARD_MIKOTO=y
# Enable MPU
CONFIG_ARM_MPU=y
CONFIG_PINCTRL=y
# enable GPIO

View file

@ -13,7 +13,7 @@
static int pinmux_mikoto_init(void) {
#if CONFIG_BOARD_MIKOTO_520
#if CONFIG_BOARD_MIKOTO
const struct device *p0 = DEVICE_DT_GET(DT_NODELABEL(gpio0));
const struct device *p1 = DEVICE_DT_GET(DT_NODELABEL(gpio1));
#if CONFIG_BOARD_MIKOTO_CHARGER_CURRENT_40MA

View file

@ -0,0 +1,7 @@
board_check_revision(FORMAT MAJOR.MINOR.PATCH
DEFAULT_REVISION 5.20.0
VALID_REVISIONS
5.20.0 # first public release
6.1.0 6.3.0 # incompatible pinout change from v5+
7.1.0 # addition of MAX17048; compatible pinout with v6+
)

20
app/build.sh Executable file
View file

@ -0,0 +1,20 @@
#!/usr/bin/env bash
pristine=""
if [ $# -gt 0 ] && [ "$1" = "-p" -o "$1" = "--pristine" ]; then
pristine="--pristine"
fi
COMMON_ARGS=(
"-DZEPHYR_TOOLCHAIN_VARIANT=zephyr"
"-DZEPHYR_SDK_INSTALL_DIR=/opt/pacman/opt/zephyr-sdk"
"-DZMK_CONFIG=$(pwd)/../../zmk-config/config"
"-Wno-dev"
)
set -x
west build -d build/left -b mikoto_520 ${pristine} -- -DSHIELD=misaka_left "${COMMON_ARGS[@]}" && mv build/left/zephyr/zmk.uf2 ./left.uf2
west build -d build/right -b mikoto_520 ${pristine} -- -DSHIELD=misaka_right "${COMMON_ARGS[@]}" && mv build/right/zephyr/zmk.uf2 ./right.uf2

BIN
app/left.uf2 Normal file

Binary file not shown.

BIN
app/right.uf2 Normal file

Binary file not shown.

View file

@ -122,6 +122,9 @@ if [ "$keyboard_shield" == "y" ]; then
board_ids=({{#boards}}"{{id}}" {{/boards}})
boards_usb_only=({{#boards}}"{{#usb_only}}y{{/usb_only}}{{^usb_only}}n{{/usb_only}}" {{/boards}})
boards_revisions=({{#boards}}"{{#revisions}}{{.}} {{/revisions}}" {{/boards}})
boards_default_revision=({{#boards}}"{{{default_revision}}}" {{/boards}})
echo ""
echo "MCU Board Selection:"
PS3="$prompt "
@ -151,6 +154,34 @@ if [ "$keyboard_shield" == "y" ]; then
esac
done
if [ -n "${boards_revisions[$board_index]}" ]; then
read -a _valid_revisions <<< "${boards_revisions[$board_index]}"
for (( _i=0; _i<${#_valid_revisions}; _i++ )); do
if [ "${boards_default_revision[board_index]}" = "${_valid_revisions[_i]}" ]; then
_valid_revisions[_i]+=" (default)"
fi
done
echo ""
echo "MCU Board Revision:"
select opt in "${_valid_revisions[@]}" "Quit"; do
''|*[!0-9]*) echo "Invalid option. Try another one."; continue;;
$(( ${#_valid_revisions[@]}+1 )) ) echo "Goodbye!"; exit 1;;
*)
if [ $REPLY -gt $(( ${#_valid_revisions[@]}+1 )) ] || [ $REPLY -lt 0 ]; then
echo "Invalid option. Try another one."
continue
fi
_rev_index=$(( $REPLY-1 ))
board="${board_ids[$board_index]}@${_valid_revisions[_rev_index]}"
boards=( "${board}" )
break
;;
done
fi
else
board=${keyboard}
boards=$keyboard_siblings

View file

@ -16,7 +16,11 @@
"$defs": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_]+$"
"pattern": "^[a-z0-9_]+(@([A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})))?$"
},
"revision": {
"type": "string",
"pattern": "[A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})"
},
"keyboard_siblings": {
"type": "array",
@ -202,6 +206,15 @@
},
"exposes": {
"$ref": "#/$defs/interconnects"
},
"revisions": {
"type": "array",
"items": {
"$ref": "#/$defs/revision"
}
},
"default_revision": {
"$ref": "#/$defs/revision"
}
}
},