123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071 |
- /**
- *******************************************************************************************************
- * @file fm33lc0xx_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 __FM33LC0XX_FL_U7816_H
- #define __FM33LC0XX_FL_U7816_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Includes -------------------------------------------------------------------------------------------*/
- #include "fm33lc0xx_fl_def.h"
- /** @addtogroup FM33LC0XX_FL_Driver
- * @{
- */
- /** @defgroup U7816 U7816
- * @brief U7816 FL driver
- * @{
- */
- /* Exported types -------------------------------------------------------------------------------------*/
- /** @defgroup U7816_FL_ES_INIT U7816 Exported Init structures
- * @{
- */
- /**
- * @brief U7816 Init Sturcture definition
- */
- typedef struct
- {
- /** 卡时钟频率 */
- uint32_t outputClockFreqence;
- /** 接口发送失败后自动重装使能 */
- uint32_t txAutoRetry;
- /** 自动重装次数 */
- uint32_t retryCnt;
- /** 插入BGT使能 */
- uint32_t blockGuard;
- /** 强上拉使能 */
- uint32_t strongPullUp;
- /** 帧格式奇偶校验模式 */
- uint32_t parity;
- /** 帧格式接收Guard时间 */
- uint32_t rxGuardTime;
- /** 帧格式发送Guard时间 */
- uint32_t txGuardTime;
- /** 帧格式错误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_CR_HPUAT_Pos (2U)
- #define U7816_CR_HPUAT_Msk (0x1U << U7816_CR_HPUAT_Pos)
- #define U7816_CR_HPUAT U7816_CR_HPUAT_Msk
- #define U7816_CR_HPUEN_Pos (1U)
- #define U7816_CR_HPUEN_Msk (0x1U << U7816_CR_HPUEN_Pos)
- #define U7816_CR_HPUEN U7816_CR_HPUEN_Msk
- #define U7816_FFR_SFREN_Pos (11U)
- #define U7816_FFR_SFREN_Msk (0x1U << U7816_FFR_SFREN_Pos)
- #define U7816_FFR_SFREN U7816_FFR_SFREN_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_TX_GUARD_TIME_2ETU (0x0U << U7816_FFR_SFREN_Pos)
- #define FL_U7816_TX_GUARD_TIME_3ETU (0x1U << U7816_FFR_SFREN_Pos)
- #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 Enable U7816 Automatically High-Pullup
- * @rmtoll CR HPUAT FL_U7816_EnableTXAutoPullup
- * @param U7816x U7816 instance
- * @retval None
- */
- __STATIC_INLINE void FL_U7816_EnableTXAutoPullup(U7816_Type *U7816x)
- {
- SET_BIT(U7816x->CR, U7816_CR_HPUAT_Msk);
- }
- /**
- * @brief Get U7816 Automatically High-Pullup Enable Status
- * @rmtoll CR HPUAT FL_U7816_IsEnabledTXAutoPullup
- * @param U7816x U7816 instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_U7816_IsEnabledTXAutoPullup(U7816_Type *U7816x)
- {
- return (uint32_t)(READ_BIT(U7816x->CR, U7816_CR_HPUAT_Msk) == U7816_CR_HPUAT_Msk);
- }
- /**
- * @brief Disable U7816 Automatically High-Pullup
- * @rmtoll CR HPUAT FL_U7816_DisableTXAutoPullup
- * @param U7816x U7816 instance
- * @retval None
- */
- __STATIC_INLINE void FL_U7816_DisableTXAutoPullup(U7816_Type *U7816x)
- {
- CLEAR_BIT(U7816x->CR, U7816_CR_HPUAT_Msk);
- }
- /**
- * @brief Enable U7816 High-Pullup
- * @rmtoll CR HPUEN FL_U7816_EnablePullup
- * @param U7816x U7816 instance
- * @retval None
- */
- __STATIC_INLINE void FL_U7816_EnablePullup(U7816_Type *U7816x)
- {
- SET_BIT(U7816x->CR, U7816_CR_HPUEN_Msk);
- }
- /**
- * @brief Disable U7816 High-Pullup
- * @rmtoll CR HPUEN FL_U7816_DisablePullup
- * @param U7816x U7816 instance
- * @retval None
- */
- __STATIC_INLINE void FL_U7816_DisablePullup(U7816_Type *U7816x)
- {
- CLEAR_BIT(U7816x->CR, U7816_CR_HPUEN_Msk);
- }
- /**
- * @brief Set U7816 TX Guard Time Length
- * @rmtoll FFR SFREN FL_U7816_SetTXGuardTime
- * @param U7816x U7816 instance
- * @param config This parameter can be one of the following values:
- * @arg @ref FL_U7816_TX_GUARD_TIME_2ETU
- * @arg @ref FL_U7816_TX_GUARD_TIME_3ETU
- * @retval None
- */
- __STATIC_INLINE void FL_U7816_SetTXGuardTime(U7816_Type *U7816x, uint32_t config)
- {
- MODIFY_REG(U7816x->FFR, U7816_FFR_SFREN_Msk, config);
- }
- /**
- * @brief Get U7816 TX Guard Time Length
- * @rmtoll FFR SFREN FL_U7816_GetTXGuardTime
- * @param U7816x U7816 instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_U7816_TX_GUARD_TIME_2ETU
- * @arg @ref FL_U7816_TX_GUARD_TIME_3ETU
- */
- __STATIC_INLINE uint32_t FL_U7816_GetTXGuardTime(U7816_Type *U7816x)
- {
- return (uint32_t)(READ_BIT(U7816x->FFR, U7816_FFR_SFREN_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 time
- * @retval None
- */
- __STATIC_INLINE void FL_U7816_WriteExtraGuardTime(U7816_Type *U7816x, uint32_t time)
- {
- MODIFY_REG(U7816x->EGTR, (0xffU << 0U), (time << 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 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 /* __FM33LC0XX_FL_U7816_H*/
- /*************************Py_Code_Generator Version: 0.1-0.11-0.2 @ 2020-09-27*************************/
- /********************** (C) COPYRIGHT Fudan Microelectronics **** END OF FILE ***********************/
|