From 13ee425352b725d6a3642d385139365eb420124c Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Mon, 17 May 2021 17:45:31 +0300 Subject: [PATCH] Configurable SPI CPHA and CPOL --- src/hal/spi.h | 4 +++- src/main.cpp | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/hal/spi.h b/src/hal/spi.h index b616d56..5e067d3 100644 --- a/src/hal/spi.h +++ b/src/hal/spi.h @@ -18,6 +18,8 @@ namespace spi { hal::gpio::GPIO_pin sck_pin; hal::gpio::GPIO_pin ss_pin; uint8_t prescaler; + uint8_t cpha; + uint8_t cpol; }; __attribute__((always_inline)) inline void Init(SPI_TypeDef *const hspi, SPI_InitTypeDef *const conf) { @@ -30,7 +32,7 @@ namespace spi { const uint8_t spi2x = (conf->prescaler == 7) ? 0 : (conf->prescaler & 0x01); const uint8_t spr = ((conf->prescaler - 1) >> 1) & 0x03; - hspi->SPCRx = (0 << SPIE) | (1 << SPE) | (0 << DORD) | (1 << MSTR) | (0 << CPOL) | (0 << CPHA) | (spr << SPR0); + hspi->SPCRx = (0 << SPIE) | (1 << SPE) | (0 << DORD) | (1 << MSTR) | ((conf->cpol & 0x01) << CPOL) | ((conf->cpha & 0x01) << CPHA) | (spr << SPR0); hspi->SPSRx = (spi2x << SPI2X); } diff --git a/src/main.cpp b/src/main.cpp index 7a3604a..251eae2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,6 +14,8 @@ void setup() { .sck_pin = gpio::GPIO_pin(TMC2130_SPI_SCK_PIN), .ss_pin = gpio::GPIO_pin(TMC2130_SPI_SS_PIN), .prescaler = 2, //4mhz + .cpha = 1, + .cpol = 1, }; spi::Init(SPI0, &spi_conf); }