Make SPI Mode configurable and change default mode to 3 (#17263)

This commit is contained in:
trwnh 2022-05-31 00:28:55 -05:00 committed by GitHub
parent e869d089b7
commit 9e2fe4eff6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 1 deletions

View file

@ -409,6 +409,7 @@ You can use up to 2 AW20216 IC's. Do not specify `DRIVER_<N>_xxx` defines for IC
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | | | `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `AW_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 | | `AW_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 |
| `AW_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 | | `AW_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 |
| `AW_SPI_MODE` | (Optional) Mode for SPI communication (0-3, defines polarity and phase of the clock) | 3 |
| `AW_SPI_DIVISOR` | (Optional) Clock divisor for SPI communication (powers of 2, smaller numbers means faster communication, should not be less than 4) | 4 | | `AW_SPI_DIVISOR` | (Optional) Clock divisor for SPI communication (powers of 2, smaller numbers means faster communication, should not be less than 4) | 4 |
Here is an example using 2 drivers. Here is an example using 2 drivers.

View file

@ -53,6 +53,10 @@
# define AW_GLOBAL_CURRENT_MAX 150 # define AW_GLOBAL_CURRENT_MAX 150
#endif #endif
#ifndef AW_SPI_MODE
# define AW_SPI_MODE 3
#endif
#ifndef AW_SPI_DIVISOR #ifndef AW_SPI_DIVISOR
# define AW_SPI_DIVISOR 4 # define AW_SPI_DIVISOR 4
#endif #endif
@ -63,7 +67,7 @@ bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false};
bool AW20216_write(pin_t cs_pin, uint8_t page, uint8_t reg, uint8_t* data, uint8_t len) { bool AW20216_write(pin_t cs_pin, uint8_t page, uint8_t reg, uint8_t* data, uint8_t len) {
static uint8_t s_spi_transfer_buffer[2] = {0}; static uint8_t s_spi_transfer_buffer[2] = {0};
if (!spi_start(cs_pin, false, 3, AW_SPI_DIVISOR)) { if (!spi_start(cs_pin, false, AW_SPI_MODE, AW_SPI_DIVISOR)) {
spi_stop(); spi_stop();
return false; return false;
} }