From 9ac4be8b759bb2cedeb999ce5e87d983261beded Mon Sep 17 00:00:00 2001 From: Jean-François Milants Date: Thu, 8 Apr 2021 20:07:24 +0200 Subject: TwiMaster is now based on the NRFX TWI driver, as it handles more edge cases and workarounds for errors on the bus. Reset the TWI bus after the soft-reset of the motion sensor to workaround issues on the TWI bus. --- src/drivers/TwiMaster.h | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'src/drivers/TwiMaster.h') diff --git a/src/drivers/TwiMaster.h b/src/drivers/TwiMaster.h index 399e3d0f..6e3ff721 100644 --- a/src/drivers/TwiMaster.h +++ b/src/drivers/TwiMaster.h @@ -3,13 +3,13 @@ #include #include // NRF_TWIM_Type #include +#include namespace Pinetime { namespace Drivers { class TwiMaster { public: enum class Modules { TWIM1 }; - enum class Frequencies {Khz100, Khz250, Khz400}; enum class ErrorCodes {NoError, TransactionFailed}; struct Parameters { uint32_t frequency; @@ -27,21 +27,13 @@ namespace Pinetime { void Wakeup(); private: - ErrorCodes ReadWithRetry(uint8_t deviceAddress, uint8_t registerAddress, uint8_t* buffer, size_t size); - ErrorCodes WriteWithRetry(uint8_t deviceAddress, uint8_t registerAddress, const uint8_t* data, size_t size); - - ErrorCodes Read(uint8_t deviceAddress, uint8_t* buffer, size_t size, bool stop); - ErrorCodes Write(uint8_t deviceAddress, const uint8_t* data, size_t size, bool stop); - void FixHwFreezed(); - NRF_TWIM_Type* twiBaseAddress; - SemaphoreHandle_t mutex; + nrfx_twim_t twim; const Modules module; const Parameters params; + SemaphoreHandle_t mutex; static constexpr uint8_t maxDataSize{8}; static constexpr uint8_t registerSize{1}; uint8_t internalBuffer[maxDataSize + registerSize]; - uint32_t txStartedCycleCount = 0; - static constexpr uint32_t HwFreezedDelay{161000}; }; } } \ No newline at end of file -- cgit v1.2.3-70-g09d2