aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/hal/ports/STM32/LLD/I2Cv2/i2c_lld.c6
-rw-r--r--readme.txt2
2 files changed, 5 insertions, 3 deletions
diff --git a/os/hal/ports/STM32/LLD/I2Cv2/i2c_lld.c b/os/hal/ports/STM32/LLD/I2Cv2/i2c_lld.c
index 991e77b01..a83ff2989 100644
--- a/os/hal/ports/STM32/LLD/I2Cv2/i2c_lld.c
+++ b/os/hal/ports/STM32/LLD/I2Cv2/i2c_lld.c
@@ -164,8 +164,8 @@ static void i2c_lld_setup_rx_transfer(I2CDriver *i2cp) {
/* Configures the CR2 registers with both the calculated and static
settings.*/
- dp->CR2 = (dp->CR2 & ~I2C_CR2_NBYTES) | i2cp->config->cr2 | I2C_CR2_RD_WRN |
- (n << 16U) | reload;
+ dp->CR2 = (dp->CR2 & ~(I2C_CR2_NBYTES | I2C_CR2_RELOAD)) | i2cp->config->cr2 |
+ I2C_CR2_RD_WRN | (n << 16U) | reload;
}
/**
@@ -192,7 +192,7 @@ static void i2c_lld_setup_tx_transfer(I2CDriver *i2cp) {
/* Configures the CR2 registers with both the calculated and static
settings.*/
- dp->CR2 = (dp->CR2 & ~I2C_CR2_NBYTES) | i2cp->config->cr2 |
+ dp->CR2 = (dp->CR2 & ~(I2C_CR2_NBYTES | I2C_CR2_RELOAD)) | i2cp->config->cr2 |
(n << 16U) | reload;
}
diff --git a/readme.txt b/readme.txt
index 016fd93b4..674734afa 100644
--- a/readme.txt
+++ b/readme.txt
@@ -135,6 +135,8 @@
- HAL: Updated STM32F0xx headers to STM32CubeF0 version 1.3.0. Added support
for STM32F030xC, STM32F070x6, STM32F070xB, STM32F091xC,
STM32F098xx devices.
+- HAL: Fixed STM32 I2Cv2 driver fails on transfers greater than 255 bytes
+ (bug #673)(backported to 3.0.4).
- HAL: Fixed STM32 I2Cv2 DMA conflict (bug #671)(backported to 3.0.4).
- HAL: Fixed I2S clock selection not working in STM32F4xx HAL (bug #667)
(backported to 3.0.4 and 2.6.10).