Skip to content

Commit a9fb88e

Browse files
author
Krzysztof Blazewicz
committed
stmhal/hal/i2c: reapply HAL commit ea040a4 for f4
1 parent e8b435d commit a9fb88e

1 file changed

Lines changed: 33 additions & 30 deletions

File tree

stmhal/hal/f4/src/stm32f4xx_hal_i2c.c

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2996,21 +2996,6 @@ HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAdd
29962996

29972997
if(hi2c->XferSize > 0U)
29982998
{
2999-
/* Set the I2C DMA transfer complete callback */
3000-
hi2c->hdmatx->XferCpltCallback = I2C_DMAXferCplt;
3001-
3002-
/* Set the DMA error callback */
3003-
hi2c->hdmatx->XferErrorCallback = I2C_DMAError;
3004-
3005-
/* Set the unused DMA callbacks to NULL */
3006-
hi2c->hdmatx->XferHalfCpltCallback = NULL;
3007-
hi2c->hdmatx->XferM1CpltCallback = NULL;
3008-
hi2c->hdmatx->XferM1HalfCpltCallback = NULL;
3009-
hi2c->hdmatx->XferAbortCallback = NULL;
3010-
3011-
/* Enable the DMA Stream */
3012-
HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->DR, hi2c->XferSize);
3013-
30142999
/* Send Slave Address and Memory Address */
30153000
if(I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
30163001
{
@@ -3027,6 +3012,24 @@ HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAdd
30273012
return HAL_TIMEOUT;
30283013
}
30293014
}
3015+
3016+
/* message from ea040a4f9ace1c50abc22ab755415305fd2bda41 */
3017+
/* dpgeorge: DMA initialisation is moved to after sending the address */
3018+
3019+
/* Set the I2C DMA transfer complete callback */
3020+
hi2c->hdmatx->XferCpltCallback = I2C_DMAXferCplt;
3021+
3022+
/* Set the DMA error callback */
3023+
hi2c->hdmatx->XferErrorCallback = I2C_DMAError;
3024+
3025+
/* Set the unused DMA callbacks to NULL */
3026+
hi2c->hdmatx->XferHalfCpltCallback = NULL;
3027+
hi2c->hdmatx->XferM1CpltCallback = NULL;
3028+
hi2c->hdmatx->XferM1HalfCpltCallback = NULL;
3029+
hi2c->hdmatx->XferAbortCallback = NULL;
3030+
3031+
/* Enable the DMA Stream */
3032+
HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->DR, Size);
30303033

30313034
/* Clear ADDR flag */
30323035
__HAL_I2C_CLEAR_ADDRFLAG(hi2c);
@@ -3118,21 +3121,6 @@ HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddr
31183121

31193122
if(hi2c->XferSize > 0U)
31203123
{
3121-
/* Set the I2C DMA transfer complete callback */
3122-
hi2c->hdmarx->XferCpltCallback = I2C_DMAXferCplt;
3123-
3124-
/* Set the DMA error callback */
3125-
hi2c->hdmarx->XferErrorCallback = I2C_DMAError;
3126-
3127-
/* Set the unused DMA callbacks to NULL */
3128-
hi2c->hdmarx->XferHalfCpltCallback = NULL;
3129-
hi2c->hdmarx->XferM1CpltCallback = NULL;
3130-
hi2c->hdmarx->XferM1HalfCpltCallback = NULL;
3131-
hi2c->hdmarx->XferAbortCallback = NULL;
3132-
3133-
/* Enable the DMA Stream */
3134-
HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->DR, (uint32_t)hi2c->pBuffPtr, hi2c->XferSize);
3135-
31363124
/* Send Slave Address and Memory Address */
31373125
if(I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
31383126
{
@@ -3149,6 +3137,21 @@ HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddr
31493137
return HAL_TIMEOUT;
31503138
}
31513139
}
3140+
3141+
/* Set the I2C DMA transfer complete callback */
3142+
hi2c->hdmarx->XferCpltCallback = I2C_DMAXferCplt;
3143+
3144+
/* Set the DMA error callback */
3145+
hi2c->hdmarx->XferErrorCallback = I2C_DMAError;
3146+
3147+
/* Set the unused DMA callbacks to NULL */
3148+
hi2c->hdmarx->XferHalfCpltCallback = NULL;
3149+
hi2c->hdmarx->XferM1CpltCallback = NULL;
3150+
hi2c->hdmarx->XferM1HalfCpltCallback = NULL;
3151+
hi2c->hdmarx->XferAbortCallback = NULL;
3152+
3153+
/* Enable the DMA Stream */
3154+
HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->DR, (uint32_t)pData, Size);
31523155

31533156
if(Size == 1U)
31543157
{

0 commit comments

Comments
 (0)