SAM4SD32 (SAM4S-EK2)
Loading...
Searching...
No Matches
pio.h File Reference

Parallel Input/Output (PIO) Controller driver for SAM. More...

#include "compiler.h"

Go to the source code of this file.

Macros

#define PIO_DEBOUNCE   (1u << 3)
#define PIO_DEFAULT   (0u << 0)
#define PIO_DEGLITCH   (1u << 1)
#define PIO_DELTA   ((uint32_t) PIOB - (uint32_t) PIOA)
#define PIO_IT_AIME   (1u << 4)
#define PIO_IT_EDGE   (1u << 6)
#define PIO_IT_FALL_EDGE   (0 | PIO_IT_EDGE | PIO_IT_AIME)
#define PIO_IT_HIGH_LEVEL   (PIO_IT_RE_OR_HL | 0 | PIO_IT_AIME)
#define PIO_IT_LOW_LEVEL   (0 | 0 | PIO_IT_AIME)
#define PIO_IT_RE_OR_HL   (1u << 5)
#define PIO_IT_RISE_EDGE   (PIO_IT_RE_OR_HL | PIO_IT_EDGE | PIO_IT_AIME)
#define PIO_OPENDRAIN   (1u << 2)
#define PIO_PULLUP   (1u << 0)
#define PIO_TYPE_Msk   (0xFu << PIO_TYPE_Pos)
#define PIO_TYPE_NOT_A_PIN   (0x0u << PIO_TYPE_Pos)
#define PIO_TYPE_PIO_INPUT   (0x5u << PIO_TYPE_Pos)
#define PIO_TYPE_PIO_OUTPUT_0   (0x6u << PIO_TYPE_Pos)
#define PIO_TYPE_PIO_OUTPUT_1   (0x7u << PIO_TYPE_Pos)
#define PIO_TYPE_PIO_PERIPH_A   (0x1u << PIO_TYPE_Pos)
#define PIO_TYPE_PIO_PERIPH_B   (0x2u << PIO_TYPE_Pos)
#define PIO_TYPE_PIO_PERIPH_C   (0x3u << PIO_TYPE_Pos)
#define PIO_TYPE_PIO_PERIPH_D   (0x4u << PIO_TYPE_Pos)
#define PIO_TYPE_Pos   27

Typedefs

typedef enum _pio_type pio_type_t

Enumerations

enum  _pio_type {
  PIO_NOT_A_PIN = PIO_TYPE_NOT_A_PIN ,
  PIO_PERIPH_A = PIO_TYPE_PIO_PERIPH_A ,
  PIO_PERIPH_B = PIO_TYPE_PIO_PERIPH_B ,
  PIO_PERIPH_C = PIO_TYPE_PIO_PERIPH_C ,
  PIO_PERIPH_D = PIO_TYPE_PIO_PERIPH_D ,
  PIO_INPUT = PIO_TYPE_PIO_INPUT ,
  PIO_OUTPUT_0 = PIO_TYPE_PIO_OUTPUT_0 ,
  PIO_OUTPUT_1 = PIO_TYPE_PIO_OUTPUT_1
}

Functions

void pio_capture_disable (Pio *p_pio)
 Disable PIO capture mode.
void pio_capture_disable_interrupt (Pio *p_pio, const uint32_t ul_mask)
 Disable a given interrupt source of PIO capture.
void pio_capture_enable (Pio *p_pio)
 Enable PIO capture mode.
void pio_capture_enable_interrupt (Pio *p_pio, const uint32_t ul_mask)
 Enable the given interrupt source of PIO capture.
uint32_t pio_capture_get_interrupt_mask (const Pio *p_pio)
 Read PIO interrupt mask of PIO capture.
uint32_t pio_capture_get_interrupt_status (const Pio *p_pio)
 Read PIO interrupt status of PIO capture.
Pdc * pio_capture_get_pdc_base (const Pio *p_pio)
 Get PDC registers base address.
uint32_t pio_capture_read (const Pio *p_pio, uint32_t *pul_data)
 Read from Capture Reception Holding Register.
void pio_capture_set_mode (Pio *p_pio, uint32_t ul_mode)
 Configure PIO capture mode.
