aboutsummaryrefslogtreecommitdiff
path: root/keyboards/handwired/tractyl_manuform/5x6_right/f405
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/handwired/tractyl_manuform/5x6_right/f405')
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f405/board.h23
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f405/config.h89
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f405/f405.c52
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f405/halconf.h30
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f405/keyboard.json66
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f405/mcuconf.h82
6 files changed, 342 insertions, 0 deletions
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/board.h b/keyboards/handwired/tractyl_manuform/5x6_right/f405/board.h
new file mode 100644
index 0000000000..9be86942d6
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/board.h
@@ -0,0 +1,23 @@
+/* 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 <board.h>
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 8000000U
+#undef STM32_LSECLK
+#define STM32_LSECLK 32768U
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f405/config.h
new file mode 100644
index 0000000000..3878d9c671
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/config.h
@@ -0,0 +1,89 @@
+/*
+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 USER_BUTTON_PIN C13
+#define DEBUG_LED_PIN B2
+#define USB_VBUS_PIN B10
+
+#ifdef USE_USB_OTG_HS_PORT
+# define USB_DRIVER USBD2
+#endif
+
+// WS2812 RGB LED strip input and number of LEDs
+#define WS2812_PWM_DRIVER PWMD3
+#define WS2812_PWM_CHANNEL 1
+#define WS2812_PWM_PAL_MODE 2
+#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM2
+#define WS2812_PWM_DMA_CHANNEL 5
+#define WS2812_EXTERNAL_PULLUP
+
+#define BACKLIGHT_PWM_DRIVER PWMD8
+#define BACKLIGHT_PWM_CHANNEL 2
+#define BACKLIGHT_PAL_MODE 3
+
+/* Audio config */
+#define AUDIO_PIN A4
+#define AUDIO_PIN_ALT A5
+#define AUDIO_PIN_ALT_AS_NEGATIVE
+
+/* serial.c configuration for split keyboard */
+#define SERIAL_USART_DRIVER SD1
+#define SERIAL_USART_TX_PIN A10
+#define SERIAL_USART_TX_PAL_MODE 7
+#define SERIAL_USART_RX_PIN A9
+#define SERIAL_USART_RX_PAL_MODE 7
+#define SERIAL_USART_TIMEOUT 10
+#define SERIAL_USART_SPEED (1 * 1024 * 1024)
+#define SERIAL_USART_FULL_DUPLEX
+
+
+/* i2c config for oleds */
+#define I2C_DRIVER I2CD1
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_16_9
+
+/* spi config for eeprom and pmw3360 sensor */
+#define SPI_DRIVER SPID1
+#define SPI_SCK_PIN B3
+#define SPI_SCK_PAL_MODE 5
+#define SPI_MOSI_PIN B5
+#define SPI_MOSI_PAL_MODE 5
+#define SPI_MISO_PIN B4
+#define SPI_MISO_PAL_MODE 5
+
+#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B13
+#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 4
+#define EXTERNAL_FLASH_SIZE (8 * 1024 * 1024)
+
+/* pmw3360 config */
+#define POINTING_DEVICE_CS_PIN B8
+#define POINTING_DEVICE_ROTATION_270
+#undef ROTATIONAL_TRANSFORM_ANGLE
+#define PMW33XX_SPI_DIVISOR 16
+
+// lcd
+#define DISPLAY_RST_PIN NO_PIN
+#define DISPLAY_DC_PIN B12
+#define DISPLAY_CS_PIN B9
+#define DISPLAY_SPI_DIVIDER 1
+
+#define DRV2605L_FB_ERM_LRA 0
+#define DRV2605L_GREETING DRV2605L_EFFECT_750_MS_ALERT_100
+#define DRV2605L_DEFAULT_MODE DRV2605L_EFFECT_BUZZ_1_100
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/f405.c b/keyboards/handwired/tractyl_manuform/5x6_right/f405/f405.c
new file mode 100644
index 0000000000..5aabc70dca
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/f405.c
@@ -0,0 +1,52 @@
+/* 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 "tractyl_manuform.h"
+
+#ifdef USB_VBUS_PIN
+bool usb_vbus_state(void) {
+ gpio_set_pin_input_low(USB_VBUS_PIN);
+ wait_us(5);
+ return gpio_read_pin(USB_VBUS_PIN);
+}
+#endif
+
+#ifdef USER_BUTTON_PIN
+void user_button_init(void) {
+ // Pin needs to be configured as input low
+ gpio_set_pin_input_low(USER_BUTTON_PIN);
+}
+
+bool check_user_button_state(void) {
+ return gpio_read_pin(USER_BUTTON_PIN);
+}
+#endif // USER_BUTTON_PIN
+
+void board_init(void) {
+ // Board setup sets these pins as SPI, but we aren't using them as such.
+ // So to prevent them from misbehaving, we need to set them to a different, non-spi mode.
+ // This is a bit of a hack, but nothing else runs soon enough, without re-implementing spi_init().
+ gpio_set_pin_input(A5);
+ gpio_set_pin_input(A6);
+ gpio_set_pin_input(A7);
+
+ // If using USB_OTG_HS, we need to set the data pins since they're set wrong for our needs by default.
+ // We set it here by default, in case it's bridged with A11/A12, as to reduce the chance of issues.
+ palSetLineMode(
+ B14, PAL_MODE_ALTERNATE(12) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING);
+ palSetLineMode(
+ B15, PAL_MODE_ALTERNATE(12) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING);
+}
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/halconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f405/halconf.h
new file mode 100644
index 0000000000..3cf07b9be0
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/halconf.h
@@ -0,0 +1,30 @@
+/* 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_SERIAL TRUE
+#define SERIAL_BUFFERS_SIZE 256
+
+#if defined(WS2812_PWM) || defined(BACKLIGHT_PWM)
+# define HAL_USE_PWM TRUE
+#endif // defined(WS2812_PWM) || defined(BACKLIGHT_PWM)
+
+#ifdef AUDIO_DRIVER_DAC
+# define HAL_USE_GPT TRUE
+# define HAL_USE_DAC TRUE
+#endif
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/keyboard.json b/keyboards/handwired/tractyl_manuform/5x6_right/f405/keyboard.json
new file mode 100644
index 0000000000..b56e2d31c2
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/keyboard.json
@@ -0,0 +1,66 @@
+{
+ "keyboard_name": "Tractyl Manuform (5x6) WeAct STM32F405",
+ "audio": {
+ "driver": "dac_additive",
+ "power_control": {
+ "pin": "A3"
+ }
+ },
+ "backlight": {
+ "levels": 16,
+ "pin": "C7"
+ },
+ "bootloader": "stm32-dfu",
+ "build": {
+ "debounce_type": "asym_eager_defer_pk"
+ },
+ "diode_direction": "COL2ROW",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "C0", "pin_b": "A15"}
+ ]
+ },
+ "eeprom": {
+ "driver": "wear_leveling",
+ "wear_leveling": {
+ "driver": "spi_flash",
+ "backing_size": 16384,
+ "logical_size": 4096
+ }
+ },
+ "features": {
+ "console": true,
+ "haptic": true
+ },
+ "haptic": {
+ "driver": "drv2605l"
+ },
+ "matrix_pins": {
+ "cols": ["C1", "C2", "C3", "A0", "A1", "A2"],
+ "rows": ["A6", "A7", "C4", "C5", "B0", "B1"]
+ },
+ "processor": "STM32F405",
+ "rgblight": {
+ "led_count": 24,
+ "split": true
+ },
+ "split": {
+ "handedness": {
+ "pin": "B11"
+ },
+ "serial": {
+ "driver": "usart"
+ },
+ "transport": {
+ "sync": {
+ "activity": true,
+ "haptic": true,
+ "matrix_state": true
+ }
+ }
+ },
+ "ws2812": {
+ "driver": "pwm",
+ "pin": "C6"
+ }
+}
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f405/mcuconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f405/mcuconf.h
new file mode 100644
index 0000000000..46920b17b3
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f405/mcuconf.h
@@ -0,0 +1,82 @@
+/* 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_LSE_ENABLED
+#define STM32_LSE_ENABLED TRUE
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+
+#undef STM32_RTCSEL
+#define STM32_RTCSEL STM32_RTCSEL_LSE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+#if HAL_USE_WDG == TRUE
+# undef STM32_WDG_USE_IWDG
+# define STM32_WDG_USE_IWDG TRUE
+#endif
+
+#if HAL_USE_I2C == TRUE
+# undef STM32_I2C_USE_I2C1
+# define STM32_I2C_USE_I2C1 TRUE
+
+# undef STM32_I2C_BUSY_TIMEOUT
+# define STM32_I2C_BUSY_TIMEOUT 10
+
+# undef STM32_I2C_I2C1_RX_DMA_STREAM
+# define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+# undef STM32_I2C_I2C1_TX_DMA_STREAM
+# define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#endif // HAL_USE_I2C
+
+#ifdef WS2812_PWM
+# undef STM32_PWM_USE_TIM3
+# define STM32_PWM_USE_TIM3 TRUE
+#endif // WS2812_PWM
+
+#ifdef BACKLIGHT_PWM
+# undef STM32_PWM_USE_TIM8
+# define STM32_PWM_USE_TIM8 TRUE
+#endif
+
+#if HAL_USE_SPI == TRUE
+# undef STM32_SPI_USE_SPI1
+# define STM32_SPI_USE_SPI1 TRUE
+#endif
+
+#ifdef AUDIO_DRIVER_DAC
+# 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
+#endif // AUDIO_DRIVER_DAC
+
+
+#ifdef USE_USB_OTG_HS_PORT
+# undef STM32_USB_USE_OTG1
+# define STM32_USB_USE_OTG1 FALSE
+# undef STM32_USB_USE_OTG2
+# define STM32_USB_USE_OTG2 TRUE
+#endif