Skip to content

Commit 11181e7

Browse files
committed
Revert "✨ SPI TFT / Touchscreen for STM32H7 (MarlinFirmware#25784)"
This reverts commit 3ea87ad. # Conflicts: # Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_3.h # Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h # Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h
1 parent 41aa6c0 commit 11181e7

11 files changed

+139
-387
lines changed

Marlin/src/HAL/STM32/tft/tft_spi.cpp

+46-113
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ void TFT_SPI::init() {
5252
SPIx.Init.NSS = SPI_NSS_SOFT;
5353
SPIx.Init.Mode = SPI_MODE_MASTER;
5454
SPIx.Init.Direction = (TFT_MISO_PIN == TFT_MOSI_PIN) ? SPI_DIRECTION_1LINE : SPI_DIRECTION_2LINES;
55+
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
5556
SPIx.Init.CLKPhase = SPI_PHASE_1EDGE;
5657
SPIx.Init.CLKPolarity = SPI_POLARITY_LOW;
5758
SPIx.Init.DataSize = SPI_DATASIZE_8BIT;
@@ -60,43 +61,25 @@ void TFT_SPI::init() {
6061
SPIx.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
6162
SPIx.Init.CRCPolynomial = 10;
6263

63-
#ifndef STM32H7xx
64-
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; // 18 MBit/s for F103, 21 MBit/s for F407, 25 MBit/s for F411
65-
#else
66-
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; // 20 MBit/s for H743
67-
SPIx.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
68-
SPIx.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
69-
SPIx.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;
70-
SPIx.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE;
71-
SPIx.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE;
72-
SPIx.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;
73-
SPIx.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE;
74-
SPIx.Init.IOSwap = SPI_IO_SWAP_DISABLE;
75-
#endif
76-
7764
pinmap_pinout(digitalPinToPinName(TFT_SCK_PIN), PinMap_SPI_SCLK);
7865
pinmap_pinout(digitalPinToPinName(TFT_MOSI_PIN), PinMap_SPI_MOSI);
7966
#if PIN_EXISTS(TFT_MISO) && TFT_MISO_PIN != TFT_MOSI_PIN
8067
pinmap_pinout(digitalPinToPinName(TFT_MISO_PIN), PinMap_SPI_MISO);
8168
#endif
69+
pin_PullConfig(get_GPIO_Port(STM_PORT(digitalPinToPinName(TFT_SCK_PIN))), STM_LL_GPIO_PIN(digitalPinToPinName(TFT_SCK_PIN)), GPIO_PULLDOWN);
8270

8371
#ifdef SPI1_BASE
8472
if (SPIx.Instance == SPI1) {
8573
__HAL_RCC_SPI1_CLK_ENABLE();
8674
#ifdef STM32F1xx
8775
__HAL_RCC_DMA1_CLK_ENABLE();
8876
DMAtx.Instance = DMA1_Channel3;
89-
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; // SPI1 clock on F1 and F4 is two times faster than SPI2 and SPI3 clock
9077
#elif defined(STM32F4xx)
9178
__HAL_RCC_DMA2_CLK_ENABLE();
9279
DMAtx.Instance = DMA2_Stream3;
9380
DMAtx.Init.Channel = DMA_CHANNEL_3;
94-
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; // SPI1 clock on F1 and F4 is two times faster than SPI2 and SPI3 clock
95-
#elif defined(STM32H7xx)
96-
__HAL_RCC_DMA1_CLK_ENABLE();
97-
DMAtx.Instance = DMA1_Stream4;
98-
DMAtx.Init.Request = DMA_REQUEST_SPI1_TX;
9981
#endif
82+
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
10083
}
10184
#endif
10285
#ifdef SPI2_BASE
@@ -109,10 +92,6 @@ void TFT_SPI::init() {
10992
__HAL_RCC_DMA1_CLK_ENABLE();
11093
DMAtx.Instance = DMA1_Stream4;
11194
DMAtx.Init.Channel = DMA_CHANNEL_0;
112-
#elif defined(STM32H7xx)
113-
__HAL_RCC_DMA1_CLK_ENABLE();
114-
DMAtx.Instance = DMA1_Stream4;
115-
DMAtx.Init.Request = DMA_REQUEST_SPI2_TX;
11695
#endif
11796
}
11897
#endif
@@ -126,27 +105,25 @@ void TFT_SPI::init() {
126105
__HAL_RCC_DMA1_CLK_ENABLE();
127106
DMAtx.Instance = DMA1_Stream5;
128107
DMAtx.Init.Channel = DMA_CHANNEL_0;
129-
#elif defined(STM32H7xx)
130-
__HAL_RCC_DMA1_CLK_ENABLE();
131-
DMAtx.Instance = DMA1_Stream4;
132-
DMAtx.Init.Request = DMA_REQUEST_SPI3_TX;
133108
#endif
134109
}
135110
#endif
136111

112+
HAL_SPI_Init(&SPIx);
113+
137114
DMAtx.Init.Direction = DMA_MEMORY_TO_PERIPH;
138115
DMAtx.Init.PeriphInc = DMA_PINC_DISABLE;
139116
DMAtx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
140117
DMAtx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
141118
DMAtx.Init.Mode = DMA_NORMAL;
142119
DMAtx.Init.Priority = DMA_PRIORITY_LOW;
143-
#if ANY(STM32F4xx, STM32H7xx)
120+
#ifdef STM32F4xx
144121
DMAtx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
145122
#endif
146123
}
147124

148125
void TFT_SPI::dataTransferBegin(uint16_t dataSize) {
149-
SPIx.Init.DataSize = dataSize;
126+
SPIx.Init.DataSize = dataSize == DATASIZE_8BIT ? SPI_DATASIZE_8BIT : SPI_DATASIZE_16BIT;
150127
HAL_SPI_Init(&SPIx);
151128
WRITE(TFT_CS_PIN, LOW);
152129
}
@@ -171,43 +148,28 @@ uint32_t TFT_SPI::getID() {
171148
uint32_t TFT_SPI::readID(const uint16_t inReg) {
172149
uint32_t data = 0;
173150
#if PIN_EXISTS(TFT_MISO)
174-
const uint32_t oldPrescaler = SPIx.Init.BaudRatePrescaler;
151+
uint32_t BaudRatePrescaler = SPIx.Init.BaudRatePrescaler;
152+
uint32_t i;
175153

176-
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;
154+
SPIx.Init.BaudRatePrescaler = SPIx.Instance == SPI1 ? SPI_BAUDRATEPRESCALER_8 : SPI_BAUDRATEPRESCALER_4;
177155
dataTransferBegin(DATASIZE_8BIT);
178156
writeReg(inReg);
179157

180158
if (SPIx.Init.Direction == SPI_DIRECTION_1LINE) SPI_1LINE_RX(&SPIx);
159+
__HAL_SPI_ENABLE(&SPIx);
181160

182-
#ifdef STM32H7xx
183-
for (uint32_t i = 0; i < 4; i++) {
184-
MODIFY_REG(SPIx.Instance->CR2, SPI_CR2_TSIZE, 1);
185-
__HAL_SPI_ENABLE(&SPIx);
186-
SET_BIT(SPIx.Instance->CR1, SPI_CR1_CSTART);
187-
188-
#if TFT_MISO_PIN != TFT_MOSI_PIN
189-
SPIx.Instance->TXDR = 0;
190-
#endif
191-
while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_EOT)) {}
192-
data = (data << 8) | SPIx.Instance->RXDR;
193-
__HAL_SPI_DISABLE(&SPIx);
194-
__HAL_SPI_CLEAR_EOTFLAG(&SPIx);
195-
__HAL_SPI_CLEAR_TXTFFLAG(&SPIx);
196-
}
197-
#else
198-
__HAL_SPI_ENABLE(&SPIx);
199-
for (uint32_t i = 0; i < 4; i++) {
200-
#if TFT_MISO_PIN != TFT_MOSI_PIN
201-
while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) {}
202-
SPIx.Instance->DR = 0;
203-
#endif
204-
while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_RXNE)) {}
205-
data = (data << 8) | SPIx.Instance->DR;
206-
}
207-
#endif
161+
for (i = 0; i < 4; i++) {
162+
#if TFT_MISO_PIN != TFT_MOSI_PIN
163+
while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) {}
164+
SPIx.Instance->DR = 0;
165+
#endif
166+
while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_RXNE)) {}
167+
data = (data << 8) | SPIx.Instance->DR;
168+
}
208169

