123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- /**************************************************************************//**
- * @file PS2.h
- * @version V0.10
- * $Revision: 6 $
- * $Date: 14/10/06 1:58p $
- * @brief NUC472/NUC442 PS2 Driver Header File
- *
- * @note
- * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
- ******************************************************************************/
- #ifndef __PS2_H__
- #define __PS2_H__
- /*---------------------------------------------------------------------------------------------------------*/
- /* Include related headers */
- /*---------------------------------------------------------------------------------------------------------*/
- #include "NUC472_442.h"
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
- @{
- */
- /** @addtogroup NUC472_442_PS2_Driver PS2 Driver
- @{
- */
- /** @addtogroup NUC472_442_PS2_EXPORTED_FUNCTIONS PS2 Exported Functions
- @{
- */
- /**
- * @brief This function use to set TX FIFO length.
- *
- * @param[in] u32Count TX FIFO length
- *
- * @return None
- * \hideinitializer
- */
- #define PS2_SET_TX_BYTE_CNT(u32Count) (PS2->CTL = (PS2->CTL & ~PS2_CTL_TXFDEPTH_Msk) \
- | ((u32Count-1) << PS2_CTL_TXFDEPTH_Pos))
- /**
- * @brief This function use to get PS2 status.
- *
- * @param None
- *
- * @return PS2 status
- * \hideinitializer
- */
- #define PS2_GET_STATUS() (PS2->STATUS)
- /**
- * @brief This function use to clear PS2 status.
- *
- * @param[in] u32Mask Clear the specified status of Ps2 module:
- * \ref PS2_STATUS_FRAMEERR_Msk , \ref PS2_STATUS_RXOV_Msk
- *
- * @return None
- */
- #define PS2_CLR_STATUS(u32Mask) (PS2D->PS2STATUS = u32Mask)
- /**
- * @brief This function use to clear PS2 Tx FIFO.
- *
- * @param None
- *
- * @return None
- * \hideinitializer
- */
- __STATIC_INLINE void PS2_CLEAR_TX_FIFO(void)
- {
- PS2->CTL |= PS2_CTL_CLRFIFO_Msk;
- PS2->CTL &= ~PS2_CTL_CLRFIFO_Msk;
- }
- /**
- * @brief This function use to clear PS2 Rx interrupt.
- *
- * @param None
- *
- * @return None
- * \hideinitializer
- */
- #define PS2_CLR_RX_INT_FLAG() (PS2->INTSTS = PS2_INTSTS_RXIF_Msk)
- /**
- * @brief This function use to clear PS2 Tx interrupt.
- *
- * @param None
- *
- * @return None
- * \hideinitializer
- */
- #define PS2_CLR_TX_INT_FLAG() (PS2->INTSTS = PS2_INTSTS_TXIF_Msk)
- /**
- * @brief This function use to get PS2 interrupt.
- *
- * @param[in] u32IntFlag interrupt flag: \ref PS2_INTSTS_TXIF_Msk , \ref PS2_INTSTS_RXIF_Msk
- *
- * @return 1: interrupt occurs
- * 0: interrupt not occurs
- * \hideinitializer
- */
- #define PS2_GET_INT_FLAG(u32IntFlag) ((PS2->INTSTS & u32IntFlag)?1:0)
- /**
- * @brief This function use to set PS2CLK and PS2DATA pins are controlled by hardware.
- *
- * @param None
- *
- * @return None
- * \hideinitializer
- */
- #define PS2_DISABLE_OVERRIDE() (PS2->CTL &= ~PS2_CTL_PS2EN_Msk)
- /**
- * @brief This function use to set PS2CLK and PS2DATA pins are controlled by software.
- *
- * @param None
- *
- * @return None
- * \hideinitializer
- */
- #define PS2_ENABLE_OVERRIDE() (PS2->CTL |= PS2_CTL_PS2EN_Msk)
- /**
- * @brief This function use to get indicates which data byte in transmit data shift register.
- *
- * @param None
- *
- * @return The indicates which data byte in transmit data shift register.
- * \hideinitializer
- */
- #define PS2_GET_TX_BYTE_INDEX() ((PS2->STATUS & PS2_STATUS_BYTEIDX_Msk) >> PS2_STATUS_BYTEIDX_Pos)
- /**
- * @brief This function use to set PS2DATA Pin low.
- *
- * @param None
- *
- * @return None.
- * \hideinitializer
- */
- #define PS2_SET_DATA_LOW() (PS2->CTL &= ~PS2_CTL_FPS2DAT_Msk)
- /**
- * @brief This function use to set PS2DATA Pin high.
- *
- * @param None
- *
- * @return None.
- * \hideinitializer
- */
- #define PS2_SET_DATA_HIGH() (PS2->CTL |= PS2_CTL_FPS2DAT_Msk)
- /**
- * @brief This function use to set PS2CLK Pin low.
- *
- * @param None
- *
- * @return None.
- * \hideinitializer
- */
- #define PS2_SET_CLK_LOW() (PS2->CTL &= ~PS2_CTL_FPS2CLK_Msk)
- /**
- * @brief This function use to set PS2CLK Pin high.
- *
- * @param None
- *
- * @return None.
- * \hideinitializer
- */
- #define PS2_SET_CLK_HIGH() (PS2->CTL |= PS2_CTL_FPS2CLK_Msk)
- /**
- * @brief If Parity error or Stop bit is Not Received Correctly, Acknowledge will Not be Sent to host at 12th clock.
- *
- * @param None
- *
- * @return None.
- * \hideinitializer
- */
- #define PS2_DISABLE_ACK_ALWAYS() (PS2->CTL |= PS2_CTL_ACK_Msk)
- /**
- * @brief Always sends acknowledge to host at 12th clock for host to device communication.
- *
- * @param None
- *
- * @return None.
- * \hideinitializer
- */
- #define PS2_ENABLE_ACK_ALWAYS() (PS2->CTL &= ~PS2_CTL_ACK_Msk)
- /*---------------------------------------------------------------------------------------------------------*/
- /* Define Function Prototypes */
- /*---------------------------------------------------------------------------------------------------------*/
- void PS2_Open(void);
- void PS2_Close(void);
- uint8_t PS2_Read(void);
- int32_t PS2_Write(uint32_t *pu32Buf, uint32_t u32ByteCount);
- void PS2_EnableInt(uint32_t u32Mask);
- void PS2_DisableInt(uint32_t u32Mask);
- /*@}*/ /* end of group NUC472_442_PS2_EXPORTED_FUNCTIONS */
- /*@}*/ /* end of group NUC472_442_PS2_Driver */
- /*@}*/ /* end of group NUC472_442_Device_Driver */
- #ifdef __cplusplus
- }
- #endif
- #endif //__PS2_H__
- /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/
|