RA Flexible Software Package Documentation  Release v4.3.0

 
I/O Port Interface

Detailed Description

Interface for accessing I/O ports and configuring I/O functionality.

Summary

The IOPort shared interface provides the ability to access the IOPorts of a device at both bit and port level. Port and pin direction can be changed.

IOPORT Interface description: I/O Port (r_ioport)

Data Structures

struct  ioport_pin_cfg_t
 
struct  ioport_cfg_t
 
struct  ioport_api_t
 
struct  ioport_instance_t
 

Typedefs

typedef uint16_t ioport_size_t
 IO port size on this device. More...
 
typedef void ioport_ctrl_t
 

Enumerations

enum  ioport_peripheral_t
 
enum  ioport_cfg_options_t
 
enum  ioport_pwpr_t
 

Data Structure Documentation

◆ ioport_pin_cfg_t

struct ioport_pin_cfg_t

Pin identifier and pin PFS pin configuration value

Data Fields
uint32_t pin_cfg Pin PFS configuration - Use ioport_cfg_options_t parameters to configure.
bsp_io_port_pin_t pin Pin identifier.

◆ ioport_cfg_t

struct ioport_cfg_t

Multiple pin configuration data for loading into PFS registers by R_IOPORT_Init()

Data Fields
uint16_t number_of_pins Number of pins for which there is configuration data.
ioport_pin_cfg_t const * p_pin_cfg_data Pin configuration data.

◆ ioport_api_t

struct ioport_api_t

IOPort driver structure. IOPort functions implemented at the HAL layer will follow this API.

Data Fields

fsp_err_t(* open )(ioport_ctrl_t *const p_ctrl, const ioport_cfg_t *p_cfg)
 
fsp_err_t(* close )(ioport_ctrl_t *const p_ctrl)
 
fsp_err_t(* pinsCfg )(ioport_ctrl_t *const p_ctrl, const ioport_cfg_t *p_cfg)
 
fsp_err_t(* pinCfg )(ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, uint32_t cfg)
 
fsp_err_t(* pinEventInputRead )(ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t *p_pin_event)
 
fsp_err_t(* pinEventOutputWrite )(ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t pin_value)
 
fsp_err_t(* pinRead )(ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t *p_pin_value)
 
fsp_err_t(* pinWrite )(ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level)
 
fsp_err_t(* portDirectionSet )(ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t direction_values, ioport_size_t mask)
 
fsp_err_t(* portEventInputRead )(ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t *p_event_data)
 
fsp_err_t(* portEventOutputWrite )(ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t event_data, ioport_size_t mask_value)
 
fsp_err_t(* portRead )(ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t *p_port_value)
 
fsp_err_t(* portWrite )(ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t value, ioport_size_t mask)
 

Field Documentation

◆ open

fsp_err_t(* ioport_api_t::open) (ioport_ctrl_t *const p_ctrl, const ioport_cfg_t *p_cfg)

Initialize internal driver data and initial pin configurations. Called during startup. Do not call this API during runtime. Use ioport_api_t::pinsCfg for runtime reconfiguration of multiple pins.

Implemented as
Parameters
[in]p_cfgPointer to pin configuration data array.

◆ close

fsp_err_t(* ioport_api_t::close) (ioport_ctrl_t *const p_ctrl)

Close the API.

Implemented as
Parameters
[in]p_ctrlPointer to control structure.

◆ pinsCfg

fsp_err_t(* ioport_api_t::pinsCfg) (ioport_ctrl_t *const p_ctrl, const ioport_cfg_t *p_cfg)

Configure multiple pins.

Implemented as
Parameters
[in]p_cfgPointer to pin configuration data array.

◆ pinCfg

fsp_err_t(* ioport_api_t::pinCfg) (ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, uint32_t cfg)

Configure settings for an individual pin.

Implemented as
Parameters
[in]pinPin to be read.
[in]cfgConfiguration options for the pin.

◆ pinEventInputRead

fsp_err_t(* ioport_api_t::pinEventInputRead) (ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t *p_pin_event)

Read the event input data of the specified pin and return the level.

Implemented as
Parameters
[in]pinPin to be read.
[in]p_pin_eventPointer to return the event data.

◆ pinEventOutputWrite

fsp_err_t(* ioport_api_t::pinEventOutputWrite) (ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t pin_value)

Write pin event data.

Implemented as
Parameters
[in]pinPin event data is to be written to.
[in]pin_valueLevel to be written to pin output event.

◆ pinRead

fsp_err_t(* ioport_api_t::pinRead) (ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t *p_pin_value)

Read level of a pin.