void pio_clear (Pio *p_pio, const uint32_t ul_mask)
 Set a low output level on all the PIOs defined in ul_mask.
uint32_t pio_configure (Pio *p_pio, const pio_type_t ul_type, const uint32_t ul_mask, const uint32_t ul_attribute)
 Perform complete pin(s) configuration; general attributes and PIO init if necessary.
void pio_configure_interrupt (Pio *p_pio, const uint32_t ul_mask, const uint32_t ul_attr)
 Configure the given interrupt source.
uint32_t pio_configure_pin (uint32_t ul_pin, const uint32_t ul_flags)
 Perform complete pin(s) configuration; general attributes and PIO init if necessary.
uint32_t pio_configure_pin_group (Pio *p_pio, uint32_t ul_mask, const uint32_t ul_flags)
 Perform complete pin(s) configuration; general attributes and PIO init if necessary.
void pio_disable_interrupt (Pio *p_pio, const uint32_t ul_mask)
 Disable a given interrupt source, with no added side effects.
void pio_disable_output_write (Pio *p_pio, const uint32_t ul_mask)
 Disable PIO output write.
void pio_disable_pin_interrupt (uint32_t pin)
 Disable interrupt for a GPIO pin.
void pio_enable_interrupt (Pio *p_pio, const uint32_t ul_mask)
 Enable the given interrupt source.
void pio_enable_output_write (Pio *p_pio, const uint32_t ul_mask)
 Enable PIO output write for synchronous data output.
void pio_enable_pin_interrupt (uint32_t pin)
 Enable interrupt for a GPIO pin.
uint32_t pio_get (Pio *p_pio, const pio_type_t ul_type, const uint32_t ul_mask)
 Return 1 if one or more PIOs of the given Pin instance currently have a high level; otherwise returns 0.
uint32_t pio_get_interrupt_mask (const Pio *p_pio)
 Read PIO interrupt mask.
uint32_t pio_get_interrupt_status (const Pio *p_pio)
 Read and clear PIO interrupt status.
uint32_t pio_get_multi_driver_status (const Pio *p_pio)
 Get multi-driver status.
uint32_t pio_get_output_data_status (const Pio *p_pio, const uint32_t ul_mask)
 Return 1 if one or more PIOs of the given Pin are configured to output a high level (even if they are not output).
uint32_t pio_get_output_write_status (const Pio *p_pio)
 Read PIO output write status.
Piopio_get_pin_group (uint32_t pin)
 Return GPIO port for a GPIO pin.
uint32_t pio_get_pin_group_id (uint32_t pin)
 Return GPIO port peripheral ID for a GPIO pin.
uint32_t pio_get_pin_group_mask (uint32_t pin)
 Return GPIO port pin mask for a GPIO pin.
uint32_t pio_get_pin_value (uint32_t pin)
 Return the value of a pin.
uint32_t pio_get_schmitt_trigger (const Pio *p_pio)
 Get PIO pin schmitt trigger status.
uint32_t pio_get_writeprotect_status (const Pio *p_pio)
 Read write protect status.
void pio_pull_down (Pio *p_pio, const uint32_t ul_mask, const uint32_t ul_pull_down_enable)
 Configure PIO pin internal pull-down.
void pio_pull_up (Pio *p_pio, const uint32_t ul_mask, const uint32_t ul_pull_up_enable)
 Configure PIO internal pull-up.
void pio_set (Pio *p_pio, const uint32_t ul_mask)
 Set a high output level on all the PIOs defined in ul_mask.
void pio_set_additional_interrupt_mode (Pio *p_pio, const uint32_t ul_mask, const uint32_t ul_attribute)
 Set additional interrupt mode.
void pio_set_debounce_filter (Pio *p_pio, const uint32_t ul_mask, const uint32_t ul_cut_off)
 Configure Glitch or Debouncing filter for the specified input(s).
void pio_set_input (Pio *p_pio, const uint32_t ul_mask, const uint32_t ul_attribute)
 Configure one or more pin(s) or a PIO controller as inputs.
void pio_set_multi_driver (Pio *p_pio, const uint32_t ul_mask, const uint32_t ul_multi_driver_enable)
 Configure PIO pin multi-driver.
