Fix SPI_SD Outside of HAL_STM32F1 (#14306)

This commit is contained in:
3DSmitty 2019-06-18 03:38:18 -04:00 committed by Scott Lahteine
parent 089d12df16
commit 5b13abcacb
3 changed files with 34 additions and 25 deletions

View file

@ -113,9 +113,7 @@ void spiInit(uint8_t spiRate) {
* @details * @details
*/ */
uint8_t spiRec(void) { uint8_t spiRec(void) {
WRITE(SS_PIN, LOW);
uint8_t returnByte = SPI.transfer(0xFF); uint8_t returnByte = SPI.transfer(0xFF);
WRITE(SS_PIN, HIGH);
return returnByte; return returnByte;
} }
@ -129,9 +127,7 @@ uint8_t spiRec(void) {
* @details Uses DMA * @details Uses DMA
*/ */
void spiRead(uint8_t* buf, uint16_t nbyte) { void spiRead(uint8_t* buf, uint16_t nbyte) {
WRITE(SS_PIN, LOW);
SPI.dmaTransfer(0, const_cast<uint8_t*>(buf), nbyte); SPI.dmaTransfer(0, const_cast<uint8_t*>(buf), nbyte);
WRITE(SS_PIN, HIGH);
} }
/** /**
@ -142,9 +138,7 @@ void spiRead(uint8_t* buf, uint16_t nbyte) {
* @details * @details
*/ */
void spiSend(uint8_t b) { void spiSend(uint8_t b) {
WRITE(SS_PIN, LOW);
SPI.send(b); SPI.send(b);
WRITE(SS_PIN, HIGH);
} }
/** /**
@ -156,10 +150,8 @@ void spiSend(uint8_t b) {
* @details Use DMA * @details Use DMA
*/ */
void spiSendBlock(uint8_t token, const uint8_t* buf) { void spiSendBlock(uint8_t token, const uint8_t* buf) {
WRITE(SS_PIN, LOW);
SPI.send(token); SPI.send(token);
SPI.dmaSend(const_cast<uint8_t*>(buf), 512); SPI.dmaSend(const_cast<uint8_t*>(buf), 512);
WRITE(SS_PIN, HIGH);
} }
#if ENABLED(SPI_EEPROM) #if ENABLED(SPI_EEPROM)

View file

@ -23,28 +23,36 @@
*/ */
/** /**
* Define SPI Pins: SCK, MISO, MOSI, SS * STM32F1 Default SPI Pins
*
* Any PIN can be used for Chip Select (SS)
* *
* SS SCK MISO MOSI
* +-----------------------------+
* SPI1 | PA4 PA5 PA6 PA7 |
* SPI2 | PB12 PB13 PB14 PB15 |
* SPI3 | PA15 PB3 PB4 PB5 |
* +-----------------------------+
* Any pin can be used for Chip Select (SS_PIN)
* SPI1 is enabled by default * SPI1 is enabled by default
*/ */
#ifndef SCK_PIN
#define SCK_PIN PA5
#endif
#ifndef MISO_PIN
#define MISO_PIN PA6
#endif
#ifndef MOSI_PIN
#define MOSI_PIN PA7
#endif
#ifndef SS_PIN
#define SS_PIN PA4
#endif
#undef SDSS
#define SDSS SS_PIN
#if ENABLED(ENABLE_SPI3) #if ENABLED(ENABLE_SPI3)
#define SPI_DEVICE 3 #define SPI_DEVICE 3
#define SCK_PIN BOARD_SPI3_SCK_PIN
#define MISO_PIN BOARD_SPI3_MISO_PIN
#define MOSI_PIN BOARD_SPI3_MOSI_PIN
#define SS_PIN BOARD_SPI3_NSS_PIN
#elif ENABLED(ENABLE_SPI2) #elif ENABLED(ENABLE_SPI2)
#define SPI_DEVICE 2 #define SPI_DEVICE 2
#define SCK_PIN BOARD_SPI2_SCK_PIN
#define MISO_PIN BOARD_SPI2_MISO_PIN
#define MOSI_PIN BOARD_SPI2_MOSI_PIN
#define SS_PIN BOARD_SPI2_NSS_PIN
#else #else
#define SPI_DEVICE 1 #define SPI_DEVICE 1
#define SCK_PIN BOARD_SPI1_SCK_PIN
#define MISO_PIN BOARD_SPI1_MISO_PIN
#define MOSI_PIN BOARD_SPI1_MOSI_PIN
#define SS_PIN BOARD_SPI1_NSS_PIN
#endif #endif

View file

@ -133,8 +133,17 @@
//#define STM32_SD_LCD //#define STM32_SD_LCD
#if ENABLED(STM32_SD_LCD) #if ENABLED(STM32_SD_LCD)
#define SD_DETECT_PIN PB9
#define ENABLE_SPI3 #define ENABLE_SPI3
#define SD_DETECT_PIN PB9
#define SCK_PIN PB3
#define MISO_PIN PB4
#define MOSI_PIN PB5
#define SS_PIN PA15
#else #else
#define SD_DETECT_PIN PA3 #define ENABLE_SPI1
#define SD_DETECT_PIN PA3
#define SCK_PIN PA5
#define MISO_PIN PA6
#define MOSI_PIN PA7
#define SS_PIN PA4
#endif #endif