Implemented as
Parameters
[in]pinPin to be read.
[in]p_pin_valuePointer to return the pin level.

◆ pinWrite

fsp_err_t(* ioport_api_t::pinWrite) (ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level)

Write specified level to a pin.

Implemented as
Parameters
[in]pinPin to be written to.
[in]levelState to be written to the pin.

◆ portDirectionSet

fsp_err_t(* ioport_api_t::portDirectionSet) (ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t direction_values, ioport_size_t mask)

Set the direction of one or more pins on a port.

Implemented as
Parameters
[in]portPort being configured.
[in]direction_valuesValue controlling direction of pins on port (1 - output, 0 - input).
[in]maskMask controlling which pins on the port are to be configured.

◆ portEventInputRead

fsp_err_t(* ioport_api_t::portEventInputRead) (ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t *p_event_data)

Read captured event data for a port.

Implemented as
Parameters
[in]portPort to be read.
[in]p_event_dataPointer to return the event data.

◆ portEventOutputWrite

fsp_err_t(* ioport_api_t::portEventOutputWrite) (ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t event_data, ioport_size_t mask_value)

Write event output data for a port.

Implemented as
Parameters
[in]portPort event data will be written to.
[in]event_dataData to be written as event data to specified port.
[in]mask_valueEach bit set to 1 in the mask corresponds to that bit's value in event data. being written to port.

◆ portRead

fsp_err_t(* ioport_api_t::portRead) (ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t *p_port_value)

Read states of pins on the specified port.

Implemented as
Parameters
[in]portPort to be read.
[in]p_port_valuePointer to return the port value.

◆ portWrite

fsp_err_t(* ioport_api_t::portWrite) (ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t value, ioport_size_t mask)

Write to multiple pins on a port.

Implemented as
Parameters
[in]portPort to be written to.
[in]valueValue to be written to the port.
[in]maskMask controlling which pins on the port are written to.

◆ ioport_instance_t

struct ioport_instance_t

This structure encompasses everything that is needed to use an instance of this interface.

Data Fields
ioport_ctrl_t * p_ctrl Pointer to the control structure for this instance.
ioport_cfg_t const * p_cfg Pointer to the configuration structure for this instance.
ioport_api_t const * p_api Pointer to the API structure for this instance.

Typedef Documentation

◆ ioport_size_t

typedef uint16_t ioport_size_t

IO port size on this device.

IO port type used with ports

◆ ioport_ctrl_t

typedef void ioport_ctrl_t

IOPORT control block. Allocate an instance specific control block to pass into the IOPORT API calls.

Implemented as

Enumeration Type Documentation

◆ ioport_peripheral_t

Superset of all peripheral functions.

Enumerator
IOPORT_PERIPHERAL_IO 

Pin will functions as an IO pin

IOPORT_PERIPHERAL_DEBUG 

Pin will function as a DEBUG pin

IOPORT_PERIPHERAL_AGT 

Pin will function as an AGT peripheral pin

IOPORT_PERIPHERAL_AGTW 

Pin will function as an AGT peripheral pin

IOPORT_PERIPHERAL_AGT1 

Pin will function as an AGT peripheral pin

IOPORT_PERIPHERAL_GPT0 

Pin will function as a GPT peripheral pin

IOPORT_PERIPHERAL_GPT1 

Pin will function as a GPT peripheral pin

IOPORT_PERIPHERAL_SCI0_2_4_6_8 

Pin will function as an SCI peripheral pin

IOPORT_PERIPHERAL_SCI1_3_5_7_9 

Pin will function as an SCI peripheral pin

IOPORT_PERIPHERAL_SPI 

Pin will function as a SPI peripheral pin

IOPORT_PERIPHERAL_IIC 

Pin will function as a IIC peripheral pin

IOPORT_PERIPHERAL_KEY 

Pin will function as a KEY peripheral pin

IOPORT_PERIPHERAL_CLKOUT_COMP_RTC 

Pin will function as a clock/comparator/RTC peripheral pin

IOPORT_PERIPHERAL_CAC_AD 

Pin will function as a CAC/ADC peripheral pin

IOPORT_PERIPHERAL_BUS 

Pin will function as a BUS peripheral pin

IOPORT_PERIPHERAL_CTSU 

Pin will function as a CTSU peripheral pin

IOPORT_PERIPHERAL_ACMPHS 

Pin will function as a CMPHS peripheral pin

IOPORT_PERIPHERAL_LCDC 

Pin will function as a segment LCD peripheral pin

IOPORT_PERIPHERAL_DE_SCI1_3_5_7_9 