void pio_set_output (Pio *p_pio, const uint32_t ul_mask, const uint32_t ul_default_level, const uint32_t ul_multidrive_enable, const uint32_t ul_pull_up_enable)
 Configure one or more pin(s) of a PIO controller as outputs, with the given default value.
void pio_set_peripheral (Pio *p_pio, const pio_type_t ul_type, const uint32_t ul_mask)
 Configure IO of a PIO controller as being controlled by a specific peripheral.
void pio_set_pin_group_high (Pio *p_pio, uint32_t ul_mask)
 Drive a GPIO port to 1.
void pio_set_pin_group_low (Pio *p_pio, uint32_t ul_mask)
 Drive a GPIO port to 0.
void pio_set_pin_high (uint32_t pin)
 Drive a GPIO pin to 1.
void pio_set_pin_low (uint32_t pin)
 Drive a GPIO pin to 0.
void pio_set_schmitt_trigger (Pio *p_pio, const uint32_t ul_mask)
 Configure PIO pin schmitt trigger.
void pio_set_writeprotect (Pio *p_pio, const uint32_t ul_enable)
 Enable or disable write protect of PIO registers.
void pio_sync_output_write (Pio *p_pio, const uint32_t ul_mask)
 Synchronously write on output pins.
void pio_toggle_pin (uint32_t pin)
 Toggle a GPIO pin.
void pio_toggle_pin_group (Pio *p_pio, uint32_t ul_mask)
 Toggle a GPIO group.

Detailed Description

Parallel Input/Output (PIO) Controller driver for SAM.

Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries.

\cond ASF_LICENSE

Definition in file pio.h.

Macro Definition Documentation

◆ PIO_DEBOUNCE

#define PIO_DEBOUNCE   (1u << 3)

Definition at line 93 of file pio.h.

Referenced by pio_set_input().

◆ PIO_DEFAULT

#define PIO_DEFAULT   (0u << 0)

Definition at line 84 of file pio.h.

◆ PIO_DEGLITCH

#define PIO_DEGLITCH   (1u << 1)

Definition at line 88 of file pio.h.

Referenced by pio_set_input().

◆ PIO_DELTA

#define PIO_DELTA   ((uint32_t) PIOB - (uint32_t) PIOA)

Definition at line 47 of file pio.h.

Referenced by pio_get_pin_group().

◆ PIO_IT_AIME

#define PIO_IT_AIME   (1u << 4)

Definition at line 96 of file pio.h.

Referenced by pio_configure_interrupt(), and pio_set_additional_interrupt_mode().

◆ PIO_IT_EDGE

#define PIO_IT_EDGE   (1u << 6)

Definition at line 101 of file pio.h.

Referenced by pio_configure_interrupt(), and pio_set_additional_interrupt_mode().

◆ PIO_IT_FALL_EDGE

#define PIO_IT_FALL_EDGE   (0 | PIO_IT_EDGE | PIO_IT_AIME)

Definition at line 108 of file pio.h.

◆ PIO_IT_HIGH_LEVEL

#define PIO_IT_HIGH_LEVEL   (PIO_IT_RE_OR_HL | 0 | PIO_IT_AIME)

Definition at line 106 of file pio.h.

◆ PIO_IT_LOW_LEVEL

#define PIO_IT_LOW_LEVEL   (0 | 0 | PIO_IT_AIME)

Definition at line 104 of file pio.h.

◆ PIO_IT_RE_OR_HL

#define PIO_IT_RE_OR_HL   (1u << 5)

Definition at line 99 of file pio.h.

Referenced by pio_configure_interrupt(), and pio_set_additional_interrupt_mode().

◆ PIO_IT_RISE_EDGE

#define PIO_IT_RISE_EDGE   (PIO_IT_RE_OR_HL | PIO_IT_EDGE | PIO_IT_AIME)

Definition at line 110 of file pio.h.

◆ PIO_OPENDRAIN

#define PIO_OPENDRAIN   (1u << 2)

Definition at line 90 of file pio.h.

Referenced by pio_configure(), pio_configure_pin(), and pio_configure_pin_group().

◆ PIO_PULLUP

#define PIO_PULLUP   (1u << 0)

Definition at line 86 of file pio.h.

Referenced by pio_configure(), pio_configure_pin(), pio_configure_pin_group(), and pio_set_input().

