HPM SDK
HPMicro Software Development Kit
PPI driver APIs

PPI driver APIs. More...

Data Structures

struct  ppi_clk_pin_config_t
 clock pin config structure More...
 
struct  ppi_cs_pin_config_t
 cs pin config structure More...
 
struct  ppi_cmd_config_t
 cmd config structure More...
 

Enumerations

enum  ppi_cs_idle_polarity_t { ppi_cs_idle_pol_low = 0 , ppi_cs_idle_pol_high }
 cs pin idle polarity More...
 
enum  ppi_dm_valid_polarity_t { ppi_dm_valid_pol_high = 0 , ppi_dm_valid_pol_low }
 dm pin valid polarity More...
 
enum  ppi_ctrl_polarity_t { ppi_ctrl_pol_low = 0 , ppi_ctrl_pol_high }
 ctrl pin polarity More...
 
enum  ppi_ctrl_pin_dir_t { ppi_ctrl_pin_dir_input = 0 , ppi_ctrl_pin_dir_output }
 ctrl pin direction More...
 
enum  ppi_clk_output_mode_t { ppi_clk_output_by_cmd_clk_output = 0 , ppi_clk_always_output }
 clock pin output mode More...
 
enum  ppi_irq_mask_t { ppi_irq_tm_out_mask = PPI_IRQ_EN_IRQ_TMOUT_EN_MASK }
 irq mask More...
 
enum  ppi_port_size_t { ppi_port_size_8bits = 0 , ppi_port_size_16bits , ppi_port_size_32bits }
 port size More...
 
enum  ppi_byte_sel_t { ppi_byte_sel_0_7_bits = 0 , ppi_byte_sel_8_15_bits , ppi_byte_sel_16_23_bits , ppi_byte_sel_24_31_bits }
 cmd byte select More...
 
enum  ppi_ad_func_t { ppi_ad_func_data = 0 , ppi_ad_func_addr }
 cmd address and data function More...
 
enum  ppi_ad_pin_dir_t { ppi_ad_pin_dir_output = 0 , ppi_ad_pin_dir_input }
 cmd address and data pins direction More...
 

Functions

static void ppi_set_reset (PPI_Type *ppi, bool reset)
 set ppi software reset More...
 
static void ppi_config_cs_pin_polarity (PPI_Type *ppi, uint8_t index, ppi_cs_idle_polarity_t pol)
 config cs pin work valid polarity More...
 
static void ppi_config_dm_pin_polarity (PPI_Type *ppi, uint8_t index, ppi_dm_valid_polarity_t pol)
 config dm pin work polarity More...
 
static void ppi_config_ctrl_pin_polarity (PPI_Type *ppi, uint8_t index, ppi_ctrl_polarity_t pol)
 config ctrl pin work polarity, output and input ctrl pin polarity has different meaning More...
 
static void ppi_set_ctrl_pin_dir (PPI_Type *ppi, uint8_t index, ppi_ctrl_pin_dir_t dir)
 set ctrl pin direction More...
 
static void ppi_config_timeout (PPI_Type *ppi, uint16_t timeout_cnt, bool enable)
 config timeout More...
 
static void ppi_set_irq_enable (PPI_Type *ppi, uint32_t mask)
 set irq enable More...
 
static void ppi_set_irq_disable (PPI_Type *ppi, uint32_t mask)
 set irq disable More...
 
static uint32_t ppi_get_irq_enable_status (PPI_Type *ppi)
 get irq enable status More...
 
static uint32_t ppi_get_irq_status (PPI_Type *ppi)
 get irq status More...
 
static void ppi_clear_irq_flag (PPI_Type *ppi, uint32_t mask)
 clear irq flag More...
 
static void ppi_set_clk_pin_enable (PPI_Type *ppi)
 set clk pin enable More...
 
static void ppi_set_clk_pin_disable (PPI_Type *ppi)
 set clk pin disable More...
 
void ppi_config_clk_pin (PPI_Type *ppi, ppi_clk_pin_config_t *config)
 config clock pin output More...
 
void ppi_config_cs_pin (PPI_Type *ppi, uint8_t index, ppi_cs_pin_config_t *config)
 config cs pin More...
 
