From 6d84795bc1e4b867725e3ddd906af9e125f71e3b Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 21 May 2020 21:20:46 +0100 Subject: [PATCH] Update ARM split keyboard docs (#9160) * Update ARM split keyboard docs * Update docs/serial_driver.md Co-authored-by: Nick Brassel Co-authored-by: Nick Brassel --- docs/feature_split_keyboard.md | 13 ++++++++++++- docs/proton_c_conversion.md | 2 +- docs/serial_driver.md | 16 +++++++++++++--- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index 66194c5f4b..63374a804e 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -8,9 +8,20 @@ QMK Firmware has a generic implementation that is usable by any board, as well a For this, we will mostly be talking about the generic implementation used by the Let's Split and other keyboards. -!> ARM is not yet supported for Split Keyboards. Progress is being made, but we are not quite there, yet. +!> ARM is not yet fully supported for Split Keyboards and has many limitations. Progress is being made, but we have not yet reached 100% feature parity. +## Compatibility Overview + +| Transport | AVR | ARM | +|------------------------------|--------------------|--------------------| +| ['serial'](serial_driver.md) | :heavy_check_mark: | :white_check_mark: 1 | +| I2C | :heavy_check_mark: | | + +Notes: + +1. Both hardware and software limitations are detailed within the [driver documentation](serial_driver.md). + ## Hardware Configuration This assumes that you're using two Pro Micro-compatible controllers, and are using TRRS jacks to connect to two halves. diff --git a/docs/proton_c_conversion.md b/docs/proton_c_conversion.md index 98f1508a9e..1b5e496e74 100644 --- a/docs/proton_c_conversion.md +++ b/docs/proton_c_conversion.md @@ -36,7 +36,7 @@ These are defaults based on what has been implemented for ARM boards. | [RGB Lighting](feature_rgblight.md) | Disabled | | [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration | | USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) | -| [Split keyboards](feature_split_keyboard.md) | Not supported yet | +| [Split keyboards](feature_split_keyboard.md) | Partial - heavily dependent on enabled features | ## Manual Conversion diff --git a/docs/serial_driver.md b/docs/serial_driver.md index 395b3ec3f9..bc376b6ddd 100644 --- a/docs/serial_driver.md +++ b/docs/serial_driver.md @@ -1,7 +1,7 @@ # 'serial' Driver This driver powers the [Split Keyboard](feature_split_keyboard.md) feature. -!> Serial in this context should be read as **sending information one bit at a time**, rather than implementing UART/USART/RS485/RS232 standards. +?> Serial in this context should be read as **sending information one bit at a time**, rather than implementing UART/USART/RS485/RS232 standards. All drivers in this category have the following characteristics: * Provides data and signaling over a single conductor @@ -11,7 +11,7 @@ All drivers in this category have the following characteristics: | | AVR | ARM | |-------------------|--------------------|--------------------| -| bit bang | :heavy_check_mark: | Soon™ | +| bit bang | :heavy_check_mark: | :heavy_check_mark: | | USART Half-duplex | | :heavy_check_mark: | ## Driver configuration @@ -35,6 +35,12 @@ Configure the driver via your config.h: // 5: about 20kbps ``` +#### ARM + +!> The bitbang driver causes connection issues with bitbang WS2812 driver + +Along with the generic options above, you must also turn on the `PAL_USE_CALLBACKS` feature in your halconf.h. + ### USART Half-duplex Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage is that this provides fast and accurate timings. `SOFT_SERIAL_PIN` for this driver is the configured USART TX pin. **The TX pin must have appropriate pull-up resistors**. To configure it, add this to your rules.mk: @@ -56,4 +62,8 @@ Configure the hardware via your config.h: #define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 ``` -You must also turn on the SERIAL feature in your halconf.h and mcuconf.h +You must also enable the ChibiOS `SERIAL` feature: +* In your board's halconf.h: `#define HAL_USE_SERIAL TRUE` +* In your board's mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU) + +Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral.