Hardware Abstraction Layer (HAL)

General Description

Aliases for types which are part of the public HAL interface but whose representations need to vary per HAL implementation.

Data Structures

struct  cyhal_clock_t
 Clock object Application code should not rely on the specific contents of this struct. More...
 
struct  cyhal_resource_inst_t
 Represents a particular instance of a resource on the chip. More...
 
struct  cyhal_event_callback_data_t
 Event callback data object. More...
 
struct  _cyhal_buffer_info_t
 Store information about buffer. More...
 
struct  cyhal_sdio_buffer_t
 SDIO Buffer info for device mode. More...
 
struct  cyhal_tcpwm_t
 Shared data between timer/counter and PWM. More...
 
struct  cyhal_dma_t
 DMA object. More...
 
struct  cyhal_dma_configurator_t
 DMA configurator struct. More...
 
struct  _cyhal_audioss_interface_t
 Interface to abstract away the driver-specific differences between TDM and I2S. More...
 
struct  _cyhal_audioss_t
 Shared data between i2s and tdm. More...
 
struct  _cyhal_audioss_configurator_t
 Shared I2S/TDM configurator struct. More...
 
struct  cyhal_adc_t
 ADC object. More...
 
struct  cyhal_adc_configurator_t
 ADC configurator struct. More...
 
struct  cyhal_adc_channel_t
 ADC channel object. More...
 
struct  cyhal_comp_t
 Comparator object. More...
 
struct  cyhal_comp_configurator_t
 Comp configurator struct. More...
 
struct  cyhal_i2c_t
 I2C object. More...
 
struct  cyhal_i2c_configurator_t
 I2C configurator struct. More...
 
struct  cyhal_ezi2c_t
 EZI2C object. More...
 
struct  cyhal_ezi2c_configurator_t
 EZI2C configurator struct. More...
 
struct  cyhal_lptimer_t
 LPTimer object. More...
 
struct  cyhal_pdm_pcm_t
 PDM-PCM object. More...
 
struct  cyhal_pdm_pcm_configurator_t
 PDM-PCM configurator struct. More...
 
struct  cyhal_pwm_t
 PWM object. More...
 
struct  cyhal_pwm_configurator_t
 PWM configurator struct. More...
 
struct  cyhal_qspi_t
 QSPI object. More...
 
struct  cyhal_qspi_configurator_t
 QSPI configurator struct. More...
 
struct  cyhal_quaddec_t
 Quadrature Decoder object. More...
 
struct  cyhal_quaddec_configurator_t
 Quadrature Decoder configurator struct. More...
 
struct  cyhal_rtc_t
 RTC object. More...
 
struct  cyhal_rtc_configurator_t
 RTC configurator struct. More...
 
struct  cyhal_sdio_t
 SDIO object. More...
 
struct  cyhal_sdio_configurator_t
 SDIO configurator struct. More...
 
struct  cyhal_spi_t
 SPI object. More...
 
struct  cyhal_spi_configurator_t
 SPI configurator struct. More...
 
struct  cyhal_t2timer_t
 T2Timer configurator struct. More...
 
struct  cyhal_timer_t
 Timer object. More...
 
struct  cyhal_timer_configurator_t
 Timer configurator struct. More...
 
struct  cyhal_uart_t
 UART object. More...
 
struct  cyhal_uart_configurator_t
 UART configurator struct. More...
 
struct  cyhal_wdt_t
 WDT object. More...
 
union  _cyhal_buffer_info_t.addr
 
struct  cyhal_spi_configurator_t.gpios
 
union  cyhal_timer_t.__unnamed12__
 
struct  cyhal_uart_configurator_t.gpios
 

Macros

#define CYHAL_ISR_PRIORITY_DEFAULT   (7)
 Priority that is applied by default to all drivers when initialized. More...
 
#define cyhal_system_callback_t   cy_stc_syspm_callback_t
 Callbacks for Sleep and Deepsleep APIs.
 

Typedefs

typedef void(* cy_israddress) (void)
 Type of ISR callbacks.
 
typedef _cyhal_audioss_t cyhal_i2s_t
 I2S object. More...
 
typedef _cyhal_audioss_configurator_t cyhal_i2s_configurator_t
 I2S configurator struct. More...
 
typedef _cyhal_audioss_t cyhal_tdm_t
 TDM object. More...
 
typedef _cyhal_audioss_configurator_t cyhal_tdm_configurator_t
 TDM configurator struct. More...
 

Enumerations

