SWPMI Transmit/Receive functions.
More...
|
| HAL_StatusTypeDef | HAL_SWPMI_Transmit (SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout) |
| | Transmit an amount of data in blocking mode. More...
|
| |
| HAL_StatusTypeDef | HAL_SWPMI_Receive (SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout) |
| | Receive an amount of data in blocking mode. More...
|
| |
| HAL_StatusTypeDef | HAL_SWPMI_Transmit_IT (SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size) |
| | Transmit an amount of data in non-blocking mode with interrupt. More...
|
| |
| HAL_StatusTypeDef | HAL_SWPMI_Receive_IT (SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size) |
| | Receive an amount of data in non-blocking mode with interrupt. More...
|
| |
| HAL_StatusTypeDef | HAL_SWPMI_Transmit_DMA (SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size) |
| | Transmit an amount of data in non-blocking mode with DMA interrupt. More...
|
| |
| HAL_StatusTypeDef | HAL_SWPMI_Receive_DMA (SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size) |
| | Receive an amount of data in non-blocking mode with DMA interrupt. More...
|
| |
| HAL_StatusTypeDef | HAL_SWPMI_DMAStop (SWPMI_HandleTypeDef *hswpmi) |
| | Stop all DMA transfers. More...
|
| |
| HAL_StatusTypeDef | HAL_SWPMI_EnableLoopback (SWPMI_HandleTypeDef *hswpmi) |
| | Enable the Loopback mode. More...
|
| |
| HAL_StatusTypeDef | HAL_SWPMI_DisableLoopback (SWPMI_HandleTypeDef *hswpmi) |
| | Disable the Loopback mode. More...
|
| |
SWPMI Transmit/Receive functions.
===============================================================================
##### IO operation methods #####
===============================================================================
[..]
This subsection provides a set of functions allowing to manage the SWPMI
data transfers.
(#) There are two modes of transfer:
(++) Blocking mode: The communication is performed in polling mode.
The HAL status of all data processing is returned by the same function
after finishing transfer.
(++) Non-Blocking mode: The communication is performed using Interrupts
or DMA. The end of the data processing will be indicated through the
dedicated SWPMI Interrupt handler (HAL_SWPMI_IRQHandler()) when using Interrupt mode or
the selected DMA channel interrupt handler when using DMA mode.
The HAL_SWPMI_TxCpltCallback(), HAL_SWPMI_RxCpltCallback() user callbacks
will be executed respectively at the end of the transmit or receive process.
The HAL_SWPMI_ErrorCallback() user callback will be executed when a communication error is detected.
(#) Blocking mode API's are:
(++) HAL_SWPMI_Transmit()
(++) HAL_SWPMI_Receive()
(#) Non-Blocking mode API's with Interrupt are:
(++) HAL_SWPMI_Transmit_IT()
(++) HAL_SWPMI_Receive_IT()
(++) HAL_SWPMI_IRQHandler()
(#) Non-Blocking mode API's with DMA are:
(++) HAL_SWPMI_Transmit_DMA()
(++) HAL_SWPMI_Receive_DMA()
(++) HAL_SWPMI_DMAPause()
(++) HAL_SWPMI_DMAResume()
(++) HAL_SWPMI_DMAStop()
(#) A set of Transfer Complete Callbacks are provided in Non-Blocking mode:
(++) HAL_SWPMI_TxHalfCpltCallback()
(++) HAL_SWPMI_TxCpltCallback()
(++) HAL_SWPMI_RxHalfCpltCallback()
(++) HAL_SWPMI_RxCpltCallback()
(++) HAL_SWPMI_ErrorCallback()
(#) The capability to launch the above IO operations in loopback mode for
user application verification:
(++) HAL_SWPMI_EnableLoopback()
(++) HAL_SWPMI_DisableLoopback()
◆ HAL_SWPMI_DisableLoopback()
Disable the Loopback mode.
- Parameters
-
- Note
- Loopback mode is to be used only for test purposes
- Return values
-
Definition at line 1237 of file stm32l4xx_hal_swpmi.c.
1239 HAL_StatusTypeDef status =
HAL_OK;
1245 CLEAR_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
1248 CLEAR_BIT(hswpmi->Instance->CR, SWPMI_CR_LPBK);
1251 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
◆ HAL_SWPMI_DMAStop()
Stop all DMA transfers.
- Parameters
-
- Return values
-
Definition at line 1162 of file stm32l4xx_hal_swpmi.c.
1164 HAL_StatusTypeDef status =
HAL_OK;
1170 CLEAR_BIT(hswpmi->Instance->CR, (SWPMI_CR_TXDMA | SWPMI_CR_RXDMA));
1173 if(hswpmi->hdmatx != NULL)
1177 hswpmi->ErrorCode |= HAL_SWPMI_ERROR_DMA;
1182 if(hswpmi->hdmarx != NULL)
1186 hswpmi->ErrorCode |= HAL_SWPMI_ERROR_DMA;
1192 CLEAR_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Abort the DMA Transfer.
◆ HAL_SWPMI_EnableLoopback()
Enable the Loopback mode.
- Parameters
-
- Note
- Loopback mode is to be used only for test purposes
- Return values
-
Definition at line 1209 of file stm32l4xx_hal_swpmi.c.
1211 HAL_StatusTypeDef status =
HAL_OK;
1217 CLEAR_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
1220 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_LPBK);
1223 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
◆ HAL_SWPMI_Receive()
| HAL_StatusTypeDef HAL_SWPMI_Receive |
( |
SWPMI_HandleTypeDef * |
hswpmi, |
|
|
uint32_t * |
pData, |
|
|
uint16_t |
Size, |
|
|
uint32_t |
Timeout |
|
) |
| |
Receive an amount of data in blocking mode.
- Parameters
-
| hswpmi | pointer to a SWPMI_HandleTypeDef structure that contains the configuration information for SWPMI module. |
| pData | Pointer to data buffer |
| Size | Amount of data to be received |
| Timeout | Timeout duration |
- Return values
-
Definition at line 757 of file stm32l4xx_hal_swpmi.c.
760 HAL_StatusTypeDef status =
HAL_OK;
765 if((pData == NULL ) || (Size == 0U))
774 tmp_state = hswpmi->State;
783 CLEAR_BIT(hswpmi->Instance->IER, SWPMI_IT_SRIE | SWPMI_IT_RIE | SWPMI_IT_RXBERIE | SWPMI_IT_RXOVRIE | SWPMI_IT_RXBFIE);
786 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
798 if(HAL_IS_BIT_SET(hswpmi->Instance->ISR, SWPMI_FLAG_RXNE))
800 *ptmp_data = hswpmi->Instance->RDR;
807 if(Timeout != HAL_MAX_DELAY)
809 if(((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
811 status = HAL_TIMEOUT;
816 }
while(tmp_size != 0U);
820 if(HAL_IS_BIT_SET(hswpmi->Instance->ISR, SWPMI_FLAG_RXBFF))
823 WRITE_REG(hswpmi->Instance->ICR, SWPMI_FLAG_RXBFF);
843 if((status !=
HAL_OK) && (status != HAL_BUSY))
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
HAL_SWPMI_StateTypeDef
HAL SWPMI State structures definition.
◆ HAL_SWPMI_Receive_DMA()
| HAL_StatusTypeDef HAL_SWPMI_Receive_DMA |
( |
SWPMI_HandleTypeDef * |
hswpmi, |
|
|
uint32_t * |
pData, |
|
|
uint16_t |
Size |
|
) |
| |
Receive an amount of data in non-blocking mode with DMA interrupt.
- Parameters
-
| hswpmi | SWPMI handle |
| pData | Pointer to data buffer |
| Size | Amount of data to be received |
- Return values
-
Definition at line 1078 of file stm32l4xx_hal_swpmi.c.
1080 HAL_StatusTypeDef status =
HAL_OK;
1083 if((pData == NULL ) || (Size == 0U))
1092 tmp_state = hswpmi->State;
1096 hswpmi->pRxBuffPtr = pData;
1097 hswpmi->RxXferSize = Size;
1098 hswpmi->ErrorCode = HAL_SWPMI_ERROR_NONE;
1106 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
1123 if(
HAL_DMA_Start_IT(hswpmi->hdmarx, (uint32_t)&hswpmi->Instance->RDR, (uint32_t)hswpmi->pRxBuffPtr, Size) !=
HAL_OK)
1125 hswpmi->State = tmp_state;
1126 hswpmi->ErrorCode = HAL_SWPMI_ERROR_DMA;
1138 __HAL_SWPMI_ENABLE_IT(hswpmi, SWPMI_IT_RXBERIE | SWPMI_IT_RXOVRIE);
1142 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_RXDMA);
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
static void SWPMI_DMAReceiveCplt(DMA_HandleTypeDef *hdma)
DMA SWPMI receive process complete callback.
static void SWPMI_DMAError(DMA_HandleTypeDef *hdma)
DMA SWPMI communication error callback.
static void SWPMI_DMARxHalfCplt(DMA_HandleTypeDef *hdma)
DMA SWPMI receive process half complete callback.
HAL_SWPMI_StateTypeDef
HAL SWPMI State structures definition.
◆ HAL_SWPMI_Receive_IT()
| HAL_StatusTypeDef HAL_SWPMI_Receive_IT |
( |
SWPMI_HandleTypeDef * |
hswpmi, |
|
|
uint32_t * |
pData, |
|
|
uint16_t |
Size |
|
) |
| |
Receive an amount of data in non-blocking mode with interrupt.
- Parameters
-
| hswpmi | SWPMI handle |
| pData | Pointer to data buffer |
| Size | Amount of data to be received |
- Return values
-
Definition at line 928 of file stm32l4xx_hal_swpmi.c.
930 HAL_StatusTypeDef status =
HAL_OK;
933 if((pData == NULL ) || (Size == 0U))
942 tmp_state = hswpmi->State;
946 hswpmi->pRxBuffPtr = pData;
947 hswpmi->RxXferSize = Size;
948 hswpmi->RxXferCount = Size;
949 hswpmi->ErrorCode = HAL_SWPMI_ERROR_NONE;
957 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
970 __HAL_SWPMI_ENABLE_IT(hswpmi, SWPMI_IT_RIE | SWPMI_IT_RXBERIE | SWPMI_IT_RXOVRIE | SWPMI_IT_RXBFIE);
HAL_SWPMI_StateTypeDef
HAL SWPMI State structures definition.
◆ HAL_SWPMI_Transmit()
| HAL_StatusTypeDef HAL_SWPMI_Transmit |
( |
SWPMI_HandleTypeDef * |
hswpmi, |
|
|
uint32_t * |
pData, |
|
|
uint16_t |
Size, |
|
|
uint32_t |
Timeout |
|
) |
| |
Transmit an amount of data in blocking mode.
- Parameters
-
| hswpmi | pointer to a SWPMI_HandleTypeDef structure that contains the configuration information for SWPMI module. |
| pData | Pointer to data buffer |
| Size | Amount of data to be sent |
| Timeout | Timeout duration |
- Return values
-
Definition at line 646 of file stm32l4xx_hal_swpmi.c.
649 HAL_StatusTypeDef status =
HAL_OK;
654 if((pData == NULL ) || (Size == 0U))
663 tmp_state = hswpmi->State;
672 __HAL_SWPMI_DISABLE_IT(hswpmi, SWPMI_IT_TCIE | SWPMI_IT_TIE | SWPMI_IT_TXUNRIE | SWPMI_IT_TXBEIE);
675 __HAL_SWPMI_CLEAR_FLAG(hswpmi, SWPMI_FLAG_TXBEF | SWPMI_FLAG_TXUNRF | SWPMI_FLAG_TCF);
678 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
690 if(HAL_IS_BIT_SET(hswpmi->Instance->ISR, SWPMI_FLAG_TXE))
692 hswpmi->Instance->TDR = *ptmp_data;
699 if(Timeout != HAL_MAX_DELAY)
701 if(((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
703 status = HAL_TIMEOUT;
708 }
while(tmp_size != 0U);
714 hswpmi->ErrorCode |= HAL_SWPMI_ERROR_TXBEF_TIMEOUT;
716 status = HAL_TIMEOUT;
738 if((status !=
HAL_OK) && (status != HAL_BUSY))
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
HAL_SWPMI_StateTypeDef
HAL SWPMI State structures definition.
static HAL_StatusTypeDef SWPMI_WaitOnFlagSetUntilTimeout(SWPMI_HandleTypeDef *hswpmi, uint32_t Flag, uint32_t Tickstart, uint32_t Timeout)
Handle SWPMI Communication Timeout.
◆ HAL_SWPMI_Transmit_DMA()
| HAL_StatusTypeDef HAL_SWPMI_Transmit_DMA |
( |
SWPMI_HandleTypeDef * |
hswpmi, |
|
|
uint32_t * |
pData, |
|
|
uint16_t |
Size |
|
) |
| |
Transmit an amount of data in non-blocking mode with DMA interrupt.
- Parameters
-
| hswpmi | SWPMI handle |
| pData | Pointer to data buffer |
| Size | Amount of data to be sent |
- Return values
-
Definition at line 991 of file stm32l4xx_hal_swpmi.c.
993 HAL_StatusTypeDef status =
HAL_OK;
996 if((pData == NULL ) || (Size == 0U))
1005 tmp_state = hswpmi->State;
1009 hswpmi->pTxBuffPtr = pData;
1010 hswpmi->TxXferSize = Size;
1011 hswpmi->TxXferCount = Size;
1012 hswpmi->ErrorCode = HAL_SWPMI_ERROR_NONE;
1020 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
1037 if(
HAL_DMA_Start_IT(hswpmi->hdmatx, (uint32_t)hswpmi->pTxBuffPtr, (uint32_t)&hswpmi->Instance->TDR, Size) !=
HAL_OK)
1039 hswpmi->State = tmp_state;
1040 hswpmi->ErrorCode = HAL_SWPMI_ERROR_DMA;
1052 __HAL_SWPMI_ENABLE_IT(hswpmi, SWPMI_IT_TXUNRIE);
1056 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_TXDMA);
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
static void SWPMI_DMATransmitCplt(DMA_HandleTypeDef *hdma)
DMA SWPMI transmit process complete callback.
static void SWPMI_DMAError(DMA_HandleTypeDef *hdma)
DMA SWPMI communication error callback.
static void SWPMI_DMATxHalfCplt(DMA_HandleTypeDef *hdma)
DMA SWPMI transmit process half complete callback.
HAL_SWPMI_StateTypeDef
HAL SWPMI State structures definition.
◆ HAL_SWPMI_Transmit_IT()
| HAL_StatusTypeDef HAL_SWPMI_Transmit_IT |
( |
SWPMI_HandleTypeDef * |
hswpmi, |
|
|
uint32_t * |
pData, |
|
|
uint16_t |
Size |
|
) |
| |
Transmit an amount of data in non-blocking mode with interrupt.
- Parameters
-
| hswpmi | pointer to a SWPMI_HandleTypeDef structure that contains the configuration information for SWPMI module. |
| pData | Pointer to data buffer |
| Size | Amount of data to be sent |
- Return values
-
Definition at line 861 of file stm32l4xx_hal_swpmi.c.
863 HAL_StatusTypeDef status =
HAL_OK;
866 if((pData == NULL ) || (Size == 0U))
875 tmp_state = hswpmi->State;
879 hswpmi->pTxBuffPtr = pData;
880 hswpmi->TxXferSize = Size;
881 hswpmi->TxXferCount = Size;
882 hswpmi->ErrorCode = HAL_SWPMI_ERROR_NONE;
890 SET_BIT(hswpmi->Instance->CR, SWPMI_CR_SWPACT);
898 __HAL_SWPMI_ENABLE_IT(hswpmi, SWPMI_IT_TXUNRIE);
907 __HAL_SWPMI_ENABLE_IT(hswpmi, SWPMI_IT_TIE | SWPMI_IT_TXBEIE | SWPMI_IT_TCIE);
HAL_SWPMI_StateTypeDef
HAL SWPMI State structures definition.