Pin will function as an SCI peripheral DEn pin

IOPORT_PERIPHERAL_DALI 

Pin will function as a DALI peripheral pin

IOPORT_PERIPHERAL_DE_SCI0_2_4_6_8 

Pin will function as an SCI DEn peripheral pin

IOPORT_PERIPHERAL_CEU 

Pin will function as a CEU peripheral pin

IOPORT_PERIPHERAL_CAN 

Pin will function as a CAN peripheral pin

IOPORT_PERIPHERAL_QSPI 

Pin will function as a QSPI peripheral pin

IOPORT_PERIPHERAL_SSI 

Pin will function as an SSI peripheral pin

IOPORT_PERIPHERAL_USB_FS 

Pin will function as a USB full speed peripheral pin

IOPORT_PERIPHERAL_USB_HS 

Pin will function as a USB high speed peripheral pin

IOPORT_PERIPHERAL_GPT2 

Pin will function as a GPT peripheral pin

IOPORT_PERIPHERAL_SDHI_MMC 

Pin will function as an SD/MMC peripheral pin

IOPORT_PERIPHERAL_GPT3 

Pin will function as a GPT peripheral pin

IOPORT_PERIPHERAL_ETHER_MII 

Pin will function as an Ethernet MMI peripheral pin

IOPORT_PERIPHERAL_GPT4 

Pin will function as a GPT peripheral pin

IOPORT_PERIPHERAL_ETHER_RMII 

Pin will function as an Ethernet RMMI peripheral pin

IOPORT_PERIPHERAL_PDC 

Pin will function as a PDC peripheral pin

IOPORT_PERIPHERAL_LCD_GRAPHICS 

Pin will function as a graphics LCD peripheral pin

IOPORT_PERIPHERAL_CAC 

Pin will function as a CAC peripheral pin

IOPORT_PERIPHERAL_TRACE 

Pin will function as a debug trace peripheral pin

IOPORT_PERIPHERAL_OSPI 

Pin will function as a OSPI peripheral pin

IOPORT_PERIPHERAL_CEC 

Pin will function as a CEC peripheral pin

IOPORT_PERIPHERAL_PGAOUT0 

Pin will function as a PGAOUT peripheral pin

IOPORT_PERIPHERAL_PGAOUT1 

Pin will function as a PGAOUT peripheral pin

IOPORT_PERIPHERAL_MIPI 

Pin will function as a MIPI peripheral pin

IOPORT_PERIPHERAL_ULPT 

Pin will function as a ULPT peripheral pin

◆ ioport_cfg_options_t

Options to configure pin functions

Enumerator
IOPORT_CFG_PORT_DIRECTION_INPUT 

Sets the pin direction to input (default)

IOPORT_CFG_PORT_DIRECTION_OUTPUT 

Sets the pin direction to output.

IOPORT_CFG_PORT_OUTPUT_LOW 

Sets the pin level to low.

IOPORT_CFG_PORT_OUTPUT_HIGH 

Sets the pin level to high.

IOPORT_CFG_PULLUP_ENABLE 

Enables the pin's internal pull-up.

IOPORT_CFG_PIM_TTL 

Enables the pin's input mode.

IOPORT_CFG_NMOS_ENABLE 

Enables the pin's NMOS open-drain output.

IOPORT_CFG_PMOS_ENABLE 

Enables the pin's PMOS open-drain ouput.

IOPORT_CFG_DRIVE_MID 

Sets pin drive output to medium.

IOPORT_CFG_DRIVE_HS_HIGH 

Sets pin drive output to high along with supporting high speed.

IOPORT_CFG_DRIVE_MID_IIC 

Sets pin to drive output needed for IIC on a 20mA port.

IOPORT_CFG_DRIVE_HIGH 

Sets pin drive output to high.

IOPORT_CFG_EVENT_RISING_EDGE 

Sets pin event trigger to rising edge.

IOPORT_CFG_EVENT_FALLING_EDGE 

Sets pin event trigger to falling edge.

IOPORT_CFG_EVENT_BOTH_EDGES 

Sets pin event trigger to both edges.

IOPORT_CFG_IRQ_ENABLE 

Sets pin as an IRQ pin.

IOPORT_CFG_ANALOG_ENABLE 

Enables pin to operate as an analog pin.

IOPORT_CFG_PERIPHERAL_PIN 

Enables pin to operate as a peripheral pin.

◆ ioport_pwpr_t

Enumerator
IOPORT_PFS_WRITE_DISABLE 

Disable PFS write access.

IOPORT_PFS_WRITE_ENABLE 

Enable PFS write access.