enum  cyhal_resource_t {
  CYHAL_RSC_ADCMIC ,
  CYHAL_RSC_CLOCK ,
  CYHAL_RSC_DMA ,
  CYHAL_RSC_GPIO ,
  CYHAL_RSC_LPCOMP ,
  CYHAL_RSC_PDMPCM ,
  CYHAL_RSC_RTC ,
  CYHAL_RSC_SCB ,
  CYHAL_RSC_SDIO ,
  CYHAL_RSC_TCPWM ,
  CYHAL_RSC_TDM ,
  CYHAL_RSC_T2TIMER ,
  CYHAL_RSC_INVALID
}
 Resource types that the hardware manager supports. More...
 
enum  cyhal_clock_block_t {
  CYHAL_CLOCK_BLOCK_PERI_SCB0 ,
  CYHAL_CLOCK_BLOCK_PERI_SCB1 ,
  CYHAL_CLOCK_BLOCK_PERI_TCPWM ,
  CYHAL_CLOCK_BLOCK_PERI_SCB2 ,
  CYHAL_CLOCK_BLOCK_TDM ,
  CYHAL_CLOCK_BLOCK_ADCMIC ,
  CYHAL_CLOCK_BLOCK_CPU
}
 Enum for the different types of clocks that exist on the device. More...
 

Data Structure Documentation

◆ cyhal_clock_t

struct cyhal_clock_t
Data Fields
cyhal_clock_block_t block
uint8_t channel
bool reserved

◆ cyhal_resource_inst_t

struct cyhal_resource_inst_t
Data Fields
cyhal_resource_t type The resource block type.
uint8_t block_num The resource block index.
uint8_t channel_num The channel number, if the resource type defines multiple channels per block instance.

Otherwise, 0

◆ cyhal_event_callback_data_t

struct cyhal_event_callback_data_t
Data Fields
cy_israddress callback
void * callback_arg

◆ _cyhal_buffer_info_t

struct _cyhal_buffer_info_t
Data Fields
union _cyhal_buffer_info_t.addr addr
uint32_t size
uint32_t index

◆ cyhal_sdio_buffer_t

struct cyhal_sdio_buffer_t
Data Fields
uint8_t * rx_header Represents the header of a received data packet.
uint8_t * rx_payload Represents the payload of a received data packet.
uint8_t * tx_payload Represents the payload of a transmitted data packet.

◆ cyhal_tcpwm_t

struct cyhal_tcpwm_t
Data Fields
bool owned_by_configurator
bool presleep_state
TCPWM_Type * base
cyhal_resource_inst_t resource
cyhal_clock_t clock
bool dedicated_clock
uint32_t clock_hz
cyhal_event_callback_data_t callback_data
cyhal_source_t inputs[5]

◆ cyhal_dma_t

struct cyhal_dma_t
Data Fields
cyhal_resource_inst_t resource
bool is_enabled
BTSS_DMAC_CONFIG_REG_FLOWCONTROL_t transfer_type
BTSS_DMAC_CONTROL_LINE_t src_ctrl
BTSS_DMAC_CONTROL_LINE_t dest_ctrl
BTSS_DMAC_APP_REQUEST_t dma_req
cyhal_event_callback_data_t callback_data

◆ cyhal_dma_configurator_t

struct cyhal_dma_configurator_t
Data Fields
void * empty

◆ _cyhal_audioss_t

struct _cyhal_audioss_t
Data Fields
bool owned_by_configurator
cyhal_resource_inst_t resource
cyhal_gpio_t pin_tx_sck
cyhal_gpio_t pin_tx_ws
cyhal_gpio_t pin_tx_sdo
cyhal_gpio_t pin_rx_sck
cyhal_gpio_t pin_rx_mclk
cyhal_gpio_t pin_rx_ws
cyhal_gpio_t pin_rx_sdi
cyhal_gpio_t pin_tx_mclk
uint8_t user_fifo_level_rx
uint32_t mclk_hz_rx
uint8_t channel_length_rx
uint8_t word_length_rx
uint32_t mclk_hz_tx
uint8_t channel_length_tx
uint8_t word_length_tx
cyhal_clock_t clock
bool is_clock_owned
uint16_t user_enabled_events
cyhal_event_callback_data_t callback_data
cyhal_async_mode_t async_mode
uint8_t async_dma_priority
cyhal_dma_t tx_dma
cyhal_dma_t rx_dma
volatile const void * async_tx_buff
volatile size_t async_tx_length
volatile void * async_rx_buff
volatile size_t async_rx_length
volatile bool pm_transition_ready
cyhal_syspm_callback_data_t pm_callback
const _cyhal_audioss_interface_t * interface