◆ PIO_TYPE_Msk

#define PIO_TYPE_Msk   (0xFu << PIO_TYPE_Pos)

Definition at line 52 of file pio.h.

Referenced by pio_configure_pin(), and pio_configure_pin_group().

◆ PIO_TYPE_NOT_A_PIN

#define PIO_TYPE_NOT_A_PIN   (0x0u << PIO_TYPE_Pos)

Definition at line 54 of file pio.h.

◆ PIO_TYPE_PIO_INPUT

#define PIO_TYPE_PIO_INPUT   (0x5u << PIO_TYPE_Pos)

Definition at line 64 of file pio.h.

Referenced by pio_configure_pin(), and pio_configure_pin_group().

◆ PIO_TYPE_PIO_OUTPUT_0

#define PIO_TYPE_PIO_OUTPUT_0   (0x6u << PIO_TYPE_Pos)

Definition at line 66 of file pio.h.

Referenced by pio_configure_pin(), and pio_configure_pin_group().

◆ PIO_TYPE_PIO_OUTPUT_1

#define PIO_TYPE_PIO_OUTPUT_1   (0x7u << PIO_TYPE_Pos)

Definition at line 68 of file pio.h.

Referenced by pio_configure_pin(), and pio_configure_pin_group().

◆ PIO_TYPE_PIO_PERIPH_A

#define PIO_TYPE_PIO_PERIPH_A   (0x1u << PIO_TYPE_Pos)

Definition at line 56 of file pio.h.

Referenced by pio_configure_pin(), and pio_configure_pin_group().

◆ PIO_TYPE_PIO_PERIPH_B

#define PIO_TYPE_PIO_PERIPH_B   (0x2u << PIO_TYPE_Pos)

Definition at line 58 of file pio.h.

Referenced by pio_configure_pin(), and pio_configure_pin_group().

◆ PIO_TYPE_PIO_PERIPH_C

#define PIO_TYPE_PIO_PERIPH_C   (0x3u << PIO_TYPE_Pos)

Definition at line 60 of file pio.h.

Referenced by pio_configure_pin(), and pio_configure_pin_group().

◆ PIO_TYPE_PIO_PERIPH_D

#define PIO_TYPE_PIO_PERIPH_D   (0x4u << PIO_TYPE_Pos)

Definition at line 62 of file pio.h.

Referenced by pio_configure_pin(), and pio_configure_pin_group().

◆ PIO_TYPE_Pos

#define PIO_TYPE_Pos   27

Definition at line 50 of file pio.h.

Typedef Documentation

◆ pio_type_t

typedef enum _pio_type pio_type_t

Enumeration Type Documentation

◆ _pio_type

enum _pio_type
Enumerator
PIO_NOT_A_PIN 
PIO_PERIPH_A 
PIO_PERIPH_B 
PIO_PERIPH_C 
PIO_PERIPH_D 
PIO_INPUT 
PIO_OUTPUT_0 
PIO_OUTPUT_1 

Definition at line 70 of file pio.h.

70 {
74#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70)
77#endif
#define PIO_TYPE_PIO_OUTPUT_0
Definition pio.h:66
#define PIO_TYPE_PIO_OUTPUT_1
Definition pio.h:68
#define PIO_TYPE_PIO_PERIPH_B
Definition pio.h:58
@ PIO_OUTPUT_0
Definition pio.h:79
@ PIO_OUTPUT_1
Definition pio.h:80
@ PIO_PERIPH_B
Definition pio.h:73
@ PIO_PERIPH_A
Definition pio.h:72
@ PIO_PERIPH_C
Definition pio.h:75
@ PIO_INPUT
Definition pio.h:78
@ PIO_NOT_A_PIN
Definition pio.h:71
@ PIO_PERIPH_D
Definition pio.h:76
#define PIO_TYPE_PIO_PERIPH_A
Definition pio.h:56
#define PIO_TYPE_PIO_INPUT
Definition pio.h:64
#define PIO_TYPE_NOT_A_PIN
Definition pio.h:54
#define PIO_TYPE_PIO_PERIPH_C
Definition pio.h:60
#define PIO_TYPE_PIO_PERIPH_D
Definition pio.h:62
enum _pio_type pio_type_t