aboutsummaryrefslogtreecommitdiff
path: root/docs/spi_driver.md
diff options
context:
space:
mode:
authorRyan <fauxpark@gmail.com>2021-02-08 07:45:59 +1100
committerGitHub <noreply@github.com>2021-02-08 07:45:59 +1100
commit5d5cbb877da3a7f27f1c96948d240317e6263388 (patch)
tree599f61edd4da6ff64a5515bc20ffc49a2c65747d /docs/spi_driver.md
parent0355cd0f72899b554c180b7fe6ca61e140e2f908 (diff)
downloadqmk_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.md42
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
21You'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. 21You'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
23To 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`. 23To enable SPI, modify your board's `halconf.h` to enable SPI:
24Then, 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
26As 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
31Then, 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
28Configuration-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. 38Configuration-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
50As 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