Use direct register access in SPI transfer

This commit is contained in:
Daniel Fekete 2017-04-12 22:23:27 +02:00
parent 17bd008026
commit b5fa0d8ee4
2 changed files with 10 additions and 0 deletions

View File

@ -77,6 +77,7 @@ void SPIClass::beginTransaction(SPISettings settings) {
}
HAL_SPI_Init(&spiHandle);
__HAL_SPI_ENABLE(&spiHandle);
}
void SPIClass::endTransaction() {

View File

@ -91,10 +91,19 @@ class SPIClass {
};
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) {
return 0;
}
return data;
*/
}
inline uint16_t SPIClass::transfer16(uint16_t data) {
if (HAL_SPI_TransmitReceive(&spiHandle, (uint8_t*)&data, (uint8_t*)&data, 2, 1000) != HAL_OK) {