Hardware Abstraction Layer (HAL)
PSoC 4 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_common_t
 Shared data between timer/counter and PWM. More...
 
struct  cyhal_adc_t
 ADC object. More...
 
struct  cyhal_adc_channel_t
 ADC channel object. More...
 
struct  cyhal_crc_t
 CRC object. More...
 
struct  cyhal_dac_t
 DAC object. More...
 
struct  cyhal_opamp_t
 OPAMP object. More...
 
struct  cyhal_dma_t
 DMA 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_qspi_t
 SMIF 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_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   (3)
 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
 
typedef cyhal_tcpwm_common_t cyhal_pwm_t
 PWM object. More...
 
typedef cyhal_tcpwm_common_t cyhal_timer_t
 Timer object. More...
 

Enumerations

enum  cyhal_resource_t {
  CYHAL_RSC_ADC,
  CYHAL_RSC_CAN,
  CYHAL_RSC_CLOCK,
  CYHAL_RSC_CRYPTO,
  CYHAL_RSC_DMA,
  CYHAL_RSC_GPIO,
  CYHAL_RSC_I2S,
  CYHAL_RSC_LCD,
  CYHAL_RSC_LPCOMP,
  CYHAL_RSC_LPTIMER,
  CYHAL_RSC_OPAMP,
  CYHAL_RSC_SCB,
  CYHAL_RSC_TCPWM,
  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_ILO,
  CYHAL_CLOCK_BLOCK_WCO,
  CYHAL_CLOCK_BLOCK_WDCSEL,
  CYHAL_CLOCK_BLOCK_PLLSEL,
  CYHAL_CLOCK_BLOCK_PLL,
  CYHAL_CLOCK_BLOCK_LF,
  CYHAL_CLOCK_BLOCK_HF,
  CYHAL_CLOCK_BLOCK_PUMP,
  CYHAL_CLOCK_BLOCK_SYS
}
 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_tcpwm_common_t

struct cyhal_tcpwm_common_t
Data Fields
TCPWM_Type * base
cyhal_resource_inst_t resource
cyhal_gpio_t pin
cyhal_clock_t clock
bool dedicated_clock
uint32_t clock_hz
cyhal_event_callback_data_t callback_data
cyhal_gpio_t pin_compl
uint32_t default_value

◆ cyhal_adc_t

struct cyhal_adc_t
Data Fields
SAR_Type * base
cyhal_resource_inst_t resource
cyhal_clock_t clock
bool dedicated_clock
uint16_t channel_used

◆ cyhal_adc_channel_t

struct cyhal_adc_channel_t
Data Fields
cyhal_adc_t * adc
cyhal_gpio_t pin
uint8_t channel_idx

◆ cyhal_crc_t

struct cyhal_crc_t
Data Fields
void * empty

◆ cyhal_dac_t

struct cyhal_dac_t
Data Fields
void * empty

◆ cyhal_opamp_t

struct cyhal_opamp_t
Data Fields
void * empty

◆ cyhal_dma_t

struct cyhal_dma_t
Data Fields
void * empty

◆ 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
void * empty

◆ cyhal_pdm_pcm_t

struct cyhal_pdm_pcm_t
Data Fields
void * empty

◆ cyhal_qspi_t

struct cyhal_qspi_t
Data Fields
void * empty

◆ cyhal_trng_t

struct cyhal_trng_t
Data Fields
void * empty

◆ cyhal_rtc_t

struct cyhal_rtc_t
Data Fields
void * empty

◆ cyhal_sdhc_t

struct cyhal_sdhc_t
Data Fields
void * empty

◆ cyhal_sdio_t

struct cyhal_sdio_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]
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_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
void * empty

◆ cyhal_wdt_t

struct cyhal_wdt_t
Data Fields
uint8_t placeholder

Macro Definition Documentation

◆ CYHAL_ISR_PRIORITY_DEFAULT

#define CYHAL_ISR_PRIORITY_DEFAULT   (3)

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

◆ cyhal_pwm_t

PWM 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_timer_t

Timer 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.

Enumeration Type Documentation

◆ cyhal_resource_t

Resource types that the hardware manager supports.

Enumerator
CYHAL_RSC_ADC 

Analog to digital converter

CYHAL_RSC_CAN 

CAN communication block

CYHAL_RSC_CLOCK 

Clock

CYHAL_RSC_CRYPTO 

Crypto hardware accelerator

CYHAL_RSC_DMA 

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_SCB 

Serial Communications Block

CYHAL_RSC_TCPWM 

Timer/Counter/PWM 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_ILO 

Internal Low Speed Oscillator Input Clock

CYHAL_CLOCK_BLOCK_WCO 

Watch Crystal Oscillator Input Clock

CYHAL_CLOCK_BLOCK_WDCSEL 

Watch Dog Counter Select Mux

CYHAL_CLOCK_BLOCK_PLLSEL 

Phase-Locked Loop Select Mux

CYHAL_CLOCK_BLOCK_PLL 

Phase-Locked Loop Clock

CYHAL_CLOCK_BLOCK_LF 

Low Frequency Clock

CYHAL_CLOCK_BLOCK_HF 

High Frequency Clock

CYHAL_CLOCK_BLOCK_PUMP 

Analog Pump Clock

CYHAL_CLOCK_BLOCK_SYS 

System Clock