◆ _cyhal_audioss_configurator_t

struct _cyhal_audioss_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
const cyhal_clock_t * clock
uint32_t mclk_hz_rx
uint32_t mclk_hz_tx

◆ cyhal_adc_t

struct cyhal_adc_t
Data Fields
bool owned_by_configurator
uint8_t current_channel_index
struct _cyhal_adc_channel_s * channel_config[sizeof(cyhal_pin_map_adcmic_gpio_adc_in)/sizeof(cyhal_pin_map_adcmic_gpio_adc_in[0])]
cyhal_resource_inst_t resource
cyhal_clock_t clock
bool using_audio
bool dc_calibrated
bool dc_calibration_started
int16_t calibOffset
volatile bool conversion_complete
bool stop_after_scan
uint8_t user_enabled_events
cyhal_event_callback_data_t callback_data
int32_t * async_buff_next
bool async_transfer_in_uv
size_t async_scans_remaining

◆ cyhal_adc_configurator_t

struct cyhal_adc_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
const cyhal_clock_t * clock
uint8_t num_channels
const uint32_t * achieved_acquisition_time

◆ cyhal_adc_channel_t

struct cyhal_adc_channel_t
Data Fields
cyhal_adc_t * adc
cyhal_gpio_t vplus
uint8_t channel_idx
bool enabled

◆ cyhal_comp_t

struct cyhal_comp_t
Data Fields
bool owned_by_configurator
cyhal_resource_inst_t resource
cyhal_gpio_t pin_vin_p
cyhal_gpio_t pin_vin_m
int16_t inP
int16_t inN
int16_t mode
cyhal_event_callback_data_t callback_data
uint32_t user_enabled_events
cyhal_syspm_callback_data_t pm_callback

◆ cyhal_comp_configurator_t

struct cyhal_comp_configurator_t
Data Fields
const cyhal_resource_inst_t * resource

◆ cyhal_i2c_t

struct cyhal_i2c_t
Data Fields
CySCB_Type * base
cyhal_resource_inst_t resource
cyhal_gpio_t pin_sda
cyhal_gpio_t pin_scl
cyhal_clock_t clock
bool is_clock_owned
cy_stc_scb_i2c_context_t context
cy_stc_scb_i2c_master_xfer_config_t rx_config
cy_stc_scb_i2c_master_xfer_config_t tx_config
uint32_t irq_cause
uint8_t addr_irq_cause
uint16_t pending
bool op_in_callback
_cyhal_buffer_info_t rx_slave_buff
_cyhal_buffer_info_t tx_slave_buff
cyhal_event_callback_data_t callback_data
cyhal_event_callback_data_t addr_callback_data
bool dc_configured

◆ cyhal_i2c_configurator_t

struct cyhal_i2c_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
const cy_stc_scb_i2c_config_t * config
const cyhal_clock_t * clock

◆ cyhal_ezi2c_t

struct cyhal_ezi2c_t
Data Fields
CySCB_Type * base
cyhal_resource_inst_t resource
cyhal_gpio_t pin_sda
cyhal_gpio_t pin_scl
cyhal_clock_t clock
bool is_clock_owned
cy_stc_scb_ezi2c_context_t context
uint32_t irq_cause
cyhal_event_callback_data_t callback_data
bool two_addresses
bool dc_configured

◆ cyhal_ezi2c_configurator_t

struct cyhal_ezi2c_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
const cy_stc_scb_ezi2c_config_t * config
const cyhal_clock_t * clock

◆ cyhal_lptimer_t

struct cyhal_lptimer_t
Data Fields
void * empty

◆ cyhal_pdm_pcm_t

struct cyhal_pdm_pcm_t
Data Fields
CyPdmPcm_Type * base
cyhal_resource_inst_t resource
cyhal_gpio_t pin_data
cyhal_gpio_t pin_clk
cy_en_pdm_pcm_mic_source_t source
cyhal_comp_t comp_obj
cyhal_adc_t adc_obj
uint32_t stabilization_cycles
bool is_enabled
bool is_mic_ready
bool is_ntd_ready
int32_t events
void * async_data
uint8_t * fifo_context
cyhal_event_callback_data_t callback_data
bool pm_transition_pending
cyhal_syspm_callback_data_t pm_callback_data

◆ cyhal_pdm_pcm_configurator_t

struct cyhal_pdm_pcm_configurator_t
Data Fields
void * empty

◆ cyhal_pwm_t

