mirror of https://github.com/ARMmbed/mbed-os.git
Remove eventual pending stop bit before start
parent
d459d87749
commit
9a9c147e49
|
@ -100,7 +100,7 @@ void i2c_init(i2c_t *obj, PinName sda, PinName scl)
|
||||||
|
|
||||||
void i2c_frequency(i2c_t *obj, int hz)
|
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);
|
I2cHandle.Instance = (I2C_TypeDef *)(obj->i2c);
|
||||||
int timeout;
|
int timeout;
|
||||||
|
|
||||||
|
@ -135,8 +135,8 @@ inline int i2c_start(i2c_t *obj)
|
||||||
// Clear Acknowledge failure flag
|
// Clear Acknowledge failure flag
|
||||||
__HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_AF);
|
__HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_AF);
|
||||||
|
|
||||||
// Generate the START condition
|
// Generate the START condition and remove an eventual pending STOP bit
|
||||||
i2c->CR1 |= I2C_CR1_START;
|
i2c->CR1 = ((i2c->CR1 & ~I2C_CR1_STOP) | I2C_CR1_START);
|
||||||
|
|
||||||
// Wait the START condition has been correctly sent
|
// Wait the START condition has been correctly sent
|
||||||
timeout = FLAG_TIMEOUT;
|
timeout = FLAG_TIMEOUT;
|
||||||
|
|
Loading…
Reference in New Issue