mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/sta-core.git
synced 2025-06-10 00:36:00 +00:00
Added readMemory and writeMemory implementation for STM32
This commit is contained in:
parent
bbb8f3505e
commit
92723fe164
@ -24,7 +24,9 @@ namespace sta
|
||||
bool transfer(uint8_t value, uint32_t timeout = STA_MAX_TIMEOUT) override;
|
||||
bool transfer16(uint16_t value, uint32_t timeout = STA_MAX_TIMEOUT) override;
|
||||
bool transfer(const uint8_t * buffer, size_t size, uint32_t timeout = STA_MAX_TIMEOUT) override;
|
||||
bool writeMemory(uint8_t regAddr, const uint8_t * buffer, size_t size, uint32_t timeout = STA_MAX_TIMEOUT) override;
|
||||
bool receive(uint8_t * buffer, size_t size, uint32_t timeout = STA_MAX_TIMEOUT) override;
|
||||
bool readMemory(uint8_t regAddr, uint8_t * buffer, size_t size, uint32_t timeout = STA_MAX_TIMEOUT) override;
|
||||
bool fill(uint8_t value, size_t count, uint32_t timeout = STA_MAX_TIMEOUT) override;
|
||||
private:
|
||||
I2C_HandleTypeDef * handle_;
|
||||
|
@ -75,9 +75,17 @@ namespace sta
|
||||
return res == HAL_OK;
|
||||
}
|
||||
|
||||
bool STM32I2C::writeMemory(uint8_t regAddr, const uint8_t * buffer, size_t size, uint32_t timeout /* = STA_MAX_TIMEOUT */)
|
||||
{
|
||||
if (blocking_) {
|
||||
return HAL_I2C_Mem_Write(handle_, address_, regAddr, 1, buffer, size, timeout) == HAL_OK;
|
||||
} else {
|
||||
return HAL_I2C_Mem_Write_IT(handle_, address_, regAddr, 1, buffer, size) == HAL_OK;
|
||||
}
|
||||
}
|
||||
|
||||
bool STM32I2C::receive(uint8_t * buffer, size_t size, uint32_t timeout /* = STA_MAX_TIMEOUT */)
|
||||
{
|
||||
|
||||
if (blocking_) {
|
||||
if (master_) {
|
||||
return HAL_I2C_Master_Receive(handle_, address_, buffer, size, timeout) == HAL_OK;
|
||||
@ -93,6 +101,15 @@ namespace sta
|
||||
}
|
||||
}
|
||||
|
||||
bool STM32I2C::readMemory(uint8_t regAddr, uint8_t * buffer, size_t size, uint32_t timeout /* = STA_MAX_TIMEOUT */)
|
||||
{
|
||||
if (blocking_) {
|
||||
return HAL_I2C_Mem_Read(handle_, address_, regAddr, 1, buffer, size, timeout) == HAL_OK;
|
||||
} else {
|
||||
return HAL_I2C_Mem_Read_IT(handle_, address_, regAddr, 1, buffer, size) == HAL_OK;
|
||||
}
|
||||
}
|
||||
|
||||
bool STM32I2C::fill(uint8_t value, size_t count, uint32_t timeout /* = STA_MAX_TIMEOUT */)
|
||||
{
|
||||
// Initialize a buffer of size count and fill it with the value.
|
||||
|
Loading…
x
Reference in New Issue
Block a user