diff options
| author | Ryan <fauxpark@gmail.com> | 2021-02-08 07:45:59 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-08 07:45:59 +1100 |
| commit | 5d5cbb877da3a7f27f1c96948d240317e6263388 (patch) | |
| tree | 599f61edd4da6ff64a5515bc20ffc49a2c65747d /docs/spi_driver.md | |
| parent | 0355cd0f72899b554c180b7fe6ca61e140e2f908 (diff) | |
| download | qmk_firmware-5d5cbb877da3a7f27f1c96948d240317e6263388.tar.gz qmk_firmware-5d5cbb877da3a7f27f1c96948d240317e6263388.zip | |
Rework I2C driver docs (#11658)
Diffstat (limited to 'docs/spi_driver.md')
| -rw-r--r-- | docs/spi_driver.md | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/docs/spi_driver.md b/docs/spi_driver.md index 1d432432a..16fe1d803 100644 --- a/docs/spi_driver.md +++ b/docs/spi_driver.md | |||
| @@ -8,7 +8,7 @@ No special setup is required - just connect the `SS`, `SCK`, `MOSI` and `MISO` p | |||
| 8 | 8 | ||
| 9 | |MCU |`SS`|`SCK`|`MOSI`|`MISO`| | 9 | |MCU |`SS`|`SCK`|`MOSI`|`MISO`| |
| 10 | |---------------|----|-----|------|------| | 10 | |---------------|----|-----|------|------| |
| 11 | |ATMega16/32U2/4|`B0`|`B1` |`B2` |`B3` | | 11 | |ATmega16/32U2/4|`B0`|`B1` |`B2` |`B3` | |
| 12 | |AT90USB64/128 |`B0`|`B1` |`B2` |`B3` | | 12 | |AT90USB64/128 |`B0`|`B1` |`B2` |`B3` | |
| 13 | |ATmega32A |`B4`|`B7` |`B5` |`B6` | | 13 | |ATmega32A |`B4`|`B7` |`B5` |`B6` | |
| 14 | |ATmega328/P |`B2`|`B5` |`B3` |`B4` | | 14 | |ATmega328/P |`B2`|`B5` |`B3` |`B4` | |
| @@ -20,22 +20,34 @@ You may use more than one slave select pin, not just the `SS` pin. This is usefu | |||
| 20 | 20 | ||
| 21 | You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc. | 21 | You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc. |
| 22 | 22 | ||
| 23 | To enable SPI, modify your board's `halconf.h` to enable SPI - both `HAL_USE_SPI` and `SPI_USE_WAIT` should be `TRUE`, and `SPI_SELECT_MODE` should be `SPI_SELECT_MODE_PAD`. | 23 | To enable SPI, modify your board's `halconf.h` to enable SPI: |
| 24 | Then, modify your board's `mcuconf.h` to enable the SPI peripheral you've chosen -- in the case of using SPI2, modify `STM32_SPI_USE_SPI2` to be `TRUE`. | ||
| 25 | 24 | ||
| 26 | As per the AVR configuration, you may select any other standard GPIO as a slave select pin, and can be supplied to `spi_start()`. | 25 | ```c |
| 26 | #define HAL_USE_SPI TRUE | ||
| 27 | #define SPI_USE_WAIT TRUE | ||
| 28 | #define SPI_SELECT_MODE SPI_SELECT_MODE_PAD | ||
| 29 | ``` | ||
| 30 | |||
| 31 | Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example: | ||
| 32 | |||
| 33 | ```c | ||
| 34 | #undef STM32_SPI_USE_SPI2 | ||
| 35 | #define STM32_SPI_USE_SPI2 TRUE | ||
| 36 | ``` | ||
| 27 | 37 | ||
| 28 | Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303. | 38 | Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303. |
| 29 | 39 | ||
| 30 | `config.h` override | Description | Default Value | 40 | |`config.h` Override|Description |Default| |
| 31 | ----------------------------|---------------------------------------------------------------|-------------- | 41 | |-------------------|-------------------------------------------------------------|-------| |
| 32 | `#define SPI_DRIVER` | SPI peripheral to use - SPI1 => `SPID1`, SPI2 => `SPID2` etc. | `SPID2` | 42 | |`SPI_DRIVER` |SPI peripheral to use - SPI1 -> `SPID1`, SPI2 -> `SPID2` etc.|`SPID2`| |
| 33 | `#define SPI_SCK_PIN` | The pin to use for the SCK | `B13` | 43 | |`SPI_SCK_PIN` |The pin to use for SCK |`B13` | |
| 34 | `#define SPI_SCK_PAL_MODE` | The alternate function mode for the SCK pin | `5` | 44 | |`SPI_SCK_PAL_MODE` |The alternate function mode for SCK |`5` | |
| 35 | `#define SPI_MOSI_PIN` | The pin to use for the MOSI | `B15` | 45 | |`SPI_MOSI_PIN` |The pin to use for MOSI |`B15` | |
| 36 | `#define SPI_MOSI_PAL_MODE` | The alternate function mode for the MOSI pin | `5` | 46 | |`SPI_MOSI_PAL_MODE`|The alternate function mode for MOSI |`5` | |
| 37 | `#define SPI_MISO_PIN` | The pin to use for the MISO | `B14` | 47 | |`SPI_MISO_PIN` |The pin to use for MISO |`B14` | |
| 38 | `#define SPI_MISO_PAL_MODE` | The alternate function mode for the MISO pin | `5` | 48 | |`SPI_MISO_PAL_MODE`|The alternate function mode for MISO |`5` | |
| 49 | |||
| 50 | As per the AVR configuration, you may choose any other standard GPIO as a slave select pin, which should be supplied to `spi_start()`. | ||
| 39 | 51 | ||
| 40 | ## Functions | 52 | ## Functions |
| 41 | 53 | ||
| @@ -112,7 +124,7 @@ Send multiple bytes to the selected SPI device. | |||
| 112 | 124 | ||
| 113 | #### Return Value | 125 | #### Return Value |
| 114 | 126 | ||
| 115 | `SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise. | 127 | `SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`. |
| 116 | 128 | ||
| 117 | --- | 129 | --- |
| 118 | 130 | ||
| @@ -129,7 +141,7 @@ Receive multiple bytes from the selected SPI device. | |||
| 129 | 141 | ||
| 130 | #### Return Value | 142 | #### Return Value |
| 131 | 143 | ||
| 132 | `SPI_STATUS_TIMEOUT` if the internal transmission timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise. | 144 | `SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`. |
| 133 | 145 | ||
| 134 | --- | 146 | --- |
| 135 | 147 | ||
