MCUXpresso SDK API Reference Manual  Rev 2.16.000
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
IO_MUX Driver

Overview

IO_MUX driver supports peripheral IO multiplex configration.

Files

file  fsl_io_mux.h
 

Driver version

#define FSL_IO_MUX_DRIVER_VERSION   (MAKE_VERSION(2, 2, 0))
 IO_MUX driver version 2.2.0. More...
 

Pin function ID

The pin function ID is a tuple of <GPIO_0_31_Mask GPIO_32_63_Mask GPIO_FC_SetMask GPIO_FC_ClearMask FSEL_SetMask FSEL_ClearMask CTimer_SetMask CTimer_ClearMask SCTimerSetMask SCTimerClearMask>

GPIO_FC_xxxMask: bit[0:10] maps to FCn[0:10]; bit[15:12] is the register offset from FC0; bit[16] indicates GPIO should be operated; bit[17] indicates SGPIO need to be operated. CTimer_xxxMask: bit[0:14] maps to C_TIMER_IN[0:14]; bit[16:30] maps to C_TIMER_OUT[0:14].

enum  io_mux_pin_config_t
 IO MUX pin configuration. More...
 
enum  io_mux_sleep_pin_level_t
 IO MUX sleep pin level.
 
#define IO_MUX_GPIO_FC_MASK(gpio, fcIdx, fcMsk)   (((uint32_t)(gpio) << 16) | (((uint32_t)(fcIdx)&0xFUL) << 12) | ((uint32_t)(fcMsk)&0xFFFUL))
 
#define IO_MUX_SGPIO_FLAG(mask)   (((uint32_t)(mask) >> 17) & 1UL)
 
#define IO_MUX_GPIO_FLAG(mask)   (((uint32_t)(mask) >> 16) & 1UL)
 
#define IO_MUX_FC_OFFSET(mask)   (((uint32_t)(mask) >> 12) & 0xFUL)
 
#define IO_MUX_FC_MASK(mask)   ((uint32_t)(mask)&0x7FFUL)
 
#define IO_MUX_CTIMER_MASK(inMsk, outMsk)   (((uint32_t)(outMsk) << 16) | ((uint32_t)(inMsk)&0xFFFFUL))
 
#define IO_MUX_CTIMER_IN_MASK(mask)   ((uint32_t)(mask)&0x7FFFUL)
 
#define IO_MUX_CTIMER_OUT_MASK(mask)   (((uint32_t)(mask) >> 16) & 0x7FFFUL)
 
#define IO_MUX_SCTIMER_MASK(inMsk, outMsk)   ((((uint32_t)(outMsk)&0x3FFUL) << 16) | ((uint32_t)(inMsk)&0xFFUL))
 
#define IO_MUX_FC0_USART_SCK
 
#define IO_MUX_FC0_USART_DATA
 
#define IO_MUX_FC0_USART_CMD
 
#define IO_MUX_FC0_I2C_2_3
 
#define IO_MUX_FC0_I2S
 
#define IO_MUX_FC0_I2S_DATA
 
#define IO_MUX_FC0_SPI_SS0
 
#define IO_MUX_FC1_USART_SCK
 
#define IO_MUX_FC1_USART_DATA
 
#define IO_MUX_FC1_USART_CMD
 
#define IO_MUX_FC1_I2C_8_9
 
#define IO_MUX_FC1_I2S
 
#define IO_MUX_FC1_I2S_DATA
 
#define IO_MUX_FC1_SPI_SS0
 
#define IO_MUX_FC2_USART_SCK
 
#define IO_MUX_FC2_USART_DATA
 
#define IO_MUX_FC2_USART_CMD
 
#define IO_MUX_FC2_I2C_13_14
 
#define IO_MUX_FC2_I2C_16_17
 
#define IO_MUX_FC2_I2S
 
#define IO_MUX_FC2_I2S_DATA
 
#define IO_MUX_FC2_SPI_SS0
 
#define IO_MUX_FC3_USART_SCK
 
#define IO_MUX_FC3_USART_DATA
 
#define IO_MUX_FC3_USART_CMD
 
#define IO_MUX_FC3_I2C_24_26
 
#define IO_MUX_FC3_I2C_19_20
 
#define IO_MUX_FC3_I2S
 
#define IO_MUX_FC3_I2S_DATA
 