209170
dataTransferEnd();
210-
SPIx.Init.BaudRatePrescaler = oldPrescaler;
171+
172+
SPIx.Init.BaudRatePrescaler = BaudRatePrescaler;
211173
#endif
212174

213175
return data >> 7;
@@ -220,9 +182,6 @@ bool TFT_SPI::isBusy() {
220182
#elif defined(STM32F4xx)
221183
#define __IS_DMA_ENABLED(__HANDLE__) ((__HANDLE__)->Instance->CR & DMA_SxCR_EN)
222184
#define __IS_DMA_CONFIGURED(__HANDLE__) ((__HANDLE__)->Instance->PAR != 0)
223-
#elif defined(STM32H7xx)
224-
#define __IS_DMA_ENABLED(__HANDLE__) (((DMA_Stream_TypeDef *)((__HANDLE__)->Instance))->CR & DMA_SxCR_EN)
225-
#define __IS_DMA_CONFIGURED(__HANDLE__) (((DMA_Stream_TypeDef *)((__HANDLE__)->Instance))->PAR != 0)
226185
#endif
227186

228187
if (!__IS_DMA_CONFIGURED(&DMAtx)) return false;
@@ -234,13 +193,8 @@ bool TFT_SPI::isBusy() {
234193
else {
235194
// Check if DMA transfer completed flag is set
236195
if (__HAL_DMA_GET_FLAG(&DMAtx, __HAL_DMA_GET_TC_FLAG_INDEX(&DMAtx)) == 0) return true;
237-
#ifdef STM32H7xx
238-
// Check if SPI data transfer is completed
239-
if (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_EOT)) return true;
240-
#else
241-
// Check if SPI is idle
242-
if (__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) return true;
243-
#endif
196+
// Check if SPI transmit butter is empty and SPI is idle
197+
if ((!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) || (__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY))) return true;
244198
}
245199

