Jeroen van Zoeren / mbed-dev

Dependents:   Ophaalbrug-dev

Fork of mbed-dev by mbed official

Revision:
12:7ebf5ad709a3
Parent:
0:9b334a45a8ff
Child:
23:ee8ca7052b3c
--- a/targets/hal/TARGET_STM/TARGET_STM32F4/i2c_api.c	Wed Oct 28 10:00:10 2015 +0000
+++ b/targets/hal/TARGET_STM/TARGET_STM32F4/i2c_api.c	Wed Oct 28 13:00:10 2015 +0000
@@ -100,7 +100,7 @@
 
 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 @@
     // 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;