From ac4609905a3c972aa11a9e112d04de09fce74227 Mon Sep 17 00:00:00 2001 From: Jeff McBride Date: Mon, 7 Feb 2022 12:28:15 -0800 Subject: [PATCH] [sam] Fix SPI bug in handling of CPHA/CPOL --- src/modm/platform/spi/sam/spi_master.hpp.in | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modm/platform/spi/sam/spi_master.hpp.in b/src/modm/platform/spi/sam/spi_master.hpp.in index 76a761c287..5f251cdf67 100644 --- a/src/modm/platform/spi/sam/spi_master.hpp.in +++ b/src/modm/platform/spi/sam/spi_master.hpp.in @@ -105,8 +105,10 @@ public: static void setDataMode(DataMode mode) { - uint32_t value = (uint32_t)mode ^ 2; // Flip CPHA bit - Regs()->SPI_CSR[0] = (Regs()->SPI_CSR[0] & ~(SPI_CSR_CPOL | SPI_CSR_NCPHA)) | (value << SPI_CSR_CPOL_Pos); + uint32_t value = (uint32_t)mode ^ 1; // Flip CPHA bit + Regs()->SPI_CSR[0] = (Regs()->SPI_CSR[0] & ~(SPI_CSR_CPOL | SPI_CSR_NCPHA)) | + (((value & 2) >> 1) << SPI_CSR_CPOL_Pos) | + ((value & 1) << SPI_CSR_NCPHA_Pos); } static void