diff options
author | fauxpark <[email protected]> | 2021-02-08 07:57:09 +1100 |
---|---|---|
committer | fauxpark <[email protected]> | 2021-02-08 07:57:09 +1100 |
commit | 0e59827023859a428be789a11036d68bd6eda2bd (patch) | |
tree | 9f058f683a0b411ce9886ba9ce278f0248a603f3 /docs/spi_driver.md | |
parent | 10c88cdcd517888bfdbfc9dc0c58ceb7648b2d81 (diff) | |
parent | fc29c7a589837c2d1e4173d59d2849f89d3cb72b (diff) | |
download | qmk_firmware-0e59827023859a428be789a11036d68bd6eda2bd.tar.gz qmk_firmware-0e59827023859a428be789a11036d68bd6eda2bd.zip |
Merge remote-tracking branch 'upstream/master' into develop
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 03c008da2a..a27a3a13d0 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 |MCU |`SS`|`SCK`|`MOSI`|`MISO`| |-----------------|----|-----|------|------| -|ATMega16/32U2/4 |`B0`|`B1` |`B2` |`B3` | +|ATmega16/32U2/4 |`B0`|`B1` |`B2` |`B3` | |AT90USB64/128/162|`B0`|`B1` |`B2` |`B3` | |ATmega32A |`B4`|`B7` |`B5` |`B6` | |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 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. -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`. -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`. +To enable SPI, modify your board's `halconf.h` to enable SPI: -As per the AVR configuration, you may select any other standard GPIO as a slave select pin, and can be supplied to `spi_start()`. +```c +#define HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD +``` + +Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example: + +```c +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE +``` 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. -`config.h` override | Description | Default Value -----------------------------|---------------------------------------------------------------|-------------- -`#define SPI_DRIVER` | SPI peripheral to use - SPI1 => `SPID1`, SPI2 => `SPID2` etc. | `SPID2` -`#define SPI_SCK_PIN` | The pin to use for the SCK | `B13` -`#define SPI_SCK_PAL_MODE` | The alternate function mode for the SCK pin | `5` -`#define SPI_MOSI_PIN` | The pin to use for the MOSI | `B15` -`#define SPI_MOSI_PAL_MODE` | The alternate function mode for the MOSI pin | `5` -`#define SPI_MISO_PIN` | The pin to use for the MISO | `B14` -`#define SPI_MISO_PAL_MODE` | The alternate function mode for the MISO pin | `5` +|`config.h` Override|Description |Default| +|-------------------|-------------------------------------------------------------|-------| +|`SPI_DRIVER` |SPI peripheral to use - SPI1 -> `SPID1`, SPI2 -> `SPID2` etc.|`SPID2`| +|`SPI_SCK_PIN` |The pin to use for SCK |`B13` | +|`SPI_SCK_PAL_MODE` |The alternate function mode for SCK |`5` | +|`SPI_MOSI_PIN` |The pin to use for MOSI |`B15` | +|`SPI_MOSI_PAL_MODE`|The alternate function mode for MOSI |`5` | +|`SPI_MISO_PIN` |The pin to use for MISO |`B14` | +|`SPI_MISO_PAL_MODE`|The alternate function mode for MISO |`5` | + +As per the AVR configuration, you may choose any other standard GPIO as a slave select pin, which should be supplied to `spi_start()`. ## Functions @@ -112,7 +124,7 @@ Send multiple bytes to the selected SPI device. #### Return Value -`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise. +`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`. --- @@ -129,7 +141,7 @@ Receive multiple bytes from the selected SPI device. #### Return Value -`SPI_STATUS_TIMEOUT` if the internal transmission timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise. +`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`. --- |