Kinetis SDK v.2.0 API Reference Manual  Rev. 0
Freescale Semiconductor, Inc.
 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 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);

Files

file  fsl_port.h
 

Data Structures

struct  port_pin_config_t
 PORT pin config 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 pins' 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
kPORT_OpenDrainDisable,
kPORT_UnLockRegister,
};
Parameters
basePORT peripheral base pointer.
pinPORT pin number.
configPORT PCR register configure 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
kPORT_PullEnable,
kPORT_OpenDrainDisable,
kPORT_UnlockRegister,
};
Parameters
basePORT peripheral base pointer.
maskPORT pins' numbers macro.
configPORT PCR register configure 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.
  • 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 will be reset to zero : kPORT_PinDisabledOrAnalog). This function is recommended to use in the case you just need to reset the pin mux
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 pins' numbers macro.