diff options
12 files changed, 261 insertions, 10 deletions
| diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.h b/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.h index 24aac66aee..e481e7841d 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.h @@ -19,6 +19,8 @@  #include "tractyl_manuform.h"  #if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right_f411)  #    include "f411.h" +#elif defined(KEYBOARD_handwired_tractyl_manuform_5x6_right_f303) +#    include "f303.h"  #elif defined(KEYBOARD_handwired_tractyl_manuform_5x6_right_teensy2pp)  #    include "teensy2pp.h"  #endif diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h new file mode 100644 index 0000000000..f9a44587b0 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h @@ -0,0 +1,104 @@ +/* +Copyright 2012 Jun Wako <[email protected]> +Copyright 2015 Jack Humbert + +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 PRODUCT Tractyl Manuform(5x6) Proton C + +// wiring of each half +#define MATRIX_COL_PINS \ +    { B0, B1, B2, B3, B4, B5 } +#define MATRIX_ROW_PINS \ +    { B10, B11, B12, A14, A13, A15 } + +#define UNUSED_PINS \ +    { A0, A2, A7, A8 } +// B2 used for BOOT1, has internal pull down? +// A9 has internal pull-down +// A11 and A12 are used for USB sense.  DO NOT USE. + +#define DIODE_DIRECTION     COL2ROW + +// #define USB_VBUS_PIN        B10 +#define SPLIT_HAND_PIN      C14  // high = left, low = right + +// WS2812 RGB LED strip input and number of LEDs +#define RGB_DI_PIN          A6 +#define WS2812_PWM_DRIVER   PWMD3  // default: PWMD2 +#define WS2812_PWM_CHANNEL  1      // default: 2 +#define WS2812_PWM_PAL_MODE 2      // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 +//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy). +// #define WS2812_DMA_STREAM   STM32_DMA1_STREAM3  // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. +#define WS2812_DMA_CHANNEL  3  // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. + +#define RGBLED_NUM          20 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT \ +    { 10, 10 } + +#define DEBUG_LED_PIN C13 + +/* Audio config */ +#define AUDIO_PIN     A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE + +/* serial.c configuration for split keyboard */ +#define SERIAL_USART_FULL_DUPLEX  // Enable full duplex operation mode. +#define SERIAL_USART_TX_PIN      A9 +#define SERIAL_USART_RX_PIN      A10 +#define SERIAL_USART_DRIVER      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_RX_PAL_MODE 7    // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 +#define SERIAL_USART_TIMEOUT     100  // USART driver timeout. default 100 + +/* i2c config for oleds */ +#define I2C_DRIVER               I2CD1 +#define I2C1_SCL_PIN             B6 +#define I2C1_SDA_PIN             B7 +#define I2C1_SCL_PAL_MODE        4 +#define I2C1_SDA_PAL_MODE        4 +#define I2C1_CLOCK_SPEED         400000 + +/* encoder config */ +#define ENCODERS_PAD_A \ +    { A7 } +#define ENCODERS_PAD_B \ +    { A8 } + +/* spi config for eeprom and pmw3360 sensor */ +#define SPI_DRIVER                           SPID2 +#define SPI_SCK_PIN                          B13 +#define SPI_SCK_PAL_MODE                     5 +#define SPI_MOSI_PIN                         B15 +#define SPI_MOSI_PAL_MODE                    5 +#define SPI_MISO_PIN                         B14 +#define SPI_MISO_PAL_MODE                    5 + +/* eeprom config */ +#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN B8 +#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR    8 +// #define EXTERNAL_EEPROM_BYTE_COUNT           8196 +// #define EXTERNAL_EEPROM_PAGE_SIZE            32 +// #define EXTERNAL_EEPROM_ADDRESS_SIZE         2 +// #define DEBUG_EEPROM_OUTPUT + +/* pmw3360 config  */ +#define PMW3360_CS_PIN                       B9 +#define PMW3360_SPI_MODE                     3 +#define PMW3360_SPI_DIVISOR                  8 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.c b/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.c new file mode 100644 index 0000000000..d094801938 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <[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 "f303.h" diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.h new file mode 100644 index 0000000000..525b0378b4 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <[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 "5x6_right.h" diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h new file mode 100644 index 0000000000..62f56e4d2b --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h @@ -0,0 +1,27 @@ +/* Copyright 2020 Nick Brassel (tzarc) + * + *  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_PWM     TRUE +#define HAL_USE_SERIAL  TRUE +#define HAL_USE_I2C     TRUE +#define HAL_USE_SPI     TRUE +#define HAL_USE_GPT     TRUE +#define HAL_USE_DAC     TRUE +#define SPI_USE_WAIT    TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next <halconf.h> diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/mcuconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/mcuconf.h new file mode 100644 index 0000000000..5525a077d2 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/mcuconf.h @@ -0,0 +1,40 @@ +/* Copyright 2020 Nick Brassel (tzarc) + * + *  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_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE + +#undef STM32_DAC_USE_DAC1_CH1 +#define STM32_DAC_USE_DAC1_CH1 TRUE + +#undef STM32_DAC_USE_DAC1_CH2 +#define STM32_DAC_USE_DAC1_CH2 TRUE + +#undef STM32_GPT_USE_TIM6 +#define STM32_GPT_USE_TIM6 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/readme.md b/keyboards/handwired/tractyl_manuform/5x6_right/f303/readme.md new file mode 100644 index 0000000000..79a4a8ca0e --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/readme.md @@ -0,0 +1,24 @@ +# Drashna's Blackpill Tractyl Manuform (5x6) with a right side trackball + + +* Split Hand Pin, using PC14 +* Full Duplex Serial/USART using PA9 and PA10 on USART1 +* DAC Audio using PA4 and PA5 +* PWM RGB using PA6 TIM3 +* pmw3360 sensor using PA5-PA7 on SPI2, with B as CS pin +* 8KB SPI EEPROM chip sharing PB13-PB15 on SPI1 with PB9 as CS pin +* Encoder using PA7 and PA8 +* SSD1306 OLED display (128x64) using PB6 and PB7 on I2C1 + +* Keyboard Maintainer: [Drashna Jael're](https://github.com/drashna) +* Hardware Supported: [Design files](https://gitlab.com/keyboards1/dm_r_track/-/tree/master/boolean), [WeAct BlackPill (F411)](https://github.com/WeActTC/MiniSTM32F4x1), [PMW3360 Optical Sensor](https://www.tindie.com/products/jkicklighter/pmw3360-motion-sensor/) + +Make example for this keyboard (after setting up your build environment): + +    make handwired/tractyl_manuform/5x6_right/f411:default + +Flashing example for this keyboard: + +    make handwired/tractyl_manuform/5x6_right/f411:default:flash + +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). diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk new file mode 100644 index 0000000000..622d22704d --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk @@ -0,0 +1,13 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# KEYBOARD_SHARED_EP = yes +CONSOLE_ENABLE     = yes + +EEPROM_DRIVER = spi +WS2812_DRIVER = pwm +SERIAL_DRIVER = usart +AUDIO_DRIVER  = dac_additive diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h index 0e5b72c56b..7fb97cd2a4 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h @@ -28,9 +28,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #define UNUSED_PINS \      { C15 } -// B2 used for BOOT1, has internal pull down? -// A9 has internal pull-down -// A11 and A12 are used for USB sense.  DO NOT USE.  #define DIODE_DIRECTION     COL2ROW diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c index 240219f1d3..394c597b84 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c @@ -23,3 +23,9 @@ void matrix_scan_sub_kb(void) {          reset_keyboard();      }  } + +bool usb_vbus_state(void) { +    setPinInputLow(USB_VBUS_PIN); +    wait_us(5); +    return readPin(USB_VBUS_PIN); +} diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h index fb835e8ee2..39644726c3 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h @@ -15,10 +15,12 @@   */  #pragma once -#define HAL_USE_PWM    TRUE -#define HAL_USE_SERIAL TRUE -#define HAL_USE_I2C    TRUE -#define HAL_USE_SPI    TRUE -#define HAL_USE_GPT    TRUE +#define HAL_USE_PWM     TRUE +#define HAL_USE_SERIAL  TRUE +#define HAL_USE_I2C     TRUE +#define HAL_USE_SPI     TRUE +#define SPI_USE_WAIT    TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD +#define HAL_USE_GPT     TRUE  #include_next <halconf.h> diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c index 81de8b2894..67842c26d0 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c +++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c @@ -29,13 +29,13 @@ bool enable_acceleration = false;      K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A  \    ) \    LAYOUT_5x6_right_wrapper( \ -     KC_ESC,  ________________NUMBER_LEFT________________,            ________________NUMBER_RIGHT_______________, UC_IRNY, \ +     KC_ESC,  ________________NUMBER_LEFT________________,            ________________NUMBER_RIGHT_______________, UC_CLUE, \       SH_TT,   K01,    K02,      K03,     K04,     K05,                K06,     K07,     K08,     K09,     K0A,     SH_TT, \       LALT_T(KC_TAB), K11, K12,  K13,     K14,     K15,                K16,     K17,     K18,     K19,     K1A,     RALT_T(K1B), \       OS_LSFT, CTL_T(K21), K22,  K23,     K24,     K25,                K26,     K27,     K28,     K29, RCTL_T(K2A), OS_RSFT, \                         OS_LALT, OS_LGUI,                                                OS_RGUI, OS_RALT, \                                  KC_MUTE, KC_GRV,                                        KC_BTN3,  \ -                                         KC_SPC,  OS_LGUI,                     KC_ENT,  \ +                                         KC_SPC,  UC_IRNY,                     KC_ENT,  \                                           BK_LWER, TT(_MOUSE),      TT(_MOUSE), DL_RAIS  \    )  #define LAYOUT_base_wrapper(...)       LAYOUT_5x6_right_base(__VA_ARGS__) | 