#define IO_MUX_FC3_SPI_SS0
 
#define IO_MUX_FC14_USART_SCK
 
#define IO_MUX_FC14_USART_DATA
 
#define IO_MUX_FC14_USART_CMD
 
#define IO_MUX_FC14_I2C_56_57
 
#define IO_MUX_FC14_I2S
 
#define IO_MUX_FC14_I2S_DATA
 
#define IO_MUX_FC14_SPI_SS0
 
#define IO_MUX_QUAD_SPI_FLASH
 
#define IO_MUX_QUAD_SPI_PSRAM
 
#define IO_MUX_PDM
 
#define IO_MUX_USB
 
#define IO_MUX_SCT_OUT_0
 
#define IO_MUX_SCT_OUT_1
 
#define IO_MUX_SCT_OUT_8
 
#define IO_MUX_SCT_OUT_4
 
#define IO_MUX_SCT_OUT_5
 
#define IO_MUX_SCT_OUT_6
 
#define IO_MUX_SCT_OUT_7
 
#define IO_MUX_SCT_OUT_9
 
#define IO_MUX_SCT_IN_0
 
#define IO_MUX_SCT_IN_1
 
#define IO_MUX_SCT_IN_2
 
#define IO_MUX_SCT_IN_3
 
#define IO_MUX_SCT_IN_4
 
#define IO_MUX_SCT_IN_5
 
#define IO_MUX_SCT_IN_6
 
#define IO_MUX_SCT_IN_7
 
#define IO_MUX_CT0_MAT0_OUT
 
#define IO_MUX_CT0_MAT1_OUT
 
#define IO_MUX_CT0_MAT2_OUT
 
#define IO_MUX_CT0_MAT3_OUT
 
#define IO_MUX_CT1_MAT0_OUT
 
#define IO_MUX_CT1_MAT1_OUT
 
#define IO_MUX_CT1_MAT2_OUT
 
#define IO_MUX_CT1_MAT3_OUT
 
#define IO_MUX_CT2_MAT0_OUT
 
#define IO_MUX_CT2_MAT1_OUT
 
#define IO_MUX_CT2_MAT2_OUT
 
#define IO_MUX_CT2_MAT3_OUT
 
#define IO_MUX_CT3_MAT0_OUT
 
#define IO_MUX_CT3_MAT1_OUT
 
#define IO_MUX_CT3_MAT2_OUT
 
#define IO_MUX_CT_INP0
 
#define IO_MUX_CT_INP1
 
#define IO_MUX_CT_INP2
 
#define IO_MUX_CT_INP3
 
#define IO_MUX_CT_INP4
 
#define IO_MUX_CT_INP5
 
#define IO_MUX_CT_INP6
 
#define IO_MUX_CT_INP7
 
#define IO_MUX_CT_INP8
 
#define IO_MUX_CT_INP9
 
#define IO_MUX_CT_INP10
 
#define IO_MUX_CT_INP11
 
#define IO_MUX_CT_INP12
 
#define IO_MUX_CT_INP13
 
#define IO_MUX_CT_INP14
 
#define IO_MUX_MCLK
 
#define IO_MUX_UTICK
 
#define IO_MUX_USIM
 
#define IO_MUX_LCD_8080
 
#define IO_MUX_LCD_SPI
 
#define IO_MUX_FREQ_GPIO_CLK
 
#define IO_MUX_GPIO_INT_BMATCH
 
#define IO_MUX_GAU_TRIGGER0
 
#define IO_MUX_ACOMP0_GPIO_OUT
 
#define IO_MUX_ACOMP0_EDGE_PULSE
 
#define IO_MUX_ACOMP1_GPIO_OUT
 
#define IO_MUX_ACOMP1_EDGE_PULSE
 
#define IO_MUX_GAU_TRIGGER1
 
#define IO_MUX_SDIO
 
#define IO_MUX_ENET_CLK
 
#define IO_MUX_ENET_RX
 
#define IO_MUX_ENET_TX
 
#define IO_MUX_ENET_MDIO
 
#define IO_MUX_ENET_TIMER0
 
#define IO_MUX_ENET_TIMER1
 
#define IO_MUX_ENET_TIMER2
 
#define IO_MUX_ENET_TIMER3
 
#define IO_MUX_CLKIN_FRM_PD
 
#define IO_MUX_GPIO0
 
#define IO_MUX_GPIO1
 
