1# CAT1 (PSoC™ 6) Hardware Abstraction Layer (HAL) Release Notes
2The CAT1 Hardware Abstraction Layer (HAL) provides an implementation of the Hardware Abstraction Layer for the PSoC™ 6 family 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
4This library is only supported on the Cortex-M4. It is not compatible with the Cortex-M0+. Any peripherals used by the Cortex-M0+ must be configured using the PDL and reserved on the Cortex-M4 by calling cyhal_hwmgr_reserve(). This ensures the HAL is aware the resource is in use and does not overuse it.
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* Flash
16* GPIO
17* Hardware Manager
18* I2C
19* I2S
20* LowPower Timer (LPTimer)
21* OpAmp
22* PDM/PCM
23* Power Management (SysPM)
24* PWM
25* QSPI
26* Quadrature Decoder (QuadDec)
27* RTC
28* SDHC
29* SDIO
30* SPI
31* System
32* TDM
33* Timer
34* True Random Number Generator (TRNG)
35* UART
36* USB Device
37* WDT
38
39### What Changed?
40#### v2.0.0
41This major version update includes changes that break API compatibility with prior releases. Each major or breaking change is described below:
42* Clock:
43  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.
44  2. Replaced cyhal_clock_init with cyhal_clock_reserve.
45  3. Removed div_type & div_num from cyhal_clock_t.
46* DMA:
47  1. cyhal_dma_enable must be called after configuring the DMA, but before a trigger will initiate a transfer
48* Flash:
49  1. The data buffer passed to functions must be from SRAM, the driver no longer contains a scratch buffer to copy into.
50* GPIO:
51  1. cyhal_gpio_enable_output updated to require a new argument to specify whether the signal is level or edge based.
52  2. cyhal_gpio_connect_digital no longer takes the signal type parameter.
53  3. cyhal_gpio_register_callback now takes a structure containing details about the callback.
54  4. Removed deprecated functions cyhal_gpio_register_irq & cyhal_gpio_irq_enable
55* I2C:
56  1. Removed deprecated functions cyhal_i2c_register_irq & cyhal_i2c_irq_enable
57* I2S/TDM:
58  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;
59  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
60  calling `cyhal_i2s_init` or `cyhal_tdm_init` the same `cyhal_gpio_t` value should be provided for both RX and TX.
61* PWM:
62  1. cyhal_pwm_connect_digital no longer takes the signal type parameter.
63  2. cyhal_pwm_init will always produce a non-inverted waveform on the specified pin, even if that pin natively produces an inverted
64     output (for example, the `line_compl` pins on PSoC™ devices). This improves consistency with the behavior of cyhal_pwm_init_adv.
65* QSPI:
66  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.
67  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.
68  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.
69  4. cyhal_qspi_command_t structure was updated: address.value field removed, data_rate field was added into all command subsections.
70  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).
71  6. cyhal_qspi_datarate_t enum was added. Corresponding configuration fields are added into each sub-structure of cyhal_qspi_command_t.
72* SDHC:
73  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.
74* SDIO:
75  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.
76  2. Removed deprecated functions cyhal_sdio_register_irq & cyhal_sdio_irq_enable
77* Timer:
78  1. cyhal_timer_connect_digital no longer takes the signal type parameter.
79* UART:
80  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.
81* I2C:
82  1. The following deprecated functions have been removed: cyhal_i2c_slave_config_write_buff, cyhal_i2c_slave_config_read_buff.
83* Other:
84  1. Removed cyhal_deprecated.h, and all associated code.
85NOTE: This version requires core-lib 1.3.0 or later
86#### v1.6.0
87* Added new TDM driver
88* Added support for 1.8v devices to SDHC/SDIO drivers
89* Extended System driver to support registering for other interrupts
90* Fixed issues with level trigger signals to the DMA driver
91* Fixed a few bugs in various drivers
92#### v1.5.0
93* Added new Quadrature Decoder (QuadDec) driver
94* Added digital hardware connection APIs to drivers
95* Fixed a few bugs in various drivers
96* Updated SDHC and MXSDHC-based SDIO communication functions to use semaphores in RTOS aware environments for improved performance
97* 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)
98#### v1.4.0
99* Renamed library from psoc6hal to mtb-hal-cat1
100* Added support for new PSoC™ 6 S4 devices
101* Extended clock support for QSPI and SDHC drivers
102* Fixed a few bugs in various drivers
103* Minor documentation updates
104#### v1.3.0
105* Added new Analog Comparator driver
106* Added new OpAmp driver
107* Extended ADC driver
108* Extended DAC driver
109* Extended SPI/QSPI drivers to support multiple slave select signals
110* Fixed SDHC based SDIO cyhal_sdio_is_busy() function to return status immediately instead of waiting until the transfer completes
111* Fixed a few bugs in various drivers
112* Minor update for documentation & branding
113#### v1.2.1
114* Added new option for SysPM driver to support tickless sleep in addition to deepsleep
115* Fixed an issue with deep-sleep wake-up in the SDIO and SDHC drivers that could cause intermittent communication failures
116* Minor bug fixes and documentation improvements
117#### v1.2.0
118* Added new Clock driver
119* Added new SysPM Power Management driver
120* Added new I2S driver
121* Added new PDM/PCM driver
122* Reduced flash memory usage for a number of drivers
123* Improved documentation for a number of drivers
124* Fixed a few bugs in various drivers
125NOTE: 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.
126#### v1.1.1
127* Improved documentation for a number of drivers
128* Fixed duplicate symbol definition with PDL 1.4.1 release
129* Minor bug fixes
130#### v1.1.0
131* Added new DMA driver
132* Added new EZ-I2C driver
133* Extended System driver to allow getting information about reset
134* Extended System driver to provide delay functions
135* Updated PWM driver to provide additional configuration options
136* Updated Timer driver to allow reading the current count
137* Updated RTC driver to support Day Light Savings time
138* Updated LP Timer driver to improve performance
139* Minor updates up avoid potential warnings on some toolchains
140* Multiple bug fixes across drivers
141#### v1.0.0
142* 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)
143
144### Supported Software and Tools
145This version of the CAT1 Hardware Abstraction Layer was validated for compatibility with the following Software and Tools:
146
147| Software and Tools                        | Version |
148| :---                                      | :----:  |
149| ModusToolbox™ Software Environment         | 2.4.0   |
150| GCC Compiler                              | 10.3.1  |
151| IAR Compiler                              | 8.4     |
152| ARM Compiler                              | 6.11    |
153
154Minimum required ModusToolbox™ Software Environment: v2.0
155
156### More information
157Use the following links for more information, as needed:
158* [API Reference Guide](https://infineon.github.io/mtb-hal-cat1/html/modules.html)
159* [Cypress Semiconductor, an Infineon Technologies Company](http://www.cypress.com)
160* [Infineon GitHub](https://github.com/infineon)
161* [ModusToolbox™](https://www.cypress.com/products/modustoolbox-software-environment)
162
163---
164© Cypress Semiconductor Corporation (an Infineon company) or an affiliate of Cypress Semiconductor Corporation, 2019-2021.
165