Skip to content

Commit

Permalink
[Keyboard] Enable Proton C defaults for SplitKB Kyria (#14490)
Browse files Browse the repository at this point in the history
Co-authored-by: Ryan <[email protected]>
  • Loading branch information
drashna and fauxpark authored Oct 2, 2021
1 parent 4811040 commit 5b644af
Show file tree
Hide file tree
Showing 10 changed files with 162 additions and 12 deletions.
8 changes: 4 additions & 4 deletions keyboards/splitkb/kyria/keymaps/drashna/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
UNICODE_ENABLE = no # Unicode
KEY_LOCK_ENABLE = no
CTPC = yes


BOOTLOADER = hid
BOOTLOADER_SIZE = 512
PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
# BOOTLOADER = hid
# BOOTLOADER_SIZE = 512
# PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
# TAP_DANCE_ENABLE = yes

WPM_ENABLE = yes
Expand Down
22 changes: 21 additions & 1 deletion keyboards/splitkb/kyria/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ Hardware Availability: [splitkb.com](https://splitkb.com) and partners.

Make example for this keyboard (after setting up your build environment):

make splitkb/kyria:default
make splitkb/kyria/rev1:default
make splitkb/kyria/rev1/proton_c:default

Example of flashing this keyboard:

Expand All @@ -19,3 +20,22 @@ Example of flashing this keyboard:
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

A build guide for the Kyria can be found at [docs.splitkb.com](https://docs.splitkb.com/hc/en-us/articles/360010552059-Kyria-Build-Guide-Introduction).

## Proton C Conversion Guide

If you're one of the lucky people to have Proton Cs to use with their Kyria, there are a couple of caveats to getting this working.

1. You need to have 2x Proton Cs, as you cannot mix and match with Pro Micros or Elite C's. They both need to be Proton Cs.
2. You'll need to do some modding to enable proper support with the Proton C.

By design, the Kyria uses every available pin on the Pro Micro footprint. This includes using D3 (RX) for RGB. This poses a challenge with using the Proton C, since it needs both the TX and RX pins. The Proton C needs both pins, especially if you plan on using Full Duplex Serial.

To fix this, you need to break off the last header position on the right-hand side on the footprint. This is the `TX0/D3` pad. Leave this pad without a header connected to.

From the A9 pin on the Proton C, you want to run a wire from it to the `SDA + Extra Data` pad near the TRRS jack on the PCB. This will allow for proper, full duplex communication over the TRRS cable.

To get RGB working properly, as well, you want to run a wire from the `A3` pin on the Proton C, next to the GND and DFU pin, right under the USB port. Run this to the `TX0/D3` pad (the one you left without a header pin on the PCB).

Once you've done that, you can solder in the Proton C. and flash it.

![Proton C](https://i.imgur.com/nICqWLo.jpg)
27 changes: 20 additions & 7 deletions keyboards/splitkb/kyria/rev1/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
*/
#define SOFT_SERIAL_PIN D2

#define RGB_DI_PIN D3
#if defined(CONVERT_TO_PROTON_C)
# define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
# define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve.
# define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
# define SERIAL_USART_TX_PIN D3
# define SERIAL_USART_RX_PIN D2

# define RGB_DI_PIN PAL_LINE(GPIOA, 3)
# define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
# define WS2812_PWM_CHANNEL 4 // default: 2
# define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
# define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
# define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
# define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.
#else
# define RGB_DI_PIN D3
# define SOFT_SERIAL_PIN D2
#endif

#define RGBLED_SPLIT \
{ 10, 10 }
#define RGBLED_NUM 20

/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

#ifdef OLED_ENABLE
# define OLED_DISPLAY_128X64
# define SPLIT_OLED_ENABLE
Expand Down
22 changes: 22 additions & 0 deletions keyboards/splitkb/kyria/rev1/proton_c/chconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/* Copyright 2020 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#define CH_CFG_ST_RESOLUTION 16
#define CH_CFG_ST_FREQUENCY 10000

#include_next "chconf.h"
22 changes: 22 additions & 0 deletions keyboards/splitkb/kyria/rev1/proton_c/halconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/* Copyright 2020 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once

#define HAL_USE_I2C TRUE
#define HAL_USE_PWM TRUE
#define HAL_USE_SERIAL TRUE

#include_next <halconf.h>
29 changes: 29 additions & 0 deletions keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/* Copyright 2020 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once

#include_next <mcuconf.h>

#undef STM32_PWM_USE_TIM2
#define STM32_PWM_USE_TIM2 TRUE
#undef STM32_PWM_USE_TIM3
#define STM32_PWM_USE_TIM3 FALSE

#undef STM32_SERIAL_USE_USART1
#define STM32_SERIAL_USE_USART1 TRUE

#undef STM32_ST_USE_TIMER
#define STM32_ST_USE_TIMER 3
17 changes: 17 additions & 0 deletions keyboards/splitkb/kyria/rev1/proton_c/proton_c.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/* Copyright 2019 Thomas Baart <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include "proton_c.h"
19 changes: 19 additions & 0 deletions keyboards/splitkb/kyria/rev1/proton_c/proton_c.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/* Copyright 2019 Thomas Baart <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "rev1.h"
5 changes: 5 additions & 0 deletions keyboards/splitkb/kyria/rev1/proton_c/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
WS2812_DRIVER = pwm
SERIAL_DRIVER = usart
AUDIO_ENABLE = no
LTO_ENABLE = no
CONVERT_TO_PROTON_C = yes
3 changes: 3 additions & 0 deletions keyboards/splitkb/kyria/rev1/rev1.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
#pragma once

#include "kyria.h"
#ifdef KEYBOARD_splitkb_kyria_rev1_proton_c
# include "proton_c.h"
#endif

/* This a shortcut to help you visually see your layout.
*
Expand Down

0 comments on commit 5b644af

Please sign in to comment.