GFX Develop Branch
This commit is contained in:
@ -12,7 +12,7 @@
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2017 STMicroelectronics.
|
||||
* Copyright (c) 2019 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
@ -53,7 +53,6 @@
|
||||
(#) Initialize the PSSI registers by calling the @ref HAL_PSSI_Init(), configure also the low level Hardware
|
||||
(GPIO, CLOCK, NVIC...etc) by calling the customized @ref HAL_PSSI_MspInit(&hpssi) API.
|
||||
|
||||
|
||||
(#) For PSSI IO operations, two operation modes are available within this driver :
|
||||
|
||||
*** Polling mode IO operation ***
|
||||
@ -179,11 +178,12 @@
|
||||
* @{
|
||||
*/
|
||||
/* Private functions to handle DMA transfer */
|
||||
#if defined(HAL_DMA_MODULE_ENABLED)
|
||||
void PSSI_DMATransmitCplt(DMA_HandleTypeDef *hdma);
|
||||
void PSSI_DMAReceiveCplt(DMA_HandleTypeDef *hdma);
|
||||
void PSSI_DMAError(DMA_HandleTypeDef *hdma);
|
||||
void PSSI_DMAAbort(DMA_HandleTypeDef *hdma);
|
||||
|
||||
#endif /*HAL_DMA_MODULE_ENABLED*/
|
||||
|
||||
/* Private functions to handle IT transfer */
|
||||
static void PSSI_Error(PSSI_HandleTypeDef *hpssi, uint32_t ErrorCode);
|
||||
@ -264,6 +264,7 @@ HAL_StatusTypeDef HAL_PSSI_Init(PSSI_HandleTypeDef *hpssi)
|
||||
/* Allocate lock resource and initialize it */
|
||||
hpssi->Lock = HAL_UNLOCKED;
|
||||
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
/* Init the PSSI Callback settings */
|
||||
hpssi->TxCpltCallback = HAL_PSSI_TxCpltCallback; /* Legacy weak TxCpltCallback */
|
||||
hpssi->RxCpltCallback = HAL_PSSI_RxCpltCallback; /* Legacy weak RxCpltCallback */
|
||||
@ -277,7 +278,10 @@ HAL_StatusTypeDef HAL_PSSI_Init(PSSI_HandleTypeDef *hpssi)
|
||||
|
||||
/* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */
|
||||
hpssi->MspInitCallback(hpssi);
|
||||
|
||||
#else
|
||||
/* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */
|
||||
HAL_PSSI_MspInit(hpssi);
|
||||
#endif /*USE_HAL_PSSI_REGISTER_CALLBACKS*/
|
||||
}
|
||||
|
||||
hpssi->State = HAL_PSSI_STATE_BUSY;
|
||||
@ -320,6 +324,7 @@ HAL_StatusTypeDef HAL_PSSI_DeInit(PSSI_HandleTypeDef *hpssi)
|
||||
/* Disable the PSSI Peripheral Clock */
|
||||
HAL_PSSI_DISABLE(hpssi);
|
||||
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
if (hpssi->MspDeInitCallback == NULL)
|
||||
{
|
||||
hpssi->MspDeInitCallback = HAL_PSSI_MspDeInit; /* Legacy weak MspDeInit */
|
||||
@ -327,6 +332,10 @@ HAL_StatusTypeDef HAL_PSSI_DeInit(PSSI_HandleTypeDef *hpssi)
|
||||
|
||||
/* DeInit the low level hardware: GPIO, CLOCK, NVIC */
|
||||
hpssi->MspDeInitCallback(hpssi);
|
||||
#else
|
||||
/* DeInit the low level hardware: GPIO, CLOCK, NVIC */
|
||||
HAL_PSSI_MspDeInit(hpssi);
|
||||
#endif /*USE_HAL_PSSI_REGISTER_CALLBACKS*/
|
||||
|
||||
hpssi->ErrorCode = HAL_PSSI_ERROR_NONE;
|
||||
hpssi->State = HAL_PSSI_STATE_RESET;
|
||||
@ -354,7 +363,7 @@ __weak void HAL_PSSI_MspInit(PSSI_HandleTypeDef *hpssi)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief DeInitialize the PSSI MSP.
|
||||
* @brief De-Initialize the PSSI MSP.
|
||||
* @param hpssi Pointer to a PSSI_HandleTypeDef structure that contains
|
||||
* the configuration information for the specified PSSI.
|
||||
* @retval None
|
||||
@ -364,16 +373,17 @@ __weak void HAL_PSSI_MspDeInit(PSSI_HandleTypeDef *hpssi)
|
||||
/* Prevent unused argument(s) compilation warning */
|
||||
UNUSED(hpssi);
|
||||
|
||||
/* NOTE : This function should not be modified, when the callback is needed,
|
||||
/* NOTE : This function should not be modified; when the callback is needed,
|
||||
the HAL_PSSI_MspDeInit can be implemented in the user file
|
||||
*/
|
||||
}
|
||||
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
/**
|
||||
* @brief Register a User PSSI Callback
|
||||
* To be used instead of the weak predefined callback
|
||||
* @note The HAL_PSSI_RegisterCallback() may be called before HAL_PSSI_Init() in
|
||||
* HAL_PSSI_STATE_RESET to register callbacks for HAL_PSSI_MSPINIT_CB_ID
|
||||
* @note The HAL_PSSI_RegisterCallback() may be called before HAL_PSSI_Init() in
|
||||
* HAL_PSSI_STATE_RESET to register callbacks for HAL_PSSI_MSPINIT_CB_ID
|
||||
* and HAL_PSSI_MSPDEINIT_CB_ID.
|
||||
* @param hpssi Pointer to a PSSI_HandleTypeDef structure that contains
|
||||
* the configuration information for the specified PSSI.
|
||||
@ -474,8 +484,8 @@ HAL_StatusTypeDef HAL_PSSI_RegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSSI_
|
||||
/**
|
||||
* @brief Unregister an PSSI Callback
|
||||
* PSSI callback is redirected to the weak predefined callback
|
||||
* @note The HAL_PSSI_UnRegisterCallback() may be called before HAL_PSSI_Init() in
|
||||
* HAL_PSSI_STATE_RESET to un-register callbacks for HAL_PSSI_MSPINIT_CB_ID
|
||||
* @note The HAL_PSSI_UnRegisterCallback() may be called before HAL_PSSI_Init() in
|
||||
* HAL_PSSI_STATE_RESET to un-register callbacks for HAL_PSSI_MSPINIT_CB_ID
|
||||
* and HAL_PSSI_MSPDEINIT_CB_ID.
|
||||
* @param hpssi Pointer to a PSSI_HandleTypeDef structure that contains
|
||||
* the configuration information for the specified PSSI.
|
||||
@ -498,27 +508,27 @@ HAL_StatusTypeDef HAL_PSSI_UnRegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSS
|
||||
switch (CallbackID)
|
||||
{
|
||||
case HAL_PSSI_TX_COMPLETE_CB_ID :
|
||||
hpssi->TxCpltCallback = HAL_PSSI_TxCpltCallback; /* Legacy weak TxCpltCallback */
|
||||
hpssi->TxCpltCallback = HAL_PSSI_TxCpltCallback; /* Legacy weak TxCpltCallback */
|
||||
break;
|
||||
|
||||
case HAL_PSSI_RX_COMPLETE_CB_ID :
|
||||
hpssi->RxCpltCallback = HAL_PSSI_RxCpltCallback; /* Legacy weak RxCpltCallback */
|
||||
hpssi->RxCpltCallback = HAL_PSSI_RxCpltCallback; /* Legacy weak RxCpltCallback */
|
||||
break;
|
||||
|
||||
case HAL_PSSI_ERROR_CB_ID :
|
||||
hpssi->ErrorCallback = HAL_PSSI_ErrorCallback; /* Legacy weak ErrorCallback */
|
||||
hpssi->ErrorCallback = HAL_PSSI_ErrorCallback; /* Legacy weak ErrorCallback */
|
||||
break;
|
||||
|
||||
case HAL_PSSI_ABORT_CB_ID :
|
||||
hpssi->AbortCpltCallback = HAL_PSSI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */
|
||||
hpssi->AbortCpltCallback = HAL_PSSI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */
|
||||
break;
|
||||
|
||||
case HAL_PSSI_MSPINIT_CB_ID :
|
||||
hpssi->MspInitCallback = HAL_PSSI_MspInit; /* Legacy weak MspInit */
|
||||
hpssi->MspInitCallback = HAL_PSSI_MspInit; /* Legacy weak MspInit */
|
||||
break;
|
||||
|
||||
case HAL_PSSI_MSPDEINIT_CB_ID :
|
||||
hpssi->MspDeInitCallback = HAL_PSSI_MspDeInit; /* Legacy weak MspDeInit */
|
||||
hpssi->MspDeInitCallback = HAL_PSSI_MspDeInit; /* Legacy weak MspDeInit */
|
||||
break;
|
||||
|
||||
default :
|
||||
@ -535,11 +545,11 @@ HAL_StatusTypeDef HAL_PSSI_UnRegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSS
|
||||
switch (CallbackID)
|
||||
{
|
||||
case HAL_PSSI_MSPINIT_CB_ID :
|
||||
hpssi->MspInitCallback = HAL_PSSI_MspInit; /* Legacy weak MspInit */
|
||||
hpssi->MspInitCallback = HAL_PSSI_MspInit; /* Legacy weak MspInit */
|
||||
break;
|
||||
|
||||
case HAL_PSSI_MSPDEINIT_CB_ID :
|
||||
hpssi->MspDeInitCallback = HAL_PSSI_MspDeInit; /* Legacy weak MspDeInit */
|
||||
hpssi->MspDeInitCallback = HAL_PSSI_MspDeInit; /* Legacy weak MspDeInit */
|
||||
break;
|
||||
|
||||
default :
|
||||
@ -563,6 +573,7 @@ HAL_StatusTypeDef HAL_PSSI_UnRegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSS
|
||||
return status;
|
||||
}
|
||||
|
||||
#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
|
||||
|
||||
/**
|
||||
* @}
|
||||
@ -639,10 +650,13 @@ HAL_StatusTypeDef HAL_PSSI_Transmit(PSSI_HandleTypeDef *hpssi, uint8_t *pData, u
|
||||
HAL_PSSI_DISABLE(hpssi);
|
||||
|
||||
/* Configure transfer parameters */
|
||||
hpssi->Instance->CR |= PSSI_CR_OUTEN_OUTPUT |
|
||||
((hpssi->Init.ClockPolarity == HAL_PSSI_RISING_EDGE) ? 0U : PSSI_CR_CKPOL);
|
||||
MODIFY_REG(hpssi->Instance->CR, (PSSI_CR_OUTEN | PSSI_CR_CKPOL),
|
||||
(PSSI_CR_OUTEN_OUTPUT |((hpssi->Init.ClockPolarity == HAL_PSSI_RISING_EDGE) ? 0U : PSSI_CR_CKPOL)));
|
||||
|
||||
#if defined(HAL_DMA_MODULE_ENABLED)
|
||||
/* DMA Disable */
|
||||
hpssi->Instance->CR &= PSSI_CR_DMA_DISABLE;
|
||||
#endif /*HAL_DMA_MODULE_ENABLED*/
|
||||
|
||||
/* Enable the selected PSSI peripheral */
|
||||
HAL_PSSI_ENABLE(hpssi);
|
||||
@ -696,7 +710,6 @@ HAL_StatusTypeDef HAL_PSSI_Transmit(PSSI_HandleTypeDef *hpssi, uint8_t *pData, u
|
||||
/* Increment Buffer pointer */
|
||||
pbuffer++;
|
||||
transfer_size -= 2U;
|
||||
|
||||
}
|
||||
}
|
||||
else if (hpssi->Init.DataWidth == HAL_PSSI_32BITS)
|
||||
@ -722,7 +735,6 @@ HAL_StatusTypeDef HAL_PSSI_Transmit(PSSI_HandleTypeDef *hpssi, uint8_t *pData, u
|
||||
pbuffer++;
|
||||
transfer_size -= 4U;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -758,7 +770,6 @@ HAL_StatusTypeDef HAL_PSSI_Transmit(PSSI_HandleTypeDef *hpssi, uint8_t *pData, u
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Receives an amount of data in blocking mode.
|
||||
* @param hpssi Pointer to a PSSI_HandleTypeDef structure that contains
|
||||
@ -792,11 +803,13 @@ HAL_StatusTypeDef HAL_PSSI_Receive(PSSI_HandleTypeDef *hpssi, uint8_t *pData, ui
|
||||
/* Disable the selected PSSI peripheral */
|
||||
HAL_PSSI_DISABLE(hpssi);
|
||||
/* Configure transfer parameters */
|
||||
hpssi->Instance->CR |= PSSI_CR_OUTEN_INPUT |
|
||||
((hpssi->Init.ClockPolarity == HAL_PSSI_FALLING_EDGE) ? 0U : PSSI_CR_CKPOL);
|
||||
MODIFY_REG(hpssi->Instance->CR, (PSSI_CR_OUTEN | PSSI_CR_CKPOL),
|
||||
(PSSI_CR_OUTEN_INPUT | ((hpssi->Init.ClockPolarity == HAL_PSSI_FALLING_EDGE) ? 0U : PSSI_CR_CKPOL)));
|
||||
|
||||
#if defined(HAL_DMA_MODULE_ENABLED)
|
||||
/* DMA Disable */
|
||||
hpssi->Instance->CR &= PSSI_CR_DMA_DISABLE;
|
||||
#endif /*HAL_DMA_MODULE_ENABLED*/
|
||||
|
||||
/* Enable the selected PSSI peripheral */
|
||||
HAL_PSSI_ENABLE(hpssi);
|
||||
@ -846,7 +859,6 @@ HAL_StatusTypeDef HAL_PSSI_Receive(PSSI_HandleTypeDef *hpssi, uint8_t *pData, ui
|
||||
*pbuffer = *dr;
|
||||
pbuffer++;
|
||||
transfer_size -= 2U;
|
||||
|
||||
}
|
||||
}
|
||||
else if (hpssi->Init.DataWidth == HAL_PSSI_32BITS)
|
||||
@ -871,7 +883,6 @@ HAL_StatusTypeDef HAL_PSSI_Receive(PSSI_HandleTypeDef *hpssi, uint8_t *pData, ui
|
||||
*pbuffer = *(__IO uint32_t *)(&hpssi->Instance->DR);
|
||||
pbuffer++;
|
||||
transfer_size -= 4U;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -892,7 +903,6 @@ HAL_StatusTypeDef HAL_PSSI_Receive(PSSI_HandleTypeDef *hpssi, uint8_t *pData, ui
|
||||
return HAL_ERROR;
|
||||
}
|
||||
|
||||
|
||||
hpssi->State = HAL_PSSI_STATE_READY;
|
||||
|
||||
/* Process Unlocked */
|
||||
@ -906,6 +916,7 @@ HAL_StatusTypeDef HAL_PSSI_Receive(PSSI_HandleTypeDef *hpssi, uint8_t *pData, ui
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(HAL_DMA_MODULE_ENABLED)
|
||||
/**
|
||||
* @brief Transmit an amount of data in non-blocking mode with DMA
|
||||
* @param hpssi Pointer to a PSSI_HandleTypeDef structure that contains
|
||||
@ -992,8 +1003,6 @@ HAL_StatusTypeDef HAL_PSSI_Transmit_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pDa
|
||||
|
||||
if (dmaxferstatus == HAL_OK)
|
||||
{
|
||||
|
||||
|
||||
/* Update XferCount value */
|
||||
hpssi->XferCount -= hpssi->XferSize;
|
||||
|
||||
@ -1038,7 +1047,6 @@ HAL_StatusTypeDef HAL_PSSI_Transmit_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pDa
|
||||
|
||||
HAL_PSSI_ENABLE_IT(hpssi, PSSI_FLAG_OVR_RIS);
|
||||
}
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
else
|
||||
@ -1088,10 +1096,9 @@ HAL_StatusTypeDef HAL_PSSI_Receive_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pDat
|
||||
{
|
||||
if (hpssi->hdmarx != NULL)
|
||||
{
|
||||
|
||||
/* Configure BusWidth */
|
||||
if (hpssi->hdmatx->Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE)
|
||||
{
|
||||
if (hpssi->hdmarx->Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE)
|
||||
{
|
||||
MODIFY_REG(hpssi->Instance->CR, PSSI_CR_DMAEN | PSSI_CR_OUTEN | PSSI_CR_CKPOL, PSSI_CR_DMA_ENABLE |
|
||||
((hpssi->Init.ClockPolarity == HAL_PSSI_RISING_EDGE) ? PSSI_CR_CKPOL : 0U));
|
||||
}
|
||||
@ -1165,7 +1172,6 @@ HAL_StatusTypeDef HAL_PSSI_Receive_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pDat
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
/* Process Unlocked */
|
||||
__HAL_UNLOCK(hpssi);
|
||||
|
||||
@ -1181,8 +1187,6 @@ HAL_StatusTypeDef HAL_PSSI_Receive_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pDat
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Abort a DMA process communication with Interrupt.
|
||||
* @param hpssi Pointer to a PSSI_HandleTypeDef structure that contains
|
||||
@ -1191,7 +1195,6 @@ HAL_StatusTypeDef HAL_PSSI_Receive_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pDat
|
||||
*/
|
||||
HAL_StatusTypeDef HAL_PSSI_Abort_DMA(PSSI_HandleTypeDef *hpssi)
|
||||
{
|
||||
|
||||
/* Process Locked */
|
||||
__HAL_LOCK(hpssi);
|
||||
|
||||
@ -1206,7 +1209,6 @@ HAL_StatusTypeDef HAL_PSSI_Abort_DMA(PSSI_HandleTypeDef *hpssi)
|
||||
{
|
||||
if (hpssi->State == HAL_PSSI_STATE_BUSY_TX)
|
||||
{
|
||||
|
||||
hpssi->Instance->CR &= ~PSSI_CR_DMAEN;
|
||||
|
||||
if (hpssi->hdmatx != NULL)
|
||||
@ -1222,12 +1224,10 @@ HAL_StatusTypeDef HAL_PSSI_Abort_DMA(PSSI_HandleTypeDef *hpssi)
|
||||
hpssi->hdmatx->XferAbortCallback(hpssi->hdmatx);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/* Abort DMA RX transfer if any */
|
||||
else if (hpssi->State == HAL_PSSI_STATE_BUSY_RX)
|
||||
{
|
||||
|
||||
hpssi->Instance->CR &= ~PSSI_CR_DMAEN;
|
||||
|
||||
if (hpssi->hdmarx != NULL)
|
||||
@ -1246,12 +1246,16 @@ HAL_StatusTypeDef HAL_PSSI_Abort_DMA(PSSI_HandleTypeDef *hpssi)
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
/* Call the error callback */
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
hpssi->ErrorCallback(hpssi);
|
||||
#else
|
||||
HAL_PSSI_ErrorCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Process Unlocked */
|
||||
__HAL_UNLOCK(hpssi);
|
||||
|
||||
@ -1261,14 +1265,14 @@ HAL_StatusTypeDef HAL_PSSI_Abort_DMA(PSSI_HandleTypeDef *hpssi)
|
||||
HAL_PSSI_ENABLE_IT(hpssi, PSSI_FLAG_OVR_RIS);
|
||||
|
||||
return HAL_OK;
|
||||
|
||||
}
|
||||
#endif /*HAL_DMA_MODULE_ENABLED*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup PSSI_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
|
||||
/** @addtogroup PSSI_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
|
||||
* @{
|
||||
*/
|
||||
|
||||
@ -1284,13 +1288,12 @@ void HAL_PSSI_IRQHandler(PSSI_HandleTypeDef *hpssi)
|
||||
if (HAL_PSSI_GET_FLAG(hpssi, PSSI_FLAG_OVR_MIS) != 0U)
|
||||
{
|
||||
/* Reset handle parameters */
|
||||
|
||||
hpssi->XferCount = 0U;
|
||||
|
||||
/* Disable all interrupts */
|
||||
HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS);
|
||||
|
||||
|
||||
#if defined(HAL_DMA_MODULE_ENABLED)
|
||||
/* Abort DMA TX transfer if any */
|
||||
if ((hpssi->Instance->CR & PSSI_CR_DMAEN) == PSSI_CR_DMAEN)
|
||||
{
|
||||
@ -1317,7 +1320,6 @@ void HAL_PSSI_IRQHandler(PSSI_HandleTypeDef *hpssi)
|
||||
hpssi->hdmatx->XferAbortCallback(hpssi->hdmatx);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/* Abort DMA RX transfer if any */
|
||||
else if (hpssi->State == HAL_PSSI_STATE_BUSY_RX)
|
||||
@ -1346,10 +1348,15 @@ void HAL_PSSI_IRQHandler(PSSI_HandleTypeDef *hpssi)
|
||||
}
|
||||
else
|
||||
{
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
/* Call the corresponding callback to inform upper layer of the error */
|
||||
hpssi->ErrorCallback(hpssi);
|
||||
#else
|
||||
HAL_PSSI_ErrorCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
}
|
||||
#endif /*HAL_DMA_MODULE_ENABLED*/
|
||||
|
||||
/* If state is an abort treatment on going, don't change state */
|
||||
if (hpssi->State == HAL_PSSI_STATE_ABORT)
|
||||
@ -1359,9 +1366,12 @@ void HAL_PSSI_IRQHandler(PSSI_HandleTypeDef *hpssi)
|
||||
/* Process Unlocked */
|
||||
__HAL_UNLOCK(hpssi);
|
||||
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
/* Call the corresponding callback to inform upper layer of End of Transfer */
|
||||
hpssi->AbortCpltCallback(hpssi);
|
||||
|
||||
#else
|
||||
HAL_PSSI_AbortCpltCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1370,15 +1380,16 @@ void HAL_PSSI_IRQHandler(PSSI_HandleTypeDef *hpssi)
|
||||
/* Process Unlocked */
|
||||
__HAL_UNLOCK(hpssi);
|
||||
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
/* Call the corresponding callback to inform upper layer of End of Transfer */
|
||||
hpssi->ErrorCallback(hpssi);
|
||||
|
||||
#else
|
||||
HAL_PSSI_ErrorCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Tx Transfer complete callback.
|
||||
* @param hpssi Pointer to a PSSI_HandleTypeDef structure that contains
|
||||
@ -1411,7 +1422,6 @@ __weak void HAL_PSSI_RxCpltCallback(PSSI_HandleTypeDef *hpssi)
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief PSSI error callback.
|
||||
* @param hpssi Pointer to a PSSI_HandleTypeDef structure that contains
|
||||
@ -1469,20 +1479,19 @@ __weak void HAL_PSSI_AbortCpltCallback(PSSI_HandleTypeDef *hpssi)
|
||||
* the configuration information for the specified PSSI.
|
||||
* @retval HAL state
|
||||
*/
|
||||
HAL_PSSI_StateTypeDef HAL_PSSI_GetState(PSSI_HandleTypeDef *hpssi)
|
||||
HAL_PSSI_StateTypeDef HAL_PSSI_GetState(const PSSI_HandleTypeDef *hpssi)
|
||||
{
|
||||
/* Return PSSI handle state */
|
||||
return hpssi->State;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Return the PSSI error code.
|
||||
* @param hpssi Pointer to a PSSI_HandleTypeDef structure that contains
|
||||
* the configuration information for the specified PSSI.
|
||||
* @retval PSSI Error Code
|
||||
*/
|
||||
uint32_t HAL_PSSI_GetError(PSSI_HandleTypeDef *hpssi)
|
||||
uint32_t HAL_PSSI_GetError(const PSSI_HandleTypeDef *hpssi)
|
||||
{
|
||||
return hpssi->ErrorCode;
|
||||
}
|
||||
@ -1507,9 +1516,7 @@ uint32_t HAL_PSSI_GetError(PSSI_HandleTypeDef *hpssi)
|
||||
*/
|
||||
static void PSSI_Error(PSSI_HandleTypeDef *hpssi, uint32_t ErrorCode)
|
||||
{
|
||||
|
||||
/* Reset handle parameters */
|
||||
|
||||
hpssi->XferCount = 0U;
|
||||
|
||||
/* Set new error code */
|
||||
@ -1518,7 +1525,7 @@ static void PSSI_Error(PSSI_HandleTypeDef *hpssi, uint32_t ErrorCode)
|
||||
/* Disable all interrupts */
|
||||
HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS);
|
||||
|
||||
|
||||
#if defined(HAL_DMA_MODULE_ENABLED)
|
||||
/* Abort DMA TX transfer if any */
|
||||
if ((hpssi->Instance->CR & PSSI_CR_DMAEN) == PSSI_CR_DMAEN)
|
||||
{
|
||||
@ -1542,7 +1549,6 @@ static void PSSI_Error(PSSI_HandleTypeDef *hpssi, uint32_t ErrorCode)
|
||||
hpssi->hdmatx->XferAbortCallback(hpssi->hdmatx);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/* Abort DMA RX transfer if any */
|
||||
else if (hpssi->State == HAL_PSSI_STATE_BUSY_RX)
|
||||
@ -1571,6 +1577,7 @@ static void PSSI_Error(PSSI_HandleTypeDef *hpssi, uint32_t ErrorCode)
|
||||
/*Nothing to do*/
|
||||
}
|
||||
}
|
||||
#endif /*HAL_DMA_MODULE_ENABLED*/
|
||||
|
||||
/* If state is an abort treatment on going, don't change state */
|
||||
if (hpssi->State == HAL_PSSI_STATE_ABORT)
|
||||
@ -1581,9 +1588,11 @@ static void PSSI_Error(PSSI_HandleTypeDef *hpssi, uint32_t ErrorCode)
|
||||
__HAL_UNLOCK(hpssi);
|
||||
|
||||
/* Call the corresponding callback to inform upper layer of End of Transfer */
|
||||
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
hpssi->AbortCpltCallback(hpssi);
|
||||
|
||||
#else
|
||||
HAL_PSSI_AbortCpltCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1594,11 +1603,15 @@ static void PSSI_Error(PSSI_HandleTypeDef *hpssi, uint32_t ErrorCode)
|
||||
__HAL_UNLOCK(hpssi);
|
||||
|
||||
/* Call the corresponding callback to inform upper layer of End of Transfer */
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
hpssi->ErrorCallback(hpssi);
|
||||
|
||||
#else
|
||||
HAL_PSSI_ErrorCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(HAL_DMA_MODULE_ENABLED)
|
||||
/**
|
||||
* @brief DMA PSSI slave transmit process complete callback.
|
||||
* @param hdma DMA handle
|
||||
@ -1611,7 +1624,6 @@ void PSSI_DMATransmitCplt(DMA_HandleTypeDef *hdma)
|
||||
|
||||
uint32_t tmperror;
|
||||
|
||||
|
||||
/* Disable Interrupts */
|
||||
HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS);
|
||||
|
||||
@ -1633,12 +1645,12 @@ void PSSI_DMATransmitCplt(DMA_HandleTypeDef *hdma)
|
||||
__HAL_UNLOCK(hpssi);
|
||||
|
||||
/* Call the corresponding callback to inform upper layer of End of Transfer */
|
||||
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
hpssi->TxCpltCallback(hpssi);
|
||||
|
||||
#else
|
||||
HAL_PSSI_TxCpltCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1653,7 +1665,6 @@ void PSSI_DMAReceiveCplt(DMA_HandleTypeDef *hdma)
|
||||
|
||||
uint32_t tmperror;
|
||||
|
||||
|
||||
/* Disable Interrupts */
|
||||
HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS);
|
||||
|
||||
@ -1675,11 +1686,12 @@ void PSSI_DMAReceiveCplt(DMA_HandleTypeDef *hdma)
|
||||
__HAL_UNLOCK(hpssi);
|
||||
|
||||
/* Call the corresponding callback to inform upper layer of End of Transfer */
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
hpssi->RxCpltCallback(hpssi);
|
||||
|
||||
#else
|
||||
HAL_PSSI_RxCpltCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1703,16 +1715,23 @@ void PSSI_DMAAbort(DMA_HandleTypeDef *hdma)
|
||||
hpssi->State = HAL_PSSI_STATE_READY;
|
||||
|
||||
/* Call the corresponding callback to inform upper layer of End of Transfer */
|
||||
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
hpssi->AbortCpltCallback(hpssi);
|
||||
|
||||
#else
|
||||
HAL_PSSI_AbortCpltCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Call the corresponding callback to inform upper layer of End of Transfer */
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
hpssi->ErrorCallback(hpssi);
|
||||
#else
|
||||
HAL_PSSI_ErrorCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
}
|
||||
#endif /*HAL_DMA_MODULE_ENABLED*/
|
||||
|
||||
/**
|
||||
* @brief This function handles PSSI Communication Timeout.
|
||||
@ -1746,6 +1765,8 @@ static HAL_StatusTypeDef PSSI_WaitOnStatusUntilTimeout(PSSI_HandleTypeDef *hpssi
|
||||
}
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
#if defined(HAL_DMA_MODULE_ENABLED)
|
||||
void PSSI_DMAError(DMA_HandleTypeDef *hdma)
|
||||
{
|
||||
/* Derogation MISRAC2012-Rule-11.5 */
|
||||
@ -1753,7 +1774,6 @@ void PSSI_DMAError(DMA_HandleTypeDef *hdma)
|
||||
|
||||
uint32_t tmperror;
|
||||
|
||||
|
||||
/* Disable the selected PSSI peripheral */
|
||||
HAL_PSSI_DISABLE(hpssi);
|
||||
|
||||
@ -1777,12 +1797,14 @@ void PSSI_DMAError(DMA_HandleTypeDef *hdma)
|
||||
__HAL_UNLOCK(hpssi);
|
||||
|
||||
/* Call the corresponding callback to inform upper layer of End of Transfer */
|
||||
#if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
|
||||
hpssi->ErrorCallback(hpssi);
|
||||
|
||||
#else
|
||||
HAL_PSSI_ErrorCallback(hpssi);
|
||||
#endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif /*HAL_DMA_MODULE_ENABLED*/
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user