struct cyhal_pwm_t
Data Fields
cyhal_tcpwm_t tcpwm
cyhal_gpio_t pin
cyhal_gpio_t pin_compl
bool dead_time_set

◆ cyhal_pwm_configurator_t

struct cyhal_pwm_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
cy_stc_tcpwm_pwm_config_t const * config
const cyhal_clock_t * clock

◆ cyhal_qspi_t

struct cyhal_qspi_t
Data Fields
void * empty

◆ cyhal_qspi_configurator_t

struct cyhal_qspi_configurator_t
Data Fields
void * empty

◆ cyhal_quaddec_t

struct cyhal_quaddec_t
Data Fields
cyhal_tcpwm_t tcpwm
cyhal_gpio_t phi_a
cyhal_gpio_t phi_b
cyhal_gpio_t index
uint32_t last_counter_value

◆ cyhal_quaddec_configurator_t

struct cyhal_quaddec_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
const cy_stc_tcpwm_quaddec_config_t * config
const cyhal_clock_t * clock

◆ cyhal_rtc_t

struct cyhal_rtc_t
Data Fields
cy_stc_rtc_dst_t dst

◆ cyhal_rtc_configurator_t

struct cyhal_rtc_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
const RTC_TIME_t * config
const cy_stc_rtc_dst_t * dst_config

◆ cyhal_sdio_t

struct cyhal_sdio_t
Data Fields
cyhal_resource_inst_t resource
cyhal_gpio_t pin_clk
cyhal_gpio_t pin_cmd
cyhal_gpio_t pin_data_0
cyhal_gpio_t pin_data_1
cyhal_gpio_t pin_data_2
cyhal_gpio_t pin_data_3
bool hw_inited
bool is_ready
int32_t events
cyhal_event_callback_data_t callback_data
bool pm_transition_pending
cyhal_syspm_callback_data_t pm_callback_data
cyhal_sdio_buffer_t buffer

◆ cyhal_sdio_configurator_t

struct cyhal_sdio_configurator_t
Data Fields
void * empty

◆ cyhal_spi_t

struct cyhal_spi_t
Data Fields
CySCB_Type * base
cyhal_resource_inst_t resource
cyhal_gpio_t pin_miso
cyhal_gpio_t pin_mosi
cyhal_gpio_t pin_sclk
cyhal_gpio_t pin_ssel[4]
cy_en_scb_spi_polarity_t ssel_pol[4]
cyhal_pinmux_t ssel_func[4]
uint8_t active_ssel
cyhal_clock_t clock
cy_en_scb_spi_sclk_mode_t clk_mode
uint8_t mode
uint8_t data_bits
bool is_slave
bool alloc_clock
uint8_t oversample_value
bool msb_first
cy_stc_scb_spi_context_t context
uint32_t irq_cause
uint16_t volatile pending
bool op_in_callback
uint8_t write_fill
void * rx_buffer
uint32_t rx_buffer_size
const void * tx_buffer
uint32_t tx_buffer_size
bool is_async
cyhal_event_callback_data_t callback_data
bool dc_configured

◆ cyhal_spi_configurator_t

struct cyhal_spi_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
const cy_stc_scb_spi_config_t * config
const cyhal_clock_t * clock
struct cyhal_spi_configurator_t.gpios gpios

◆ cyhal_t2timer_t

struct cyhal_t2timer_t
Data Fields
T2_ARM_TIMER_AUX_t which_timer
T2_ARM_TIMER_EN_t enabled
T2_ARM_TIMER_MODE_t mode
T2_ARM_TIMER_INT_EN_t int_enable
T2_ARM_TIMER_DIVISOR_t divisor
T2_ARM_TIMER_SIZE_t size
T2_ARM_TIMER_COUNTER_MODE_t counter_mode
uint32_t timer_duration
void * callback_func
int32_t callback_arg
cyhal_resource_inst_t resource

◆ cyhal_timer_t

struct cyhal_timer_t
Data Fields
union cyhal_timer_t.__unnamed12__ __unnamed__
uint32_t default_value
bool running
bool is_t2timer

◆ cyhal_timer_configurator_t

struct cyhal_timer_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
const cy_stc_tcpwm_counter_config_t * config
const cyhal_clock_t * clock

◆ cyhal_uart_t

