GPIO_NXP_Arduino 1.0.1
GPIO device operation sample code for Arduino
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
PCAL6524 Class Reference

#include <GPIO_NXP.h>

Inheritance diagram for PCAL6524:
PCAL6xxx_base GPIO_base

Public Types

enum  reg_num {
  Input_Port_0 , Input_Port_1 , Input_Port_2 , reserved0 ,
  Output_Port_0 , Output_Port_1 , Output_Port_2 , reserved1 ,
  Polarity_Inversion_port_0 , Polarity_Inversion_port_1 , Polarity_Inversion_port_2 , reserved2 ,
  Configuration_port_0 , Configuration_port_1 , Configuration_port_2 , Output_drive_strength_register_port_0A =0x40 ,
  Output_drive_strength_register_port_0B , Output_drive_strength_register_port_1A , Output_drive_strength_register_port_1B , Output_drive_strength_register_port_2A ,
  Output_drive_strength_register_port_2B , reserved3 , reserved4 , Input_latch_register_port_0 ,
  Input_latch_register_port_1 , Input_latch_register_port_2 , reserved5 , Pull_up_pull_down_enable_register_port_0 ,
  Pull_up_pull_down_enable_register_port_1 , Pull_up_pull_down_enable_register_port_2 , reserved6 , Pull_up_pull_down_selection_register_port_0 ,
  Pull_up_pull_down_selection_register_port_1 , Pull_up_pull_down_selection_register_port_2 , reserved7 , Interrupt_mask_register_port_0 ,
  Interrupt_mask_register_port_1 , Interrupt_mask_register_port_2 , reserved8 , Interrupt_status_register_port_0 ,
  Interrupt_status_register_port_1 , Interrupt_status_register_port_2 , reserved9 , Output_port_configuration_register ,
  reserved10 , reserved11 , reserved12 , Interrupt_edge_register_port_0A ,
  Interrupt_edge_register_port_0B , Interrupt_edge_register_port_1A , Interrupt_edge_register_port_1B , Interrupt_edge_register_port_2A ,
  Interrupt_edge_register_port_2B , reserved13 , reserved14 , Interrupt_clear_register_port_0 ,
  Interrupt_clear_register_port_1 , Interrupt_clear_register_port_2 , reserved15 , Input_status_port_0 ,
  Input_status_port_1 , Input_status_port_2 , reserved16 , Individual_pin_output_port_0_configuration_register ,
  Individual_pin_output_port_1_configuration_register , Individual_pin_output_port_2_configuration_register , reserved17 , Switch_debounce_enable_0 ,
  Switch_debounce_enable_1 , Switch_debounce_count
}
 
enum  board { NONE , ARDUINO_SHIELD }
 
- Public Types inherited from GPIO_base
enum  board { NONE , ARDUINO_SHIELD }
 

Public Member Functions

 PCAL6524 (uint8_t i2c_address=(0x44 > > 1)+0)
 
 PCAL6524 (TwoWire &wire, uint8_t i2c_address=(0x44 > > 1)+0)
 
virtual ~PCAL6524 ()
 
void begin (board env=NONE)
 
void output (int port, uint8_t value, uint8_t mask=0)
 
void output (const uint8_t *vp)
 
uint8_t input (int port)
 
uint8_t * input (uint8_t *vp)
 
void config (int port, uint8_t config, uint8_t mask=0)
 
void config (const uint8_t *vp)
 
void write_port (access_word w, const uint8_t *vp)
 
void write_port16 (access_word w, const uint16_t *vp)
 
uint8_t * read_port (access_word w, uint8_t *vp)
 
uint16_t * read_port16 (access_word w, uint16_t *vp)
 
void write_port (access_word w, uint8_t value, int port_num=0)
 
void write_port16 (access_word w, uint16_t value, int port_num=0)
 
uint8_t read_port (access_word w, int port_num=0)
 
uint16_t read_port16 (access_word w, int port_num=0)
 
bool ping (void)
 
int reg_w (uint8_t reg_adr, const uint8_t *data, uint16_t size)
 
int reg_w (uint8_t reg_adr, uint8_t data)
 
int reg_r (uint8_t reg_adr, uint8_t *data, uint16_t size)
 
uint8_t reg_r (uint8_t reg_adr)
 
void write_r8 (uint8_t reg, uint8_t val)
 
void write_r16 (uint8_t reg, uint16_t val)
 
uint8_t read_r8 (uint8_t reg)
 
uint16_t read_r16 (uint8_t reg)
 
void bit_op8 (uint8_t reg, uint8_t mask, uint8_t value)
 
void bit_op16 (uint8_t reg, uint16_t mask, uint16_t value)
 
- Public Member Functions inherited from PCAL6xxx_base
 PCAL6xxx_base (uint8_t i2c_address, const int nbits, const uint8_t arp[], uint8_t ai)
 
 PCAL6xxx_base (TwoWire &wire, uint8_t i2c_address, const int nbits, const uint8_t arp[], uint8_t ai)
 
