All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
PORT: Port Control and Interrupts

## Overview

The KSDK provides a driver for the Port Control and Interrupts (PORT) module of Kinetis devices.

# Typical configuration use case

## Input PORT configuration

/* Input pin PORT configuration */
port_pin_config_t config = {
kPORT_PullUp,
kPORT_FastSlewRate,
kPORT_PassiveFilterDisable,
kPORT_OpenDrainDisable,
kPORT_LowDriveStrength,
kPORT_MuxAsGpio,
kPORT_UnLockRegister,
};
/* Sets the configuration */
PORT_SetPinConfig(PORTA, 4, &config);

## I2C PORT Configuration

/* I2C pin PORTconfiguration */
port_pin_config_t config = {
kPORT_PullUp,
kPORT_FastSlewRate,
kPORT_PassiveFilterDisable,
kPORT_OpenDrainEnable,
kPORT_LowDriveStrength,
kPORT_MuxAlt5,
kPORT_UnLockRegister,
};
PORT_SetPinConfig(PORTE,24u,&config);
PORT_SetPinConfig(PORTE,25u,&config);

## Data Structures

struct | port_pin_config_t
| PORT pin configuration structure. More...

## Enumerations

enum | _port_pull { kPORT_PullDisable = 0U, kPORT_PullDown = 2U, kPORT_PullUp = 3U }
| Internal resistor pull feature selection. More...
enum | _port_slew_rate { kPORT_FastSlewRate = 0U, kPORT_SlowSlewRate = 1U }
| Slew rate selection. More...
enum | _port_passive_filter_enable { kPORT_PassiveFilterDisable = 0U, kPORT_PassiveFilterEnable = 1U }
| Passive filter feature enable/disable. More...
enum | _port_drive_strength { kPORT_LowDriveStrength = 0U, kPORT_HighDriveStrength = 1U }
| Configures the drive strength. More...
enum | port_mux_t { kPORT_PinDisabledOrAnalog = 0U, kPORT_MuxAsGpio = 1U, kPORT_MuxAlt2 = 2U, kPORT_MuxAlt3 = 3U, kPORT_MuxAlt4 = 4U, kPORT_MuxAlt5 = 5U, kPORT_MuxAlt6 = 6U, kPORT_MuxAlt7 = 7U }
| Pin mux selection. More...
enum | port_interrupt_t { kPORT_InterruptOrDMADisabled = 0x0U, kPORT_InterruptLogicZero = 0x8U, kPORT_InterruptRisingEdge = 0x9U, kPORT_InterruptFallingEdge = 0xAU, kPORT_InterruptEitherEdge = 0xBU, kPORT_InterruptLogicOne = 0xCU }
| Configures the interrupt generation condition. More...

## Driver version

#define | FSL_PORT_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
| Version 2.0.1. More...

## Configuration

static void | PORT_SetPinConfig (PORT_Type *base, uint32_t pin, const port_pin_config_t *config)
| Sets the port PCR register. More...
static void | PORT_SetMultiplePinsConfig (PORT_Type *base, uint32_t mask, const port_pin_config_t *config)
| Sets the port PCR register for multiple pins. More...
static void | PORT_SetPinMux (PORT_Type *base, uint32_t pin, port_mux_t mux)
| Configures the pin muxing. More...

## Interrupt

static void | PORT_SetPinInterruptConfig (PORT_Type *base, uint32_t pin, port_interrupt_t config)
| Configures the port pin interrupt/DMA request. More...
static uint32_t | PORT_GetPinsInterruptFlags (PORT_Type *base)
| Reads the whole port status flag. More...
static void | PORT_ClearPinsInterruptFlags (PORT_Type *base, uint32_t mask)
| Clears the multiple pin interrupt status flag. More...

## Data Structure Documentation

struct port_pin_config_t

### Data Fields

uint16_t | pullSelect: 2
| No-pull/pull-down/pull-up select.
uint16_t | slewRate: 1
| Fast/slow slew rate Configure.
uint16_t | passiveFilterEnable: 1
| Passive filter enable/disable.
uint16_t | driveStrength: 1
| Fast/slow drive strength configure.
uint16_t | mux: 3
| Pin mux Configure.

## Macro Definition Documentation

#define FSL_PORT_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))

## Enumeration Type Documentation

enum _port_pull

Enumerator
kPORT_PullDisable | Internal pull-up/down resistor is disabled.
kPORT_PullDown | Internal pull-down resistor is enabled.
kPORT_PullUp | Internal pull-up resistor is enabled.

enum _port_slew_rate

Enumerator
kPORT_FastSlewRate | Fast slew rate is configured.
kPORT_SlowSlewRate | Slow slew rate is configured.

enum _port_passive_filter_enable

Enumerator
kPORT_PassiveFilterDisable | Fast slew rate is configured.
kPORT_PassiveFilterEnable | Slow slew rate is configured.

enum _port_drive_strength

Enumerator
kPORT_LowDriveStrength | Low-drive strength is configured.
kPORT_HighDriveStrength | High-drive strength is configured.

enum port_mux_t

Enumerator
kPORT_PinDisabledOrAnalog | Corresponding pin is disabled, but is used as an analog pin.
kPORT_MuxAsGpio | Corresponding pin is configured as GPIO.
kPORT_MuxAlt2 | Chip-specific.
kPORT_MuxAlt3 | Chip-specific.
kPORT_MuxAlt4 | Chip-specific.
kPORT_MuxAlt5 | Chip-specific.
kPORT_MuxAlt6 | Chip-specific.
kPORT_MuxAlt7 | Chip-specific.

