From ec5b78d18b1dbf941456b10a20816ec453423beb Mon Sep 17 00:00:00 2001 From: Victor Oliveira Date: Thu, 1 Oct 2020 22:52:42 -0300 Subject: [PATCH] Minor SPI fixes, systick_callback for STM32F1 HAL compatibility (#19565) --- Marlin/src/HAL/STM32/HAL.cpp | 9 +++++++-- Marlin/src/HAL/STM32/HAL.h | 5 +++++ Marlin/src/HAL/STM32/HAL_SPI.cpp | 14 ++------------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Marlin/src/HAL/STM32/HAL.cpp b/Marlin/src/HAL/STM32/HAL.cpp index b1b727ce1..83604b110 100644 --- a/Marlin/src/HAL/STM32/HAL.cpp +++ b/Marlin/src/HAL/STM32/HAL.cpp @@ -63,7 +63,7 @@ uint16_t HAL_adc_result; void HAL_init() { FastIO_init(); - #if ENABLED(SDSUPPORT) && DISABLED(SDIO_SUPPORT) + #if ENABLED(SDSUPPORT) && DISABLED(SDIO_SUPPORT) && (defined(SDSS) && SDSS != -1) OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up #endif @@ -122,9 +122,14 @@ extern "C" { // TODO: Make sure this doesn't cause any delay void HAL_adc_start_conversion(const uint8_t adc_pin) { HAL_adc_result = analogRead(adc_pin); } - uint16_t HAL_adc_get_result() { return HAL_adc_result; } +// Reset the system (to initiate a firmware flash) void flashFirmware(const int16_t) { NVIC_SystemReset(); } +// Maple Compatibility +systickCallback_t systick_user_callback; +void systick_attach_callback(systickCallback_t cb) { systick_user_callback = cb; } +void HAL_SYSTICK_Callback() { if (systick_user_callback) systick_user_callback(); } + #endif // ARDUINO_ARCH_STM32 && !STM32GENERIC diff --git a/Marlin/src/HAL/STM32/HAL.h b/Marlin/src/HAL/STM32/HAL.h index 60ab45374..37919102e 100644 --- a/Marlin/src/HAL/STM32/HAL.h +++ b/Marlin/src/HAL/STM32/HAL.h @@ -177,3 +177,8 @@ uint16_t HAL_adc_get_result(); #define PLATFORM_M997_SUPPORT void flashFirmware(const int16_t); + +// Maple Compatibility +typedef void (*systickCallback_t)(void); +void systick_attach_callback(systickCallback_t cb); +void HAL_SYSTICK_Callback(); diff --git a/Marlin/src/HAL/STM32/HAL_SPI.cpp b/Marlin/src/HAL/STM32/HAL_SPI.cpp index 202442a71..f947e6ef3 100644 --- a/Marlin/src/HAL/STM32/HAL_SPI.cpp +++ b/Marlin/src/HAL/STM32/HAL_SPI.cpp @@ -132,11 +132,9 @@ static SPISettings spiConfig; * @details Only configures SS pin since stm32duino creates and initialize the SPI object */ void spiBegin() { - #if !PIN_EXISTS(SS) - #error "SS_PIN not defined!" + #if PIN_EXISTS(SS) + OUT_WRITE(SS_PIN, HIGH); #endif - - OUT_WRITE(SS_PIN, HIGH); } // Configure SPI for specified SPI speed @@ -173,9 +171,7 @@ static SPISettings spiConfig; * @details */ uint8_t spiRec() { - SPI.beginTransaction(spiConfig); uint8_t returnByte = SPI.transfer(0xFF); - SPI.endTransaction(); return returnByte; } @@ -191,9 +187,7 @@ static SPISettings spiConfig; void spiRead(uint8_t* buf, uint16_t nbyte) { if (nbyte == 0) return; memset(buf, 0xFF, nbyte); - SPI.beginTransaction(spiConfig); SPI.transfer(buf, nbyte); - SPI.endTransaction(); } /** @@ -204,9 +198,7 @@ static SPISettings spiConfig; * @details */ void spiSend(uint8_t b) { - SPI.beginTransaction(spiConfig); SPI.transfer(b); - SPI.endTransaction(); } /** @@ -219,10 +211,8 @@ static SPISettings spiConfig; */ void spiSendBlock(uint8_t token, const uint8_t* buf) { uint8_t rxBuf[512]; - SPI.beginTransaction(spiConfig); SPI.transfer(token); SPI.transfer((uint8_t*)buf, &rxBuf, 512); - SPI.endTransaction(); } #endif // SOFTWARE_SPI