246200
abort();
@@ -251,40 +205,22 @@ void TFT_SPI::abort() {
251205
HAL_DMA_Abort(&DMAtx); // Abort DMA transfer if any
252206
HAL_DMA_DeInit(&DMAtx);
253207

254-
#ifdef STM32H7xx
255-
CLEAR_BIT(SPIx.Instance->CFG1, SPI_CFG1_TXDMAEN);
256-
__HAL_SPI_CLEAR_EOTFLAG(&SPIx);
257-
__HAL_SPI_CLEAR_TXTFFLAG(&SPIx);
258-
#else
259-
CLEAR_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN);
260-
#endif
208+
CLEAR_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN);
261209

262-
dataTransferEnd(); // Stop SPI and deselect CS
210+
dataTransferEnd(); // Stop SPI and deselect CS
263211
}
264212

265213
void TFT_SPI::transmit(uint16_t data) {
266214
#if TFT_MISO_PIN == TFT_MOSI_PIN
267215
SPI_1LINE_TX(&SPIx);
268216
#endif
269217

270-
#ifdef STM32H7xx
271-
MODIFY_REG(SPIx.Instance->CR2, SPI_CR2_TSIZE, 1);
272-
__HAL_SPI_ENABLE(&SPIx);
273-
SET_BIT(SPIx.Instance->CR1, SPI_CR1_CSTART);
274-
275-
SPIx.Instance->TXDR = data;
218+
__HAL_SPI_ENABLE(&SPIx);
276219

277-
while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_SR_EOT)) {}
220+
SPIx.Instance->DR = data;
278221

279-
__HAL_SPI_CLEAR_EOTFLAG(&SPIx);
280-
__HAL_SPI_CLEAR_TXTFFLAG(&SPIx);
281-
#else
282-
__HAL_SPI_ENABLE(&SPIx);
283-
SPIx.Instance->DR = data;
284-
while (__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {}
285-
#endif
286-
287-
__HAL_SPI_DISABLE(&SPIx);
222+
while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_TXE)) {}
223+
while ( __HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {}
288224

289225
#if TFT_MISO_PIN != TFT_MOSI_PIN
290226
__HAL_SPI_CLEAR_OVRFLAG(&SPIx); // Clear overrun flag in 2 Lines communication mode because received data is not read
@@ -301,38 +237,35 @@ void TFT_SPI::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t coun
301237

302238
dataTransferBegin();
303239

304-
#ifdef STM32H7xx
305-
HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->TXDR), count);
240+
HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->DR), count);
241+
__HAL_SPI_ENABLE(&SPIx);
306242

