Add transferReceive to SPI interface

This commit is contained in:
Henrik Stickann 2022-04-11 12:45:04 +02:00
parent f195ceebb1
commit dea989ffac
5 changed files with 31 additions and 4 deletions

View File

@ -32,6 +32,7 @@ namespace sta
void transfer(uint8_t value) override; void transfer(uint8_t value) override;
void transfer(const uint8_t * buffer, size_t size) override; void transfer(const uint8_t * buffer, size_t size) override;
void transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size) override;
void transfer16(uint16_t value) override; void transfer16(uint16_t value) override;
void fill(uint8_t value, size_t count) override; void fill(uint8_t value, size_t count) override;

View File

@ -43,9 +43,17 @@ namespace sta
* @brief Send data from buffer. * @brief Send data from buffer.
* *
* @param buffer Source buffer * @param buffer Source buffer
* @param size Number of bytes in buffer * @param size Number of bytes to transfer
*/ */
void transfer(const uint8_t * buffer, size_t size); void transfer(const uint8_t * buffer, size_t size);
/**
* @brief Send and receive data simultaneously.
*
* @param txBuffer Send buffer
* @param rxBuffer Receive buffer
* @param size Number of bytes to transfer
*/
void transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size);
/** /**
* @brief Send two bytes of data. * @brief Send two bytes of data.
* *

View File

@ -31,9 +31,17 @@ namespace sta
* @brief Send data from buffer. * @brief Send data from buffer.
* *
* @param buffer Source buffer * @param buffer Source buffer
* @param size Number of bytes in buffer * @param size Number of bytes to transfer
*/ */
virtual void transfer(const uint8_t * buffer, size_t size) = 0; virtual void transfer(const uint8_t * buffer, size_t size) = 0;
/**
* @brief Send and receive data simultaneously.
*
* @param txBuffer Send buffer
* @param rxBuffer Receive buffer
* @param size Number of bytes to transfer
*/
virtual void transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size) = 0;
/** /**
* @brief Send two bytes of data. * @brief Send two bytes of data.

View File

@ -15,9 +15,14 @@ namespace sta
HAL_SPI_Transmit(handle_, &data, 1, HAL_MAX_DELAY); HAL_SPI_Transmit(handle_, &data, 1, HAL_MAX_DELAY);
} }
void HalSpiInterface::transfer(const uint8_t * data, size_t size) void HalSpiInterface::transfer(const uint8_t * buffer, size_t size)
{ {
HAL_SPI_Transmit(handle_, const_cast<uint8_t *>(data), size, HAL_MAX_DELAY); HAL_SPI_Transmit(handle_, const_cast<uint8_t *>(buffer), size, HAL_MAX_DELAY);
}
void HalSpiInterface::transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size)
{
HAL_SPI_TransmitReceive(handle_, const_cast<uint8_t *>(txBuffer), rxBuffer, size, HAL_MAX_DELAY);
} }

View File

@ -34,6 +34,11 @@ namespace sta
intf_->transfer(data, size); intf_->transfer(data, size);
} }
void SpiDevice::transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size)
{
intf_->transfer(txBuffer, rxBuffer, size);
}
void SpiDevice::transfer16(uint16_t data) void SpiDevice::transfer16(uint16_t data)
{ {
intf_->transfer16(data); intf_->transfer16(data);