enum port_interrupt_t

Enumerator
kPORT_InterruptOrDMADisabled | Interrupt/DMA request is disabled.
kPORT_InterruptLogicZero | Interrupt when logic zero.
kPORT_InterruptRisingEdge | Interrupt on rising edge.
kPORT_InterruptFallingEdge | Interrupt on falling edge.
kPORT_InterruptEitherEdge | Interrupt on either edge.
kPORT_InterruptLogicOne | Interrupt when logic one.

## Function Documentation

static void PORT_SetPinConfig | ( | PORT_Type * | base,
|  | uint32_t | pin,
|  | const port_pin_config_t * | config
| ) |  |

inlinestatic

This is an example to define an input pin or output pin PCR configuration:

* // Define a digital input pin PCR configuration
* port_pin_config_t config = {
* kPORT_PullUp,
* kPORT_FastSlewRate,
* kPORT_PassiveFilterDisable,
* kPORT_OpenDrainDisable,
* kPORT_LowDriveStrength,
* kPORT_MuxAsGpio,
* kPORT_UnLockRegister,
* };
*

Parameters

  base | PORT peripheral base pointer.
  pin | PORT pin number.
  config | PORT PCR register configuration structure.

static void PORT_SetMultiplePinsConfig | ( | PORT_Type * | base,
|  | uint32_t | mask,
|  | const port_pin_config_t * | config
| ) |  |

inlinestatic

This is an example to define input pins or output pins PCR configuration:

* // Define a digital input pin PCR configuration
* port_pin_config_t config = {
* kPORT_PullUp ,
* kPORT_PullEnable,
* kPORT_FastSlewRate,
* kPORT_PassiveFilterDisable,
* kPORT_OpenDrainDisable,
* kPORT_LowDriveStrength,
* kPORT_MuxAsGpio,
* kPORT_UnlockRegister,
* };
*

Parameters

  base | PORT peripheral base pointer.
  mask | PORT pin number macro.
  config | PORT PCR register configuration structure.

static void PORT_SetPinMux | ( | PORT_Type * | base,
|  | uint32_t | pin,
|  | port_mux_t | mux
| ) |  |

inlinestatic

Parameters

  base | PORT peripheral base pointer.
  pin | PORT pin number.

  mux

  pin muxing slot selection.
  - kPORT_PinDisabledOrAnalog: Pin disabled or work in analog function.
  - kPORT_MuxAsGpio : Set as GPIO.
  - kPORT_MuxAlt2 : chip-specific.
  - kPORT_MuxAlt3 : chip-specific.
  - kPORT_MuxAlt4 : chip-specific.
  - kPORT_MuxAlt5 : chip-specific.
  - kPORT_MuxAlt6 : chip-specific.
  - kPORT_MuxAlt7 : chip-specific. : This function is NOT recommended to use together with the PORT_SetPinsConfig, because the PORT_SetPinsConfig need to configure the pin mux anyway (Otherwise the pin mux is reset to zero : kPORT_PinDisabledOrAnalog). This function is recommended to use to reset the pin mux

static void PORT_SetPinInterruptConfig | ( | PORT_Type * | base,
|  | uint32_t | pin,
|  | port_interrupt_t | config
| ) |  |

inlinestatic

Parameters

  base | PORT peripheral base pointer.
  pin | PORT pin number.

  config

  PORT pin interrupt configuration.
  - kPORT_InterruptOrDMADisabled: Interrupt/DMA request disabled.
  - #kPORT_DMARisingEdge : DMA request on rising edge(if the DMA requests exit).
  - #kPORT_DMAFallingEdge: DMA request on falling edge(if the DMA requests exit).
  - #kPORT_DMAEitherEdge : DMA request on either edge(if the DMA requests exit).
  - #kPORT_FlagRisingEdge : Flag sets on rising edge(if the Flag states exit).
  - #kPORT_FlagFallingEdge : Flag sets on falling edge(if the Flag states exit).
  - #kPORT_FlagEitherEdge : Flag sets on either edge(if the Flag states exit).
  - kPORT_InterruptLogicZero : Interrupt when logic zero.
  - kPORT_InterruptRisingEdge : Interrupt on rising edge.
  - kPORT_InterruptFallingEdge: Interrupt on falling edge.
  - kPORT_InterruptEitherEdge : Interrupt on either edge.
  - kPORT_InterruptLogicOne : Interrupt when logic one.
  - #kPORT_ActiveHighTriggerOutputEnable : Enable active high-trigger output (if the trigger states exit).
  - #kPORT_ActiveLowTriggerOutputEnable : Enable active low-trigger output (if the trigger states exit).

static uint32_t PORT_GetPinsInterruptFlags | ( | PORT_Type * | base | ) |

inlinestatic

If a pin is configured to generate the DMA request, the corresponding flag is cleared automatically at the completion of the requested DMA transfer. Otherwise, the flag remains set until a logic one is written to that flag. If configured for a level sensitive interrupt that remains asserted, the flag is set again immediately.

Parameters

  base | PORT peripheral base pointer.

Returns
  Current port interrupt status flags, for example, 0x00010001 means the pin 0 and 17 have the interrupt.

static void PORT_ClearPinsInterruptFlags | ( | PORT_Type * | base,
|  | uint32_t | mask
| ) |  |

inlinestatic

Parameters

  base | PORT peripheral base pointer.
  mask | PORT pin number macro.