liuhy-2020 1 week ago
committed by GitHub
parent
commit
e7567594c3
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
9 changed files with 355 additions and 0 deletions
  1. +11
    -0
      keyboards/essemi/fs026/chconf.h
  2. +18
    -0
      keyboards/essemi/fs026/config.h
  3. +25
    -0
      keyboards/essemi/fs026/fs026.c
  4. +8
    -0
      keyboards/essemi/fs026/halconf.h
  5. +150
    -0
      keyboards/essemi/fs026/keyboard.json
  6. +31
    -0
      keyboards/essemi/fs026/keymaps/default/keymap.c
  7. +52
    -0
      keyboards/essemi/fs026/mcuconf.h
  8. +32
    -0
      keyboards/essemi/fs026/readme.md
  9. +28
    -0
      keyboards/essemi/fs026/rules.mk

+ 11
- 0
keyboards/essemi/fs026/chconf.h View File

@ -0,0 +1,11 @@
// Copyright 2024 Shanghai Eastsoft Microelectronics Co., Ltd
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define CH_CFG_ST_TIMEDELTA 0
#define CH_CFG_ST_RESOLUTION 16
#define CH_CFG_ST_FREQUENCY 1000
#include_next <chconf.h>

+ 18
- 0
keyboards/essemi/fs026/config.h View File

@ -0,0 +1,18 @@
// Copyright 2024 Shanghai Eastsoft Microelectronics Co., Ltd
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define MATRIX_UNSELECT_DRIVE_HIGH
/* Ensure we jump to bootloader if the RESET keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
#ifndef NOP_FUDGE
# define NOP_FUDGE 0.4
#endif
/*BACKLIGHT pwm setting*/
#define BACKLIGHT_PWM_DRIVER PWM_GP16C4T2
#define BACKLIGHT_PWM_CHANNEL 3

+ 25
- 0
keyboards/essemi/fs026/fs026.c View File

@ -0,0 +1,25 @@
// Copyright 2024 Shanghai Eastsoft Microelectronics Co., Ltd
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
#include "board.h"
void bootloader_jump(void) {
/*Remap EFLASH,remap to boot*/
md_fc_lock();
md_syscfg_set_memory_mapping(SYSCFG, MD_SYSCFG_MEMMOD_MAIN);
md_syscfg_set_flash_remap_base(SYSCFG, 0);
md_syscfg_enable_memory_remap(SYSCFG);
NVIC_SystemReset();
}
void mcu_reset(void) {
NVIC_SystemReset();
}
void board_init(void) {
/*Using USB_SOF to calibrate the internal clock*/
md_rcu_enable_csu(RCU);
CSU->CON |= CSU_CON_AUTOEN_MSK;
CSU->CON |= CSU_CON_CNTEN_MSK;
}

+ 8
- 0
keyboards/essemi/fs026/halconf.h View File

@ -0,0 +1,8 @@
// Copyright 2024 Shanghai Eastsoft Microelectronics Co., Ltd
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_PWM TRUE
#include_next <halconf.h>

+ 150
- 0
keyboards/essemi/fs026/keyboard.json View File

