925 lines
23 KiB
C
925 lines
23 KiB
C
/**
|
|
* @file HwA_fcuart.h
|
|
* @author Flagchip
|
|
* @brief FCUart register API
|
|
* @version 2.0.0
|
|
* @date 2024-08-20
|
|
*
|
|
* SDK Version: 2.6.0
|
|
*
|
|
|
|
* @copyright Copyright (c) 2020-2024 Flagchip Semiconductors Co., Ltd.
|
|
*
|
|
*/
|
|
/* ********************************************************************************
|
|
* Revision History:
|
|
*
|
|
* Version Date Initials CR# Descriptions
|
|
* --------- ---------- ------------ ---------- ---------------
|
|
* 0.1.0 2023-12-15 Flagchip055 N/A First version for FC7300
|
|
* 2.0.0 2024-10-12 Flagchip122 N/A Change version and release
|
|
******************************************************************************** */
|
|
|
|
#ifndef _HWA_FCUART_H_
|
|
#define _HWA_FCUART_H_
|
|
|
|
#include "device_header.h"
|
|
|
|
#if FCUART_INSTANCE_COUNT > 0U
|
|
|
|
/**
|
|
* @defgroup HwA_fcuart HwA_fcuart
|
|
* @ingroup module_driver_fcuart
|
|
* @{
|
|
*/
|
|
|
|
|
|
/********* Local typedef ************/
|
|
|
|
/**
|
|
* @brief UART STAT register flag
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
FCUART_STAT_LBKDIF = FCUART_STAT_LBKDIF_MASK, /**< FCUART_STAT_LBKDIF LIN Break Detect Interrupt Flag, w1c */
|
|
FCUART_STAT_RPAEIF = FCUART_STAT_RPAEIF_MASK, /**< FCUART_STAT_RPAEIF RXD Pin Active Edge Interrupt Flag, w1c */
|
|
FCUART_STAT_MSBF = FCUART_STAT_MSBF_MASK, /**< FCUART_STAT_MSBF MSB First, RW */
|
|
FCUART_STAT_RXINV = FCUART_STAT_RXINV_MASK, /**< FCUART_STAT_RXINV Receive Data Inversion, RW */
|
|
FCUART_STAT_RWUID = FCUART_STAT_RWUID_MASK, /**< FCUART_STAT_RWUID Receive Wake Up Idle Detect, RW */
|
|
FCUART_STAT_BCGL = FCUART_STAT_BCGL_MASK, /**< FCUART_STAT_BCGL Break Character Generation Length, RW */
|
|
FCUART_STAT_LBKDE = FCUART_STAT_LBKDE_MASK, /**< FCUART_STAT_LBKDE LIN Break Detection Enable, RW */
|
|
FCUART_STAT_RAF = FCUART_STAT_RAF_MASK, /**< FCUART_STAT_RAF Receiver Active Flag, RO */
|
|
FCUART_STAT_TDREF = FCUART_STAT_TDREF_MASK, /**< FCUART_STAT_TDREF Transmit Data Register Empty Flag, RO */
|
|
FCUART_STAT_TCF = FCUART_STAT_TCF_MASK, /**< FCUART_STAT_TCF Transmission Complete Flag, RO */
|
|
FCUART_STAT_RDRFF = FCUART_STAT_RDRFF_MASK, /**< FCUART_STAT_RDRFF Receive Data Register Full Flag, RO */
|
|
FCUART_STAT_IDLEF = FCUART_STAT_IDLEF_MASK, /**< FCUART_STAT_IDLEF Idle Line Flag, w1c */
|
|
FCUART_STAT_RORF = FCUART_STAT_RORF_MASK, /**< FCUART_STAT_RORF Receiver Overrun Flag, w1c */
|
|
FCUART_STAT_NF = FCUART_STAT_NF_MASK, /**< FCUART_STAT_NF Noise Flag, w1c */
|
|
FCUART_STAT_FEF = FCUART_STAT_FEF_MASK, /**< FCUART_STAT_FEF Frame Error Flag, w1c */
|
|
FCUART_STAT_PEF = FCUART_STAT_PEF_MASK, /**< FCUART_STAT_PEF Parity Error Flag, w1c */
|
|
FCUART_STAT_M0F = FCUART_STAT_M0F_MASK, /**< FCUART_STAT_M0F Match address 0 Flag, w1c */
|
|
FCUART_STAT_M1F = FCUART_STAT_M1F_MASK, /**< FCUART_STAT_M1F Match address 1 Flag, w1c */
|
|
FCUART_STAT_RPEF = FCUART_STAT_RPEF_MASK, /**< FCUART_STAT_RPEF Receive Data Parity Error Flag, w1c */
|
|
FCUART_STAT_TPEF = FCUART_STAT_TPEF_MASK /**< FCUART_STAT_TPEF Transmit Data Parity Error Flag, w1c */
|
|
} FCUART_StatType;
|
|
|
|
/**
|
|
* @brief UART data bit length mode
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
UART_BITMODE_8 = 0, /**< UART_BITMODE_8 */
|
|
UART_BITMODE_9 /**< UART_BITMODE_9 */
|
|
} FCUART_BitModeType;
|
|
|
|
/**
|
|
* @brief UART stop bits number
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
UART_STOPBIT_NUM_1 = 0, /**< UART_STOPBIT_NUM_1 */
|
|
UART_STOPBIT_NUM_2 /**< UART_STOPBIT_NUM_2 */
|
|
} FCUART_StopBitNumType;
|
|
|
|
/**
|
|
* @brief UART parity check type
|
|
*
|
|
*/
|
|
typedef enum
|
|
{
|
|
UART_PARITY_EVEN = 0, /**< UART_PARITY_EVEN */
|
|
UART_PARITY_ODD /**< UART_PARITY_ODD */
|
|
} FCUART_ParityType;
|
|
|
|
|
|
|
|
|
|
/********* Local inline function ************/
|
|
/**
|
|
* @brief Get Stat Flag
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetSoftWareReset(FCUART_Type *pUart)
|
|
{
|
|
pUart->RST |= FCUART_RST_RST_MASK;
|
|
pUart->RST &= ~FCUART_RST_RST_MASK;
|
|
}
|
|
|
|
/**
|
|
* @brief Get Stat Flag
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param eStatusType stat type
|
|
* @return FCUART STAT status flag
|
|
*/
|
|
LOCAL_INLINE uint32_t FCUART_HWA_GetStatus(FCUART_Type *pUart, FCUART_StatType eStatusType)
|
|
{
|
|
return (pUart->STAT & (uint32_t)eStatusType);
|
|
}
|
|
|
|
/**
|
|
* @brief Clear Stat Flag
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32StatusType stat type
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_ClearStatus(FCUART_Type *pUart, uint32_t u32StatusType)
|
|
{
|
|
pUart->STAT = (u32StatusType | (pUart->STAT & FCUART_CHANGE_MASK));
|
|
}
|
|
|
|
/**
|
|
* @brief Enable Interrupt
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_EnableInterrupt(FCUART_Type *pUart, uint32 u32Value)
|
|
{
|
|
pUart->CTRL |= u32Value; /* Interrupt Enable */
|
|
}
|
|
|
|
/**
|
|
* @brief Disable Interrupt
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_DisableInterrupt(FCUART_Type *pUart, uint32 u32Value)
|
|
{
|
|
pUart->CTRL &= ~u32Value; /* Interrupt Disable */
|
|
}
|
|
|
|
/**
|
|
* @brief Enable Receive Interrupt
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_EnableReceiveInterrupt(FCUART_Type *pUart)
|
|
{
|
|
pUart->CTRL |= FCUART_CTRL_RIE_MASK; /* Receive Interrupt Enable */
|
|
}
|
|
|
|
/**
|
|
* @brief Disable Receive Interrupt
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_DisableReceiveInterrupt(FCUART_Type *pUart)
|
|
{
|
|
pUart->CTRL &= ~FCUART_CTRL_RIE_MASK; /* Receive Interrupt Enable */
|
|
|
|
}
|
|
|
|
/**
|
|
* @brief Enable Error Interrupt
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_EnableErrorInterrupt(FCUART_Type *pUart)
|
|
{
|
|
pUart->CTRL |= FCUART_CTRL_ORIE_MASK | /* Overrun Interrupt Enable */
|
|
FCUART_CTRL_NEIE_MASK | /* Noise Error Interrupt Enable */
|
|
FCUART_CTRL_FEIE_MASK | /* Frame Error Interrupt Enable */
|
|
FCUART_CTRL_PEIE_MASK; /* Parity Error Interrupt Enable */
|
|
}
|
|
|
|
/**
|
|
* @brief Disable Error Interrupt
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_DisableErrorInterrupt(FCUART_Type *pUart)
|
|
{
|
|
pUart->CTRL &= ~(FCUART_CTRL_ORIE_MASK | /* Overrun Interrupt Enable */
|
|
FCUART_CTRL_NEIE_MASK | /* Noise Error Interrupt Enable */
|
|
FCUART_CTRL_FEIE_MASK | /* Frame Error Interrupt Enable */
|
|
FCUART_CTRL_PEIE_MASK); /* Parity Error Interrupt Enable */
|
|
|
|
}
|
|
|
|
/**
|
|
* @brief Set FCUART Ctrl register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetCtrl(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->CTRL = u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART Ctrl register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Register value
|
|
*/
|
|
LOCAL_INLINE uint32_t FCUART_HWA_GetCtrl(FCUART_Type *pUart)
|
|
{
|
|
return pUart->CTRL;
|
|
}
|
|
|
|
/**
|
|
* @brief Attach FCUART Ctrl register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_AttachCtrl(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->CTRL |= u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Set FCUART Baud register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetBaud(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->BAUD = u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART baud register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Register value
|
|
*/
|
|
LOCAL_INLINE uint32_t FCUART_HWA_GetBaud(FCUART_Type *pUart)
|
|
{
|
|
return pUart->BAUD;
|
|
}
|
|
|
|
/**
|
|
* @brief Attach FCUART Baud register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_AttachBaud(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->BAUD |= u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Set FCUART Fifo register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetFifo(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->FIFO = u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART fifo register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Register value
|
|
*/
|
|
LOCAL_INLINE uint32_t FCUART_HWA_GetFifo(FCUART_Type *pUart)
|
|
{
|
|
return pUart->FIFO;
|
|
}
|
|
|
|
/**
|
|
* @brief Flush FCUART Tx Rx Fifo register
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_FlushTxRxFifo(FCUART_Type *pUart)
|
|
{
|
|
pUart->FIFO |= (FCUART_FIFO_TXFLUSH_MASK |
|
|
FCUART_FIFO_RXFLUSH_MASK);
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART fifo register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Register value
|
|
*/
|
|
LOCAL_INLINE bool FCUART_HWA_GetEnStatusRxFifo(FCUART_Type *pUart)
|
|
{
|
|
return ((((pUart->FIFO & FCUART_FIFO_RXFEN_MASK) >> FCUART_FIFO_RXFEN_SHIFT) == 1U) ? true: false);
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART fifo register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Register value
|
|
*/
|
|
LOCAL_INLINE bool FCUART_HWA_GetEnStatusTxFifo(FCUART_Type *pUart)
|
|
{
|
|
return ((((pUart->FIFO & FCUART_FIFO_TXFEN_MASK) >> FCUART_FIFO_TXFEN_SHIFT) == 1U) ? true: false);
|
|
}
|
|
|
|
/**
|
|
* @brief Attach FCUART Fifo register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_AttachFifo(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->FIFO |= u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Set FCUART WaterMark register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetWaterMark(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->WATERMARK = u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART Rx WaterMark
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Rxcount value
|
|
*/
|
|
LOCAL_INLINE uint8_t FCUART_HWA_GetRxWaterMark(FCUART_Type *pUart)
|
|
{
|
|
return ((uint8_t)(((pUart->WATERMARK) & FCUART_WATERMARK_RXWATER_MASK) >> FCUART_WATERMARK_RXWATER_SHIFT));
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART Tx WaterMark
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Rxcount value
|
|
*/
|
|
LOCAL_INLINE uint8_t FCUART_HWA_GetTxWaterMark(FCUART_Type *pUart)
|
|
{
|
|
return ((uint8_t)(((pUart->WATERMARK) & FCUART_WATERMARK_TXWATER_MASK) >> FCUART_WATERMARK_TXWATER_SHIFT));
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART WaterMark Rxcount
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Rxcount value
|
|
*/
|
|
LOCAL_INLINE uint8_t FCUART_HWA_GetFifoRxCount(FCUART_Type *pUart)
|
|
{
|
|
return ((uint8_t)(((pUart->WATERMARK) & FCUART_WATERMARK_RXCOUNT_MASK) >> FCUART_WATERMARK_RXCOUNT_SHIFT));
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART WaterMark Txcount
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Rxcount value
|
|
*/
|
|
LOCAL_INLINE uint8_t FCUART_HWA_GetFifoTxCount(FCUART_Type *pUart)
|
|
{
|
|
return ((uint8_t)(((pUart->WATERMARK) & FCUART_WATERMARK_TXCOUNT_MASK) >> FCUART_WATERMARK_TXCOUNT_SHIFT));
|
|
}
|
|
|
|
/**
|
|
* @brief Attach FCUART WaterMark register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_AttachWaterMark(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->WATERMARK |= u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Set FCUART Match register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetMatch(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->MATCH = u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Attach FCUART Match register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_AttachMatch(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->MATCH |= u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Get FCUART Match register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return Register value
|
|
*/
|
|
LOCAL_INLINE uint32_t FCUART_HWA_GetMatch(FCUART_Type *pUart)
|
|
{
|
|
return pUart->MATCH;
|
|
}
|
|
|
|
/**
|
|
* @brief Read FCUART STAT register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return STAT read value
|
|
*/
|
|
LOCAL_INLINE uint32_t FCUART_HWA_GetSTAT(FCUART_Type *pUart)
|
|
{
|
|
return pUart->STAT;
|
|
}
|
|
|
|
/**
|
|
* @brief Write 1 Clear FCUART STAT register
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Value written value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_WriteClearSTAT(FCUART_Type *pUart, uint32_t u32Value)
|
|
{
|
|
pUart->STAT = ((pUart->STAT & FCUART_CHANGE_MASK) | u32Value);
|
|
}
|
|
|
|
/**
|
|
* @brief Set Bit Mode and Parity
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param eBitMode is bit mode, 8 or 9 bits
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetBitMode(FCUART_Type *pUart, FCUART_BitModeType eBitMode)
|
|
{
|
|
uint32_t u32RegVal = pUart->CTRL;
|
|
pUart->CTRL = ((u32RegVal & (~ FCUART_CTRL_BMSEL_MASK)) | FCUART_CTRL_BMSEL(eBitMode));
|
|
}
|
|
|
|
/**
|
|
* @brief Set Bit Mode and Parity
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param bParityEnable If enable Parity, set 1U, or set 0U
|
|
* @param eParityType Parity type, odd-even
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetParity(FCUART_Type *pUart, FCUART_ParityType eParityType, bool bParityEnable)
|
|
{
|
|
uint32_t u32RegVal = pUart->CTRL;
|
|
pUart->CTRL = ((u32RegVal & (~ FCUART_CTRL_PE_MASK | FCUART_CTRL_PT_MASK)) |
|
|
FCUART_CTRL_PE(bParityEnable) |
|
|
FCUART_CTRL_PT(eParityType) );
|
|
}
|
|
|
|
/**
|
|
* @brief Set Bit Mode and Parity
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param eStopBit stop bits number 1 or 2 bits
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetStopBit(FCUART_Type *pUart, FCUART_StopBitNumType eStopBit)
|
|
{
|
|
uint32_t u32RegVal = pUart->BAUD;
|
|
pUart->BAUD = ((u32RegVal & (~ FCUART_BAUD_SBNS_MASK)) | FCUART_BAUD_SBNS(eStopBit));
|
|
}
|
|
|
|
/**
|
|
* @brief Enable Receive DMA
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_EnableReceiveDMA(FCUART_Type *pUart)
|
|
{
|
|
pUart->BAUD |= FCUART_BAUD_RDMAEN_MASK;
|
|
}
|
|
|
|
/**
|
|
* @brief Disable Receive DMA
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_DisableReceiveDMA(FCUART_Type *pUart)
|
|
{
|
|
pUart->BAUD &= ~FCUART_BAUD_RDMAEN_MASK;
|
|
|
|
}
|
|
|
|
/**
|
|
* @brief Enable Receive FIFO
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_EnableReceiveFIFO(FCUART_Type *pUart)
|
|
{
|
|
pUart->FIFO |= FCUART_FIFO_RXFEN_MASK;
|
|
}
|
|
|
|
/**
|
|
* @brief Disable Receive FIFO
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_DisableReceiveFIFO(FCUART_Type *pUart)
|
|
{
|
|
pUart->FIFO &= ~FCUART_FIFO_RXFEN_MASK;
|
|
|
|
}
|
|
|
|
/**
|
|
* @brief Clear Fifo Overflow/Underflow flag
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_ClearFIFOErrorFlag(FCUART_Type *pUart)
|
|
{
|
|
pUart->FIFO |= FCUART_FIFO_TXOF_MASK | FCUART_FIFO_RXUF_MASK;
|
|
}
|
|
|
|
/**
|
|
* @brief Set FCUART Tx WaterMark
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetTxWaterMark(FCUART_Type *pUart, uint8_t u8Value)
|
|
{
|
|
uint32_t u32Value = 0;
|
|
u32Value = pUart->WATERMARK & (~(uint32_t)FCUART_WATERMARK_TXWATER_MASK);
|
|
u32Value |= FCUART_WATERMARK_TXWATER(u8Value);
|
|
pUart->WATERMARK = u32Value;
|
|
}
|
|
|
|
/**
|
|
* @brief Set FCUART Rx WaterMark
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetRxWaterMark(FCUART_Type *pUart, uint8_t u8Value)
|
|
{
|
|
uint32_t u32Value = 0;
|
|
u32Value = pUart->WATERMARK & (~(uint32_t)FCUART_WATERMARK_RXWATER_MASK);
|
|
u32Value |= FCUART_WATERMARK_RXWATER(u8Value);
|
|
pUart->WATERMARK = u32Value;
|
|
}
|
|
|
|
|
|
/**
|
|
* @brief Set Data Value
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param u32Data Set data
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetData(FCUART_Type *pUart, uint32_t u32Data)
|
|
{
|
|
pUart->DATA = u32Data; /* data 32 bit */
|
|
}
|
|
|
|
/**
|
|
* @brief Get Data Value
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return the data value
|
|
*/
|
|
LOCAL_INLINE uint8_t FCUART_HWA_GetData(FCUART_Type *pUart)
|
|
{
|
|
uint8_t u8Data;
|
|
|
|
u8Data = *((volatile uint8_t *)&pUart->DATA); /* data 32 bit */
|
|
|
|
return u8Data;
|
|
}
|
|
|
|
|
|
/**
|
|
* @brief Get Data Value with check frame error flag
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param data Received data
|
|
* @return the frame error exist or not
|
|
*/
|
|
LOCAL_INLINE bool FCUART_HWA_GetDataWithFef(FCUART_Type *pUart, uint8_t *data)
|
|
{
|
|
uint32_t u32Val;
|
|
u32Val = pUart->DATA;
|
|
*data = (uint8_t)u32Val;
|
|
return ((u32Val & FCUART_DATA_FETSC_MASK) == FCUART_DATA_FETSC_MASK) ? true : false;
|
|
}
|
|
|
|
/**
|
|
* @brief Set R8T9 bit
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return the data value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetR8T9(FCUART_Type *pUart, uint8_t u8Data)
|
|
{
|
|
uint32_t u32RegVal = pUart->CTRL;
|
|
pUart->CTRL = ((u32RegVal & (~ FCUART_CTRL_R8T9_MASK)) | FCUART_CTRL_R8T9(u8Data));
|
|
}
|
|
|
|
/**
|
|
* @brief Get R8T9 bit
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return the data value
|
|
*/
|
|
LOCAL_INLINE uint8_t FCUART_HWA_GetR8T9(FCUART_Type *pUart)
|
|
{
|
|
return (uint8_t)((pUart->CTRL & FCUART_CTRL_R8T9_MASK) >> FCUART_CTRL_R8T9_SHIFT);
|
|
}
|
|
|
|
/**
|
|
* @brief Set R9T8 bit
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return the data value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetR9T8(FCUART_Type *pUart, uint8_t u8Data)
|
|
{
|
|
uint32_t u32RegVal = pUart->CTRL;
|
|
pUart->CTRL = ((u32RegVal & (~ FCUART_CTRL_R9T8_MASK)) | FCUART_CTRL_R9T8(u8Data));
|
|
}
|
|
|
|
/**
|
|
* @brief Get R9T8 bit
|
|
*
|
|
* @param pUart UART instance value
|
|
* @return the data value
|
|
*/
|
|
LOCAL_INLINE uint8_t FCUART_HWA_GetR9T8(FCUART_Type *pUart)
|
|
{
|
|
return (uint8_t)((pUart->CTRL & FCUART_CTRL_R9T8_MASK) >> FCUART_CTRL_R9T8_SHIFT);
|
|
}
|
|
|
|
/**
|
|
* @brief Reset the instance by software.
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SoftwareReset(FCUART_Type *pUart)
|
|
{
|
|
pUart->RST |= FCUART_RST_RST_MASK;
|
|
pUart->RST &= ~FCUART_RST_RST_MASK;
|
|
}
|
|
|
|
/**
|
|
* @brief Set fcuart TX Transfer enable or disable.
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param bEnable Enable cmd, false for disable, true for enable.
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetTxTransfer(FCUART_Type *pUart, bool bEnable)
|
|
{
|
|
if (true == bEnable)
|
|
{
|
|
pUart->CTRL |= FCUART_CTRL_TE_MASK;
|
|
}
|
|
else
|
|
{
|
|
pUart->CTRL &= ~FCUART_CTRL_TE_MASK;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* \brief Start transmit
|
|
*
|
|
* \param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_StartTransmit(FCUART_Type *pUart)
|
|
{
|
|
pUart->CTRL |= FCUART_CTRL_TE_MASK; /* start transmit */
|
|
}
|
|
|
|
|
|
/**
|
|
* @brief Set fcuart RX Transfer enable or disable.
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param bEnable Enable cmd, false for disable, true for enable.
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetRxTransfer(FCUART_Type *pUart, bool bEnable)
|
|
{
|
|
if (true == bEnable)
|
|
{
|
|
pUart->CTRL |= FCUART_CTRL_RE_MASK;
|
|
}
|
|
else
|
|
{
|
|
pUart->CTRL &= ~FCUART_CTRL_RE_MASK;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Set fcuart start transfer.
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_StartTransfer(FCUART_Type *pUart)
|
|
{
|
|
pUart->CTRL |= (uint32_t)(FCUART_CTRL_TE_MASK | FCUART_CTRL_RE_MASK);
|
|
}
|
|
|
|
|
|
/**
|
|
* @brief Set fcuart stop transfer.
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_StopTransfer(FCUART_Type *pUart)
|
|
{
|
|
pUart->CTRL &= ~(uint32_t)(FCUART_CTRL_TE_MASK | FCUART_CTRL_RE_MASK);
|
|
}
|
|
|
|
/**
|
|
* @brief Set lin break detect interrupt.
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param bEnable Enable cmd, false for disable, true for enable.
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetLinBreakDetectInterrupt(FCUART_Type *pUart, bool bEnable)
|
|
{
|
|
if (true == bEnable)
|
|
{
|
|
pUart->BAUD |= FCUART_BAUD_LBKDIE_MASK;
|
|
}
|
|
else
|
|
{
|
|
pUart->BAUD &= ~FCUART_BAUD_LBKDIE_MASK;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Set lin break detect feature enable.
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param bEnable Enable cmd, false for disable, true for enable.
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetLinBreakDetectEnable(FCUART_Type *pUart, bool bEnable)
|
|
{
|
|
if (true == bEnable)
|
|
{
|
|
|
|
pUart->STAT = ((FCUART_STAT_LBKDE_MASK | FCUART_STAT_BCGL_MASK)|(pUart->STAT & FCUART_CHANGE_MASK));
|
|
}
|
|
else
|
|
{
|
|
pUart->STAT &= ((~(FCUART_STAT_LBKDE_MASK | FCUART_STAT_BCGL_MASK))&FCUART_CHANGE_MASK);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Send a lin break field.
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SendBreakField(FCUART_Type *pUart)
|
|
{
|
|
pUart->DATA = FCUART_DATA_FETSC_MASK;
|
|
}
|
|
|
|
/**
|
|
* @brief Set uart receive active interrupt.
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param bEnable Enable cmd, false for disable, true for enable.
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetReceiveActiveInterrupt(FCUART_Type *pUart, bool bEnable)
|
|
{
|
|
if (true == bEnable)
|
|
{
|
|
pUart->BAUD |= FCUART_BAUD_RIAEIE_MASK;
|
|
}
|
|
else
|
|
{
|
|
pUart->BAUD &= ~FCUART_BAUD_RIAEIE_MASK;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Set uart receive active interrupt.
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param return false for disable, true for enable.
|
|
*/
|
|
LOCAL_INLINE bool FCUART_HWA_GetReceiveActiveInterrupt(FCUART_Type *pUart)
|
|
{
|
|
bool bRetVal = false;
|
|
|
|
if (0U != (pUart->BAUD & FCUART_BAUD_RIAEIE_MASK))
|
|
{
|
|
bRetVal = true;
|
|
}
|
|
|
|
return bRetVal;
|
|
}
|
|
|
|
/**
|
|
* @brief Set FCUART inverse feature.
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param bEnable false for disable, true for enable.
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetReceiveDataInverse(FCUART_Type *pUart, bool bEnable)
|
|
{
|
|
if (true == bEnable)
|
|
{
|
|
pUart->STAT = (FCUART_STAT_RXINV_MASK | (pUart->STAT & FCUART_CHANGE_MASK));
|
|
}
|
|
else
|
|
{
|
|
pUart->STAT &= ((~FCUART_STAT_RXINV_MASK)&FCUART_CHANGE_MASK);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Get the FCUART inverse bit value.
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param return false for disable, true for enable.
|
|
*/
|
|
LOCAL_INLINE bool FCUART_HWA_GetReceiveDataInverse(FCUART_Type *pUart)
|
|
{
|
|
bool bRetVal = false;
|
|
|
|
if (0U != (pUart->STAT & FCUART_STAT_RXINV_MASK))
|
|
{
|
|
bRetVal = true;
|
|
}
|
|
|
|
return bRetVal;
|
|
}
|
|
|
|
/**
|
|
* @brief Set the FCUART frame error interrupt.
|
|
*
|
|
* @param pUart UART instance value
|
|
* @param bEnable false for disable, true for enable.
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetFrameErrorInterrupt(FCUART_Type *pUart, bool bEnable)
|
|
{
|
|
if (true == bEnable)
|
|
{
|
|
pUart->CTRL |= FCUART_CTRL_FEIE_MASK;
|
|
}
|
|
else
|
|
{
|
|
pUart->CTRL &= ~FCUART_CTRL_FEIE_MASK;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Enable the FCUART loop mode.
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_EnableLoopMode(FCUART_Type *pUart)
|
|
{
|
|
pUart->CTRL |= FCUART_CTRL_LOOPMS_MASK;
|
|
}
|
|
|
|
/**
|
|
* @brief Disable the FCUART loop mode.
|
|
*
|
|
* @param pUart UART instance value
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_DisableLoopMode(FCUART_Type *pUart)
|
|
{
|
|
pUart->CTRL &= ~FCUART_CTRL_LOOPMS_MASK;
|
|
}
|
|
|
|
/**
|
|
* \brief Set FCUART MODIR value
|
|
*
|
|
* \param pUart UART instance value
|
|
* \param u32Data Set data
|
|
*/
|
|
LOCAL_INLINE void FCUART_HWA_SetModir(FCUART_Type *pUart, uint32_t u32Data)
|
|
{
|
|
pUart->HFCR = u32Data; /* data 32 bit */
|
|
}
|
|
|
|
/**
|
|
* \brief Get FCUART MODIR value
|
|
*
|
|
* \param pUart UART instance value
|
|
* \param u32Data Get data
|
|
*/
|
|
LOCAL_INLINE uint32_t FCUART_HWA_GetModir(FCUART_Type *pUart)
|
|
{
|
|
return pUart->HFCR ;
|
|
}
|
|
|
|
/** @}*/
|
|
|
|
#endif
|
|
|
|
#endif /* end for #ifndef _HWA_FCUART_H_ */
|