#define IO_MUX_GPIO2
 
#define IO_MUX_GPIO3
 
#define IO_MUX_GPIO4
 
#define IO_MUX_GPIO5
 
#define IO_MUX_GPIO6
 
#define IO_MUX_GPIO7
 
#define IO_MUX_GPIO8
 
#define IO_MUX_GPIO9
 
#define IO_MUX_GPIO10
 
#define IO_MUX_GPIO11
 
#define IO_MUX_GPIO12
 
#define IO_MUX_GPIO13
 
#define IO_MUX_GPIO14
 
#define IO_MUX_GPIO15
 
#define IO_MUX_GPIO16
 
#define IO_MUX_GPIO17
 
#define IO_MUX_GPIO18
 
#define IO_MUX_GPIO19
 
#define IO_MUX_GPIO20
 
#define IO_MUX_GPIO21
 
#define IO_MUX_GPIO22
 
#define IO_MUX_GPIO23
 
#define IO_MUX_GPIO24
 
#define IO_MUX_GPIO25
 
#define IO_MUX_GPIO26
 
#define IO_MUX_GPIO27
 
#define IO_MUX_GPIO28
 
#define IO_MUX_GPIO29
 
#define IO_MUX_GPIO30
 
#define IO_MUX_GPIO31
 
#define IO_MUX_GPIO32
 
#define IO_MUX_GPIO33
 
#define IO_MUX_GPIO34
 
#define IO_MUX_GPIO35
 
#define IO_MUX_GPIO36
 
#define IO_MUX_GPIO37
 
#define IO_MUX_GPIO38
 
#define IO_MUX_GPIO39
 
#define IO_MUX_GPIO40
 
#define IO_MUX_GPIO41
 
#define IO_MUX_GPIO42
 
#define IO_MUX_GPIO43
 
#define IO_MUX_GPIO44
 
#define IO_MUX_GPIO45
 
#define IO_MUX_GPIO46
 
#define IO_MUX_GPIO47
 
#define IO_MUX_GPIO48
 
#define IO_MUX_GPIO49
 
#define IO_MUX_GPIO50
 
#define IO_MUX_GPIO51
 
#define IO_MUX_GPIO52
 
#define IO_MUX_GPIO53
 
#define IO_MUX_GPIO54
 
#define IO_MUX_GPIO55
 
#define IO_MUX_GPIO56
 
#define IO_MUX_GPIO57
 
#define IO_MUX_GPIO58
 
#define IO_MUX_GPIO59
 
#define IO_MUX_GPIO60
 
#define IO_MUX_GPIO61
 
#define IO_MUX_GPIO62
 
#define IO_MUX_GPIO63
 
#define IO_MUX_SGPIO0
 
#define IO_MUX_SGPIO1
 
#define IO_MUX_SGPIO2
 
#define IO_MUX_SGPIO3
 
#define IO_MUX_SGPIO4
 
#define IO_MUX_SGPIO5
 
#define IO_MUX_SGPIO6
 
#define IO_MUX_SGPIO7
 
#define IO_MUX_SGPIO8
 
#define IO_MUX_SGPIO9
 
#define IO_MUX_SGPIO10
 
#define IO_MUX_SGPIO11
 
#define IO_MUX_SGPIO12
 
#define IO_MUX_SGPIO13
 
#define IO_MUX_SGPIO14
 
#define IO_MUX_SGPIO15
 
#define IO_MUX_SGPIO16
 
#define IO_MUX_SGPIO17
 
#define IO_MUX_SGPIO18
 
#define IO_MUX_SGPIO19
 
#define IO_MUX_SGPIO20
 
#define IO_MUX_SGPIO21
 
#define IO_MUX_SGPIO22
 
#define IO_MUX_SGPIO23
 
#define IO_MUX_SGPIO24
 
#define IO_MUX_SGPIO25
 
#define IO_MUX_SGPIO26
 
#define IO_MUX_SGPIO27
 
#define IO_MUX_SGPIO28
 
#define IO_MUX_SGPIO29
 
#define IO_MUX_SGPIO30
 
#define IO_MUX_SGPIO31
 
#define IO_MUX_AON_CAPTURE
 

Configuration

