1# CAT1 Hardware Abstraction Layer (HAL) Release Notes 2The CAT1 Hardware Abstraction Layer (HAL) provides an implementation of the Hardware Abstraction Layer for the PSoC™ 6 and XMC7000/T2G-B-H families of chips. This API provides convenience methods for initializing and manipulating different hardware peripherals. Depending on the specific chip being used, not all features may be supported. 3 4On devices which contain multiple cores, this library is supported on all cores. If HAL is used on multiple cores at the same time, the application is responsible for ensuring that each peripheral is only used on one core at a given time. This can be achieved by calling cyhal_hwmgr_reserve() on the core(s) where a particular resource is not expected to be used. This ensures the HAL is aware the resource is in use and does not use it in a conflicting manner. 5 6### What's Included? 7This release of the CAT1 HAL includes support for the following drivers: 8* ADC 9* Clock 10* Comparator 11* CRC 12* DAC 13* DMA 14* EZ-I2C 15* GPIO 16* Hardware Manager 17* KeyScan 18* I2C 19* I2S 20* Interconnect 21* IPC 22* LowPower Timer (LPTimer) 23* NVM (Formerly Flash) 24* OpAmp 25* PDM/PCM 26* Power Management (SysPM) 27* PWM 28* QSPI 29* Quadrature Decoder (QuadDec) 30* RTC 31* SDHC 32* SDIO 33* SPI 34* System 35* TDM 36* Timer 37* True Random Number Generator (TRNG) 38* UART 39* USB Device 40* WDT 41 42### What Changed? 43#### v2.4.1 44* Rename "Flash" driver to "NVM" (Non-Volatile Memory). The existing cyhal_flash APIs are retained as aliases for compatibility purposes. 45* Rename SDIO functions to clarify which apply to host mode only 46* Make GPIO members optional in cyhal_spi_configurator_t 47* Add support for DMA-based asynchronous transfers mode in cyhal_uart 48* Updated pre-production support for CAT1B devices 49#### v2.3.0 50* Add new SPI APIs 51* Fix incorrect base address calculation on some devices in SCB-based drivers (UART, SPI, I2C, EZI2C). 52* Extend documentation on pins and triggers to cover additional devices. 53#### v2.2.0 54* Production support for CAT1C devices 55* Improve interrupt handling when running on on CM0+ core 56* Add new I2C slave APIs 57* Add driver for inter-processor communication (IPC) 58* Add new function `cyhal_system_reset_device` 59NOTE: This version requires udb-sdio-whd 1.2.0 or later 60#### v2.1.0 61* Pre-production support for CAT1B devices 62* Fixed a few bugs in various drivers 63#### v2.0.1 64This patch release addresses issues in several drivers: 65* RTC: 66 1. Do not use RTOS delay even in RTOS-aware mode, to avoid ordering requirements between RTC and RTOS init. 67* PWM: 68 1. Fix incorrect period/duty cycle calculation when a `line_n` (inverted) output pin is used as the sole, 69 non-inverted PWM output. 70* PWM/Timer/QuadDec 71 1. Fix level/edge nature of the source not being honored in `cyhal_*_connect_digital`. 72 2. Add `cyhal_*_connect_digital2` API to allow explicitly specifying edge type (rising/falling/both). This supercedes 73 `cyhal_connect_digital`, which defaults to rising edge when the source is an "edge" signal. 74#### v2.0.0 75This major version update includes changes that break API compatibility with prior releases. Each major or breaking change is described below: 76* Clock: 77 1. Renamed cyhal_resource_inst_t CYHAL_CLOCK_<name> constants with CYHAL_CLOCK_RSC_<name>. Created new CYHAL_CLOCK_<name> constants of type cyhal_clock_t. 78 2. Replaced cyhal_clock_init with cyhal_clock_reserve. 79 3. Removed div_type & div_num from cyhal_clock_t. 80* DMA: 81 1. cyhal_dma_enable must be called after configuring the DMA, but before a trigger will initiate a transfer 82* Flash: 83 1. The data buffer passed to functions must be from SRAM, the driver no longer contains a scratch buffer to copy into. 84* GPIO: 85 1. cyhal_gpio_enable_output updated to require a new argument to specify whether the signal is level or edge based. 86 2. cyhal_gpio_connect_digital no longer takes the signal type parameter. 87 3. cyhal_gpio_register_callback now takes a structure containing details about the callback. 88 4. Removed deprecated functions cyhal_gpio_register_irq & cyhal_gpio_irq_enable 89* I2C: 90 1. Removed deprecated functions cyhal_i2c_register_irq & cyhal_i2c_irq_enable 91* I2S/TDM: 92 1. The mclk GPIO selection is moved into the RX/TX specific pins struct. This allows RX and TX to use separate mclk pins on devices that support this; 93 see the device datasheet for details. For devices which only support a single MCLK pin shared between RX and TX, there is no change in functionality; when 94 calling `cyhal_i2s_init` or `cyhal_tdm_init` the same `cyhal_gpio_t` value should be provided for both RX and TX. 95* PWM: 96 1. cyhal_pwm_connect_digital no longer takes the signal type parameter. 97 2. cyhal_pwm_init will always produce a non-inverted waveform on the specified pin, even if that pin natively produces an inverted 98 output (for example, the `line_compl` pins on PSoC™ devices). This improves consistency with the behavior of cyhal_pwm_init_adv. 99* QSPI: 100 1. cyhal_qspi_init() function got one additional parameter - shared clock (clk), which will allow users to use multiple HAL drivers which depends on same clock source. 101 2. cyhal_qspi_init() now takes io[x] and ssel pins as pointer to cyhal_qspi_slave_pin_config_t structure, that contain mentioned pins. 102 3. cyhal_qspi_slave_select_config function was replaced by cyhal_qspi_slave_configure, which provides possibility to add memory slaves with own data lines (instead of shared data lines and own slave select like it was when cyhal_qspi_slave_select_config has been used). cyhal_qspi_slave_config, as cyhal_qspi_init, takes cyhal_qspi_slave_pin_config_t as parameter. 103 4. cyhal_qspi_command_t structure was updated: address.value field removed, data_rate field was added into all command subsections. 104 5. Added address parameter to all transfer functions (cyhal_qspi_read, cyhal_qspi_read_async, cyhal_qspi_write, cyhal_qspi_write_async anb cyhal_qspi_transfer). 105 6. cyhal_qspi_datarate_t enum was added. Corresponding configuration fields are added into each sub-structure of cyhal_qspi_command_t. 106* SDHC: 107 1. cyhal_sdhc_init() and cyhal_sdhc_init_hw() functions got one additional parameter - shared clock (block_clk), which will allow users to use multiple HAL drivers which depends on same clock source. 108* SDIO: 109 1. Updated the names of enum cyhal_tranfer_t and its types CYHAL_READ and CYHAL_WRITE to cyhal_sdio_transfer_type_t, CYHAL_SDIO_XFER_TYPE_READ, and CYHAL_SDIO_XFER_TYPE_WRITE, respectively. 110 2. Removed deprecated functions cyhal_sdio_register_irq & cyhal_sdio_irq_enable 111* Timer: 112 1. cyhal_timer_connect_digital no longer takes the signal type parameter. 113* UART: 114 1. cyhal_uart_set_flow_control function was replaced by cyhal_uart_enable_flow_control, which only controls the enablement status of flow control. CTS / RTS pins are now provided via cyhal_uart_init() function. 115* I2C: 116 1. The following deprecated functions have been removed: cyhal_i2c_slave_config_write_buff, cyhal_i2c_slave_config_read_buff. 117* Other: 118 1. Removed cyhal_deprecated.h, and all associated code. 119NOTE: This version requires core-lib 1.3.0 or later 120#### v1.6.0 121* Added new TDM driver 122* Added support for 1.8v devices to SDHC/SDIO drivers 123* Extended System driver to support registering for other interrupts 124* Fixed issues with level trigger signals to the DMA driver 125* Fixed a few bugs in various drivers 126#### v1.5.0 127* Added new Quadrature Decoder (QuadDec) driver 128* Added digital hardware connection APIs to drivers 129* Fixed a few bugs in various drivers 130* Updated SDHC and MXSDHC-based SDIO communication functions to use semaphores in RTOS aware environments for improved performance 131* Added optional implementations for SDHC control pin APIs and RTOS aware delay API provided as weak functions in the PDL (Disabled by: DEFINES+=CYHAL_DISABLE_WEAK_FUNC_IMPL) 132#### v1.4.0 133* Renamed library from psoc6hal to mtb-hal-cat1 134* Added support for new PSoC™ 6 S4 devices 135* Extended clock support for QSPI and SDHC drivers 136* Fixed a few bugs in various drivers 137* Minor documentation updates 138#### v1.3.0 139* Added new Analog Comparator driver 140* Added new OpAmp driver 141* Extended ADC driver 142* Extended DAC driver 143* Extended SPI/QSPI drivers to support multiple slave select signals 144* Fixed SDHC based SDIO cyhal_sdio_is_busy() function to return status immediately instead of waiting until the transfer completes 145* Fixed a few bugs in various drivers 146* Minor update for documentation & branding 147#### v1.2.1 148* Added new option for SysPM driver to support tickless sleep in addition to deepsleep 149* Fixed an issue with deep-sleep wake-up in the SDIO and SDHC drivers that could cause intermittent communication failures 150* Minor bug fixes and documentation improvements 151#### v1.2.0 152* Added new Clock driver 153* Added new SysPM Power Management driver 154* Added new I2S driver 155* Added new PDM/PCM driver 156* Reduced flash memory usage for a number of drivers 157* Improved documentation for a number of drivers 158* Fixed a few bugs in various drivers 159NOTE: The new SysPM driver needs to be initialized by calling cyhal_syspm_init(). This is done automatically by Board Support Packages version 1.2.0 and later. 160#### v1.1.1 161* Improved documentation for a number of drivers 162* Fixed duplicate symbol definition with PDL 1.4.1 release 163* Minor bug fixes 164#### v1.1.0 165* Added new DMA driver 166* Added new EZ-I2C driver 167* Extended System driver to allow getting information about reset 168* Extended System driver to provide delay functions 169* Updated PWM driver to provide additional configuration options 170* Updated Timer driver to allow reading the current count 171* Updated RTC driver to support Day Light Savings time 172* Updated LP Timer driver to improve performance 173* Minor updates up avoid potential warnings on some toolchains 174* Multiple bug fixes across drivers 175#### v1.0.0 176* Initial release (ADC, CRC, DAC, Flash, GPIO, Hardware Manager, I2C, LP Timer, PWM, QSPI, RTC, SDHC, SDIO, SPI, System, Timer, TRNG, UART, USB Device, WDT) 177 178### Supported Software and Tools 179This version of the CAT1 Hardware Abstraction Layer was validated for compatibility with the following Software and Tools: 180 181| Software and Tools | Version | 182| :--- | :----: | 183| ModusToolbox™ Software Environment | 3.1.0 | 184| GCC Compiler | 11.3.1 | 185| IAR Compiler | 9.30.1 | 186| ARM Compiler | 6.16 | 187 188Minimum required ModusToolbox™ Software Environment: v2.0 189 190### More information 191Use the following links for more information, as needed: 192* [API Reference Guide](https://infineon.github.io/mtb-hal-cat1/html/modules.html) 193* [Cypress Semiconductor, an Infineon Technologies Company](http://www.cypress.com) 194* [Infineon GitHub](https://github.com/infineon) 195* [ModusToolbox™](https://www.cypress.com/products/modustoolbox-software-environment) 196 197--- 198© Cypress Semiconductor Corporation (an Infineon company) or an affiliate of Cypress Semiconductor Corporation, 2019-2023. 199