- Public Member Functions inherited from GPIO_base
 GPIO_base (uint8_t i2c_address, int nbits, const uint8_t *arp, uint8_t ai)
 
 GPIO_base (TwoWire &wire, uint8_t i2c_address, int nbits, const uint8_t *arp, uint8_t ai)
 
virtual ~GPIO_base ()
 
void begin (board env=NONE)
 
void output (int port, uint8_t value, uint8_t mask=0)
 
void output (const uint8_t *vp)
 
uint8_t input (int port)
 
uint8_t * input (uint8_t *vp)
 
void config (int port, uint8_t config, uint8_t mask=0)
 
void config (const uint8_t *vp)
 
void write_port (access_word w, const uint8_t *vp)
 
void write_port16 (access_word w, const uint16_t *vp)
 
uint8_t * read_port (access_word w, uint8_t *vp)
 
uint16_t * read_port16 (access_word w, uint16_t *vp)
 
void write_port (access_word w, uint8_t value, int port_num=0)
 
void write_port16 (access_word w, uint16_t value, int port_num=0)
 
uint8_t read_port (access_word w, int port_num=0)
 
uint16_t read_port16 (access_word w, int port_num=0)
 

Public Attributes

const int n_bits
 
const int n_ports
 
- Public Attributes inherited from GPIO_base
const int n_bits
 
const int n_ports
 

Static Public Attributes

static constexpr uint8_t access_ref [NUM_access_word]
 

Additional Inherited Members

- Static Public Member Functions inherited from GPIO_base
static void print_bin (uint8_t v)
 

Detailed Description

PCAL6524 class

Definition at line 1417 of file GPIO_NXP.h.

Member Enumeration Documentation

◆ board

Constants for begin() method

Definition at line 1478 of file GPIO_NXP.h.

◆ reg_num

Name of the PCAL6524 registers

Definition at line 1421 of file GPIO_NXP.h.

Constructor & Destructor Documentation

◆ PCAL6524() [1/2]

PCAL6524::PCAL6524 ( uint8_t i2c_address = (0x44 >> 1) + 0)

Constractor

Parameters
i2c_addressI2C target address

Definition at line 291 of file GPIO_NXP.cpp.

◆ PCAL6524() [2/2]

PCAL6524::PCAL6524 ( TwoWire & wire,
uint8_t i2c_address = (0x44 >> 1) + 0 )

Constractor

Parameters
wireTwoWire instance
i2c_addressI2C target address

Definition at line 296 of file GPIO_NXP.cpp.

◆ ~PCAL6524()

PCAL6524::~PCAL6524 ( )
virtual

Destractor

Definition at line 301 of file GPIO_NXP.cpp.

Member Function Documentation

◆ begin()

void PCAL6524::begin ( board env = NONE)

Device/board initialization

This method is needed to initialize Arduino-shield type evaluation boards from NXP. This method takes one argument of "PCAL6524::ARDUINO_SHIELD" to set RESET and ADDRESS pins.

If the devoce is used as it self, this method doesn't need to be called.

Parameters
envThis argument can be given as "PCAL6524::NONE" ot "PCAL6524::ARDUINO_SHIELD"

◆ bit_op8()

void PCAL6524::bit_op8 ( uint8_t reg,
uint8_t mask,
uint8_t value )

Register overwriting with bit-mask

Register can be updated by bit level

Parameters
regregister index/address/pointer
maskbit-mask to protect overwriting
valuevalue to overwrite

◆ config() [1/2]

void PCAL6524::config ( const uint8_t * vp)

Config, all ports

Basic GPIO port access function for all port configuration

Parameters
vpPointer to array of configuration values. The array should have 'n_ports' length

◆ config() [2/2]

void PCAL6524::config ( int port,
uint8_t config,
uint8_t mask = 0 )

Config, single port

Basic GPIO port access function for single port configuration

Parameters
portPort number
valueValue to be written into configuration register
maskBit mask. Value will not be changed in bit positions '1' in mask

◆ input() [1/2]

uint8_t PCAL6524::input ( int port)

Input, single port

Basic GPIO port access function for single port input

Parameters
portPort number
Returns
Port read value

◆ input() [2/2]

uint8_t * PCAL6524::input ( uint8_t * vp)

Input, all ports

Basic GPIO port access function for all ports input

Parameters
vpPointer to an array of values. The array should have 'n_ports' length
Returns
Pointer to vp

◆ output() [1/2]

void PCAL6524::output ( const uint8_t * vp)

Output, all ports

Basic GPIO port access function for all ports output

Parameters
vpPointer to an array of values. The array should have 'n_ports' length

◆ output() [2/2]

void PCAL6524::output ( int port,
uint8_t value,
uint8_t mask = 0 )

Output, single port

Basic GPIO port access function for single port output

Parameters
portPort number
valueValue to be output
maskBit mask. Value will not be changed in bit positions '1' in mask

◆ ping()

bool PCAL6524::ping ( void )

Ping the device

Returns
true when ACK

◆ read_port() [1/2]

uint8_t PCAL6524::read_port ( access_word w,
int port_num = 0 )

