Skip to content

Commit

Permalink
Merge pull request #14668 from ikmdani/fix_i2c_read_13967
Browse files Browse the repository at this point in the history
Driver: I2C: STM32F2/STM32F4/STM32L1: Fix alternate i2c read.
  • Loading branch information
adbridge committed May 24, 2021
2 parents 95dadc6 + 8f2c45c commit 10a2da9
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 3 deletions.
2 changes: 1 addition & 1 deletion targets/TARGET_STM/TARGET_STM32F2/objects.h
Expand Up @@ -122,7 +122,7 @@ struct i2c_s {
PinName scl;
IRQn_Type event_i2cIRQ;
IRQn_Type error_i2cIRQ;
uint8_t XferOperation;
uint32_t XferOperation;
volatile uint8_t event;
#if DEVICE_I2CSLAVE
uint8_t slave;
Expand Down
2 changes: 1 addition & 1 deletion targets/TARGET_STM/TARGET_STM32F4/objects.h
Expand Up @@ -106,7 +106,7 @@ struct i2c_s {
int scl_func;
IRQn_Type event_i2cIRQ;
IRQn_Type error_i2cIRQ;
uint8_t XferOperation;
uint32_t XferOperation;
volatile uint8_t event;
#if DEVICE_I2CSLAVE
uint8_t slave;
Expand Down
8 changes: 7 additions & 1 deletion targets/TARGET_STM/i2c_api.c
Expand Up @@ -195,6 +195,10 @@ static I2C_HandleTypeDef *i2c_handles[I2C_NUM];
#define FLAG_TIMEOUT ((int)0x1000)
#endif

#ifdef I2C_IP_VERSION_V1
#define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE))
#endif

/* Declare i2c_init_internal to be used in this file */
void i2c_init_internal(i2c_t *obj, const i2c_pinmap_t *pinmap);

Expand Down Expand Up @@ -1159,7 +1163,9 @@ void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
/* Get object ptr based on handler ptr */
i2c_t *obj = get_i2c_obj(hi2c);
struct i2c_s *obj_s = I2C_S(obj);

#ifdef I2C_IP_VERSION_V1
hi2c->PreviousState = I2C_STATE_NONE;
#endif
/* Set event flag */
obj_s->event = I2C_EVENT_TRANSFER_COMPLETE;
}
Expand Down

0 comments on commit 10a2da9

Please sign in to comment.