aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/hal/platforms/STM32/i2c_lld.c4
-rw-r--r--os/hal/src/i2c.c9
-rw-r--r--testhal/STM32/I2C/main.c2
3 files changed, 11 insertions, 4 deletions
diff --git a/os/hal/platforms/STM32/i2c_lld.c b/os/hal/platforms/STM32/i2c_lld.c
index 9dc3a66bc..1ac7e4309 100644
--- a/os/hal/platforms/STM32/i2c_lld.c
+++ b/os/hal/platforms/STM32/i2c_lld.c
@@ -215,7 +215,7 @@ static void i2c_serve_event_interrupt(I2CDriver *i2cp) {
if (i2cp->id_slave_config->id_callback != NULL)
i2cp->id_slave_config->id_callback(i2cp, i2cp->id_slave_config);
- else /* No callback function set - generate stop */
+ else /* No callback function set. Generate stop */
i2c_lld_master_stop(i2cp);
return;
@@ -497,7 +497,7 @@ void i2c_lld_master_start(I2CDriver *i2cp){
while (i2cp->id_i2c->CR1 & I2C_CR1_START);
/* enable interrupts from I2C hardware. They will disable in driver state
- machine after the tranafer finish.*/
+ machine after the transfer finish.*/
i2cp->id_i2c->CR2 |= I2C_CR2_ITEVTEN | I2C_CR2_ITBUFEN;
}
diff --git a/os/hal/src/i2c.c b/os/hal/src/i2c.c
index 11d4fccfa..ad9a5d0ac 100644
--- a/os/hal/src/i2c.c
+++ b/os/hal/src/i2c.c
@@ -138,7 +138,9 @@ void i2cMasterStart(I2CDriver *i2cp){
chDbgCheck((i2cp != NULL), "i2cMasterTransmit");
+ chSysLock();
i2c_lld_master_start(i2cp);
+ chSysUnlock();
}
/**
@@ -149,8 +151,9 @@ void i2cMasterStart(I2CDriver *i2cp){
void i2cMasterStop(I2CDriver *i2cp){
chDbgCheck((i2cp != NULL), "i2cMasterTransmit");
-
+ chSysLock();
i2c_lld_master_stop(i2cp);
+ chSysUnlock();
}
/**
@@ -168,7 +171,9 @@ void i2cMasterTransmit(I2CDriver *i2cp, I2CSlaveConfig *i2cscfg) {
"i2cMasterTransmit(), #1",
"not active");
+ chSysLock();
i2c_lld_master_transmit(i2cp, i2cscfg);
+ chSysUnlock();
}
@@ -186,7 +191,9 @@ void i2cMasterReceive(I2CDriver *i2cp, I2CSlaveConfig *i2cscfg) {
"i2cMasterReceive(), #1",
"not active");
+ chSysLock();
i2c_lld_master_receive(i2cp, i2cscfg);
+ chSysUnlock();
}
diff --git a/testhal/STM32/I2C/main.c b/testhal/STM32/I2C/main.c
index 860e179d4..793f73f49 100644
--- a/testhal/STM32/I2C/main.c
+++ b/testhal/STM32/I2C/main.c
@@ -36,7 +36,7 @@ static msg_t PollTmp75Thread(void *arg) {
systime_t time = chTimeNow();
while (TRUE) {
- time += MS2ST(1000);
+ time += MS2ST(1001);
/* Call reading function */
request_temperature();
chThdSleepUntil(time);