Hardware Abstraction Layer (HAL)
PSoC 6 Specific Hardware Types

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_tcpwm_t
 Shared data between timer/counter and PWM. More...
 
struct  cyhal_dma_t
 DMA object. More...
 
union  cyhal_dma_t.channel_config
 
union  cyhal_dma_t.descriptor_config
 
union  cyhal_dma_t.descriptor
 
struct  cyhal_adc_t
 ADC object. More...
 
struct  cyhal_adc_channel_t
 ADC channel object. More...
 
struct  cyhal_comp_t
 Comparator object. More...
 
union  cyhal_comp_t.__unnamed__
 
struct  cyhal_crc_t
 CRC object. More...
 
struct  cyhal_dac_t
 DAC object. More...
 
struct  cyhal_opamp_t
 OPAMP object. More...
 
struct  cyhal_flash_t
 Flash object. More...
 
struct  cyhal_i2c_t
 I2C object. More...
 
struct  cyhal_ezi2c_t
 EZI2C object. More...
 
struct  cyhal_i2s_t
 I2S object. More...
 
struct  cyhal_lptimer_t
 LPTIMER object. More...
 
struct  cyhal_pdm_pcm_t
 PDM-PCM object. More...
 
struct  cyhal_pwm_t
 PWM object. More...
 
struct  cyhal_qspi_t
 QSPI object. More...
 
struct  cyhal_trng_t
 RNG object. More...
 
struct  cyhal_rtc_t
 RTC object. More...
 
struct  cyhal_sdhc_t
 SDHC object. More...
 
struct  cyhal_sdio_t
 SDIO object. More...
 
struct  cyhal_spi_t
 SPI object. More...
 
struct  cyhal_timer_t
 Timer object. More...
 
struct  cyhal_uart_t
 UART object. More...
 
struct  cyhal_usb_dev_t
 USB Device object. More...
 
struct  cyhal_wdt_t
 WDT object. More...
 

Macros

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

Typedefs

typedef uint32_t cyhal_source_t
 

Enumerations

enum  cyhal_resource_t {
  CYHAL_RSC_ADC,
  CYHAL_RSC_BLESS,
  CYHAL_RSC_CAN,
  CYHAL_RSC_CLKPATH,
  CYHAL_RSC_CLOCK,
  CYHAL_RSC_CRYPTO,
  CYHAL_RSC_DAC,
  CYHAL_RSC_DMA,
  CYHAL_RSC_DW,
  CYHAL_RSC_GPIO,
  CYHAL_RSC_I2S,
  CYHAL_RSC_LCD,
  CYHAL_RSC_LPCOMP,
  CYHAL_RSC_LPTIMER,
  CYHAL_RSC_OPAMP,
  CYHAL_RSC_PDM,
  CYHAL_RSC_SMIF,
  CYHAL_RSC_RTC,
  CYHAL_RSC_SCB,
  CYHAL_RSC_SDHC,
  CYHAL_RSC_TCPWM,
  CYHAL_RSC_UDB,
  CYHAL_RSC_USB,
  CYHAL_RSC_INVALID
}
 Resource types that the hardware manager supports. More...
 
enum  cyhal_clock_block_t {
  CYHAL_CLOCK_BLOCK_PERIPHERAL_8BIT = CY_SYSCLK_DIV_8_BIT,
  CYHAL_CLOCK_BLOCK_PERIPHERAL_16BIT = CY_SYSCLK_DIV_16_BIT,
  CYHAL_CLOCK_BLOCK_PERIPHERAL_16_5BIT = CY_SYSCLK_DIV_16_5_BIT,
  CYHAL_CLOCK_BLOCK_PERIPHERAL_24_5BIT = CY_SYSCLK_DIV_24_5_BIT,
  CYHAL_CLOCK_BLOCK_IMO,
  CYHAL_CLOCK_BLOCK_ECO,
  CYHAL_CLOCK_BLOCK_EXT,
  CYHAL_CLOCK_BLOCK_ALTHF,
  CYHAL_CLOCK_BLOCK_ALTLF,
  CYHAL_CLOCK_BLOCK_ILO,
  CYHAL_CLOCK_BLOCK_PILO,
  CYHAL_CLOCK_BLOCK_WCO,
  CYHAL_CLOCK_BLOCK_MFO,
  CYHAL_CLOCK_BLOCK_PATHMUX,
  CYHAL_CLOCK_BLOCK_FLL,
  CYHAL_CLOCK_BLOCK_PLL,
  CYHAL_CLOCK_BLOCK_LF,
  CYHAL_CLOCK_BLOCK_MF,
  CYHAL_CLOCK_BLOCK_HF,
  CYHAL_CLOCK_BLOCK_PUMP,
  CYHAL_CLOCK_BLOCK_BAK,
  CYHAL_CLOCK_BLOCK_TIMER,
  CYHAL_CLOCK_BLOCK_ALT_SYS_TICK,
  CYHAL_CLOCK_BLOCK_FAST,
  CYHAL_CLOCK_BLOCK_PERI,
  CYHAL_CLOCK_BLOCK_SLOW
}
 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
