diff --git a/.cproject b/.cproject index 18e7bb2..7e6bec0 100644 --- a/.cproject +++ b/.cproject @@ -494,7 +494,6 @@ - diff --git a/system/src/drivers/dallas.c b/system/src/drivers/dallas.c index 5733ea9..98cdd59 100644 --- a/system/src/drivers/dallas.c +++ b/system/src/drivers/dallas.c @@ -105,7 +105,6 @@ void dallas_config_timer(void) { //NVIC_DisableIRQ( TIM3_IRQn ); // data transmission initializer NVIC_DisableIRQ( TIM4_IRQn ); // data transmission initializer NVIC_DisableIRQ( TIM7_IRQn ); // data transmission initializer - //NVIC_DisableIRQ( 25 ); // TODO: probably remainder of TX20 driver to be deleted dallas_delay_start(); @@ -119,7 +118,6 @@ void dallas_deconfig_timer(void) { //NVIC_EnableIRQ( TIM3_IRQn ); // adc NVIC_EnableIRQ( TIM4_IRQn ); // data transmission initializer NVIC_EnableIRQ( TIM7_IRQn ); // data transmission initializer - //NVIC_EnableIRQ( 25 ); // TODO: probably remainder of TX20 driver to be deleted dallas_delay_stop(); //timm = 0; diff --git a/system/src/drivers/l4/spi_stm32l4xx.c b/system/src/drivers/l4/spi_stm32l4xx.c index ddcdc0b..e6eb072 100644 --- a/system/src/drivers/l4/spi_stm32l4xx.c +++ b/system/src/drivers/l4/spi_stm32l4xx.c @@ -17,6 +17,7 @@ #include +#define SPI_CS_TO_SCLK_SETUP_DELAY 0x2FF #define SPI_BUFFER_LN 32 /** @@ -274,16 +275,18 @@ uint8_t spi_init_full_duplex_pio(spi_transfer_mode_t mode, spi_clock_polarity_st * * //#define SPI_CR1_CPHA_Pos (0U) -//#define SPI_CR1_CPHA_Msk (0x1UL << SPI_CR1_CPHA_Pos) /*!< 0x00000001 */ -//#define SPI_CR1_CPHA SPI_CR1_CPHA_Msk /*!DR = spi_tx_buffer[spi_current_tx_cntr++]; } else { - while((SPI2->SR & SPI_SR_BSY) != 0); // blocking!! + while((SPI2->SR & SPI_SR_BSY) != 0) { // blocking!! + // clear RX fifo while rest of bytes are transmitted + spi_garbage = SPI2->DR & 0xFF; + } // finish transmission spi_tx_state = SPI_TX_DONE; @@ -650,6 +652,9 @@ void spi_timeout_handler(void) { void spi_enable(uint8_t cs_assert) { + // delay between asserting chip select and starting SPI + volatile int delay = 0; + SPI2->CR2 |= SPI_CR2_ERRIE; SPI2->CR2 |= SPI_CR2_RXNEIE; SPI2->CR2 |= SPI_CR2_TXEIE; @@ -657,6 +662,8 @@ void spi_enable(uint8_t cs_assert) { if (cs_assert != 0) { LL_GPIO_ResetOutputPin((GPIO_TypeDef *)spi_slaves_cfg[spi_current_slave - 1][1], spi_slaves_cfg[spi_current_slave - 1][2]); + // delay required by CS to SCLK Setup (MAX31865) + for (delay = 0; delay < SPI_CS_TO_SCLK_SETUP_DELAY; delay++); } LL_SPI_Enable(SPI2);