123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737 |
- extern "C"{
-
- (LPUART_UART_IP_HWACCESS_AR_RELEASE_MINOR_VERSION != LPUART_UART_IP_DEFINES_AR_RELEASE_MINOR_VERSION) || \
- (LPUART_UART_IP_HWACCESS_AR_RELEASE_REVISION_VERSION != LPUART_UART_IP_DEFINES_AR_RELEASE_REVISION_VERSION))
-
- (LPUART_UART_IP_HWACCESS_SW_MINOR_VERSION != LPUART_UART_IP_DEFINES_SW_MINOR_VERSION) || \
- (LPUART_UART_IP_HWACCESS_SW_PATCH_VERSION != LPUART_UART_IP_DEFINES_SW_PATCH_VERSION))
-
-
- (LPUART_UART_IP_HWACCESS_AR_RELEASE_MINOR_VERSION != STD_AR_RELEASE_MINOR_VERSION))
-
-
-
-
- (LPUART_UART_IP_HWACCESS_AR_RELEASE_MINOR_VERSION != OSIF_AR_RELEASE_MINOR_VERSION))
-
-
-
-
- (LPUART_UART_IP_HWACCESS_AR_RELEASE_MINOR_VERSION != SCHM_UART_AR_RELEASE_MAJOR_VERSION))
-
-
- typedef enum
- {
- LPUART_UART_IP_7_BITS_PER_CHAR = 0x0U,
- LPUART_UART_IP_8_BITS_PER_CHAR = 0x1U,
- LPUART_UART_IP_9_BITS_PER_CHAR = 0x2U,
- LPUART_UART_IP_10_BITS_PER_CHAR = 0x3U
- } Lpuart_Uart_Ip_BitCountPerCharType;
- typedef enum
- {
- LPUART_UART_IP_PARITY_DISABLED = 0x0U,
- LPUART_UART_IP_PARITY_EVEN = 0x2U,
- LPUART_UART_IP_PARITY_ODD = 0x3U
- } Lpuart_Uart_Ip_ParityModeType;
- typedef enum
- {
- LPUART_UART_IP_ONE_STOP_BIT = 0x0U,
- LPUART_UART_IP_TWO_STOP_BIT = 0x1U
- } Lpuart_Uart_Ip_StopBitCountType;
- typedef enum
- {
- LPUART_UART_IP_TX_DATA_REG_EMPTY = (uint32)LPUART_STAT_TDRE_SHIFT,
-
- LPUART_UART_IP_TX_COMPLETE = (uint32)LPUART_STAT_TC_SHIFT,
-
- LPUART_UART_IP_DATA_REG_FULL = (uint32)LPUART_STAT_RDRF_SHIFT,
-
- LPUART_UART_IP_RX_OVERRUN = (uint32)LPUART_STAT_OR_SHIFT,
-
- LPUART_UART_IP_NOISE_DETECT = (uint32)LPUART_STAT_NF_SHIFT,
-
- LPUART_UART_IP_FRAME_ERR = (uint32)LPUART_STAT_FE_SHIFT,
-
- LPUART_UART_IP_PARITY_ERR = (uint32)LPUART_STAT_PF_SHIFT,
- LPUART_UART_IP_IDLE = (uint32)LPUART_STAT_IDLE_SHIFT,
- } Lpuart_Uart_Ip_StatusFlagType;
- typedef enum
- {
- LPUART_UART_IP_INT_TX_DATA_REG_EMPTY = (uint32)LPUART_CTRL_TIE_SHIFT,
- LPUART_UART_IP_INT_TX_COMPLETE = (uint32)LPUART_CTRL_TCIE_SHIFT,
- LPUART_UART_IP_INT_RX_DATA_REG_FULL = (uint32)LPUART_CTRL_RIE_SHIFT,
- LPUART_UART_IP_INT_RX_OVERRUN = (uint32)LPUART_CTRL_ORIE_SHIFT,
- LPUART_UART_IP_INT_NOISE_ERR_FLAG = (uint32)LPUART_CTRL_NEIE_SHIFT,
- LPUART_UART_IP_INT_FRAME_ERR_FLAG = (uint32)LPUART_CTRL_FEIE_SHIFT,
- LPUART_UART_IP_INT_PARITY_ERR_FLAG = (uint32)LPUART_CTRL_PEIE_SHIFT,
- LPUART_UART_IP_INT_IDLE = (uint32)LPUART_CTRL_ILIE_SHIFT,
- } Lpuart_Uart_Ip_InterruptType;
- static inline void Lpuart_Uart_Ip_Hw_Init(LPUART_Type * Base)
- {
-
- Base->BAUD = ((uint32)(((uint32)LPUART_FEATURE_DEFAULT_OSR << LPUART_BAUD_OSR_SHIFT) | \
- (LPUART_FEATURE_DEFAULT_SBR << LPUART_BAUD_SBR_SHIFT)));
-
- Base->STAT = LPUART_FEATURE_STAT_REG_FLAGS_MASK;
-
- Base->CTRL = 0x00000000;
- }
- static inline void Lpuart_Uart_Ip_SetTransmitterCmd(LPUART_Type * Base, boolean Enable)
- {
- Base->CTRL = (Base->CTRL & ~LPUART_CTRL_TE_MASK) | ((Enable ? 1UL : 0UL) << LPUART_CTRL_TE_SHIFT);
- }
- static inline void Lpuart_Uart_Ip_SetReceiverCmd(LPUART_Type * Base, boolean Enable)
- {
- Base->CTRL = (Base->CTRL & ~LPUART_CTRL_RE_MASK) | ((Enable ? 1UL : 0UL) << LPUART_CTRL_RE_SHIFT);
- }
- static inline void Lpuart_Uart_Ip_SetBaudRateDivisor(LPUART_Type * Base, uint32 baudRateDivisor)
- {
- Base->BAUD = (Base->BAUD & ~LPUART_BAUD_SBR_MASK) | (baudRateDivisor & LPUART_BAUD_SBR_MASK);
- }
- static inline uint16 Lpuart_Uart_Ip_GetBaudRateDivisor(const LPUART_Type * Base)
- {
- return ((uint16)((Base->BAUD & LPUART_BAUD_SBR_MASK) >> LPUART_BAUD_SBR_SHIFT));
- }
- static inline void Lpuart_Uart_Ip_SetOversamplingRatio(LPUART_Type * Base, uint32 OverSamplingRatio)
- {
- Base->BAUD = (Base->BAUD & ~LPUART_BAUD_OSR_MASK) | LPUART_BAUD_OSR(OverSamplingRatio);
- }
- static inline uint8 Lpuart_Uart_Ip_GetOversamplingRatio(const LPUART_Type * Base)
- {
- return ((uint8)((Base->BAUD & LPUART_BAUD_OSR_MASK) >> LPUART_BAUD_OSR_SHIFT));
- }
- static inline void Lpuart_Uart_Ip_EnableBothEdgeSamplingCmd(LPUART_Type * Base)
- {
- Base->BAUD |= LPUART_BAUD_BOTHEDGE_MASK;
- }
- static inline void Lpuart_Uart_Ip_SetBitCountPerChar(LPUART_Type * Base,
- Lpuart_Uart_Ip_BitCountPerCharType BitCountPerChar,
- boolean Parity)
- {
- uint32 TmpBitCountPerChar = (uint32)BitCountPerChar;
- if (Parity)
- {
- TmpBitCountPerChar += 1U;
- }
- if (TmpBitCountPerChar == (uint32)LPUART_UART_IP_10_BITS_PER_CHAR)
- {
- Base->BAUD = (Base->BAUD & ~LPUART_BAUD_M10_MASK) | ((uint32)1U << LPUART_BAUD_M10_SHIFT);
- }
- else
- {
- if (LPUART_UART_IP_7_BITS_PER_CHAR == BitCountPerChar)
- {
-
- if (Parity)
- {
-
- Base->CTRL &= ~(LPUART_CTRL_M7_MASK | LPUART_CTRL_M_MASK);
- }
- else
- {
-
- Base->CTRL = (Base->CTRL & ~LPUART_CTRL_M7_MASK) | ((uint32)1U << LPUART_CTRL_M7_SHIFT);
- }
- }
- else
- {
- TmpBitCountPerChar -= 1U;
-
- Base->CTRL = (Base->CTRL & ~LPUART_CTRL_M_MASK) | (TmpBitCountPerChar << LPUART_CTRL_M_SHIFT);
- }
-
- Base->BAUD &= ~LPUART_BAUD_M10_MASK;
- }
- }
- static inline void Lpuart_Uart_Ip_SetParityMode(LPUART_Type * Base, Lpuart_Uart_Ip_ParityModeType ParityModeType)
- {
- Base->CTRL = (Base->CTRL & ~LPUART_CTRL_PE_MASK) | (((uint32)ParityModeType >> 1U) << LPUART_CTRL_PE_SHIFT);
- Base->CTRL = (Base->CTRL & ~LPUART_CTRL_PT_MASK) | (((uint32)ParityModeType & 1U) << LPUART_CTRL_PT_SHIFT);
- }
- static inline void Lpuart_Uart_Ip_SetStopBitCount(LPUART_Type * Base, Lpuart_Uart_Ip_StopBitCountType StopBitCount)
- {
- Base->BAUD = (Base->BAUD & ~LPUART_BAUD_SBNS_MASK) | ((uint32)StopBitCount << LPUART_BAUD_SBNS_SHIFT);
- }
- static inline void Lpuart_Uart_Ip_SetIntMode(LPUART_Type * Base, Lpuart_Uart_Ip_InterruptType IntSrc, boolean Enable)
- {
- Base->CTRL = (Base->CTRL & ~(1UL << (uint32)IntSrc)) | ((Enable ? 1U : 0U) << (uint32)IntSrc);
- }
- static inline boolean Lpuart_Uart_Ip_GetIntMode(const LPUART_Type * Base, Lpuart_Uart_Ip_InterruptType IntSrc)
- {
- boolean RetVal = FALSE;
- RetVal = (((Base->CTRL >> (uint32)(IntSrc)) & 1U) > 0U);
- return RetVal;
- }
- static inline void Lpuart_Uart_Ip_SetTxDmaCmd(LPUART_Type * Base, boolean Enable)
- {
- Base->BAUD = (Base->BAUD & ~LPUART_BAUD_TDMAE_MASK) | ((Enable ? 1UL : 0UL) << LPUART_BAUD_TDMAE_SHIFT);
- }
- static inline void Lpuart_Uart_Ip_SetRxDmaCmd(LPUART_Type * Base, boolean Enable)
- {
- Base->BAUD = (Base->BAUD & ~LPUART_BAUD_RDMAE_MASK) | ((Enable ? 1UL : 0UL) << LPUART_BAUD_RDMAE_SHIFT);
- }
- static inline void Lpuart_Uart_Ip_Putchar(LPUART_Type * Base, uint8 Data)
- {
- volatile uint8 * DataRegBytes = (volatile uint8 *)(&(Base->DATA));
- DataRegBytes[0] = Data;
- }
- static inline void Lpuart_Uart_Ip_Putchar9(LPUART_Type * Base, uint16 Data)
- {
- uint8 NinthDataBit;
- volatile uint8 * DataRegBytes = (volatile uint8 *)(&(Base->DATA));
- NinthDataBit = (uint8)((Data >> 8U) & 0x1U);
-
- Base->CTRL = (Base->CTRL & ~LPUART_CTRL_R9T8_MASK) | ((uint32)(NinthDataBit) << LPUART_CTRL_R9T8_SHIFT);
-
- DataRegBytes[0] = (uint8)Data;
- }
- static inline void Lpuart_Uart_Ip_Putchar10(LPUART_Type * Base, uint16 Data)
- {
- uint8 NinthDataBit, TenthDataBit;
- uint32 CtrlRegVal;
- volatile uint8 * DataRegBytes = (volatile uint8 *)(&(Base->DATA));
- NinthDataBit = (uint8)((Data >> 8U) & 0x1U);
- TenthDataBit = (uint8)((Data >> 9U) & 0x1U);
-
- CtrlRegVal = Base->CTRL;
- CtrlRegVal = (CtrlRegVal & ~LPUART_CTRL_R9T8_MASK) | ((uint32)NinthDataBit << LPUART_CTRL_R9T8_SHIFT);
- CtrlRegVal = (CtrlRegVal & ~LPUART_CTRL_R8T9_MASK) | ((uint32)TenthDataBit << LPUART_CTRL_R8T9_SHIFT);
-
- Base->CTRL = CtrlRegVal;
-
- DataRegBytes[0] = (uint8)Data;
- }
- static inline uint8 Lpuart_Uart_Ip_Getchar(const LPUART_Type * Base)
- {
- return (uint8)Base->DATA;
- }
- static inline uint16 Lpuart_Uart_Ip_Getchar9(const LPUART_Type * Base)
- {
- uint16 ReadData;
-
- ReadData = (uint16)(((Base->CTRL >> LPUART_CTRL_R8T9_SHIFT) & 1U) << 8);
-
- ReadData |= (uint8)Base->DATA;
- return ReadData;
- }
- static inline uint16 Lpuart_Uart_Ip_Getchar10(const LPUART_Type * Base)
- {
- uint16 ReadData;
-
- ReadData = (uint16)(((Base->CTRL >> LPUART_CTRL_R9T8_SHIFT) & 1U) << 9);
-
- ReadData |= (uint16)(((Base->CTRL >> LPUART_CTRL_R8T9_SHIFT) & 1U) << 8);
-
- ReadData |= (uint8)Base->DATA;
- return ReadData;
- }
- static inline boolean Lpuart_Uart_Ip_GetStatusFlag(const LPUART_Type * Base, Lpuart_Uart_Ip_StatusFlagType StatusFlag)
- {
- boolean RetVal = FALSE;
- RetVal = (((Base->STAT >> (uint32)(StatusFlag)) & 1U) > 0U);
- return RetVal;
- }
- static inline void Lpuart_Uart_Ip_ClearStatusFlag(LPUART_Type * Base, Lpuart_Uart_Ip_StatusFlagType StatusFlag)
- {
- switch(StatusFlag)
- {
- case LPUART_UART_IP_RX_OVERRUN:
- Base->STAT = (Base->STAT & (~LPUART_FEATURE_STAT_REG_FLAGS_MASK)) | LPUART_STAT_OR_MASK;
- break;
- case LPUART_UART_IP_NOISE_DETECT:
- Base->STAT = (Base->STAT & (~LPUART_FEATURE_STAT_REG_FLAGS_MASK)) | LPUART_STAT_NF_MASK;
- break;
- case LPUART_UART_IP_FRAME_ERR:
- Base->STAT = (Base->STAT & (~LPUART_FEATURE_STAT_REG_FLAGS_MASK)) | LPUART_STAT_FE_MASK;
- break;
- case LPUART_UART_IP_PARITY_ERR:
- Base->STAT = (Base->STAT & (~LPUART_FEATURE_STAT_REG_FLAGS_MASK)) | LPUART_STAT_PF_MASK;
- break;
- default:
-
- break;
- }
- }
- static inline void Lpuart_Uart_Ip_ClearStatusFlagWithMask(LPUART_Type * Base, uint32 Mask)
- {
- Base->STAT = (Base->STAT & (~LPUART_FEATURE_STAT_REG_FLAGS_MASK)) | Mask;
- }
- static inline void Lpuart_Uart_Ip_ClearErrorFlags(LPUART_Type * Base)
- {
- uint32 Mask = LPUART_STAT_OR_MASK | \
- LPUART_STAT_NF_MASK | \
- LPUART_STAT_FE_MASK | \
- LPUART_STAT_PF_MASK;
- Base->STAT = (Base->STAT & (~LPUART_FEATURE_STAT_REG_FLAGS_MASK)) | Mask;
- }
- static inline void Lpuart_Uart_Ip_StartTimeout(uint32 *StartTimeOut, uint32 *TimeoutTicksOut, uint32 TimeoutUs, OsIf_CounterType OsifCounter)
- {
- *StartTimeOut = OsIf_GetCounter(OsifCounter);
- *TimeoutTicksOut = OsIf_MicrosToTicks(TimeoutUs, OsifCounter);
- }
- static inline boolean Lpuart_Uart_Ip_CheckTimeout(uint32 * StartTime, uint32 * ElapsedTicks, uint32 TimeoutTicks, OsIf_CounterType OsifCounter)
- {
- uint32 CurrentElapsedTicks = OsIf_GetElapsed(StartTime, OsifCounter);
- *ElapsedTicks += CurrentElapsedTicks;
- return ((*ElapsedTicks >= TimeoutTicks) ? TRUE : FALSE);
- }
- static inline void Lpuart_Uart_Ip_FlushTxBuffer(LPUART_Type * Base)
- {
- Base->FIFO |= LPUART_FIFO_TXFLUSH_MASK;
- }
- static inline void Lpuart_Uart_Ip_FlushRxBuffer(LPUART_Type * Base)
- {
- Base->FIFO |= LPUART_FIFO_RXFLUSH_MASK;
- }
- }
|