307-
CLEAR_BIT(SPIx.Instance->CFG1, SPI_CFG1_TXDMAEN);
308-
MODIFY_REG(SPIx.Instance->CR2, SPI_CR2_TSIZE, count);
309-
SET_BIT(SPIx.Instance->CFG1, SPI_CFG1_TXDMAEN); // Enable Tx DMA Request
310-
__HAL_SPI_ENABLE(&SPIx);
311-
SET_BIT(SPIx.Instance->CR1, SPI_CR1_CSTART);
312-
#else
313-
HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->DR), count);
314-
315-
__HAL_SPI_ENABLE(&SPIx);
316-
SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request
317-
#endif
243+
SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request
318244

319245
TERN_(TFT_SHARED_IO, while (isBusy()));
320246
}
321247

322248
void TFT_SPI::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) {
323-
transmitDMA(memoryIncrease, data, count);
249+
DMAtx.Init.MemInc = memoryIncrease;
250+
HAL_DMA_Init(&DMAtx);
251+
252+
if (TFT_MISO_PIN == TFT_MOSI_PIN)
253+
SPI_1LINE_TX(&SPIx);
254+
255+
dataTransferBegin();
256+
257+
HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(SPIx.Instance->DR), count);
258+
__HAL_SPI_ENABLE(&SPIx);
259+
260+
SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request
324261

325262
HAL_DMA_PollForTransfer(&DMAtx, HAL_DMA_FULL_TRANSFER, HAL_MAX_DELAY);
326-
#ifdef STM32H7xx
327-
while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_SR_EOT)) {}
328-
#else
329-
while (__HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {}
330-
#endif
263+
while ( __HAL_SPI_GET_FLAG(&SPIx, SPI_FLAG_BSY)) {}
331264
abort();
332265
}
333266

334267
#if ENABLED(USE_SPI_DMA_TC)
335-
void TFT_SPI::transmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count) {
268+
void TFT_SPI::TransmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count) {
336269

337270
DMAtx.Init.MemInc = memoryIncrease;
338271
HAL_DMA_Init(&DMAtx);

Marlin/src/HAL/STM32/tft/tft_spi.h

+3-6
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@
2525
#include "stm32f1xx_hal.h"
2626
#elif defined(STM32F4xx)
2727
#include "stm32f4xx_hal.h"
28-
#elif defined(STM32H7xx)
29-
#include "stm32h7xx_hal.h"
3028
#else
31-
#error SPI TFT is currently only supported on STM32F1, STM32F4 and STM32H7 hardware.
29+
#error SPI TFT is currently only supported on STM32F1 and STM32F4 hardware.
3230
#endif
3331

3432
#ifndef LCD_READ_ID
@@ -40,7 +38,6 @@
4038

4139
#define DATASIZE_8BIT SPI_DATASIZE_8BIT
4240
#define DATASIZE_16BIT SPI_DATASIZE_16BIT
43-
#define DATASIZE_32BIT SPI_DATASIZE_32BIT
4441
#define TFT_IO_DRIVER TFT_SPI
4542
#define DMA_MAX_WORDS 0xFFFF
4643

@@ -54,7 +51,7 @@ class TFT_SPI {
5451
static void transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count);
5552
static void transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t count);
5653
#if ENABLED(USE_SPI_DMA_TC)
57-
static void transmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count);
54+
static void TransmitDMA_IT(uint32_t memoryIncrease, uint16_t *data, uint16_t count);
5855
#endif
5956