static void IO_MUX_SetPinMux (uint32_t pinLowMask, uint32_t pinHighMask, uint32_t gpioFcSetMask, uint32_t gpioFcClrMask, uint32_t fselSetMask, uint32_t fselClrMask, uint32_t ctimerSetMask, uint32_t ctimerClrMask, uint32_t sctimerSetMask, uint32_t sctimerClrMask)
 Sets the IO_MUX pin mux mode. More...
 
static void IO_MUX_SetPinConfig (uint32_t pin, io_mux_pin_config_t config)
 Sets the IO_MUX pin mux pull up/down configuartion. More...
 
static void IO_MUX_SetPinOutLevelInSleep (uint32_t pin, io_mux_sleep_pin_level_t level)
 Sets IO output level in sleep mode. More...
 
static void IO_MUX_SetRfPinOutLevelInSleep (uint32_t pin, io_mux_sleep_pin_level_t level)
 Sets RF Switch Pin 0-3 output level in sleep mode. More...
 

Macro Definition Documentation

#define FSL_IO_MUX_DRIVER_VERSION   (MAKE_VERSION(2, 2, 0))

Enumeration Type Documentation

Bit [1:0] for pull configuration Bit [3:2] for drive strength configuration

Function Documentation

static void IO_MUX_SetPinMux ( uint32_t  pinLowMask,
uint32_t  pinHighMask,
uint32_t  gpioFcSetMask,
uint32_t  gpioFcClrMask,
uint32_t  fselSetMask,
uint32_t  fselClrMask,
uint32_t  ctimerSetMask,
uint32_t  ctimerClrMask,
uint32_t  sctimerSetMask,
uint32_t  sctimerClrMask 
)
inlinestatic
Note
The parameters can be filled with the pin function ID macros.

This is an example to set the GPIO2/GPIO3 as the Flexcomm0 UART RX/TX:

* IO_MUX_SetPinMux(IO_MUX_FC0_USART_DATA);
*

This is an example to set the GPIO6/GPIO10 as Flexcomm1 I2C SDA/SCL:

* IO_MUX_SetPinMux(IO_MUX_FC1_I2C_6_10);
*
Parameters
pinLowMaskThe GPIO0-31 pins mask.
pinHighMaskThe GPIO32-63 pins mask.
gpioFcSetMaskThe GPIO and Flexcomm registers mask to set, defined by IO_MUX_GPIO_FC_MASK()
gpioFcClrMaskThe GPIO and Flexcomm registers mask to clear, defined by IO_MUX_GPIO_FC_MASK()
fselSetMaskThe FSEL register mask to set
fselClrMaskThe FSEL register mask to clear
ctimerSetMaskThe C_TIMER_IN/C_TIMER_OUT register mask to set, defined by IO_MUX_CTIMER_MASK()
ctimerClrMaskThe C_TIMER_IN/C_TIMER_OUT register mask to clear, defined by IO_MUX_CTIMER_MASK()
sctimerSetMaskThe SC_TIMER register mask to set
sctimerClrMaskThe SC_TIMER register mask to clear
static void IO_MUX_SetPinConfig ( uint32_t  pin,
io_mux_pin_config_t  config 
)
inlinestatic

This is an example to set the GPIO2 pin to pull down:

* IO_MUX_SetPinConfig(2U, IO_MUX_PinConfigPullDown);
*
Parameters
pinThe GPIO pin index to config.
configThe pull up/down setting for the pin.
static void IO_MUX_SetPinOutLevelInSleep ( uint32_t  pin,
io_mux_sleep_pin_level_t  level 
)
inlinestatic

If level set to IO_MUX_SleepPinLevelUnchanged, the IO configuration is same as the active mode.

This is an example to set the GPIO2 pin to output high during sleep:

* IO_MUX_SetPinOutLevelInSleep(2U, IO_MUX_SleepPinLevelHigh);
*
Parameters
pinThe GPIO pin index to config.
levelOutput level in sleep.
static void IO_MUX_SetRfPinOutLevelInSleep ( uint32_t  pin,
io_mux_sleep_pin_level_t  level 
)
inlinestatic

If level set to IO_MUX_SleepPinLevelUnchanged, the IO configuration is same as the active mode.

This is an example to set the RF_CNTL0 pin to output low during sleep:

* IO_MUX_SetRfPinOutLevelInSleep(0U, IO_MUX_SleepPinLevelLow);
*
Parameters
pinThe RF Switch pin index to config.
levelOutput level in sleep.