Read single port method

Single port register access function using word of 'access_word'

Parameters
wAccsess word. This should be choosen from access_word'
port_numOption, to specify port number
Returns
Register read value

◆ read_port() [2/2]

uint8_t * PCAL6524::read_port ( access_word w,
uint8_t * vp )

Read all port method

All port register access function using word of 'access_word'

Parameters
wAccsess word. This should be choosen from access_word'
vpPointer to an array of values. The array should have 'n_ports' length
Returns
Pointer to vp

◆ read_port16() [1/2]

uint16_t PCAL6524::read_port16 ( access_word w,
int port_num = 0 )

Read single port method

Single port 16 bit register access function using word of 'access_word'

Parameters
wAccsess word. This should be choosen from access_word'
port_numOption, to specify port number
Returns
Register read value

◆ read_port16() [2/2]

uint16_t * PCAL6524::read_port16 ( access_word w,
uint16_t * vp )

Read all port method

All port 16 bit register access function using word of 'access_word'

Parameters
wAccsess word. This should be choosen from access_word'
vpPointer to an array of values. The array should have 'n_ports' length
Returns
Pointer to vp

◆ read_r16()

uint16_t PCAL6524::read_r16 ( uint8_t reg)

Register read, 16 bit

This 16 bit access may ot be common but it's useful for sensor devices

Parameters
regregister index/address/pointer
Returns
data value

◆ read_r8()

uint8_t PCAL6524::read_r8 ( uint8_t reg)

Register read, 8 bit

Parameters
regregister index/address/pointer
Returns
data value

◆ reg_r() [1/2]

uint8_t PCAL6524::reg_r ( uint8_t reg_adr)

Single register read

Parameters
regregister index/address/pointer
Returns
read data

◆ reg_r() [2/2]

int PCAL6524::reg_r ( uint8_t reg_adr,
uint8_t * data,
uint16_t size )

Multiple register read

Parameters
regregister index/address/pointer
datapointer to data buffer
sizedata size
Returns
transferred data size

◆ reg_w() [1/2]

int PCAL6524::reg_w ( uint8_t reg_adr,
const uint8_t * data,
uint16_t size )

Multiple register write

Parameters
regregister index/address/pointer
datapointer to data buffer
sizedata size
Returns
transferred data size

◆ reg_w() [2/2]

int PCAL6524::reg_w ( uint8_t reg_adr,
uint8_t data )

Single register write

Parameters
regregister index/address/pointer
datapointer to data buffer
sizedata size
Returns
transferred data size

◆ write_port() [1/2]

void PCAL6524::write_port ( access_word w,
const uint8_t * vp )

Write all port method

All port register access function using word of 'access_word'

Parameters
wAccsess word. This should be choosen from access_word'
vpPointer to an array of values. The array should have 'n_ports' length

◆ write_port() [2/2]

void PCAL6524::write_port ( access_word w,
uint8_t value,
int port_num = 0 )

Write single port method

Single port register access function using word of 'access_word'

Parameters
wAccsess word. This should be choosen from access_word'
valueValue to be written into a register
port_numOption, to specify port number

◆ write_port16() [1/2]

void PCAL6524::write_port16 ( access_word w,
const uint16_t * vp )

Write all port method

All port 16 bit register access function using word of 'access_word'

Parameters
wAccsess word. This should be choosen from access_word'
vpPointer to an array of values. The array should have 'n_ports' length

◆ write_port16() [2/2]

void PCAL6524::write_port16 ( access_word w,
uint16_t value,
int port_num = 0 )

Write single port method

Single port 16 bit register access function using word of 'access_word'

Parameters
wAccsess word. This should be choosen from access_word'
valueValue to be written into a register
port_numOption, to specify port number

◆ write_r16()

void PCAL6524::write_r16 ( uint8_t reg,
uint16_t val )

Register write, 16 bit

This 16 bit access may ot be common but it's useful for sensor devices

Parameters
regregister index/address/pointer
valdata value

◆ write_r8()

void PCAL6524::write_r8 ( uint8_t reg,
uint8_t val )

Register write, 8 bit

Parameters
regregister index/address/pointer
valdata value

Member Data Documentation

◆ access_ref

constexpr uint8_t PCAL6524::access_ref
staticconstexpr
Initial value:
= {
Input_Port_0,
Output_Port_0,
Polarity_Inversion_port_0,
Configuration_port_0,
Output_drive_strength_register_port_0A,
Input_latch_register_port_0,
Pull_up_pull_down_enable_register_port_0,
Pull_up_pull_down_selection_register_port_0,
Interrupt_mask_register_port_0,
Interrupt_status_register_port_0,
Output_port_configuration_register,
}

Definition at line 1462 of file GPIO_NXP.h.

◆ n_bits

const int PCAL6524::n_bits

Number of IO bits

Definition at line 1484 of file GPIO_NXP.h.

◆ n_ports

const int PCAL6524::n_ports

Number of IO ports

Definition at line 1487 of file GPIO_NXP.h.


The documentation for this class was generated from the following files: