stmhal/hal/i2c: reapply HAL commit ea040a4
for f4
This commit is contained in:
parent
e8b435d1f8
commit
a9fb88e1dc
@ -2996,21 +2996,6 @@ HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAdd
|
|||||||
|
|
||||||
if(hi2c->XferSize > 0U)
|
if(hi2c->XferSize > 0U)
|
||||||
{
|
{
|
||||||
/* Set the I2C DMA transfer complete callback */
|
|
||||||
hi2c->hdmatx->XferCpltCallback = I2C_DMAXferCplt;
|
|
||||||
|
|
||||||
/* Set the DMA error callback */
|
|
||||||
hi2c->hdmatx->XferErrorCallback = I2C_DMAError;
|
|
||||||
|
|
||||||
/* Set the unused DMA callbacks to NULL */
|
|
||||||
hi2c->hdmatx->XferHalfCpltCallback = NULL;
|
|
||||||
hi2c->hdmatx->XferM1CpltCallback = NULL;
|
|
||||||
hi2c->hdmatx->XferM1HalfCpltCallback = NULL;
|
|
||||||
hi2c->hdmatx->XferAbortCallback = NULL;
|
|
||||||
|
|
||||||
/* Enable the DMA Stream */
|
|
||||||
HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->DR, hi2c->XferSize);
|
|
||||||
|
|
||||||
/* Send Slave Address and Memory Address */
|
/* Send Slave Address and Memory Address */
|
||||||
if(I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
|
if(I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
|
||||||
{
|
{
|
||||||
@ -3027,6 +3012,24 @@ HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAdd
|
|||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* message from ea040a4f9ace1c50abc22ab755415305fd2bda41 */
|
||||||
|
/* dpgeorge: DMA initialisation is moved to after sending the address */
|
||||||
|
|
||||||
|
/* Set the I2C DMA transfer complete callback */
|
||||||
|
hi2c->hdmatx->XferCpltCallback = I2C_DMAXferCplt;
|
||||||
|
|
||||||
|
/* Set the DMA error callback */
|
||||||
|
hi2c->hdmatx->XferErrorCallback = I2C_DMAError;
|
||||||
|
|
||||||
|
/* Set the unused DMA callbacks to NULL */
|
||||||
|
hi2c->hdmatx->XferHalfCpltCallback = NULL;
|
||||||
|
hi2c->hdmatx->XferM1CpltCallback = NULL;
|
||||||
|
hi2c->hdmatx->XferM1HalfCpltCallback = NULL;
|
||||||
|
hi2c->hdmatx->XferAbortCallback = NULL;
|
||||||
|
|
||||||
|
/* Enable the DMA Stream */
|
||||||
|
HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->DR, Size);
|
||||||
|
|
||||||
/* Clear ADDR flag */
|
/* Clear ADDR flag */
|
||||||
__HAL_I2C_CLEAR_ADDRFLAG(hi2c);
|
__HAL_I2C_CLEAR_ADDRFLAG(hi2c);
|
||||||
@ -3118,21 +3121,6 @@ HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddr
|
|||||||
|
|
||||||
if(hi2c->XferSize > 0U)
|
if(hi2c->XferSize > 0U)
|
||||||
{
|
{
|
||||||
/* Set the I2C DMA transfer complete callback */
|
|
||||||
hi2c->hdmarx->XferCpltCallback = I2C_DMAXferCplt;
|
|
||||||
|
|
||||||
/* Set the DMA error callback */
|
|
||||||
hi2c->hdmarx->XferErrorCallback = I2C_DMAError;
|
|
||||||
|
|
||||||
/* Set the unused DMA callbacks to NULL */
|
|
||||||
hi2c->hdmarx->XferHalfCpltCallback = NULL;
|
|
||||||
hi2c->hdmarx->XferM1CpltCallback = NULL;
|
|
||||||
hi2c->hdmarx->XferM1HalfCpltCallback = NULL;
|
|
||||||
hi2c->hdmarx->XferAbortCallback = NULL;
|
|
||||||
|
|
||||||
/* Enable the DMA Stream */
|
|
||||||
HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->DR, (uint32_t)hi2c->pBuffPtr, hi2c->XferSize);
|
|
||||||
|
|
||||||
/* Send Slave Address and Memory Address */
|
/* Send Slave Address and Memory Address */
|
||||||
if(I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
|
if(I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
|
||||||
{
|
{
|
||||||
@ -3149,6 +3137,21 @@ HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddr
|
|||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set the I2C DMA transfer complete callback */
|
||||||
|
hi2c->hdmarx->XferCpltCallback = I2C_DMAXferCplt;
|
||||||
|
|
||||||
|
/* Set the DMA error callback */
|
||||||
|
hi2c->hdmarx->XferErrorCallback = I2C_DMAError;
|
||||||
|
|
||||||
|
/* Set the unused DMA callbacks to NULL */
|
||||||
|
hi2c->hdmarx->XferHalfCpltCallback = NULL;
|
||||||
|
hi2c->hdmarx->XferM1CpltCallback = NULL;
|
||||||
|
hi2c->hdmarx->XferM1HalfCpltCallback = NULL;
|
||||||
|
hi2c->hdmarx->XferAbortCallback = NULL;
|
||||||
|
|
||||||
|
/* Enable the DMA Stream */
|
||||||
|
HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->DR, (uint32_t)pData, Size);
|
||||||
|
|
||||||
if(Size == 1U)
|
if(Size == 1U)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user