@ -0,0 +1,150 @@
{
"manufacturer": "essemi",
"keyboard_name": "fs026_keyboard_demo",
"maintainer": "liuhy-2020",
"bootloader": "custom",
"diode_direction": "ROW2COL",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"encoder": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"matrix_pins": {
"cols": ["D6", "D7", "C15", "C14", "C13", "D3", "D2", "C12", "C11", "C10", "D8", "C9", "C8", "C7", "C6", "B15", "B14"],
"rows": ["B0", "B3", "B4", "B5", "B6", "B7"]
},
"rgb_matrix": {
"animations": {
"band_sat": true,
"band_spiral_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"raindrops": true
},
"default": {
"animation": "breathing",
"hue": 152,
"sat": 232,
"speed": 50
},
"driver": "ws2812",
"layout": [
{"matrix": [0, 2], "x": 0, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 20, "y": 0, "flags": 4},
{"matrix": [5, 0], "x": 203, "y": 0, "flags": 4},
{"matrix": [4, 2], "x": 224, "y": 0, "flags": 4},
{"matrix": [3, 3], "x": 20, "y": 43, "flags": 4},
{"matrix": [4, 3], "x": 61, "y": 64, "flags": 4},
{"matrix": [5, 5], "x": 81, "y": 64, "flags": 4},
{"matrix": [1, 5], "x": 142, "y": 64, "flags": 1},
{"matrix": [0, 3], "x": 163, "y": 64, "flags": 1}
]
},
"usb": {
"device_version": "0.0.1",
"pid": "0x3245",
"vid": "0x19F5"
},
"ws2812": {
"pin": "C0"
},
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 2, "y": 0},
{"matrix": [0, 2], "x": 3, "y": 0},
{"matrix": [0, 3], "x": 4, "y": 0},
{"matrix": [0, 4], "x": 5, "y": 0},
{"matrix": [0, 5], "x": 6.5, "y": 0},
{"matrix": [0, 6], "x": 7.5, "y": 0},
{"matrix": [0, 7], "x": 8.5, "y": 0},
{"matrix": [0, 8], "x": 9.5, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0},
{"matrix": [0, 10], "x": 12, "y": 0},
{"matrix": [0, 11], "x": 13, "y": 0},
{"matrix": [0, 12], "x": 14, "y": 0},
{"matrix": [0, 13], "x": 15.25, "y": 0},
{"matrix": [0, 14], "x": 16.25, "y": 0},
{"matrix": [0, 15], "x": 17.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.25},
{"matrix": [1, 1], "x": 1, "y": 1.25},
{"matrix": [1, 2], "x": 2, "y": 1.25},
{"matrix": [1, 3], "x": 3, "y": 1.25},
{"matrix": [1, 4], "x": 4, "y": 1.25},
{"matrix": [1, 5], "x": 5, "y": 1.25},
{"matrix": [1, 6], "x": 6, "y": 1.25},
{"matrix": [1, 7], "x": 7, "y": 1.25},
{"matrix": [1, 8], "x": 8, "y": 1.25},
{"matrix": [1, 9], "x": 9, "y": 1.25},
{"matrix": [1, 10], "x": 10, "y": 1.25},
{"matrix": [1, 11], "x": 11, "y": 1.25},
{"matrix": [1, 12], "x": 12, "y": 1.25},
{"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
{"matrix": [1, 14], "x": 15.25, "y": 1.25},
{"matrix": [1, 15], "x": 16.25, "y": 1.25},
{"matrix": [4, 15], "x": 17.25, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.25},
{"matrix": [2, 2], "x": 2.5, "y": 2.25},
{"matrix": [2, 3], "x": 3.5, "y": 2.25},
{"matrix": [2, 4], "x": 4.5, "y": 2.25},
{"matrix": [2, 5], "x": 5.5, "y": 2.25},
{"matrix": [2, 6], "x": 6.5, "y": 2.25},
{"matrix": [2, 7], "x": 7.5, "y": 2.25},
{"matrix": [2, 8], "x": 8.5, "y": 2.25},
{"matrix": [2, 9], "x": 9.5, "y": 2.25},
{"matrix": [2, 10], "x": 10.5, "y": 2.25},
{"matrix": [2, 11], "x": 11.5, "y": 2.25},
{"matrix": [2, 12], "x": 12.5, "y": 2.25},
{"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
{"matrix": [2, 14], "x": 15.25, "y": 2.25},
{"matrix": [2, 15], "x": 16.25, "y": 2.25},
{"matrix": [4, 14], "x": 17.25, "y": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3.25},
{"matrix": [3, 2], "x": 2.75, "y": 3.25},
{"matrix": [3, 3], "x": 3.75, "y": 3.25},
{"matrix": [3, 4], "x": 4.75, "y": 3.25},
{"matrix": [3, 5], "x": 5.75, "y": 3.25},
{"matrix": [3, 6], "x": 6.75, "y": 3.25},
{"matrix": [3, 7], "x": 7.75, "y": 3.25},
{"matrix": [3, 8], "x": 8.75, "y": 3.25},
{"matrix": [3, 9], "x": 9.75, "y": 3.25},
{"matrix": [3, 10], "x": 10.75, "y": 3.25},
{"matrix": [3, 11], "x": 11.75, "y": 3.25},
{"matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25},
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.25},
{"matrix": [4, 3], "x": 3.25, "y": 4.25},
{"matrix": [4, 4], "x": 4.25, "y": 4.25},
{"matrix": [4, 5], "x": 5.25, "y": 4.25},
{"matrix": [4, 6], "x": 6.25, "y": 4.25},
{"matrix": [4, 7], "x": 7.25, "y": 4.25},
{"matrix": [4, 8], "x": 8.25, "y": 4.25},
{"matrix": [4, 9], "x": 9.25, "y": 4.25},
{"matrix": [4, 10], "x": 10.25, "y": 4.25},
{"matrix": [4, 11], "x": 11.25, "y": 4.25},
{"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
{"matrix": [4, 13], "x": 16.25, "y": 4.25},
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
{"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
{"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
{"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25},
{"matrix": [5, 13], "x": 15.25, "y": 5.25},
{"matrix": [5, 14], "x": 16.25, "y": 5.25},
{"matrix": [5, 15], "x": 17.25, "y": 5.25}
]
}
}
}

+ 31
- 0
keyboards/essemi/fs026/keymaps/default/keymap.c View File

@ -0,0 +1,31 @@
// Copyright 2024 Shanghai Eastsoft Microelectronics Co., Ltd
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 PScScrPse
*
*
* ` 1 2 3 4 5 6 7 8 9 0 - = Backsp InsHomPgU
*
* Tab Q W E R T Y U I O P [ ] \ DelEndPgD
*
* Caps A S D F G H J K L ; ' Enter
*
* Shift Z X C V B N M , . / Shift
*
* CtrlGUI Alt Alt GUIMenuCtrl
*
*/
[0] = LAYOUT_tkl_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};

+ 52
- 0
keyboards/essemi/fs026/mcuconf.h View File

@ -0,0 +1,52 @@
/*
Copyright (C) 2021 essemi
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#ifndef MCUCONF_H
#define MCUCONF_H
#define ES32_FS026_MCUCONF
/*
* HAL driver system settings.
*/
//Temporarily not supported.
//System_clock = 72M
//Peripheral_clock1(TIMER,SPI,I2C...) = 72M
//Peripheral_clock2(USB) = 48M
/*
* PWM driver system settings.
*/
#define ES32_PWM_USE_AD16C4T1 FALSE
#define ES32_PWM_USE_GP32C4T1 FALSE
#define ES32_PWM_USE_GP16C4T1 FALSE
#define ES32_PWM_USE_GP16C4T2 TRUE
#define ES32_PWM_USE_GP16C4T3 FALSE
#define ES32_PWM_USE_GP16C2T1 FALSE
#define ES32_PWM_USE_GP16C2T2 FALSE
#define ES32_PWM_USE_GP16C2T3 FALSE
#define ES32_PWM_USE_GP16C2T4 FALSE
#define ES32_PWM_AD16C4T1_IRQ_PRIORITY 7
#define ES32_PWM_GP32C4T1_IRQ_PRIORITY 7
#define ES32_PWM_GP16C4T1_IRQ_PRIORITY 7
#define ES32_PWM_GP16C4T2_IRQ_PRIORITY 7
#define ES32_PWM_GP16C4T3_IRQ_PRIORITY 7
#define ES32_PWM_GP16C2T1_IRQ_PRIORITY 7
#define ES32_PWM_GP16C2T2_IRQ_PRIORITY 7
#define ES32_PWM_GP16C2T3_IRQ_PRIORITY 7
#define ES32_PWM_GP16C2T4_IRQ_PRIORITY 7
#endif /* MCUCONF_H */

+ 32
- 0
keyboards/essemi/fs026/readme.md View File

@ -0,0 +1,32 @@
# FS026
Supported Hardware: *ES32-PDS-ES32F0283-V1.1*.(FS026 and ES32F0283 share the same librariy)
This is a 17x6 keyboard with WS2812B key lighting.
It's designed for a modular keyboard mount using an FS026(ES32F0283).
* Keyboard Maintainer: [liuhy](https://github.com/liuhy-2020)
* Hardware Supported: *ES-PDS, FS026(ES32F0283)*
* Hardware Availability: *https://www.essemi.com/*
Make example for this keyboard (after setting up your build environment):
make essemi/fs026:default
Flashing example:
make essemi/fs026:default:flash
## Bootloader
Enter the bootloader in 1 ways:
* **Bootmagic reset**: Hold down the key at Esc in the matrix and plug in the keyboard.
## issues
1. MCU driver supports supports few functions.(GPIO,USB,PWM)
2. There are few configuration options in mcuconf.h.
## solve issues
1.Improve MCU driver.(ChibiOS-Contrib)
2.Update mcuconf.h.(qmk_firmware)

+ 28
- 0
keyboards/essemi/fs026/rules.mk View File

@ -0,0 +1,28 @@
# Board: it should exist either in <chibios>/os/hal/boards/
# or <this_dir>/boards
BOARD = FS026
# Cortex version
MCU = cortex-m0
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
ARMV = 6
## chip/board settings
# - the next two should match the directories in
# <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
# OR
# <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = ES32
MCU_SERIES = FS026
# Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/
MCU_LDSCRIPT ?= FS026
# Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
MCU_STARTUP ?= FS026
USE_FPU ?= no

Loading…
Cancel
Save