123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191 |
- /**************************************************************************//**
- * @file nu_psio.h
- * @version V3.00
- * @brief M460 series PSIO driver header file
- *
- * @copyright SPDX-License-Identifier: Apache-2.0
- * @copyright Copyright (C) 2021 Nuvoton Technology Corp. All rights reserved.
- *****************************************************************************/
- #ifndef __NU_PSIO_H__
- #define __NU_PSIO_H__
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /** @addtogroup Standard_Driver Standard Driver
- @{
- */
- /** @addtogroup PSIO_Driver PSIO Driver
- @{
- */
- /** @addtogroup PSIO_EXPORTED_CONSTANTS PSIO Exported Constants
- @{
- */
- /*---------------------------------------------------------------------------------------------------------*/
- /* Operation Mode Constant Definitions */
- /*---------------------------------------------------------------------------------------------------------*/
- #define PSIO_SC0 0x00000000UL /*!<PSIO Slot Controller 0 \hideinitializer */
- #define PSIO_SC1 0x00000001UL /*!<PSIO Slot Controller 1 \hideinitializer */
- #define PSIO_SC2 0x00000002UL /*!<PSIO Slot Controller 2 \hideinitializer */
- #define PSIO_SC3 0x00000003UL /*!<PSIO Slot Controller 3 \hideinitializer */
- #define PSIO_INT0 0x00000000UL /*!<PSIO Interrupt 0 \hideinitializer */
- #define PSIO_INT1 0x00000001UL /*!<PSIO Interrupt 1 \hideinitializer */
- #define PSIO_SLOT_DISABLE 0x00000000UL /*!<PSIO Slot disable \hideinitializer */
- #define PSIO_SLOT0 0x00000001UL /*!<PSIO Slot 0 \hideinitializer */
- #define PSIO_SLOT1 0x00000002UL /*!<PSIO Slot 1 \hideinitializer */
- #define PSIO_SLOT2 0x00000003UL /*!<PSIO Slot 2 \hideinitializer */
- #define PSIO_SLOT3 0x00000004UL /*!<PSIO Slot 3 \hideinitializer */
- #define PSIO_SLOT4 0x00000005UL /*!<PSIO Slot 4 \hideinitializer */
- #define PSIO_SLOT5 0x00000006UL /*!<PSIO Slot 5 \hideinitializer */
- #define PSIO_SLOT6 0x00000007UL /*!<PSIO Slot 6 \hideinitializer */
- #define PSIO_SLOT7 0x00000008UL /*!<PSIO Slot 7 \hideinitializer */
- #define PSIO_PIN0 0x00000000UL /*!<PSIO Pin 0 \hideinitializer */
- #define PSIO_PIN1 0x00000001UL /*!<PSIO Pin 1 \hideinitializer */
- #define PSIO_PIN2 0x00000002UL /*!<PSIO Pin 2 \hideinitializer */
- #define PSIO_PIN3 0x00000003UL /*!<PSIO Pin 3 \hideinitializer */
- #define PSIO_PIN4 0x00000004UL /*!<PSIO Pin 4 \hideinitializer */
- #define PSIO_PIN5 0x00000005UL /*!<PSIO Pin 5 \hideinitializer */
- #define PSIO_PIN6 0x00000006UL /*!<PSIO Pin 6 \hideinitializer */
- #define PSIO_PIN7 0x00000007UL /*!<PSIO Pin 7 \hideinitializer */
- #define PSIO_CP0 0x00000000UL /*!<PSIO Check Point 0 \hideinitializer */
- #define PSIO_CP1 0x00000001UL /*!<PSIO Check Point 1 \hideinitializer */
- #define PSIO_CP2 0x00000002UL /*!<PSIO Check Point 2 \hideinitializer */
- #define PSIO_CP3 0x00000003UL /*!<PSIO Check Point 3 \hideinitializer */
- #define PSIO_CP4 0x00000004UL /*!<PSIO Check Point 4 \hideinitializer */
- #define PSIO_CP5 0x00000005UL /*!<PSIO Check Point 5 \hideinitializer */
- #define PSIO_CP6 0x00000006UL /*!<PSIO Check Point 6 \hideinitializer */
- #define PSIO_CP7 0x00000007UL /*!<PSIO Check Point 7 \hideinitializer */
- #define PSIO_PIN_ENABLE 0x00000001UL /*!<PSIO Pin Enable \hideinitializer */
- #define PSIO_PIN_DISABLE 0x00000000UL /*!<PSIO Pin Disable \hideinitializer */
- #define PSIO_SW_TRIGGER (0x0UL<<PSIO_SCCT_SCCTL_TRIGSRC_Pos) /*!<PSIO Software Trigger \hideinitializer */
- #define PSIO_FALLING_TRIGGER (0x1UL<<PSIO_SCCT_SCCTL_TRIGSRC_Pos) /*!<PSIO Falling Edge Trigger \hideinitializer */
- #define PSIO_RISING_TRIGGER (0x2UL<<PSIO_SCCT_SCCTL_TRIGSRC_Pos) /*!<PSIO Rising Edge Trigger \hideinitializer */
- #define PSIO_BOTH_EDGE_TRIGGER (0x3UL<<PSIO_SCCT_SCCTL_TRIGSRC_Pos) /*!<PSIO Both Edge Trigger \hideinitializer */
- #define PSIO_REPEAT_ENABLE 0x00000001UL /*!<PSIO Repeat Mode Enable \hideinitializer */
- #define PSIO_REPEAT_DISABLE 0x00000000UL /*!<PSIO Repeat Mode Disable \hideinitializer */
- #define PSIO_INPUT_MODE 0x00000000UL /*!<PSIO Input Mode \hideinitializer */
- #define PSIO_OUTPUT_MODE 0x00000001UL /*!<PSIO Output Mode \hideinitializer */
- #define PSIO_OPENDRAIN_MODE 0x00000002UL /*!<PSIO Open-drain Mode \hideinitializer */
- #define PSIO_QUASI_MODE 0x00000003UL /*!<PSIO Quasi Mode \hideinitializer */
- #define PSIO_LOW_LEVEL 0x00000000UL /*!<PSIO Low Level \hideinitializer */
- #define PSIO_HIGH_LEVEL 0x00000001UL /*!<PSIO High Level \hideinitializer */
- #define PSIO_LAST_OUTPUT 0x00000002UL /*!<PSIO Last Output \hideinitializer */
- #define PSIO_Toggle 0x00000003UL /*!<PSIO Toggle \hideinitializer */
- #define PSIO_SWITCH_P0 0x00000000UL /*!<PSIO Switch Point 0 \hideinitializer */
- #define PSIO_SWITCH_P1 0x00000001UL /*!<PSIO Switch Point 1 \hideinitializer */
- #define PSIO_LSB (0x0UL<<PSIO_GNCT_DATCTL_ORDER_Pos) /*!<PSIO Data LSB \hideinitializer */
- #define PSIO_MSB (0x1UL<<PSIO_GNCT_DATCTL_ORDER_Pos) /*!<PSIO Data MSB \hideinitializer */
- #define PSIO_DEPTH1 0x00000000UL /*!<PSIO Data Depth 1 \hideinitializer */
- #define PSIO_DEPTH2 0x00000001UL /*!<PSIO Data Depth 2 \hideinitializer */
- #define PSIO_DEPTH3 0x00000002UL /*!<PSIO Data Depth 3 \hideinitializer */
- #define PSIO_DEPTH4 0x00000003UL /*!<PSIO Data Depth 4 \hideinitializer */
- #define PSIO_NO_ACTION 0x00000000UL /*!<PSIO no action \hideinitializer */
- #define PSIO_OUT_LOW 0x00000000UL /*!<PSIO Output Low \hideinitializer */
- #define PSIO_OUT_HIGH 0x00000001UL /*!<PSIO Output High \hideinitializer */
- #define PSIO_OUT_BUFFER 0x00000002UL /*!<PSIO Output form Buffer \hideinitializer */
- #define PSIO_OUT_TOGGLE 0x00000003UL /*!<PSIO Output Toggle \hideinitializer */
- #define PSIO_IN_BUFFER 0x00000004UL /*!<PSIO Input to Buffer \hideinitializer */
- #define PSIO_IN_STATUS 0x00000005UL /*!<PSIO Input to Status \hideinitializer */
- #define PSIO_IN_STATUS_UPDATE 0x00000006UL /*!<PSIO Input to Status and Update \hideinitializer */
- /*@}*/ /* end of group PSIO_EXPORTED_CONSTANTS */
- /** @addtogroup PSIO_EXPORTED_STRUCTS PSIO Exported Structs
- @{
- */
- /**
- * @brief A structure holds psio configuration
- */
- typedef struct
- {
- unsigned CKPT0SLT: 4; ///< Link check point and slot controller slot. \ref PSIO_SLOT_DISABLE, \ref PSIO_SLOT0, \ref PSIO_SLOT1, \ref PSIO_SLOT2, \ref PSIO_SLOT3, \ref PSIO_SLOT4, \ref PSIO_SLOT5, \ref PSIO_SLOT6, \ref PSIO_SLOT7
- unsigned CKPT1SLT: 4; ///< Link check point and slot controller slot. Reference to \ref S_PSIO_CP_CONFIG::CKPT0SLT
- unsigned CKPT2SLT: 4; ///< Link check point and slot controller slot. Reference to \ref S_PSIO_CP_CONFIG::CKPT0SLT
- unsigned CKPT3SLT: 4; ///< Link check point and slot controller slot. Reference to \ref S_PSIO_CP_CONFIG::CKPT0SLT
- unsigned CKPT4SLT: 4; ///< Link check point and slot controller slot. Reference to \ref S_PSIO_CP_CONFIG::CKPT0SLT
- unsigned CKPT5SLT: 4; ///< Link check point and slot controller slot. Reference to \ref S_PSIO_CP_CONFIG::CKPT0SLT
- unsigned CKPT6SLT: 4; ///< Link check point and slot controller slot. Reference to \ref S_PSIO_CP_CONFIG::CKPT0SLT
- unsigned CKPT7SLT: 4; ///< Link check point and slot controller slot. Reference to \ref S_PSIO_CP_CONFIG::CKPT0SLT
- unsigned CKPT0ACT: 4; ///< Select action at check point0. \ref PSIO_NO_ACTION, \ref PSIO_OUT_LOW, \ref PSIO_OUT_HIGH, \ref PSIO_OUT_BUFFER, \ref PSIO_OUT_TOGGLE, \ref PSIO_IN_BUFFER, \ref PSIO_IN_STATUS, \ref PSIO_IN_STATUS_UPDATE
- unsigned CKPT1ACT: 4; ///< Select action at check point1. Reference to \ref S_PSIO_CP_CONFIG::CKPT0ACT
- unsigned CKPT2ACT: 4; ///< Select action at check point2. Reference to \ref S_PSIO_CP_CONFIG::CKPT0ACT
- unsigned CKPT3ACT: 4; ///< Select action at check point3. Reference to \ref S_PSIO_CP_CONFIG::CKPT0ACT
- unsigned CKPT4ACT: 4; ///< Select action at check point4. Reference to \ref S_PSIO_CP_CONFIG::CKPT0ACT
- unsigned CKPT5ACT: 4; ///< Select action at check point5. Reference to \ref S_PSIO_CP_CONFIG::CKPT0ACT
- unsigned CKPT6ACT: 4; ///< Select action at check point6. Reference to \ref S_PSIO_CP_CONFIG::CKPT0ACT
- unsigned CKPT7ACT: 4; ///< Select action at check point7. Reference to \ref S_PSIO_CP_CONFIG::CKPT0ACT
- } S_PSIO_CP_CONFIG;
- /*@}*/ /* end of group PSIO_EXPORTED_STRUCTS */
- /** @addtogroup PSIO_EXPORTED_FUNCTIONS PSIO Exported Functions
- @{
- */
- /**
- * @brief Enable specified PSIO interrupt
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32IntSel Interrupt type select
- * - \ref PSIO_INTEN_CON0IE_Msk
- * - \ref PSIO_INTEN_CON1IE_Msk
- * - \ref PSIO_INTEN_MISMATIE_Msk
- * - \ref PSIO_INTEN_TERRIE_Msk
- * - \ref PSIO_INTEN_SC0IE_Msk
- * - \ref PSIO_INTEN_SC1IE_Msk
- * - \ref PSIO_INTEN_SC2IE_Msk
- * - \ref PSIO_INTEN_SC3IE_Msk
- *
- * @return None
- *
- * @details This macro enable specified PSIO interrupt.
- * \hideinitializer
- */
- #define PSIO_ENABLE_INT(psio, u32IntSel) ((psio)->INTEN |= (u32IntSel))
- /**
- * @brief Disable specified PSIO interrupt
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32IntSel Interrupt type select
- * - \ref PSIO_INTEN_CON0IE_Msk
- * - \ref PSIO_INTEN_CON1IE_Msk
- * - \ref PSIO_INTEN_MISMATIE_Msk
- * - \ref PSIO_INTEN_TERRIE_Msk
- * - \ref PSIO_INTEN_SC0IE_Msk
- * - \ref PSIO_INTEN_SC1IE_Msk
- * - \ref PSIO_INTEN_SC2IE_Msk
- * - \ref PSIO_INTEN_SC3IE_Msk
- *
- * @return None
- *
- * @details This macro disable specified PSIO interrupt.
- * \hideinitializer
- */
- #define PSIO_DISABLE_INT(psio, u32IntSel) ((psio)->INTEN &= ~(u32IntSel))
- /**
- * @brief Get specified interrupt flag/status
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32IntTypeFlag Interrupt Type Flag, Valid values are
- * - \ref PSIO_INTSTS_CON0IF_Msk
- * - \ref PSIO_INTSTS_CON1IF_Msk
- * - \ref PSIO_INTSTS_MISMATIF_Msk
- * - \ref PSIO_INTSTS_TERRIF_Msk
- * - \ref PSIO_INTSTS_SC0IF_Msk
- * - \ref PSIO_INTSTS_SC1IF_Msk
- * - \ref PSIO_INTSTS_SC2IF_Msk
- * - \ref PSIO_INTSTS_SC3IF_Msk
- *
- * @return 0 The specified interrupt is not happened.
- * 1 The specified interrupt is happened.
- *
- * @details This macro get specified interrupt flag or interrupt indicator status.
- * \hideinitializer
- */
- #define PSIO_GET_INT_FLAG(psio, u32IntTypeFlag) (((psio)->INTSTS & (u32IntTypeFlag))?1:0)
- /**
- * @brief Clear specified interrupt flag/status
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32IntTypeFlag Interrupt Type Flag, Valid values are
- * - \ref PSIO_INTSTS_CON0IF_Msk
- * - \ref PSIO_INTSTS_CON1IF_Msk
- * - \ref PSIO_INTSTS_MISMATIF_Msk
- * - \ref PSIO_INTSTS_TERRIF_Msk
- * - \ref PSIO_INTSTS_SC0IF_Msk
- * - \ref PSIO_INTSTS_SC1IF_Msk
- * - \ref PSIO_INTSTS_SC2IF_Msk
- * - \ref PSIO_INTSTS_SC3IF_Msk
- *
- * @return None
- *
- * @details This macro clear specified interrupt flag or interrupt indicator status.
- * \hideinitializer
- */
- #define PSIO_CLEAR_INT_FLAG(psio, u32IntTypeFlag) ((psio)->INTSTS = u32IntTypeFlag)
- /**
- * @brief Get specified transfer status
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Status Transfer status, Valid values are
- * - \ref PSIO_TRANSTS_INFULL0_Msk
- * - \ref PSIO_TRANSTS_INOVER0_Msk
- * - \ref PSIO_TRANSTS_OUTEPY0_Msk
- * - \ref PSIO_TRANSTS_OUTUF0_Msk
- * - \ref PSIO_TRANSTS_INFULL1_Msk
- * - \ref PSIO_TRANSTS_INOVER1_Msk
- * - \ref PSIO_TRANSTS_OUTEPY1_Msk
- * - \ref PSIO_TRANSTS_OUTUF1_Msk
- * - \ref PSIO_TRANSTS_INFULL2_Msk
- * - \ref PSIO_TRANSTS_INOVER2_Msk
- * - \ref PSIO_TRANSTS_OUTEPY2_Msk
- * - \ref PSIO_TRANSTS_OUTUF2_Msk
- * - \ref PSIO_TRANSTS_INFULL3_Msk
- * - \ref PSIO_TRANSTS_INOVER3_Msk
- * - \ref PSIO_TRANSTS_OUTEPY3_Msk
- * - \ref PSIO_TRANSTS_OUTUF3_Msk
- * - \ref PSIO_TRANSTS_INFULL4_Msk
- * - \ref PSIO_TRANSTS_INOVER4_Msk
- * - \ref PSIO_TRANSTS_OUTEPY4_Msk
- * - \ref PSIO_TRANSTS_OUTUF4_Msk
- * - \ref PSIO_TRANSTS_INFULL5_Msk
- * - \ref PSIO_TRANSTS_INOVER5_Msk
- * - \ref PSIO_TRANSTS_OUTEPY5_Msk
- * - \ref PSIO_TRANSTS_OUTUF5_Msk
- * - \ref PSIO_TRANSTS_INFULL6_Msk
- * - \ref PSIO_TRANSTS_INOVER6_Msk
- * - \ref PSIO_TRANSTS_OUTEPY6_Msk
- * - \ref PSIO_TRANSTS_OUTUF6_Msk
- * - \ref PSIO_TRANSTS_INFULL7_Msk
- * - \ref PSIO_TRANSTS_INOVER7_Msk
- * - \ref PSIO_TRANSTS_OUTEPY7_Msk
- * - \ref PSIO_TRANSTS_OUTUF7_Msk
- *
- * @return 0 The specified status is not happened.
- * 1 The specified status is happened.
- *
- * @details This macro get specified transfer status.
- * \hideinitializer
- */
- #define PSIO_GET_TRANSFER_STATUS(psio, u32Status) (((psio)->TRANSTS & (u32Status))?1:0)
- /**
- * @brief Clear specified transfer status
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Status Transfer status, Valid values are
- * - \ref PSIO_TRANSTS_INOVER0_Msk
- * - \ref PSIO_TRANSTS_OUTUF0_Msk
- * - \ref PSIO_TRANSTS_INOVER1_Msk
- * - \ref PSIO_TRANSTS_OUTUF1_Msk
- * - \ref PSIO_TRANSTS_INOVER2_Msk
- * - \ref PSIO_TRANSTS_OUTUF2_Msk
- * - \ref PSIO_TRANSTS_INOVER3_Msk
- * - \ref PSIO_TRANSTS_OUTUF3_Msk
- * - \ref PSIO_TRANSTS_INOVER4_Msk
- * - \ref PSIO_TRANSTS_OUTUF4_Msk
- * - \ref PSIO_TRANSTS_INOVER5_Msk
- * - \ref PSIO_TRANSTS_OUTUF5_Msk
- * - \ref PSIO_TRANSTS_INOVER6_Msk
- * - \ref PSIO_TRANSTS_OUTUF6_Msk
- * - \ref PSIO_TRANSTS_INOVER7_Msk
- * - \ref PSIO_TRANSTS_OUTUF7_Msk
- *
- * @return None
- *
- * @details This macro clear specified transfer status.
- * \hideinitializer
- */
- #define PSIO_CLEAR_TRANSFER_STATUS(psio, u32Status) ((psio)->TRANSTS = u32Status)
- /**
- * @brief Get specified input status state
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Status Transfer input status state, Valid values are
- * - \ref PSIO_ISSTS_VALID0_Msk
- * - \ref PSIO_ISSTS_INSTSOV0_Msk
- * - \ref PSIO_ISSTS_VALID1_Msk
- * - \ref PSIO_ISSTS_INSTSOV1_Msk
- * - \ref PSIO_ISSTS_VALID2_Msk
- * - \ref PSIO_ISSTS_INSTSOV2_Msk
- * - \ref PSIO_ISSTS_VALID3_Msk
- * - \ref PSIO_ISSTS_INSTSOV3_Msk
- * - \ref PSIO_ISSTS_VALID4_Msk
- * - \ref PSIO_ISSTS_INSTSOV4_Msk
- * - \ref PSIO_ISSTS_VALID5_Msk
- * - \ref PSIO_ISSTS_INSTSOV5_Msk
- * - \ref PSIO_ISSTS_VALID6_Msk
- * - \ref PSIO_ISSTS_INSTSOV6_Msk
- * - \ref PSIO_ISSTS_VALID7_Msk
- * - \ref PSIO_ISSTS_INSTSOV7_Msk
- *
- * @return 0 The specified status is not happened.
- * 1 The specified status is happened.
- *
- * @details This macro get input status state.
- * \hideinitializer
- */
- #define PSIO_GET_INPUT_STATUS_STATE(psio, u32Status) (((psio)->ISSTS & (u32Status))?1:0)
- /**
- * @brief Clear specified input status state
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Status Transfer input status state, Valid values are
- * - \ref PSIO_ISSTS_INSTSOV0_Msk
- * - \ref PSIO_ISSTS_INSTSOV1_Msk
- * - \ref PSIO_ISSTS_INSTSOV2_Msk
- * - \ref PSIO_ISSTS_INSTSOV3_Msk
- * - \ref PSIO_ISSTS_INSTSOV4_Msk
- * - \ref PSIO_ISSTS_INSTSOV5_Msk
- * - \ref PSIO_ISSTS_INSTSOV6_Msk
- * - \ref PSIO_ISSTS_INSTSOV7_Msk
- *
- * @return None
- *
- * @details This macro clear input status state.
- * \hideinitializer
- */
- #define PSIO_CLEAR_INPUT_STATUS_STATE(psio, u32Status) ((psio)->ISSTS = u32Status)
- /**
- * @brief Set PSIO PDMA control input
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- * @param[in] u32InPin The selected input pin
- * - \ref PSIO_PDMACTL_IPIN0EN_Msk
- * - \ref PSIO_PDMACTL_IPIN1EN_Msk
- * - \ref PSIO_PDMACTL_IPIN2EN_Msk
- * - \ref PSIO_PDMACTL_IPIN3EN_Msk
- * - \ref PSIO_PDMACTL_IPIN4EN_Msk
- * - \ref PSIO_PDMACTL_IPIN5EN_Msk
- * - \ref PSIO_PDMACTL_IPIN6EN_Msk
- * - \ref PSIO_PDMACTL_IPIN7EN_Msk
- *
- * @return None
- *
- * @details This macro set PSIO input with PDMA.
- * \hideinitializer
- */
- #define PSIO_SET_PDMA_INPUT(psio, u32SC, u32InPin) ((psio)->PDMACTL = ((psio)->PDMACTL & ~PSIO_PDMACTL_INSCSEL_Msk) \
- |((u32SC)<<PSIO_PDMACTL_INSCSEL_Pos)|(u32InPin))
- /**
- * @brief Clear PSIO PDMA control input
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32InPin The selected input pin
- * - \ref PSIO_PDMACTL_IPIN0EN_Msk
- * - \ref PSIO_PDMACTL_IPIN1EN_Msk
- * - \ref PSIO_PDMACTL_IPIN2EN_Msk
- * - \ref PSIO_PDMACTL_IPIN3EN_Msk
- * - \ref PSIO_PDMACTL_IPIN4EN_Msk
- * - \ref PSIO_PDMACTL_IPIN5EN_Msk
- * - \ref PSIO_PDMACTL_IPIN6EN_Msk
- * - \ref PSIO_PDMACTL_IPIN7EN_Msk
- *
- * @return None
- *
- * @details This macro clear PSIO input with PDMA.
- * \hideinitializer
- */
- #define PSIO_CLEAR_PDMA_INPUT(psio, u32InPin) ((psio)->PDMACTL = (psio)->PDMACTL & ~PSIO_PDMACTL_INSCSEL_Msk & ~(u32InPin))
- /**
- * @brief Set PSIO PDMA control output
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- * @param[in] u32OutPin The selected output pin
- * - \ref PSIO_PDMACTL_OPIN0EN_Msk
- * - \ref PSIO_PDMACTL_OPIN1EN_Msk
- * - \ref PSIO_PDMACTL_OPIN2EN_Msk
- * - \ref PSIO_PDMACTL_OPIN3EN_Msk
- * - \ref PSIO_PDMACTL_OPIN4EN_Msk
- * - \ref PSIO_PDMACTL_OPIN5EN_Msk
- * - \ref PSIO_PDMACTL_OPIN6EN_Msk
- * - \ref PSIO_PDMACTL_OPIN7EN_Msk
- *
- * @return None
- *
- * @details This macro set PSIO output with PDMA.
- * \hideinitializer
- */
- #define PSIO_SET_PDMA_OUTPUT(psio, u32SC, u32OutPin) ((psio)->PDMACTL = ((psio)->PDMACTL & ~PSIO_PDMACTL_OUTSCSEL_Msk) \
- |((u32SC)<<PSIO_PDMACTL_OUTSCSEL_Pos)|(u32OutPin))
- /**
- * @brief Clear PSIO PDMA control output
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32OutPin The selected output pin
- * - \ref PSIO_PDMACTL_OPIN0EN_Msk
- * - \ref PSIO_PDMACTL_OPIN1EN_Msk
- * - \ref PSIO_PDMACTL_OPIN2EN_Msk
- * - \ref PSIO_PDMACTL_OPIN3EN_Msk
- * - \ref PSIO_PDMACTL_OPIN4EN_Msk
- * - \ref PSIO_PDMACTL_OPIN5EN_Msk
- * - \ref PSIO_PDMACTL_OPIN6EN_Msk
- * - \ref PSIO_PDMACTL_OPIN7EN_Msk
- *
- * @return None
- *
- * @details This macro clear PSIO output with PDMA.
- * \hideinitializer
- */
- #define PSIO_CLEAR_PDMA_OUTPUT(psio, u32OutPin) ((psio)->PDMACTL = (psio)->PDMACTL & ~PSIO_PDMACTL_OUTSCSEL_Msk & ~(u32OutPin))
- /**
- * @brief Set slot controller trigger source
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- * @param[in] u32SrcType The selected trigger source type
- * - \ref PSIO_SW_TRIGGER
- * - \ref PSIO_FALLING_TRIGGER
- * - \ref PSIO_RISING_TRIGGER
- * - \ref PSIO_BOTH_EDGE_TRIGGER
- *
- * @return None
- *
- * @details This macro set slot controller trigger source.
- * \hideinitializer
- */
- #define PSIO_SET_TRIGSRC(psio, u32SC, u32SrcType) ((psio)->SCCT[(u32SC)].SCCTL=((psio)->SCCT[(u32SC)].SCCTL & ~PSIO_SCCT_SCCTL_TRIGSRC_Msk)|(u32SrcType))
- /**
- * @brief Start PSIO slot controller
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- *
- * @return None
- *
- * @details This macro start PSIO slot controller.
- * \hideinitializer
- */
- #define PSIO_START_SC(psio, u32SC) ((psio)->SCCT[(u32SC)].SCCTL |= PSIO_SCCT_SCCTL_START_Msk)
- /**
- * @brief Stop PSIO slot controller
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- *
- * @return None
- *
- * @details This macro stop PSIO slot controller.
- * \hideinitializer
- */
- #define PSIO_STOP_SC(psio, u32SC) ((psio)->SCCT[(u32SC)].SCCTL |= PSIO_SCCT_SCCTL_STOP_Msk)
- /**
- * @brief Get PSIO busy flag
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- *
- * @return 0 The busy flag is not happened.
- * 1 The busy flag is happened.
- *
- * @details This macro get PSIO busy flag.
- * \hideinitializer
- */
- #define PSIO_GET_BUSY_FLAG(psio, u32SC) (((psio)->SCCT[(u32SC)].SCCTL & PSIO_SCCT_SCCTL_BUSY_Msk)?1:0)
- /**
- * @brief Get PSIO idle flag
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- *
- * @return 0 The idle flag is not happened.
- * 1 The idle flag is happened.
- *
- * @details This macro get PSIO idle flag.
- * \hideinitializer
- */
- #define PSIO_GET_IDLE_FLAG(psio, u32SC) (((psio)->SCCT[(u32SC)].SCCTL & PSIO_SCCT_SCCTL_IDLE_Msk)?1:0)
- /**
- * @brief Clear PSIO idle flag
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- *
- * @return None
- *
- * @details This macro clear PSIO idle flag.
- * \hideinitializer
- */
- #define PSIO_SET_IDLE_FLAG(psio, u32SC) ((psio)->SCCT[(u32SC)].SCCTL |= PSIO_SCCT_SCCTL_IDLE_Msk)
- /**
- * @brief Set PSIO slot tick count
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- * @param[in] u32Slot The selected slot. Valid values are
- * - \ref PSIO_SLOT0
- * - \ref PSIO_SLOT1
- * - \ref PSIO_SLOT2
- * - \ref PSIO_SLOT3
- * - \ref PSIO_SLOT4
- * - \ref PSIO_SLOT5
- * - \ref PSIO_SLOT6
- * - \ref PSIO_SLOT7
- * @param[in] u32Cnt The slot tick count. Valid values are 0x0~0xF
- *
- * @return None
- *
- * @details This macro set PSIO slot tick count.
- * \hideinitializer
- */
- #define PSIO_SCSLOT_SET_SLOT(psio, u32SC, u32Slot, u32Cnt) ((psio)->SCCT[(u32SC)].SCSLOT= \
- ((psio)->SCCT[(u32SC)].SCSLOT & ~(PSIO_SCCT_SCSLOT_SLOT0CNT_Msk<<((u32Slot-1)*PSIO_SCCT_SCSLOT_SLOT1CNT_Pos)))|((u32Cnt&0xF)<<((u32Slot-1)*PSIO_SCCT_SCSLOT_SLOT1CNT_Pos)))
- /**
- * @brief Set PSIO all slot tick count
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- * @param[in] u32Cnt The slot tick count. Valid values are 0x0~0xF
- *
- * @return None
- *
- * @details This macro set PSIO all slot tick count.
- * \hideinitializer
- */
- #define PSIO_SCSLOT_SET_ALL_SLOT(psio, u32SC, u32Cnt) ((psio)->SCCT[(u32SC)].SCSLOT= \
- ((u32Cnt&0xF)<<PSIO_SCCT_SCSLOT_SLOT0CNT_Pos)|((u32Cnt&0xF)<<PSIO_SCCT_SCSLOT_SLOT1CNT_Pos)\
- |((u32Cnt&0xF)<<PSIO_SCCT_SCSLOT_SLOT2CNT_Pos)|((u32Cnt&0xF)<<PSIO_SCCT_SCSLOT_SLOT3CNT_Pos)\
- |((u32Cnt&0xF)<<PSIO_SCCT_SCSLOT_SLOT4CNT_Pos)|((u32Cnt&0xF)<<PSIO_SCCT_SCSLOT_SLOT5CNT_Pos)\
- |((u32Cnt&0xF)<<PSIO_SCCT_SCSLOT_SLOT6CNT_Pos)|((u32Cnt&0xF)<<PSIO_SCCT_SCSLOT_SLOT7CNT_Pos))
- /**
- * @brief Enable Pin function
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- *
- * @return None
- *
- * @details This function is used to Enable this Pin.
- * \hideinitializer
- */
- #define PSIO_ENABLE_PIN(psio, u32Pin) ((psio)->GNCT[(u32Pin)].GENCTL = \
- ((psio)->GNCT[(u32Pin)].GENCTL & ~PSIO_GNCT_GENCTL_PINEN_Msk)|PSIO_GNCT_GENCTL_PINEN_Msk)
- /**
- * @brief Disable Pin function
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- *
- * @return None
- *
- * @details This function is used to disable this Pin.
- * \hideinitializer
- */
- #define PSIO_DISABLE_PIN(psio, u32Pin) ((psio)->GNCT[(u32Pin)].GENCTL = \
- ((psio)->GNCT[(u32Pin)].GENCTL & ~PSIO_GNCT_GENCTL_PINEN_Msk))
- /**
- * @brief Set specified pin data width
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32InWidth The input data width. Valid values are 0~32
- * @param[in] u32OutWidth The output data width. Valid values are 0~32
- *
- * @return None
- *
- * @details This macro set in/out data width.
- * \hideinitializer
- */
- #define PSIO_SET_WIDTH(psio, u32Pin, u32InWidth, u32OutWidth) (((psio)->GNCT[(u32Pin)].DATCTL)= \
- ((psio)->GNCT[(u32Pin)].DATCTL & ~PSIO_GNCT_DATCTL_INDATWD_Msk & ~PSIO_GNCT_DATCTL_OUTDATWD_Msk) \
- |((u32InWidth==0?0:(u32InWidth-1))<<PSIO_GNCT_DATCTL_INDATWD_Pos)|((u32OutWidth==0?0:(u32OutWidth-1))<<PSIO_GNCT_DATCTL_OUTDATWD_Pos))
- /**
- * @brief Set specified pin data order
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32Order The data order. Valid values are
- * - \ref PSIO_LSB
- * - \ref PSIO_MSB
- *
- * @return None
- *
- * @details This macro set data order.
- * \hideinitializer
- */
- #define PSIO_SET_ORDER(psio, u32Pin, u32Order) (((psio)->GNCT[(u32Pin)].DATCTL)= \
- (PSIO->GNCT[(u32Pin)].DATCTL & ~PSIO_GNCT_DATCTL_ORDER_Msk)|(u32Order))
- /**
- * @brief Set specified pin output data depth
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32Depth The data depth. Valid values are
- * - \ref PSIO_DEPTH1
- * - \ref PSIO_DEPTH2
- * - \ref PSIO_DEPTH3
- * - \ref PSIO_DEPTH4
- *
- * @return None
- *
- * @details This macro set output data order.
- * \hideinitializer
- */
- #define PSIO_SET_OUTPUT_DEPTH(psio, u32Pin, u32Depth) ((psio)->GNCT[(u32Pin)].DATCTL= \
- (PSIO->GNCT[(u32Pin)].DATCTL & ~PSIO_GNCT_DATCTL_OUTDEPTH_Msk)|((u32Depth)<<PSIO_GNCT_DATCTL_OUTDEPTH_Pos))
- /**
- * @brief Set specified pin input data depth
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32Depth The data depth. Valid values are
- * - \ref PSIO_DEPTH1
- * - \ref PSIO_DEPTH2
- * - \ref PSIO_DEPTH3
- * - \ref PSIO_DEPTH4
- *
- * @return None
- *
- * @details This macro set input data order.
- * \hideinitializer
- */
- #define PSIO_SET_INPUT_DEPTH(psio, u32Pin, u32Depth) ((psio)->GNCT[(u32Pin)].DATCTL= \
- (PSIO->GNCT[(u32Pin)].DATCTL & ~PSIO_GNCT_DATCTL_INDEPTH_Msk)|((u32Depth)<<PSIO_GNCT_DATCTL_INDEPTH_Pos))
- /**
- * @brief Get specified pin input status
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- *
- * @return The specified pin input status
- *
- * @details This macro get specified pin input status.
- * \hideinitializer
- */
- #define PSIO_GET_INPUT_STATUS(psio, u32Pin) (psio->GNCT[u32Pin].INSTS&0xFF)
- /**
- * @brief Get specified pin input data
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- *
- * @return The specified pin input data
- *
- * @details This macro get specified pin input data.
- * \hideinitializer
- */
- #define PSIO_GET_INPUT_DATA(psio, u32Pin) (psio->GNCT[u32Pin].INDAT)
- /**
- * @brief Set specified pin output data
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32Data The output data
- *
- * @return None
- *
- * @details This macro set specified pin output data.
- * \hideinitializer
- */
- #define PSIO_SET_OUTPUT_DATA(psio, u32Pin, u32Data) (psio->GNCT[u32Pin].OUTDAT = (u32Data))
- /**
- * @brief Set specified pin check point and slot link
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32CheckPoint The selected check point. Valid values are
- * - \ref PSIO_CP0
- * - \ref PSIO_CP1
- * - \ref PSIO_CP2
- * - \ref PSIO_CP3
- * - \ref PSIO_CP4
- * - \ref PSIO_CP5
- * - \ref PSIO_CP6
- * - \ref PSIO_CP7
- * @param[in] u32Slot The selected slot. Valid values are
- * - \ref PSIO_SLOT0
- * - \ref PSIO_SLOT1
- * - \ref PSIO_SLOT2
- * - \ref PSIO_SLOT3
- * - \ref PSIO_SLOT4
- * - \ref PSIO_SLOT5
- * - \ref PSIO_SLOT6
- * - \ref PSIO_SLOT7
- *
- * @return None
- *
- * @details This macro used to link check point and slot.
- * \hideinitializer
- */
- #define PSIO_SET_CHECKPOINT(psio, u32Pin, u32CheckPoint, u32Slot) (psio->GNCT[(u32Pin)].CPCTL0= \
- (psio->GNCT[(u32Pin)].CPCTL0 & ~(PSIO_GNCT_CPCTL0_CKPT0_Msk<<((u32CheckPoint)*PSIO_GNCT_CPCTL0_CKPT1_Pos))) \
- |((u32Slot)<<((u32CheckPoint)*PSIO_GNCT_CPCTL0_CKPT1_Pos)))
- /**
- * @brief Clear specified pin check point and slot link
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32CheckPoint The selected check point. Valid values are
- * - \ref PSIO_CP0
- * - \ref PSIO_CP1
- * - \ref PSIO_CP2
- * - \ref PSIO_CP3
- * - \ref PSIO_CP4
- * - \ref PSIO_CP5
- * - \ref PSIO_CP6
- * - \ref PSIO_CP7
- *
- * @return None
- *
- * @details This macro used to clear the link of check point and slot.
- * \hideinitializer
- */
- #define PSIO_CLEAR_CHECKPOINT(psio, u32Pin, u32CheckPoint) (psio->GNCT[(u32Pin)].CPCTL0= \
- psio->GNCT[(u32Pin)].CPCTL0 & ~(PSIO_GNCT_CPCTL0_CKPT0_Msk<<((u32CheckPoint)*PSIO_GNCT_CPCTL0_CKPT1_Pos)))
- /**
- * @brief Set specified pin action of check point
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32CheckPoint The selected check point. Valid values are
- * - \ref PSIO_CP0
- * - \ref PSIO_CP1
- * - \ref PSIO_CP2
- * - \ref PSIO_CP3
- * - \ref PSIO_CP4
- * - \ref PSIO_CP5
- * - \ref PSIO_CP6
- * - \ref PSIO_CP7
- * @param[in] u32Action The selected action. Valid values are
- * - \ref PSIO_OUT_LOW
- * - \ref PSIO_OUT_HIGH
- * - \ref PSIO_OUT_BUFFER
- * - \ref PSIO_OUT_TOGGLE
- * - \ref PSIO_IN_BUFFER
- * - \ref PSIO_IN_STATUS
- * - \ref PSIO_IN_STATUS_UPDATE
- *
- * @return None
- *
- * @details This macro used to set specified pin action of check point.
- * \hideinitializer
- */
- #define PSIO_SET_ACTION(psio, u32Pin, u32CheckPoint, u32Action) (psio->GNCT[(u32Pin)].CPCTL1= \
- (psio->GNCT[(u32Pin)].CPCTL1 & ~(PSIO_GNCT_CPCTL1_CKPT0ACT_Msk<<((u32CheckPoint)*PSIO_GNCT_CPCTL1_CKPT1ACT_Pos))) \
- |((u32Action)<<((u32CheckPoint)*PSIO_GNCT_CPCTL1_CKPT1ACT_Pos)))
- /*---------------------------------------------------------------------------------------------------------*/
- /* inline functions */
- /*---------------------------------------------------------------------------------------------------------*/
- /**
- * @brief Set interrupt control
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller
- * @param[in] u32Int The interrupt type. Valid values are
- * - \ref PSIO_INT0
- * - \ref PSIO_INT1
- * @param[in] u32Slot The selected slot. Valid values are
- * - \ref PSIO_SLOT0
- * - \ref PSIO_SLOT1
- * - \ref PSIO_SLOT2
- * - \ref PSIO_SLOT3
- * - \ref PSIO_SLOT4
- * - \ref PSIO_SLOT5
- * - \ref PSIO_SLOT6
- * - \ref PSIO_SLOT7
- *
- * @return None
- *
- * @details This function is used to set the selected slot controller, interrupt type and slot.
- * \hideinitializer
- */
- __STATIC_INLINE void PSIO_SET_INTCTL(PSIO_T *psio, uint32_t u32SC, uint32_t u32Int, uint32_t u32Slot)
- {
- if (u32Int == PSIO_INT0)
- {
- (psio)->INTCTL = (((psio)->INTCTL & ~PSIO_INTCTL_CONI0SS_Msk & ~PSIO_INTCTL_CONI0SCS_Msk)
- | ((u32SC) << PSIO_INTCTL_CONI0SCS_Pos)
- | ((u32Slot) << PSIO_INTCTL_CONI0SS_Pos));
- }
- else if (u32Int == PSIO_INT1)
- {
- (psio)->INTCTL = (((psio)->INTCTL & ~PSIO_INTCTL_CONI1SS_Msk & ~PSIO_INTCTL_CONI1SCS_Msk)
- | ((u32SC) << PSIO_INTCTL_CONI1SCS_Pos)
- | ((u32Slot) << PSIO_INTCTL_CONI1SS_Pos));
- }
- }
- /**
- * @brief Clear interrupt control setting
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Int The interrupt type. Valid values are
- * - \ref PSIO_INT0
- * - \ref PSIO_INT1
- *
- * @return None
- *
- * @details This function is used to clear the selected slot controller, interrupt type and slot.
- * \hideinitializer
- */
- __STATIC_INLINE void PSIO_CLEAR_INTCTL(PSIO_T *psio, uint32_t u32Int)
- {
- if (u32Int == PSIO_INT0)
- {
- (psio)->INTCTL = ((psio)->INTCTL & ~PSIO_INTCTL_CONI0SS_Msk & ~PSIO_INTCTL_CONI0SCS_Msk);
- }
- else if (u32Int == PSIO_INT1)
- {
- (psio)->INTCTL = ((psio)->INTCTL & ~PSIO_INTCTL_CONI1SS_Msk & ~PSIO_INTCTL_CONI1SCS_Msk);
- }
- }
- /**
- * @brief Set Slot controller control
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32SC The selected slot controller
- * @param[in] u32InitSlot The selected initial slot of the repeat period. Valid values are
- * - \ref PSIO_SLOT0
- * - \ref PSIO_SLOT1
- * - \ref PSIO_SLOT2
- * - \ref PSIO_SLOT3
- * - \ref PSIO_SLOT4
- * - \ref PSIO_SLOT5
- * - \ref PSIO_SLOT6
- * - \ref PSIO_SLOT7
- * @param[in] u32EndSlot The selected end slot of the repeat period. Valid values are
- * - \ref PSIO_SLOT0
- * - \ref PSIO_SLOT1
- * - \ref PSIO_SLOT2
- * - \ref PSIO_SLOT3
- * - \ref PSIO_SLOT4
- * - \ref PSIO_SLOT5
- * - \ref PSIO_SLOT6
- * - \ref PSIO_SLOT7
- * @param[in] u32LoopCnt The slot period loop count. Valid values are
- * - 0x0 : Disable
- * - 0x1~0x3E : Repeat slot 0x2~0x3F times
- * - 0x3F : Loop until stop PSIO slot controller
- * @param[in] u32Repeat Repeat mode Enable/Disable. Valid values are
- * - \ref PSIO_REPEAT_ENABLE
- * - \ref PSIO_REPEAT_DISABLE
- *
- * @return None
- *
- * @details This function is used to set the slot controller loop and repeat configuration.
- * \hideinitializer
- */
- __STATIC_INLINE void PSIO_SET_SCCTL(PSIO_T *psio, uint32_t u32SC, uint32_t u32InitSlot, uint32_t u32EndSlot, uint32_t u32LoopCnt, uint32_t u32Repeat)
- {
- (psio)->SCCT[u32SC].SCCTL = ((psio)->SCCT[u32SC].SCCTL & ~PSIO_SCCT_SCCTL_INISLOT_Msk & ~PSIO_SCCT_SCCTL_ENDSLOT_Msk & ~PSIO_SCCT_SCCTL_SPLCNT_Msk)
- | ((u32InitSlot) << PSIO_SCCT_SCCTL_INISLOT_Pos)
- | ((u32EndSlot) << PSIO_SCCT_SCCTL_ENDSLOT_Pos)
- | ((u32LoopCnt & 0x3F) << PSIO_SCCT_SCCTL_SPLCNT_Pos);
- if (u32Repeat == PSIO_REPEAT_ENABLE)
- (psio)->SCCT[u32SC].SCCTL |= PSIO_SCCT_SCCTL_REPEAT_Msk;
- else if (u32Repeat == PSIO_REPEAT_DISABLE)
- (psio)->SCCT[u32SC].SCCTL &= ~PSIO_SCCT_SCCTL_REPEAT_Msk;
- }
- /**
- * @brief Set Pin general control
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32PinEn The selected Pin enable/disable. Valid values are
- * - \ref PSIO_PIN_ENABLE
- * - \ref PSIO_PIN_DISABLE
- * @param[in] u32SC The selected slot controller for check point. Valid values are
- * - \ref PSIO_SC0
- * - \ref PSIO_SC1
- * - \ref PSIO_SC2
- * - \ref PSIO_SC3
- * @param[in] u32IOMode The pin I/O mode. Valid values are
- * - \ref PSIO_INPUT_MODE
- * - \ref PSIO_OUTPUT_MODE
- * - \ref PSIO_OPENDRAIN_MODE
- * - \ref PSIO_QUASI_MODE
- * @param[in] u32PinInit The pin initial status. Valid values are
- * - \ref PSIO_LOW_LEVEL
- * - \ref PSIO_HIGH_LEVEL
- * - \ref PSIO_LAST_OUTPUT
- * - \ref PSIO_Toggle
- * @param[in] u32PinInterval The pin interval status. Valid values are
- * - \ref PSIO_LOW_LEVEL
- * - \ref PSIO_HIGH_LEVEL
- * - \ref PSIO_LAST_OUTPUT
- * - \ref PSIO_Toggle
- *
- * @return None
- *
- * @details This function is used to set the general control.
- * \hideinitializer
- */
- __STATIC_INLINE void PSIO_SET_GENCTL(PSIO_T *psio, uint32_t u32Pin, uint32_t u32PinEn, uint32_t u32SC, uint32_t u32IOMode, uint32_t u32PinInit, uint32_t u32PinInterval)
- {
- (psio)->GNCT[u32Pin].GENCTL = ((psio)->GNCT[u32Pin].GENCTL & ~PSIO_GNCT_GENCTL_SCSEL_Msk & ~PSIO_GNCT_GENCTL_IOMODE_Msk
- & ~PSIO_GNCT_GENCTL_INITIAL_Msk & ~PSIO_GNCT_GENCTL_INTERVAL_Msk)
- | ((u32SC) << PSIO_GNCT_GENCTL_SCSEL_Pos) | ((u32IOMode) << PSIO_GNCT_GENCTL_IOMODE_Pos)
- | ((u32PinInit) << PSIO_GNCT_GENCTL_INITIAL_Pos) | ((u32PinInterval) << PSIO_GNCT_GENCTL_INTERVAL_Pos);
- if (u32PinEn == PSIO_PIN_ENABLE)
- (psio)->GNCT[u32Pin].GENCTL |= PSIO_GNCT_GENCTL_PINEN_Msk;
- else if (u32PinEn == PSIO_PIN_DISABLE)
- (psio)->GNCT[u32Pin].GENCTL &= ~PSIO_GNCT_GENCTL_PINEN_Msk;
- }
- /**
- * @brief Set Pin mode switch
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] u32SwPoint The switch point. Valid values are
- * - \ref PSIO_SWITCH_P0
- * - \ref PSIO_SWITCH_P1
- * @param[in] u32SwMode The switch mode. Valid values are
- * - \ref PSIO_INPUT_MODE
- * - \ref PSIO_OUTPUT_MODE
- * - \ref PSIO_OPENDRAIN_MODE
- * - \ref PSIO_QUASI_MODE
- * @param[in] u32SwCP The switch I/O mode at which point. Valid values are
- * - \ref PSIO_CP0
- * - \ref PSIO_CP1
- * - \ref PSIO_CP2
- * - \ref PSIO_CP3
- * - \ref PSIO_CP4
- * - \ref PSIO_CP5
- * - \ref PSIO_CP6
- * - \ref PSIO_CP7
- * @return None
- *
- * @details This function is used to set the pin mode switch.
- * \hideinitializer
- */
- __STATIC_INLINE void PSIO_SWITCH_MODE(PSIO_T *psio, uint32_t u32Pin, uint32_t u32SwPoint, uint32_t u32SwMode, uint32_t u32SwCP)
- {
- if (u32SwPoint == PSIO_SWITCH_P0)
- {
- (psio)->GNCT[u32Pin].GENCTL = ((psio)->GNCT[u32Pin].GENCTL & ~PSIO_GNCT_GENCTL_MODESW0_Msk & ~PSIO_GNCT_GENCTL_SW0CP_Msk)
- | ((u32SwMode) << PSIO_GNCT_GENCTL_MODESW0_Pos) | ((u32SwCP + 1) << PSIO_GNCT_GENCTL_SW0CP_Pos);
- }
- else if (u32SwPoint == PSIO_SWITCH_P1)
- {
- (psio)->GNCT[u32Pin].GENCTL = ((psio)->GNCT[u32Pin].GENCTL & ~PSIO_GNCT_GENCTL_MODESW1_Msk & ~PSIO_GNCT_GENCTL_SW1CP_Msk)
- | ((u32SwMode) << PSIO_GNCT_GENCTL_MODESW1_Pos) | ((u32SwCP + 1) << PSIO_GNCT_GENCTL_SW1CP_Pos);
- }
- }
- /**
- * @brief Set specified pin check point and slot link, and pin action of check point
- *
- * @param[in] psio The pointer of the specified PSIO module
- * @param[in] u32Pin The selected Pin. Valid values are
- * - \ref PSIO_PIN0
- * - \ref PSIO_PIN1
- * - \ref PSIO_PIN2
- * - \ref PSIO_PIN3
- * - \ref PSIO_PIN4
- * - \ref PSIO_PIN5
- * - \ref PSIO_PIN6
- * - \ref PSIO_PIN7
- * @param[in] sConfig The selected check point configurations.
- *
- * @return None
- *
- * @details This macro used to link check point and slot, and set pin action of check point.
- * \hideinitializer
- */
- __STATIC_INLINE void PSIO_SET_CP_CONFIG(PSIO_T *psio, uint32_t u32Pin, const S_PSIO_CP_CONFIG *sConfig)
- {
- psio->GNCT[u32Pin].CPCTL0 = *(uint32_t *)sConfig;
- psio->GNCT[u32Pin].CPCTL1 = *((uint32_t *)sConfig + 1);
- }
- /*@}*/ /* end of group PSIO_EXPORTED_FUNCTIONS */
- /*@}*/ /* end of group PSIO_Driver */
- /*@}*/ /* end of group Standard_Driver */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __NU_PSIO_H__ */
|