struct cyhal_uart_t
Data Fields
CySCB_Type * base
cyhal_resource_inst_t resource
cyhal_gpio_t pin_rx
cyhal_gpio_t pin_tx
cyhal_gpio_t pin_cts
cyhal_gpio_t pin_rts
bool cts_enabled
bool rts_enabled
bool is_clock_owned
cyhal_clock_t clock
cy_stc_scb_uart_context_t context
cy_stc_scb_uart_config_t config
uint32_t irq_cause
en_hsiom_sel_t saved_tx_hsiom
en_hsiom_sel_t saved_rts_hsiom
cyhal_event_callback_data_t callback_data
bool dc_configured
uint32_t baud_rate

◆ cyhal_uart_configurator_t

struct cyhal_uart_configurator_t
Data Fields
const cyhal_resource_inst_t * resource
const cy_stc_scb_uart_config_t * config
const cyhal_clock_t * clock
struct cyhal_uart_configurator_t.gpios gpios

◆ cyhal_wdt_t

struct cyhal_wdt_t
Data Fields
uint8_t placeholder

◆ _cyhal_buffer_info_t.addr

union _cyhal_buffer_info_t.addr
Data Fields
void * v
uint8_t * u8
uint16_t * u16
uint32_t * u32

◆ cyhal_spi_configurator_t.gpios

struct cyhal_spi_configurator_t.gpios
Data Fields
cyhal_gpio_t sclk
cyhal_gpio_t ssel[4]
cyhal_gpio_t mosi
cyhal_gpio_t miso

◆ cyhal_timer_t.__unnamed12__

union cyhal_timer_t.__unnamed12__
Data Fields
cyhal_tcpwm_t tcpwm
cyhal_t2timer_t t2timer

◆ cyhal_uart_configurator_t.gpios

struct cyhal_uart_configurator_t.gpios
Data Fields
cyhal_gpio_t pin_tx
cyhal_gpio_t pin_rts
cyhal_gpio_t pin_cts

Macro Definition Documentation

◆ CYHAL_ISR_PRIORITY_DEFAULT

#define CYHAL_ISR_PRIORITY_DEFAULT   (7)

Priority that is applied by default to all drivers when initialized.

Priorities can be overridden on each driver as part of enabling events.

Typedef Documentation

◆ cyhal_i2s_t

I2S object.

Application code should not rely on the specific contents of this struct. They are considered an implementation detail which is subject to change between platforms and/or HAL releases.

◆ cyhal_i2s_configurator_t

I2S configurator struct.

This struct allows a configurator to provide block configuration information to the HAL. Because configurator-generated configurations are platform specific, the contents of this struct is subject to change between platforms and/or HAL releases.

◆ cyhal_tdm_t

TDM object.

Application code should not rely on the specific contents of this struct. They are considered an implementation detail which is subject to change between platforms and/or HAL releases.

◆ cyhal_tdm_configurator_t

TDM configurator struct.

This struct allows a configurator to provide block configuration information to the HAL. Because configurator-generated configurations are platform specific, the contents of this struct is subject to change between platforms and/or HAL releases.

Enumeration Type Documentation

◆ cyhal_resource_t

Resource types that the hardware manager supports.

Enumerator
CYHAL_RSC_ADCMIC 

Analog to digital converter with Analog Mic support

CYHAL_RSC_CLOCK 

Clock

CYHAL_RSC_DMA 

DMA controller

CYHAL_RSC_GPIO 

General purpose I/O pin

CYHAL_RSC_LPCOMP 

Low Power Comparator

CYHAL_RSC_PDMPCM 

PCM/PDM communications block

CYHAL_RSC_RTC 

Real time clock

CYHAL_RSC_SCB 

Serial Communications Block

CYHAL_RSC_SDIO 

Seecure Digital Input Output (device)

CYHAL_RSC_TCPWM 

Timer/Counter/PWM block

CYHAL_RSC_TDM 

TDM block

CYHAL_RSC_T2TIMER 

T2Timer block

CYHAL_RSC_INVALID 

Placeholder for invalid type

◆ cyhal_clock_block_t

Enum for the different types of clocks that exist on the device.

Enumerator
CYHAL_CLOCK_BLOCK_PERI_SCB0 

SCB0 clock

CYHAL_CLOCK_BLOCK_PERI_SCB1 

SCB1 clock

CYHAL_CLOCK_BLOCK_PERI_TCPWM 

TCPWM clock

CYHAL_CLOCK_BLOCK_PERI_SCB2 

SCB2 clock

CYHAL_CLOCK_BLOCK_TDM 

TDM clock

CYHAL_CLOCK_BLOCK_ADCMIC 

ADCMIC clock

CYHAL_CLOCK_BLOCK_CPU 

CPU clock