Remove eventual pending stop bit before start

pull/1400/head
bcostm 2015-10-28 13:17:19 +01:00
parent d459d87749
commit 9a9c147e49
1 changed files with 3 additions and 3 deletions

View File

@ -100,7 +100,7 @@ void i2c_init(i2c_t *obj, PinName sda, PinName scl)
void i2c_frequency(i2c_t *obj, int hz)
{
MBED_ASSERT((hz != 0) && (hz <= 400000));
MBED_ASSERT((hz > 0) && (hz <= 400000));
I2cHandle.Instance = (I2C_TypeDef *)(obj->i2c);
int timeout;
@ -135,8 +135,8 @@ inline int i2c_start(i2c_t *obj)
// Clear Acknowledge failure flag
__HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_AF);
// Generate the START condition
i2c->CR1 |= I2C_CR1_START;
// Generate the START condition and remove an eventual pending STOP bit
i2c->CR1 = ((i2c->CR1 & ~I2C_CR1_STOP) | I2C_CR1_START);
// Wait the START condition has been correctly sent
timeout = FLAG_TIMEOUT;