Kinetis SDK v.2.0 API Reference Manual  Rev. 0
NXP Semiconductors
 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 */
kPORT_OpenDrainDisable,
kPORT_UnLockRegister,
};
/* Sets the configuration */
PORT_SetPinConfig(PORTA, 4, &config);

I2C PORT Configuration

/* I2C pin PORTconfiguration */
kPORT_OpenDrainEnable,
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.

Enumerator
kPORT_FastSlewRate 

Fast slew rate is configured.

kPORT_SlowSlewRate 

Slow slew rate is configured.

Enumerator
kPORT_PassiveFilterDisable 

Fast slew rate is configured.

kPORT_PassiveFilterEnable 

Slow slew rate is configured.

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.

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_OpenDrainDisable,
* kPORT_UnLockRegister,
* };
*
Parameters
basePORT peripheral base pointer.
pinPORT pin number.
configPORT 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_PullEnable,
* kPORT_OpenDrainDisable,
* kPORT_UnlockRegister,
* };
*
Parameters
basePORT peripheral base pointer.
maskPORT pin number macro.
configPORT PCR register configuration structure.
static void PORT_SetPinMux ( PORT_Type *  base,
uint32_t  pin,
port_mux_t  mux 
)
inlinestatic
Parameters
basePORT peripheral base pointer.
pinPORT pin number.
muxpin muxing slot selection.
static void PORT_SetPinInterruptConfig ( PORT_Type *  base,
uint32_t  pin,
port_interrupt_t  config 
)
inlinestatic
Parameters
basePORT peripheral base pointer.
pinPORT pin number.
configPORT 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
basePORT 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
basePORT peripheral base pointer.
maskPORT pin number macro.