|
STM32G474xx HAL 用户手册
|
SMARTCARD 发送和接收函数。 更多...
函数 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_Transmit (SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size, uint32_t Timeout) |
| 以阻塞模式发送指定数量的数据。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_Receive (SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout) |
| 以阻塞模式接收指定数量的数据。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_Transmit_IT (SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size) |
| 以中断模式发送指定数量的数据。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_Receive_IT (SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size) |
| 以中断模式接收指定数量的数据。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_Transmit_DMA (SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size) |
| 以 DMA 模式发送指定数量的数据。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_Receive_DMA (SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size) |
| 以 DMA 模式接收指定数量的数据。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_Abort (SMARTCARD_HandleTypeDef *hsmartcard) |
| 中止正在进行的传输(阻塞模式)。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_AbortTransmit (SMARTCARD_HandleTypeDef *hsmartcard) |
| 中止正在进行的发送传输(阻塞模式)。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_AbortReceive (SMARTCARD_HandleTypeDef *hsmartcard) |
| 中止正在进行的接收传输(阻塞模式)。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_Abort_IT (SMARTCARD_HandleTypeDef *hsmartcard) |
| 中止正在进行的传输(中断模式)。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_AbortTransmit_IT (SMARTCARD_HandleTypeDef *hsmartcard) |
| 中止正在进行的发送传输(中断模式)。 | |
| HAL_StatusTypeDef | HAL_SMARTCARD_AbortReceive_IT (SMARTCARD_HandleTypeDef *hsmartcard) |
| 中止正在进行的接收传输(中断模式)。 | |
| void | HAL_SMARTCARD_IRQHandler (SMARTCARD_HandleTypeDef *hsmartcard) |
| 处理 SMARTCARD 中断请求。 | |
| __weak void | HAL_SMARTCARD_TxCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard) |
| 发送传输完成回调函数。 | |
| __weak void | HAL_SMARTCARD_RxCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard) |
| 接收传输完成回调函数。 | |
| __weak void | HAL_SMARTCARD_ErrorCallback (SMARTCARD_HandleTypeDef *hsmartcard) |
| SMARTCARD 错误回调函数。 | |
| __weak void | HAL_SMARTCARD_AbortCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard) |
| SMARTCARD 中止完成回调函数。 | |
| __weak void | HAL_SMARTCARD_AbortTransmitCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard) |
| SMARTCARD 中止完成回调函数。 | |
| __weak void | HAL_SMARTCARD_AbortReceiveCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard) |
| SMARTCARD 中止接收完成回调函数。 | |
SMARTCARD 发送和接收函数。
==============================================================================
##### IO操作函数 #####
==============================================================================
[..]
本小节提供了一组用于管理SMARTCARD数据传输的函数。
[..]
智能卡是一种单线半双工通信协议。
智能卡接口设计用于支持ISO 7816-3标准中定义的异步协议智能卡。
USART应配置为:
(+) 8位加奇偶校验:在USART_CR1寄存器中设置M=1和PCE=1
(+) 发送和接收时使用1.5个停止位:在USART_CR2寄存器中设置STOP=11。
[..]
(#) 有两种传输模式:
(##) 阻塞模式:通信以轮询方式进行。
所有数据处理的HAL状态在传输完成后由同一函数返回。
(##) 非阻塞模式:通信使用中断或DMA进行,
相关API返回HAL状态。
数据处理的结束将通过专用SMARTCARD IRQ(使用中断模式时)或DMA IRQ(使用DMA模式时)指示。
(##) HAL_SMARTCARD_TxCpltCallback()、HAL_SMARTCARD_RxCpltCallback()用户回调函数
将分别在发送或接收过程结束时执行。
当检测到通信错误时,将执行HAL_SMARTCARD_ErrorCallback()用户回调函数。
(#) 阻塞模式API为:
(##) HAL_SMARTCARD_Transmit()
(##) HAL_SMARTCARD_Receive()
(#) 使用中断的非阻塞模式API为:
(##) HAL_SMARTCARD_Transmit_IT()
(##) HAL_SMARTCARD_Receive_IT()
(##) HAL_SMARTCARD_IRQHandler()
(#) 使用DMA的非阻塞模式函数为:
(##) HAL_SMARTCARD_Transmit_DMA()
(##) HAL_SMARTCARD_Receive_DMA()
(#) 在非阻塞模式下提供一组传输完成回调函数:
(##) HAL_SMARTCARD_TxCpltCallback()
(##) HAL_SMARTCARD_RxCpltCallback()
(##) HAL_SMARTCARD_ErrorCallback()
[..]
(#) 非阻塞模式传输可以使用中止API中止:
(##) HAL_SMARTCARD_Abort()
(##) HAL_SMARTCARD_AbortTransmit()
(##) HAL_SMARTCARD_AbortReceive()
(##) HAL_SMARTCARD_Abort_IT()
(##) HAL_SMARTCARD_AbortTransmit_IT()
(##) HAL_SMARTCARD_AbortReceive_IT()
(#) 对于基于中断的中止服务(HAL_SMARTCARD_Abortxxx_IT),
提供一组中止完成回调函数:
(##) HAL_SMARTCARD_AbortCpltCallback()
(##) HAL_SMARTCARD_AbortTransmitCpltCallback()
(##) HAL_SMARTCARD_AbortReceiveCpltCallback()
(#) 在非阻塞模式传输中,可能的错误分为两类。
错误处理如下:
(##) 错误被视为可恢复且非阻塞:传输可以继续进行到底,但错误严重性
由用户评估:这涉及帧错误、
奇偶错误或噪声错误(中断模式接收时)。
接收到的字符随后被检索并存储在Rx缓冲区中,
设置错误代码以允许用户识别错误类型,
并执行HAL_SMARTCARD_ErrorCallback()用户回调函数。传输在SMARTCARD端继续进行。
如果用户想要中止它,应调用中止服务。
(##) 错误被视为阻塞:传输无法正常完成并被中止。
这涉及中断模式发送时的帧错误、中断模式接收时的溢出错误以及DMA模式下的所有错误。
设置错误代码以允许用户识别错误类型,
并执行HAL_SMARTCARD_ErrorCallback()用户回调函数。
| HAL_StatusTypeDef HAL_SMARTCARD_Abort | ( | SMARTCARD_HandleTypeDef * | hsmartcard | ) |
中止正在进行的传输(阻塞模式)。
| hsmartcard | 指向SMARTCARD_HandleTypeDef结构的指针,该结构包含指定SMARTCARD模块的配置信息。 |
| HAL | 状态 |
定义在文件 stm32g4xx_hal_smartcard.c 的第 1317 行。
引用 __HAL_SMARTCARD_CLEAR_FLAG, __SMARTCARD_HandleTypeDef::ErrorCode, __SMARTCARD_HandleTypeDef::gState, HAL_DMA_Abort(), HAL_DMA_ERROR_TIMEOUT, HAL_DMA_GetError(), HAL_SMARTCARD_ERROR_DMA, HAL_SMARTCARD_ERROR_NONE, HAL_SMARTCARD_STATE_READY, __SMARTCARD_HandleTypeDef::hdmarx, __SMARTCARD_HandleTypeDef::hdmatx, __SMARTCARD_HandleTypeDef::Instance, __SMARTCARD_HandleTypeDef::RxState, __SMARTCARD_HandleTypeDef::RxXferCount, SMARTCARD_CLEAR_EOBF, SMARTCARD_CLEAR_FEF, SMARTCARD_CLEAR_NEF, SMARTCARD_CLEAR_OREF, SMARTCARD_CLEAR_PEF, SMARTCARD_CLEAR_RTOF, __SMARTCARD_HandleTypeDef::TxXferCount, 和 __DMA_HandleTypeDef::XferAbortCallback。
| HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT | ( | SMARTCARD_HandleTypeDef * | hsmartcard | ) |
中止正在进行的传输(中断模式)。
| hsmartcard | 指向SMARTCARD_HandleTypeDef结构的指针,该结构包含指定SMARTCARD模块的配置信息。 |