current_v/Drivers/FM33LG0xx_FL_Driver/Inc/fm33lg0xx_fl_u7816.h
2025-12-31 08:21:43 +08:00

969 lines
32 KiB
C

/**
*******************************************************************************************************
* @file fm33lg0xx_fl_u7816.h
* @author FMSH Application Team
* @brief Head file of U7816 FL Module
*******************************************************************************************************
* @attention
*
* Copyright (c) [2021] [Fudan Microelectronics]
* THIS SOFTWARE is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*
*******************************************************************************************************
*/
/* Define to prevent recursive inclusion---------------------------------------------------------------*/
#ifndef __FM33LG0XX_FL_U7816_H
#define __FM33LG0XX_FL_U7816_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes -------------------------------------------------------------------------------------------*/
#include "fm33lg0xx_fl_def.h"
/** @addtogroup FM33LG0XX_FL_Driver
* @{
*/
/** @defgroup U7816 U7816
* @brief U7816 FL driver
* @{
*/
/* Exported types -------------------------------------------------------------------------------------*/
/** @defgroup U7816_FL_ES_INIT U7816 Exported Init structures
* @{
*/
/**
* @brief FL U7816 Init Sturcture definition
*/
typedef struct
{
/*! 卡时钟频率 */
uint32_t outputClockFrequency;
/*! 接口发送失败后自动重装使能 */
uint32_t txAutoRetry;
/*! 自动重装次数 */
uint32_t retryCnt;
/*!插入BGT使能 */
uint32_t blockGuard;
/*! 帧格式奇偶校验模式 */
uint32_t parity;
/*! 帧格式接收Guard时间 */
uint32_t rxGuardTime;
/*! 帧格式错误Guard时间 */
uint32_t errorGuardTime;
/*! 帧错误信号长度 */
uint32_t errorSignalWidth;
/*! 接收校验错误自动回发error signal使能 */
uint32_t rxAutoErrorSignal;
/*! 传输BIT顺序 */
uint32_t transferOrder;
/*! 通讯速率 */
uint32_t baud;
/*! 额外发送Guard时间 */
uint32_t extraGuardTime;
} FL_U7816_InitTypeDef;
/**
* @}
*/
/* Exported constants ---------------------------------------------------------------------------------*/
/** @defgroup U7816_FL_Exported_Constants U7816 Exported Constants
* @{
*/
#define U7816_CR_TXEN_Pos (5U)
#define U7816_CR_TXEN_Msk (0x1U << U7816_CR_TXEN_Pos)
#define U7816_CR_TXEN U7816_CR_TXEN_Msk
#define U7816_CR_RXEN_Pos (4U)
#define U7816_CR_RXEN_Msk (0x1U << U7816_CR_RXEN_Pos)
#define U7816_CR_RXEN U7816_CR_RXEN_Msk
#define U7816_CR_CKOEN_Pos (3U)
#define U7816_CR_CKOEN_Msk (0x1U << U7816_CR_CKOEN_Pos)
#define U7816_CR_CKOEN U7816_CR_CKOEN_Msk
#define U7816_FFR_ERSW_Pos (9U)
#define U7816_FFR_ERSW_Msk (0x3U << U7816_FFR_ERSW_Pos)
#define U7816_FFR_ERSW U7816_FFR_ERSW_Msk
#define U7816_FFR_ERSGD_Pos (8U)
#define U7816_FFR_ERSGD_Msk (0x1U << U7816_FFR_ERSGD_Pos)
#define U7816_FFR_ERSGD U7816_FFR_ERSGD_Msk
#define U7816_FFR_BGTEN_Pos (7U)
#define U7816_FFR_BGTEN_Msk (0x1U << U7816_FFR_BGTEN_Pos)
#define U7816_FFR_BGTEN U7816_FFR_BGTEN_Msk
#define U7816_FFR_REP_T_Pos (6U)
#define U7816_FFR_REP_T_Msk (0x1U << U7816_FFR_REP_T_Pos)
#define U7816_FFR_REP_T U7816_FFR_REP_T_Msk
#define U7816_FFR_PAR_Pos (4U)
#define U7816_FFR_PAR_Msk (0x3U << U7816_FFR_PAR_Pos)
#define U7816_FFR_PAR U7816_FFR_PAR_Msk
#define U7816_FFR_RFREN_Pos (3U)
#define U7816_FFR_RFREN_Msk (0x1U << U7816_FFR_RFREN_Pos)
#define U7816_FFR_RFREN U7816_FFR_RFREN_Msk
#define U7816_FFR_TREPEN_Pos (2U)
#define U7816_FFR_TREPEN_Msk (0x1U << U7816_FFR_TREPEN_Pos)
#define U7816_FFR_TREPEN U7816_FFR_TREPEN_Msk
#define U7816_FFR_RREPEN_Pos (1U)
#define U7816_FFR_RREPEN_Msk (0x1U << U7816_FFR_RREPEN_Pos)
#define U7816_FFR_RREPEN U7816_FFR_RREPEN_Msk
#define U7816_FFR_DICONV_Pos (0U)
#define U7816_FFR_DICONV_Msk (0x1U << U7816_FFR_DICONV_Pos)
#define U7816_FFR_DICONV U7816_FFR_DICONV_Msk
#define U7816_IER_RXIE_Pos (2U)
#define U7816_IER_RXIE_Msk (0x1U << U7816_IER_RXIE_Pos)
#define U7816_IER_RXIE U7816_IER_RXIE_Msk
#define U7816_IER_TXIE_Pos (1U)
#define U7816_IER_TXIE_Msk (0x1U << U7816_IER_TXIE_Pos)
#define U7816_IER_TXIE U7816_IER_TXIE_Msk
#define U7816_IER_LSIE_Pos (0U)
#define U7816_IER_LSIE_Msk (0x1U << U7816_IER_LSIE_Pos)
#define U7816_IER_LSIE U7816_IER_LSIE_Msk
#define U7816_ISR_WAIT_RPT_Pos (18U)
#define U7816_ISR_WAIT_RPT_Msk (0x1U << U7816_ISR_WAIT_RPT_Pos)
#define U7816_ISR_WAIT_RPT U7816_ISR_WAIT_RPT_Msk
#define U7816_ISR_TXBUSY_Pos (17U)
#define U7816_ISR_TXBUSY_Msk (0x1U << U7816_ISR_TXBUSY_Pos)
#define U7816_ISR_TXBUSY U7816_ISR_TXBUSY_Msk
#define U7816_ISR_RXBUSY_Pos (16U)
#define U7816_ISR_RXBUSY_Msk (0x1U << U7816_ISR_RXBUSY_Pos)
#define U7816_ISR_RXBUSY U7816_ISR_RXBUSY_Msk
#define U7816_ISR_TPARERR_Pos (11U)
#define U7816_ISR_TPARERR_Msk (0x1U << U7816_ISR_TPARERR_Pos)
#define U7816_ISR_TPARERR U7816_ISR_TPARERR_Msk
#define U7816_ISR_RPARERR_Pos (10U)
#define U7816_ISR_RPARERR_Msk (0x1U << U7816_ISR_RPARERR_Pos)
#define U7816_ISR_RPARERR U7816_ISR_RPARERR_Msk
#define U7816_ISR_FRERR_Pos (9U)
#define U7816_ISR_FRERR_Msk (0x1U << U7816_ISR_FRERR_Pos)
#define U7816_ISR_FRERR U7816_ISR_FRERR_Msk
#define U7816_ISR_OVERR_Pos (8U)
#define U7816_ISR_OVERR_Msk (0x1U << U7816_ISR_OVERR_Pos)
#define U7816_ISR_OVERR U7816_ISR_OVERR_Msk
#define U7816_ISR_RXIF_Pos (2U)
#define U7816_ISR_RXIF_Msk (0x1U << U7816_ISR_RXIF_Pos)
#define U7816_ISR_RXIF U7816_ISR_RXIF_Msk
#define U7816_ISR_TXIF_Pos (1U)
#define U7816_ISR_TXIF_Msk (0x1U << U7816_ISR_TXIF_Pos)
#define U7816_ISR_TXIF U7816_ISR_TXIF_Msk
#define U7816_ISR_ERRIF_Pos (0U)
#define U7816_ISR_ERRIF_Msk (0x1U << U7816_ISR_ERRIF_Pos)
#define U7816_ISR_ERRIF U7816_ISR_ERRIF_Msk
#define FL_U7816_ERROR_SIGNAL_WIDTH_2ETU (0x1U << U7816_FFR_ERSW_Pos)
#define FL_U7816_ERROR_SIGNAL_WIDTH_1P5ETU (0x2U << U7816_FFR_ERSW_Pos)
#define FL_U7816_ERROR_SIGNAL_WIDTH_1ETU (0x3U << U7816_FFR_ERSW_Pos)
#define FL_U7816_ERROR_GUARD_TIME_2ETU (0x0U << U7816_FFR_ERSGD_Pos)
#define FL_U7816_ERROR_GUARD_TIME_1ETU (0x1U << U7816_FFR_ERSGD_Pos)
#define FL_U7816_RETRY_COUNT_1 (0x0U << U7816_FFR_REP_T_Pos)
#define FL_U7816_RETRY_COUNT_3 (0x1U << U7816_FFR_REP_T_Pos)
#define FL_U7816_PARITY_EVEN (0x0U << U7816_FFR_PAR_Pos)
#define FL_U7816_PARITY_ODD (0x1U << U7816_FFR_PAR_Pos)
#define FL_U7816_PARITY_ALWAYS_1 (0x2U << U7816_FFR_PAR_Pos)
#define FL_U7816_PARITY_NONE (0x3U << U7816_FFR_PAR_Pos)
#define FL_U7816_RX_GUARD_TIME_2ETU (0x0U << U7816_FFR_RFREN_Pos)
#define FL_U7816_RX_GUARD_TIME_1ETU (0x1U << U7816_FFR_RFREN_Pos)
#define FL_U7816_BIT_ORDER_LSB_FIRST (0x0U << U7816_FFR_DICONV_Pos)
#define FL_U7816_BIT_ORDER_MSB_FIRST (0x1U << U7816_FFR_DICONV_Pos)
/**
* @}
*/
/* Exported functions ---------------------------------------------------------------------------------*/
/** @defgroup U7816_FL_Exported_Functions U7816 Exported Functions
* @{
*/
/**
* @brief Enable U7816 Transmit
* @rmtoll CR TXEN FL_U7816_EnableTX
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_EnableTX(U7816_Type *U7816x)
{
SET_BIT(U7816x->CR, U7816_CR_TXEN_Msk);
}
/**
* @brief Get U7816 Transmit Enable Status
* @rmtoll CR TXEN FL_U7816_IsEnabledTX
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsEnabledTX(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->CR, U7816_CR_TXEN_Msk) == U7816_CR_TXEN_Msk);
}
/**
* @brief Disable U7816 Transmit
* @rmtoll CR TXEN FL_U7816_DisableTX
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_DisableTX(U7816_Type *U7816x)
{
CLEAR_BIT(U7816x->CR, U7816_CR_TXEN_Msk);
}
/**
* @brief Enable U7816 Receive
* @rmtoll CR RXEN FL_U7816_EnableRX
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_EnableRX(U7816_Type *U7816x)
{
SET_BIT(U7816x->CR, U7816_CR_RXEN_Msk);
}
/**
* @brief Get U7816 Receive Enable Status
* @rmtoll CR RXEN FL_U7816_IsEnabledRX
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsEnabledRX(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->CR, U7816_CR_RXEN_Msk) == U7816_CR_RXEN_Msk);
}
/**
* @brief Disable U7816 Receive
* @rmtoll CR RXEN FL_U7816_DisableRX
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_DisableRX(U7816_Type *U7816x)
{
CLEAR_BIT(U7816x->CR, U7816_CR_RXEN_Msk);
}
/**
* @brief Enable U7816 Clock Output
* @rmtoll CR CKOEN FL_U7816_EnableClockOutput
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_EnableClockOutput(U7816_Type *U7816x)
{
SET_BIT(U7816x->CR, U7816_CR_CKOEN_Msk);
}
/**
* @brief Get U7816 Clock Output Enable Status
* @rmtoll CR CKOEN FL_U7816_IsEnabledClockOutput
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsEnabledClockOutput(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->CR, U7816_CR_CKOEN_Msk) == U7816_CR_CKOEN_Msk);
}
/**
* @brief Disable U7816 Clock Output
* @rmtoll CR CKOEN FL_U7816_DisableClockOutput
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_DisableClockOutput(U7816_Type *U7816x)
{
CLEAR_BIT(U7816x->CR, U7816_CR_CKOEN_Msk);
}
/**
* @brief Set U7816 TX Error Signal Length
* @rmtoll FFR ERSW FL_U7816_SetErrorSignalWidth
* @param U7816x U7816 instance
* @param width This parameter can be one of the following values:
* @arg @ref FL_U7816_ERROR_SIGNAL_WIDTH_2ETU
* @arg @ref FL_U7816_ERROR_SIGNAL_WIDTH_1P5ETU
* @arg @ref FL_U7816_ERROR_SIGNAL_WIDTH_1ETU
* @retval None
*/
__STATIC_INLINE void FL_U7816_SetErrorSignalWidth(U7816_Type *U7816x, uint32_t width)
{
MODIFY_REG(U7816x->FFR, U7816_FFR_ERSW_Msk, width);
}
/**
* @brief Get U7816 TX Error Signal Length
* @rmtoll FFR ERSW FL_U7816_GetErrorSignalWidth
* @param U7816x U7816 instance
* @retval Returned value can be one of the following values:
* @arg @ref FL_U7816_ERROR_SIGNAL_WIDTH_2ETU
* @arg @ref FL_U7816_ERROR_SIGNAL_WIDTH_1P5ETU
* @arg @ref FL_U7816_ERROR_SIGNAL_WIDTH_1ETU
*/
__STATIC_INLINE uint32_t FL_U7816_GetErrorSignalWidth(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_ERSW_Msk));
}
/**
* @brief Set Error Signal Guard Time
* @rmtoll FFR ERSGD FL_U7816_SetErrorGuardTime
* @param U7816x U7816 instance
* @param config This parameter can be one of the following values:
* @arg @ref FL_U7816_ERROR_GUARD_TIME_2ETU
* @arg @ref FL_U7816_ERROR_GUARD_TIME_1ETU
* @retval None
*/
__STATIC_INLINE void FL_U7816_SetErrorGuardTime(U7816_Type *U7816x, uint32_t config)
{
MODIFY_REG(U7816x->FFR, U7816_FFR_ERSGD_Msk, config);
}
/**
* @brief Get Error Signal Guard Time
* @rmtoll FFR ERSGD FL_U7816_GetErrorGuardTime
* @param U7816x U7816 instance
* @retval Returned value can be one of the following values:
* @arg @ref FL_U7816_ERROR_GUARD_TIME_2ETU
* @arg @ref FL_U7816_ERROR_GUARD_TIME_1ETU
*/
__STATIC_INLINE uint32_t FL_U7816_GetErrorGuardTime(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_ERSGD_Msk));
}
/**
* @brief Enable U7816 to Insert Block Guard Time
* @rmtoll FFR BGTEN FL_U7816_EnableBlockGuardTime
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_EnableBlockGuardTime(U7816_Type *U7816x)
{
SET_BIT(U7816x->FFR, U7816_FFR_BGTEN_Msk);
}
/**
* @brief Get U7816 Block Guard Time Enable Status
* @rmtoll FFR BGTEN FL_U7816_IsEnabledBlockGuardTime
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsEnabledBlockGuardTime(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_BGTEN_Msk) == U7816_FFR_BGTEN_Msk);
}
/**
* @brief Disable U7816 to Insert Block Guard Time
* @rmtoll FFR BGTEN FL_U7816_DisableBlockGuardTime
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_DisableBlockGuardTime(U7816_Type *U7816x)
{
CLEAR_BIT(U7816x->FFR, U7816_FFR_BGTEN_Msk);
}
/**
* @brief Set U7816 Retry Counts When Parity Error Occurred
* @rmtoll FFR REP_T FL_U7816_SetRetryCount
* @param U7816x U7816 instance
* @param cnt This parameter can be one of the following values:
* @arg @ref FL_U7816_RETRY_COUNT_1
* @arg @ref FL_U7816_RETRY_COUNT_3
* @retval None
*/
__STATIC_INLINE void FL_U7816_SetRetryCount(U7816_Type *U7816x, uint32_t cnt)
{
MODIFY_REG(U7816x->FFR, U7816_FFR_REP_T_Msk, cnt);
}
/**
* @brief Get U7816 Retry Counts When Parity Error Occurred
* @rmtoll FFR REP_T FL_U7816_GetRetryCount
* @param U7816x U7816 instance
* @retval Returned value can be one of the following values:
* @arg @ref FL_U7816_RETRY_COUNT_1
* @arg @ref FL_U7816_RETRY_COUNT_3
*/
__STATIC_INLINE uint32_t FL_U7816_GetRetryCount(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_REP_T_Msk));
}
/**
* @brief Set U7816 Parity
* @rmtoll FFR PAR FL_U7816_SetParity
* @param U7816x U7816 instance
* @param parity This parameter can be one of the following values:
* @arg @ref FL_U7816_PARITY_EVEN
* @arg @ref FL_U7816_PARITY_ODD
* @arg @ref FL_U7816_PARITY_ALWAYS_1
* @arg @ref FL_U7816_PARITY_NONE
* @retval None
*/
__STATIC_INLINE void FL_U7816_SetParity(U7816_Type *U7816x, uint32_t parity)
{
MODIFY_REG(U7816x->FFR, U7816_FFR_PAR_Msk, parity);
}
/**
* @brief Get U7816 Parity
* @rmtoll FFR PAR FL_U7816_GetParity
* @param U7816x U7816 instance
* @retval Returned value can be one of the following values:
* @arg @ref FL_U7816_PARITY_EVEN
* @arg @ref FL_U7816_PARITY_ODD
* @arg @ref FL_U7816_PARITY_ALWAYS_1
* @arg @ref FL_U7816_PARITY_NONE
*/
__STATIC_INLINE uint32_t FL_U7816_GetParity(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_PAR_Msk));
}
/**
* @brief Set U7816 RX Guard Time Length
* @rmtoll FFR RFREN FL_U7816_SetRXGuardTime
* @param U7816x U7816 instance
* @param config This parameter can be one of the following values:
* @arg @ref FL_U7816_RX_GUARD_TIME_2ETU
* @arg @ref FL_U7816_RX_GUARD_TIME_1ETU
* @retval None
*/
__STATIC_INLINE void FL_U7816_SetRXGuardTime(U7816_Type *U7816x, uint32_t config)
{
MODIFY_REG(U7816x->FFR, U7816_FFR_RFREN_Msk, config);
}
/**
* @brief Get U7816 RX Guard Time Length
* @rmtoll FFR RFREN FL_U7816_GetRXGuardTime
* @param U7816x U7816 instance
* @retval Returned value can be one of the following values:
* @arg @ref FL_U7816_RX_GUARD_TIME_2ETU
* @arg @ref FL_U7816_RX_GUARD_TIME_1ETU
*/
__STATIC_INLINE uint32_t FL_U7816_GetRXGuardTime(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_RFREN_Msk));
}
/**
* @brief Set U7816 TX Auto Retry When Parity Error Occurred
* @rmtoll FFR TREPEN FL_U7816_EnableTXParityErrorAutoRetry
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_EnableTXParityErrorAutoRetry(U7816_Type *U7816x)
{
SET_BIT(U7816x->FFR, U7816_FFR_TREPEN_Msk);
}
/**
* @brief Get U7816 TX Auto Retry When Parity Error Occurred
* @rmtoll FFR TREPEN FL_U7816_DisableTXParityErrorAutoRetry
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_DisableTXParityErrorAutoRetry(U7816_Type *U7816x)
{
CLEAR_BIT(U7816x->FFR, U7816_FFR_TREPEN_Msk);
}
/**
* @brief Get U7816 TX Auto Retry When Parity Error Occurred
* @rmtoll FFR TREPEN FL_U7816_IsEnabledTXParityErrorAutoRetry
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsEnabledTXParityErrorAutoRetry(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_TREPEN_Msk) == U7816_FFR_TREPEN_Msk);
}
/**
* @brief Get U7816 RX Auto Retry When Parity Error Occurred
* @rmtoll FFR RREPEN FL_U7816_EnableRXParityErrorAutoRetry
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_EnableRXParityErrorAutoRetry(U7816_Type *U7816x)
{
SET_BIT(U7816x->FFR, U7816_FFR_RREPEN_Msk);
}
/**
* @brief Get U7816 RX Auto Retry When Parity Error Occurred
* @rmtoll FFR RREPEN FL_U7816_DisableRXParityErrorAutoRetry
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_DisableRXParityErrorAutoRetry(U7816_Type *U7816x)
{
CLEAR_BIT(U7816x->FFR, U7816_FFR_RREPEN_Msk);
}
/**
* @brief Get U7816 RX Auto Retry When Parity Error Occurred
* @rmtoll FFR RREPEN FL_U7816_IsEnabledRXParityErrorAutoRetry
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsEnabledRXParityErrorAutoRetry(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_RREPEN_Msk) == U7816_FFR_RREPEN_Msk);
}
/**
* @brief Set U7816 Bit Order
* @rmtoll FFR DICONV FL_U7816_SetBitOrder
* @param U7816x U7816 instance
* @param order This parameter can be one of the following values:
* @arg @ref FL_U7816_BIT_ORDER_LSB_FIRST
* @arg @ref FL_U7816_BIT_ORDER_MSB_FIRST
* @retval None
*/
__STATIC_INLINE void FL_U7816_SetBitOrder(U7816_Type *U7816x, uint32_t order)
{
MODIFY_REG(U7816x->FFR, U7816_FFR_DICONV_Msk, order);
}
/**
* @brief Get U7816 Bit Order
* @rmtoll FFR DICONV FL_U7816_GetBitOrder
* @param U7816x U7816 instance
* @retval Returned value can be one of the following values:
* @arg @ref FL_U7816_BIT_ORDER_LSB_FIRST
* @arg @ref FL_U7816_BIT_ORDER_MSB_FIRST
*/
__STATIC_INLINE uint32_t FL_U7816_GetBitOrder(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_DICONV_Msk));
}
/**
* @brief Set U7816 Extra Guard Time
* @rmtoll EGTR FL_U7816_WriteExtraGuardTime
* @param U7816x U7816 instance
* @param config
* @retval None
*/
__STATIC_INLINE void FL_U7816_WriteExtraGuardTime(U7816_Type *U7816x, uint32_t config)
{
MODIFY_REG(U7816x->EGTR, (0xffU << 0U), (config << 0U));
}
/**
* @brief Get U7816 Extra Guard Time
* @rmtoll EGTR FL_U7816_ReadExtraGuardTime
* @param U7816x U7816 instance
* @retval
*/
__STATIC_INLINE uint32_t FL_U7816_ReadExtraGuardTime(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->EGTR, (0xffU << 0U)) >> 0U);
}
/**
* @brief Set U7816 Clock Divide
* @rmtoll PSC FL_U7816_WriteClockDivision
* @param U7816x U7816 instance
* @param div
* @retval None
*/
__STATIC_INLINE void FL_U7816_WriteClockDivision(U7816_Type *U7816x, uint32_t div)
{
MODIFY_REG(U7816x->PSC, (0x1fU << 0U), (div << 0U));
}
/**
* @brief Get U7816 Clock Divide
* @rmtoll PSC FL_U7816_ReadClockDivision
* @param U7816x U7816 instance
* @retval
*/
__STATIC_INLINE uint32_t FL_U7816_ReadClockDivision(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->PSC, (0x1fU << 0U)) >> 0U);
}
/**
* @brief Set U7816 BaudRate
* @rmtoll BGR FL_U7816_WriteBaudRate
* @param U7816x U7816 instance
* @param baud
* @retval None
*/
__STATIC_INLINE void FL_U7816_WriteBaudRate(U7816_Type *U7816x, uint32_t baud)
{
MODIFY_REG(U7816x->BGR, (0xfffU << 0U), (baud << 0U));
}
/**
* @brief Get U7816 BaudRate
* @rmtoll BGR FL_U7816_ReadBaudRate
* @param U7816x U7816 instance
* @retval
*/
__STATIC_INLINE uint32_t FL_U7816_ReadBaudRate(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->BGR, (0xfffU << 0U)) >> 0U);
}
/**
* @brief U7816 Write 1 byte of data
* @rmtoll TXBUF FL_U7816_WriteTXBuff
* @param U7816x U7816 instance
* @param data
* @retval None
*/
__STATIC_INLINE void FL_U7816_WriteTXBuff(U7816_Type *U7816x, uint32_t data)
{
MODIFY_REG(U7816x->TXBUF, (0xffU << 0U), (data << 0U));
}
/**
* @brief U7816 Read 1 byte of data
* @rmtoll RXBUF FL_U7816_ReadRXBuff
* @param U7816x U7816 instance
* @retval
*/
__STATIC_INLINE uint32_t FL_U7816_ReadRXBuff(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->RXBUF, (0xffU << 0U)) >> 0U);
}
/**
* @brief Disable U7816 Receive Complete Interrupt
* @rmtoll IER RXIE FL_U7816_DisableIT_RXComplete
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_DisableIT_RXComplete(U7816_Type *U7816x)
{
CLEAR_BIT(U7816x->IER, U7816_IER_RXIE_Msk);
}
/**
* @brief Enable U7816 Receive Complete Interrupt
* @rmtoll IER RXIE FL_U7816_EnableIT_RXComplete
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_EnableIT_RXComplete(U7816_Type *U7816x)
{
SET_BIT(U7816x->IER, U7816_IER_RXIE_Msk);
}
/**
* @brief Get U7816 Receive Complete Interrupt Enable Status
* @rmtoll IER RXIE FL_U7816_IsEnabledIT_RXComplete
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsEnabledIT_RXComplete(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->IER, U7816_IER_RXIE_Msk) == U7816_IER_RXIE_Msk);
}
/**
* @brief Disable U7816 Transmit Complete Interrupt
* @rmtoll IER TXIE FL_U7816_DisableIT_TXComplete
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_DisableIT_TXComplete(U7816_Type *U7816x)
{
CLEAR_BIT(U7816x->IER, U7816_IER_TXIE_Msk);
}
/**
* @brief Enable U7816 Transmit Complete Interrupt
* @rmtoll IER TXIE FL_U7816_EnableIT_TXComplete
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_EnableIT_TXComplete(U7816_Type *U7816x)
{
SET_BIT(U7816x->IER, U7816_IER_TXIE_Msk);
}
/**
* @brief Get U7816 Transmit Complete Interrupt Enable Status
* @rmtoll IER TXIE FL_U7816_IsEnabledIT_TXComplete
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsEnabledIT_TXComplete(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->IER, U7816_IER_TXIE_Msk) == U7816_IER_TXIE_Msk);
}
/**
* @brief Disable U7816 Line Status Interrupt
* @rmtoll IER LSIE FL_U7816_DisableIT_Error
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_DisableIT_Error(U7816_Type *U7816x)
{
CLEAR_BIT(U7816x->IER, U7816_IER_LSIE_Msk);
}
/**
* @brief Enable U7816 Line Status Interrupt
* @rmtoll IER LSIE FL_U7816_EnableIT_Error
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_EnableIT_Error(U7816_Type *U7816x)
{
SET_BIT(U7816x->IER, U7816_IER_LSIE_Msk);
}
/**
* @brief Get U7816 Line Status Interrupt Enable Status
* @rmtoll IER LSIE FL_U7816_IsEnabledIT_Error
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsEnabledIT_Error(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->IER, U7816_IER_LSIE_Msk) == U7816_IER_LSIE_Msk);
}
/**
* @brief Get U7816 Waiting for Retry Flag
* @rmtoll ISR WAIT_RPT FL_U7816_IsActiveFlag_WaitRetry
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_WaitRetry(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_WAIT_RPT_Msk) == (U7816_ISR_WAIT_RPT_Msk));
}
/**
* @brief Get U7816 Transmission Busy Flag
* @rmtoll ISR TXBUSY FL_U7816_IsActiveFlag_TXBusy
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_TXBusy(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_TXBUSY_Msk) == (U7816_ISR_TXBUSY_Msk));
}
/**
* @brief Get U7816 Receivement Busy Flag
* @rmtoll ISR RXBUSY FL_U7816_IsActiveFlag_RXBusy
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_RXBusy(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_RXBUSY_Msk) == (U7816_ISR_RXBUSY_Msk));
}
/**
* @brief Get U7816 Transmit Parity Error Flag
* @rmtoll ISR TPARERR FL_U7816_IsActiveFlag_TXParityError
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_TXParityError(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_TPARERR_Msk) == (U7816_ISR_TPARERR_Msk));
}
/**
* @brief Clear U7816 Transmit Parity Error Flag
* @rmtoll ISR TPARERR FL_U7816_ClearFlag_TXParityError
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_ClearFlag_TXParityError(U7816_Type *U7816x)
{
WRITE_REG(U7816x->ISR, U7816_ISR_TPARERR_Msk);
}
/**
* @brief Get U7816 Receive Parity Error Flag
* @rmtoll ISR RPARERR FL_U7816_IsActiveFlag_RXParityError
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_RXParityError(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_RPARERR_Msk) == (U7816_ISR_RPARERR_Msk));
}
/**
* @brief Clear U7816 Receive Parity Error Flag
* @rmtoll ISR RPARERR FL_U7816_ClearFlag_RXParityError
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_ClearFlag_RXParityError(U7816_Type *U7816x)
{
WRITE_REG(U7816x->ISR, U7816_ISR_RPARERR_Msk);
}
/**
* @brief Get U7816 Receive Frame Error Flag
* @rmtoll ISR FRERR FL_U7816_IsActiveFlag_RXFrameError
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_RXFrameError(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_FRERR_Msk) == (U7816_ISR_FRERR_Msk));
}
/**
* @brief Clear U7816 Receive Frame Error Flag
* @rmtoll ISR FRERR FL_U7816_ClearFlag_RXFrameError
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_ClearFlag_RXFrameError(U7816_Type *U7816x)
{
WRITE_REG(U7816x->ISR, U7816_ISR_FRERR_Msk);
}
/**
* @brief Get U7816 Receive Overflow Error Flag
* @rmtoll ISR OVERR FL_U7816_IsActiveFlag_RXOverflow
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_RXOverflow(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_OVERR_Msk) == (U7816_ISR_OVERR_Msk));
}
/**
* @brief Clear U7816 Receive Overflow Error Flag
* @rmtoll ISR OVERR FL_U7816_ClearFlag_RXOverflow
* @param U7816x U7816 instance
* @retval None
*/
__STATIC_INLINE void FL_U7816_ClearFlag_RXOverflow(U7816_Type *U7816x)
{
WRITE_REG(U7816x->ISR, U7816_ISR_OVERR_Msk);
}
/**
* @brief Get U7816 Receive Complete Flag
* @rmtoll ISR RXIF FL_U7816_IsActiveFlag_RXComplete
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_RXComplete(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_RXIF_Msk) == (U7816_ISR_RXIF_Msk));
}
/**
* @brief Get U7816 Transmit Buffer Empty Flag
* @rmtoll ISR TXIF FL_U7816_IsActiveFlag_TXBuffEmpty
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_TXBuffEmpty(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_TXIF_Msk) == (U7816_ISR_TXIF_Msk));
}
/**
* @brief Get U7816 Error Flag
* @rmtoll ISR ERRIF FL_U7816_IsActiveFlag_Error
* @param U7816x U7816 instance
* @retval State of bit (1 or 0).
*/
__STATIC_INLINE uint32_t FL_U7816_IsActiveFlag_Error(U7816_Type *U7816x)
{
return (uint32_t)(READ_BIT(U7816x->ISR, U7816_ISR_ERRIF_Msk) == (U7816_ISR_ERRIF_Msk));
}
/**
* @}
*/
/** @defgroup U7816_FL_EF_Init Initialization and de-initialization functions
* @{
*/
FL_ErrorStatus FL_U7816_DeInit(U7816_Type *U7816x);
FL_ErrorStatus FL_U7816_Init(U7816_Type *U7816x, FL_U7816_InitTypeDef *U7816_InitStruct);
void FL_U7816_StructInit(FL_U7816_InitTypeDef *U7816_InitStruct);
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __FM33LG0XX_FL_U7816_H*/
/*************************Py_Code_Generator Version: 0.1-0.11-0.1 @ 2020-09-12*************************/
/*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/