cy_en_divider_types_t div_type

Deprecated

uint8_t div_num

Deprecated

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_tcpwm_t

struct cyhal_tcpwm_t
Data Fields
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_dma_t

struct cyhal_dma_t
Data Fields
cyhal_resource_inst_t resource
union cyhal_dma_t channel_config
union cyhal_dma_t descriptor_config
union cyhal_dma_t descriptor
uint32_t irq_cause
cyhal_event_callback_data_t callback_data

◆ cyhal_dma_t.channel_config

union cyhal_dma_t.channel_config
Data Fields
cy_stc_dma_channel_config_t dw
cy_stc_dmac_channel_config_t dmac

◆ cyhal_dma_t.descriptor_config

union cyhal_dma_t.descriptor_config
Data Fields
cy_stc_dma_descriptor_config_t dw
cy_stc_dmac_descriptor_config_t dmac

◆ cyhal_dma_t.descriptor

union cyhal_dma_t.descriptor
Data Fields
cy_stc_dma_descriptor_t dw
cy_stc_dmac_descriptor_t dmac

◆ cyhal_adc_t

struct cyhal_adc_t
Data Fields
SAR_Type * base
cyhal_resource_inst_t resource
cyhal_clock_t clock
bool dedicated_clock
bool continuous_scanning
volatile bool conversion_complete
struct _cyhal_adc_channel_s * channel_config[CY_SAR_MAX_NUM_CHANNELS]
uint8_t user_enabled_events
cyhal_event_callback_data_t callback_data
cyhal_async_mode_t async_mode
cyhal_dma_t dma
int32_t * async_buff_orig
int32_t * async_buff_next
bool async_transfer_in_uv
size_t async_scans_remaining

◆ cyhal_adc_channel_t

struct cyhal_adc_channel_t
Data Fields
cyhal_adc_t * adc
cyhal_gpio_t vplus
cyhal_gpio_t vminus
uint8_t channel_idx
uint32_t minimum_acquisition_ns

◆ cyhal_comp_t

struct cyhal_comp_t
Data Fields
cyhal_resource_inst_t resource
union cyhal_comp_t __unnamed__
cyhal_gpio_t pin_vin_p
cyhal_gpio_t pin_vin_m
cyhal_gpio_t pin_out
cyhal_event_callback_data_t callback_data
uint32_t irq_cause

◆ cyhal_comp_t.__unnamed__

union cyhal_comp_t.__unnamed__
Data Fields
LPCOMP_Type * base_lpcomp

◆ cyhal_crc_t

struct cyhal_crc_t
Data Fields
CRYPTO_Type * base
cyhal_resource_inst_t resource
uint32_t crc_width

◆ cyhal_dac_t

struct cyhal_dac_t
Data Fields
CTDAC_Type * base_dac
CTBM_Type * base_opamp
cyhal_resource_inst_t resource_dac
cyhal_resource_inst_t resource_opamp
cyhal_resource_inst_t resource_aref_opamp
cyhal_gpio_t pin

◆ cyhal_opamp_t

struct cyhal_opamp_t
Data Fields
CTBM_Type * base
cyhal_resource_inst_t resource
cyhal_gpio_t pin_vin_p
cyhal_gpio_t pin_vin_m
cyhal_gpio_t pin_vout
bool is_init_success

◆ cyhal_flash_t

struct cyhal_flash_t
Data Fields
void * empty

◆ 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_shared_clock
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
bool is_slave
uint32_t address
uint32_t irq_cause
uint16_t pending
uint16_t events
cyhal_event_callback_data_t callback_data

◆ 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_shared_clock
cy_stc_scb_ezi2c_context_t context
uint32_t irq_cause
cyhal_event_callback_data_t callback_data

◆ cyhal_i2s_t

struct cyhal_i2s_t
Data Fields
void * empty

