From 88247bf5e9b1f3c73894c5c10347416ad201fe0a Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Thu, 26 Nov 2015 10:33:12 +0000 Subject: [PATCH] Fixed bug #673. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8529 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/STM32/LLD/I2Cv2/i2c_lld.c | 6 +++--- readme.txt | 2 ++ 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).