void ppi_config_cmd (PPI_Type *ppi, uint8_t index, ppi_cmd_config_t *config)
 config cmd More...
 
uint32_t ppi_ns2cycle (uint32_t freq_in_hz, uint32_t ns)
 convert ns to cycle More...
 

Detailed Description

PPI driver APIs.

Enumeration Type Documentation

◆ ppi_ad_func_t

#include <drivers/inc/hpm_ppi_drv.h>

cmd address and data function

Enumerator
ppi_ad_func_data 
ppi_ad_func_addr 

◆ ppi_ad_pin_dir_t

#include <drivers/inc/hpm_ppi_drv.h>

cmd address and data pins direction

Enumerator
ppi_ad_pin_dir_output 
ppi_ad_pin_dir_input 

◆ ppi_byte_sel_t

#include <drivers/inc/hpm_ppi_drv.h>

cmd byte select

Enumerator
ppi_byte_sel_0_7_bits 
ppi_byte_sel_8_15_bits 
ppi_byte_sel_16_23_bits 
ppi_byte_sel_24_31_bits 

◆ ppi_clk_output_mode_t

#include <drivers/inc/hpm_ppi_drv.h>

clock pin output mode

Enumerator
ppi_clk_output_by_cmd_clk_output 
ppi_clk_always_output 

◆ ppi_cs_idle_polarity_t

#include <drivers/inc/hpm_ppi_drv.h>

cs pin idle polarity

Enumerator
ppi_cs_idle_pol_low 
ppi_cs_idle_pol_high 

◆ ppi_ctrl_pin_dir_t

#include <drivers/inc/hpm_ppi_drv.h>

ctrl pin direction

Enumerator
ppi_ctrl_pin_dir_input 
ppi_ctrl_pin_dir_output 

◆ ppi_ctrl_polarity_t

#include <drivers/inc/hpm_ppi_drv.h>

ctrl pin polarity

Enumerator
ppi_ctrl_pol_low 
ppi_ctrl_pol_high 

◆ ppi_dm_valid_polarity_t

#include <drivers/inc/hpm_ppi_drv.h>

dm pin valid polarity

Enumerator
ppi_dm_valid_pol_high 
ppi_dm_valid_pol_low 

◆ ppi_irq_mask_t

#include <drivers/inc/hpm_ppi_drv.h>

irq mask

Enumerator
ppi_irq_tm_out_mask 

◆ ppi_port_size_t

#include <drivers/inc/hpm_ppi_drv.h>

port size

Enumerator
ppi_port_size_8bits 
ppi_port_size_16bits 
ppi_port_size_32bits 

Function Documentation

◆ ppi_clear_irq_flag()

