Use direct register access in SPI transfer
This commit is contained in:
parent
17bd008026
commit
b5fa0d8ee4
|
@ -77,6 +77,7 @@ void SPIClass::beginTransaction(SPISettings settings) {
|
||||||
}
|
}
|
||||||
|
|
||||||
HAL_SPI_Init(&spiHandle);
|
HAL_SPI_Init(&spiHandle);
|
||||||
|
__HAL_SPI_ENABLE(&spiHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SPIClass::endTransaction() {
|
void SPIClass::endTransaction() {
|
||||||
|
|
|
@ -91,10 +91,19 @@ class SPIClass {
|
||||||
};
|
};
|
||||||
|
|
||||||
inline uint8_t SPIClass::transfer(uint8_t data) {
|
inline uint8_t SPIClass::transfer(uint8_t data) {
|
||||||
|
|
||||||
|
spiHandle.Instance->DR = data;
|
||||||
|
while(__HAL_SPI_GET_FLAG(&spiHandle, SPI_FLAG_RXNE) == RESET);
|
||||||
|
while(__HAL_SPI_GET_FLAG(&spiHandle, SPI_FLAG_BSY) == SET);
|
||||||
|
|
||||||
|
return spiHandle.Instance->DR;
|
||||||
|
|
||||||
|
/*
|
||||||
if (HAL_SPI_TransmitReceive(&spiHandle, &data, &data, 1, 1000) != HAL_OK) {
|
if (HAL_SPI_TransmitReceive(&spiHandle, &data, &data, 1, 1000) != HAL_OK) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
inline uint16_t SPIClass::transfer16(uint16_t data) {
|
inline uint16_t SPIClass::transfer16(uint16_t data) {
|
||||||
if (HAL_SPI_TransmitReceive(&spiHandle, (uint8_t*)&data, (uint8_t*)&data, 2, 1000) != HAL_OK) {
|
if (HAL_SPI_TransmitReceive(&spiHandle, (uint8_t*)&data, (uint8_t*)&data, 2, 1000) != HAL_OK) {
|
||||||
|
|
Loading…
Reference in New Issue