◆ cyhal_lptimer_t

struct cyhal_lptimer_t
Data Fields
MCWDT_STRUCT_Type * base
cyhal_resource_inst_t resource
cyhal_event_callback_data_t callback_data
bool clear_int_mask

◆ cyhal_pdm_pcm_t

struct cyhal_pdm_pcm_t
Data Fields
PDM_Type * base
cyhal_resource_inst_t resource
cyhal_gpio_t pin_data
cyhal_gpio_t pin_clk
uint32_t irq_cause User requested irq, see cyhal_pdm_pcm_event_t.
cyhal_event_callback_data_t callback_data
uint8_t word_size
cyhal_dma_t dma
volatile bool stabilized
volatile bool pm_transition_ready
cyhal_syspm_callback_data_t pm_callback
void * async_buffer
size_t async_read_remaining

◆ cyhal_pwm_t

struct cyhal_pwm_t
Data Fields
cyhal_tcpwm_t tcpwm
cyhal_gpio_t pin
cyhal_gpio_t pin_compl

◆ cyhal_qspi_t

struct cyhal_qspi_t
Data Fields
SMIF_Type * base
cyhal_resource_inst_t resource
cyhal_gpio_t pin_ios[8]
cyhal_gpio_t pin_sclk
cyhal_gpio_t pin_ssel[SMIF_CHIP_TOP_SPI_SEL_NR]
cy_en_smif_slave_select_t slave_select
cyhal_clock_t clock
bool is_clock_owned
uint8_t mode
cy_stc_smif_context_t context
cy_en_smif_data_select_t data_select
uint32_t irq_cause
cyhal_event_callback_data_t callback_data
cyhal_syspm_callback_data_t pm_callback
bool pm_transition_pending

◆ cyhal_trng_t

struct cyhal_trng_t
Data Fields
CRYPTO_Type * base
cyhal_resource_inst_t resource

◆ cyhal_rtc_t

struct cyhal_rtc_t
Data Fields
void * empty

◆ cyhal_sdhc_t

struct cyhal_sdhc_t
Data Fields
SDHC_Type * base
cyhal_resource_inst_t resource
cyhal_clock_t clock
bool emmc
cy_en_sd_host_dma_type_t dmaType
bool enableLedControl
cy_stc_sd_host_context_t context
cyhal_gpio_t pin_clk
cyhal_gpio_t pin_cmd
cyhal_gpio_t pin_data[8]
cyhal_gpio_t pin_cardDetect
cyhal_gpio_t pin_ioVoltSel
cyhal_gpio_t pin_cardIfPwrEn
cyhal_gpio_t pin_cardMechWriteProt
cyhal_gpio_t pin_ledCtrl
cyhal_gpio_t pin_cardEmmcReset
uint32_t irq_cause
cyhal_event_callback_data_t callback_data
bool pm_transition_pending
cyhal_syspm_callback_data_t pm_callback_data

◆ cyhal_sdio_t

struct cyhal_sdio_t
Data Fields
SDHC_Type * base
bool emmc
cy_en_sd_host_dma_type_t dmaType
cy_stc_sd_host_context_t context
cyhal_clock_t clock
cyhal_resource_inst_t resource
cyhal_gpio_t pin_clk
cyhal_gpio_t pin_cmd
cyhal_gpio_t pin_data0
cyhal_gpio_t pin_data1
cyhal_gpio_t pin_data2
cyhal_gpio_t pin_data3
uint32_t frequencyhal_hz
uint16_t block_size
uint32_t irq_cause
uint32_t events
cyhal_event_callback_data_t callback_data
bool pm_transition_pending
cyhal_syspm_callback_data_t pm_callback_data

◆ 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]
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
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

◆ cyhal_timer_t

struct cyhal_timer_t
Data Fields
cyhal_tcpwm_t tcpwm
uint32_t default_value

◆ 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 is_user_clock
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

◆ cyhal_usb_dev_t

struct cyhal_usb_dev_t
Data Fields
USBFS_Type * base
cy_stc_usbfs_dev_drv_context_t context
cyhal_resource_inst_t resource
cyhal_resource_inst_t pll_resource
cyhal_clock_t clock
bool shared_clock
cyhal_gpio_t pin_dp
cyhal_gpio_t pin_dm
cyhal_syspm_callback_data_t pm_callback
uint8_t * rd_data[CY_USBFS_DEV_DRV_NUM_EPS_MAX]
uint32_t rd_size[CY_USBFS_DEV_DRV_NUM_EPS_MAX]

