diff --git a/platform/i2c.c b/platform/i2c.c index 81e7f57..67d47e4 100644 --- a/platform/i2c.c +++ b/platform/i2c.c @@ -90,11 +90,14 @@ void i2cStartTransmission(I2C_TypeDef* I2Cx, uint8_t dir, uint8_t slave_addr) } } -void i2cWrite(I2C_TypeDef* I2Cx, uint8_t* data) +void i2cWrite(I2C_TypeDef* I2Cx, uint8_t* data, uint16_t len, uint32_t timeout) { - I2C_SendData(I2Cx, *data); - while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); - //while(!I2C_GetFlagStatus(I2Cx, I2C_FLAG_BTF)); + if(len-- >= 1) { + I2C_SendData(I2Cx, *data++); + } + while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_TRANSMITTED) && timeout) { + timeout--; + } } void i2cAckOn(I2C_TypeDef* I2Cx)