From 164c402d1ca9efc47f2b8c06ab453100b5fcf00d Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Wed, 22 Jul 2020 22:33:18 +1000 Subject: [PATCH] Update I2CBB.cpp --- workspace/TS100/Core/BSP/Miniware/I2CBB.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/workspace/TS100/Core/BSP/Miniware/I2CBB.cpp b/workspace/TS100/Core/BSP/Miniware/I2CBB.cpp index 27ce6811..88ec616d 100644 --- a/workspace/TS100/Core/BSP/Miniware/I2CBB.cpp +++ b/workspace/TS100/Core/BSP/Miniware/I2CBB.cpp @@ -13,7 +13,7 @@ #define SDA_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET) #define SDA_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port,SDA2_Pin)==GPIO_PIN_SET?1:0) #define SCL_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port,SCL2_Pin)==GPIO_PIN_SET?1:0) -#define I2C_DELAY() {for(int xx=0;xx<1000;xx++){asm("nop");}} +#define I2C_DELAY() {for(int xx=0;xx<20;xx++){asm("nop");}} SemaphoreHandle_t I2CBB::I2CSemaphore = NULL; StaticSemaphore_t I2CBB::xSemaphoreBuffer; SemaphoreHandle_t I2CBB::I2CSemaphore2 = NULL; @@ -34,10 +34,11 @@ void I2CBB::init() { unlock(); unlock2(); //unstick bus - for (int i = 0; i < 8; i++) { - read_bit(); - } - stop(); +// start(); +// for (int i = 0; i < 8; i++) { +// read_bit(); +// } +// stop(); } bool I2CBB::probe(uint8_t address) { @@ -64,6 +65,9 @@ bool I2CBB::Mem_Read(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, unlock(); return false; } + SCL_LOW(); + I2C_DELAY(); +// stop(); start(); ack = send(DevAddress | 1); if (!ack) { @@ -234,7 +238,7 @@ bool I2CBB::send(uint8_t value) { } SDA_HIGH(); - bool ack = read_bit() == 0; + bool ack = (read_bit() == 0); return ack; }