◆ cyhal_wdt_t

struct cyhal_wdt_t
Data Fields
uint8_t placeholder

Macro Definition Documentation

◆ CYHAL_ISR_PRIORITY_DEFAULT

#define CYHAL_ISR_PRIORITY_DEFAULT   (7)

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

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

Typedef Documentation

◆ cyhal_source_t

typedef uint32_t cyhal_source_t

Routable signal source

Enumeration Type Documentation

◆ cyhal_resource_t

Resource types that the hardware manager supports.

Enumerator
CYHAL_RSC_ADC 

Analog to digital converter

CYHAL_RSC_BLESS 

Bluetooth communications block

CYHAL_RSC_CAN 

CAN communication block

CYHAL_RSC_CLKPATH 

Clock Path. DEPRECATED.

CYHAL_RSC_CLOCK 

Clock

CYHAL_RSC_CRYPTO 

Crypto hardware accelerator

CYHAL_RSC_DAC 

Digital to analog converter

CYHAL_RSC_DMA 

DMA controller

CYHAL_RSC_DW 

Datawire DMA controller

CYHAL_RSC_GPIO 

General purpose I/O pin

CYHAL_RSC_I2S 

I2S communications block

CYHAL_RSC_LCD 

Segment LCD controller

CYHAL_RSC_LPCOMP 

Low power comparator

CYHAL_RSC_LPTIMER 

Low power timer

CYHAL_RSC_OPAMP 

Opamp

CYHAL_RSC_PDM 

PCM/PDM communications block

CYHAL_RSC_SMIF 

Quad-SPI communications block

CYHAL_RSC_RTC 

Real time clock

CYHAL_RSC_SCB 

Serial Communications Block

CYHAL_RSC_SDHC 

SD Host Controller

CYHAL_RSC_TCPWM 

Timer/Counter/PWM block

CYHAL_RSC_UDB 

UDB Array

CYHAL_RSC_USB 

USB communication 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_PERIPHERAL_8BIT 

8bit Peripheral Divider

CYHAL_CLOCK_BLOCK_PERIPHERAL_16BIT 

16bit Peripheral Divider

CYHAL_CLOCK_BLOCK_PERIPHERAL_16_5BIT 

16.5bit Peripheral Divider

CYHAL_CLOCK_BLOCK_PERIPHERAL_24_5BIT 

24.5bit Peripheral Divider

CYHAL_CLOCK_BLOCK_IMO 

Internal Main Oscillator Input Clock

CYHAL_CLOCK_BLOCK_ECO 

External Crystal Oscillator Input Clock

CYHAL_CLOCK_BLOCK_EXT 

External Input Clock

CYHAL_CLOCK_BLOCK_ALTHF 

Alternate High Frequency Input Clock

CYHAL_CLOCK_BLOCK_ALTLF 

Alternate Low Frequency Input Clock

CYHAL_CLOCK_BLOCK_ILO 

Internal Low Speed Oscillator Input Clock

CYHAL_CLOCK_BLOCK_PILO 

Precision ILO Input Clock

CYHAL_CLOCK_BLOCK_WCO 

Watch Crystal Oscillator Input Clock

CYHAL_CLOCK_BLOCK_MFO 

Medium Frequency Oscillator Clock

CYHAL_CLOCK_BLOCK_PATHMUX 

Path selection mux for input to FLL/PLLs

CYHAL_CLOCK_BLOCK_FLL 

Frequency-Locked Loop Clock

CYHAL_CLOCK_BLOCK_PLL 

Phase-Locked Loop Clock

CYHAL_CLOCK_BLOCK_LF 

Low Frequency Clock

CYHAL_CLOCK_BLOCK_MF 

Medium Frequency Clock

CYHAL_CLOCK_BLOCK_HF 

High Frequency Clock

CYHAL_CLOCK_BLOCK_PUMP 

Analog Pump Clock

CYHAL_CLOCK_BLOCK_BAK 

Backup Power Domain Clock

CYHAL_CLOCK_BLOCK_TIMER 

Timer Clock

CYHAL_CLOCK_BLOCK_ALT_SYS_TICK 

Alternative SysTick Clock

CYHAL_CLOCK_BLOCK_FAST 

Fast Clock for CM4

CYHAL_CLOCK_BLOCK_PERI 

Peripheral Clock

CYHAL_CLOCK_BLOCK_SLOW 

Slow Clock for CM0+