6057
public:
@@ -74,7 +71,7 @@ class TFT_SPI {
7471
static void writeMultiple_DMA(uint16_t color, uint16_t count) { static uint16_t data; data = color; transmitDMA(DMA_MINC_DISABLE, &data, count); }
7572

7673
#if ENABLED(USE_SPI_DMA_TC)
77-
static void writeSequenceIT(uint16_t *data, uint16_t count) { transmitDMA_IT(DMA_MINC_ENABLE, data, count); }
74+
static void writeSequenceIT(uint16_t *data, uint16_t count) { TransmitDMA_IT(DMA_MINC_ENABLE, data, count); }
7875
inline static void DMA_IRQHandler() { HAL_DMA_IRQHandler(&TFT_SPI::DMAtx); }
7976
#endif
8077

Marlin/src/HAL/STM32/tft/xpt2046.cpp

+7-37
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ void XPT2046::init() {
5656
SPIx.Init.NSS = SPI_NSS_SOFT;
5757
SPIx.Init.Mode = SPI_MODE_MASTER;
5858
SPIx.Init.Direction = SPI_DIRECTION_2LINES;
59+
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
5960
SPIx.Init.CLKPhase = SPI_PHASE_2EDGE;
6061
SPIx.Init.CLKPolarity = SPI_POLARITY_HIGH;
6162
SPIx.Init.DataSize = SPI_DATASIZE_8BIT;
@@ -64,20 +65,6 @@ void XPT2046::init() {
6465
SPIx.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
6566
SPIx.Init.CRCPolynomial = 10;
6667

67-
#ifndef STM32H7xx
68-
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; // 4.5 MBit/s for F103 and 5.25 MBit/s for F407
69-
#else
70-
SPIx.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; // 5 MBit/s for H743
71-
SPIx.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
72-
SPIx.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
73-
SPIx.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;
74-
SPIx.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE;
75-
SPIx.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE;
76-
SPIx.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;
77-
SPIx.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE;
78-
SPIx.Init.IOSwap = SPI_IO_SWAP_DISABLE;
79-
#endif
80-
8168
pinmap_pinout(digitalPinToPinName(TOUCH_SCK_PIN), PinMap_SPI_SCLK);
8269
pinmap_pinout(digitalPinToPinName(TOUCH_MOSI_PIN), PinMap_SPI_MOSI);
8370
pinmap_pinout(digitalPinToPinName(TOUCH_MISO_PIN), PinMap_SPI_MISO);
@@ -154,30 +141,13 @@ uint16_t XPT2046::getRawData(const XPTCoordinate coordinate) {
154141
}
155142

156143
uint16_t XPT2046::hardwareIO(uint16_t data) {
157-
#ifdef STM32H7xx
158-
MODIFY_REG(SPIx.Instance->CR2, SPI_CR2_TSIZE, 1);
159-
__HAL_SPI_ENABLE(&SPIx);
160-
SET_BIT(SPIx.Instance->CR1, SPI_CR1_CSTART);
161-
162-
SPIx.Instance->TXDR = data;
144+
__HAL_SPI_ENABLE(&SPIx);
145+
while ((SPIx.Instance->SR & SPI_FLAG_TXE) != SPI_FLAG_TXE) {}
146+
SPIx.Instance->DR = data;
147+
while ((SPIx.Instance->SR & SPI_FLAG_RXNE) != SPI_FLAG_RXNE) {}
148+
__HAL_SPI_DISABLE(&SPIx);
163149

164-
while (!__HAL_SPI_GET_FLAG(&SPIx, SPI_SR_EOT)) {}
165-
data = SPIx.Instance->RXDR;
166-
167-
__HAL_SPI_DISABLE(&SPIx);
168-
__HAL_SPI_CLEAR_EOTFLAG(&SPIx);
169-
__HAL_SPI_CLEAR_TXTFFLAG(&SPIx);
170-
171-
return data;
172-
#else
173-
__HAL_SPI_ENABLE(&SPIx);
174-
while ((SPIx.Instance->SR & SPI_FLAG_TXE) != SPI_FLAG_TXE) {}
175-
SPIx.Instance->DR = data;
176-
while ((SPIx.Instance->SR & SPI_FLAG_RXNE) != SPI_FLAG_RXNE) {}
177-
__HAL_SPI_DISABLE(&SPIx);
178-
179-
return SPIx.Instance->DR;
180-
#endif
150+
return SPIx.Instance->DR;
181151
}
182152

183153
uint16_t XPT2046::softwareIO(uint16_t data) {

0 commit comments

Comments
 (0)