static void ppi_clear_irq_flag ( PPI_Type ppi,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

clear irq flag

Parameters
[in]ppiPPI base address
[in]maskirq mask, ppi_irq_mask_t

◆ ppi_config_clk_pin()

void ppi_config_clk_pin ( PPI_Type ppi,
ppi_clk_pin_config_t config 
)

#include <drivers/inc/hpm_ppi_drv.h>

config clock pin output

Parameters
[in]ppiPPI base address
[in]configclock pin config structure pointer, ppi_clk_pin_config_t

◆ ppi_config_cmd()

void ppi_config_cmd ( PPI_Type ppi,
uint8_t  index,
ppi_cmd_config_t config 
)

#include <drivers/inc/hpm_ppi_drv.h>

config cmd

Parameters
[in]ppiPPI base address
[in]indexcmd index, value: 0 - 63
[in]configcmd config structure pointer, ppi_cmd_config_t

◆ ppi_config_cs_pin()

void ppi_config_cs_pin ( PPI_Type ppi,
uint8_t  index,
ppi_cs_pin_config_t config 
)

#include <drivers/inc/hpm_ppi_drv.h>

config cs pin

Parameters
[in]ppiPPI base address
[in]indexcs pin index, value: 0 - 3
[in]configcs pin config structure pointer, ppi_cs_pin_config_t

◆ ppi_config_cs_pin_polarity()

static void ppi_config_cs_pin_polarity ( PPI_Type ppi,
uint8_t  index,
ppi_cs_idle_polarity_t  pol 
)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

config cs pin work valid polarity

Parameters
[in]ppiPPI base address
[in]indexcs pin index, value: 0 - 3
[in]polppi_cs_idle_polarity_t

◆ ppi_config_ctrl_pin_polarity()

static void ppi_config_ctrl_pin_polarity ( PPI_Type ppi,
uint8_t  index,
ppi_ctrl_polarity_t  pol 
)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

config ctrl pin work polarity, output and input ctrl pin polarity has different meaning

Parameters
[in]ppiPPI base address
[in]indexCtrl pin index, value: 0 - 7
[in]polppi_ctrl_polarity_t [1] Output: ppi_ctrl_pol_low is output the value in cmd; ppi_ctrl_pol_high is output reversed value in cmd. [2] Input: ppi_ctrl_pol_low is input low valid; ppi_ctrl_pol_high is input high valid.

◆ ppi_config_dm_pin_polarity()

static void ppi_config_dm_pin_polarity ( PPI_Type ppi,
uint8_t  index,
ppi_dm_valid_polarity_t  pol 
)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

config dm pin work polarity

Parameters
[in]ppiPPI base address
[in]indexIf has HPM_IP_FEATURE_PPI_DM_POLARITY_EACH_CS feature, this is cs pin index, value: 0 - 3. Else, not use.
[in]polppi_dm_valid_polarity_t

◆ ppi_config_timeout()

static void ppi_config_timeout ( PPI_Type ppi,
uint16_t  timeout_cnt,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

config timeout

Parameters
[in]ppiPPI base address
[in]timeout_cnttimeout counter
[in]enabletrue - enable; false - disable

◆ ppi_get_irq_enable_status()

static uint32_t ppi_get_irq_enable_status ( PPI_Type ppi)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

get irq enable status

Parameters
[in]ppiPPI base address
Return values
irqenable status, ppi_irq_mask_t

◆ ppi_get_irq_status()

static uint32_t ppi_get_irq_status ( PPI_Type ppi)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

get irq status

Parameters
[in]ppiPPI base address
Return values
irqstatus, ppi_irq_mask_t

◆ ppi_ns2cycle()

uint32_t ppi_ns2cycle ( uint32_t  freq_in_hz,
uint32_t  ns 
)

#include <drivers/inc/hpm_ppi_drv.h>

convert ns to cycle

Parameters
[in]freq_in_hzPPI clock frequency in Hz
[in]nstime in ns
Returns
cycle count

◆ ppi_set_clk_pin_disable()

static void ppi_set_clk_pin_disable ( PPI_Type ppi)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

set clk pin disable

Parameters
[in]ppiPPI base address

◆ ppi_set_clk_pin_enable()

static void ppi_set_clk_pin_enable ( PPI_Type ppi)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

set clk pin enable

Parameters
[in]ppiPPI base address

◆ ppi_set_ctrl_pin_dir()

static void ppi_set_ctrl_pin_dir ( PPI_Type ppi,
uint8_t  index,
ppi_ctrl_pin_dir_t  dir 
)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

set ctrl pin direction

Parameters
[in]ppiPPI base address
[in]indexCtrl pin index, value: 0 - 7
[in]dirCtrl pin direction, ppi_ctrl_pin_dir_t

◆ ppi_set_irq_disable()

static void ppi_set_irq_disable ( PPI_Type ppi,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

set irq disable

Parameters
[in]ppiPPI base address
[in]maskirq mask, ppi_irq_mask_t

◆ ppi_set_irq_enable()

static void ppi_set_irq_enable ( PPI_Type ppi,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

set irq enable

Parameters
[in]ppiPPI base address
[in]maskirq mask, ppi_irq_mask_t

◆ ppi_set_reset()

static void ppi_set_reset ( PPI_Type ppi,
bool  reset 
)
inlinestatic

#include <drivers/inc/hpm_ppi_drv.h>

set ppi software reset

Parameters
[in]ppiPPI base address
[in]resettrue - software reset; false - normal work.