Hardware Abstraction Layer (HAL)
I2S (Inter-IC Sound)

The CAT1 (PSoCâ„¢ 6) I2S Supports the following values for word lengths:

The channel length must be greater than or equal to the word length. On CAT1A devices, the set of supported channel lengths is the same as the set of supported word lengths. On CAT1B devices, the channel length may be any value between 8 and 32 bits.

The sclk signal is formed by integer division of the input clock source (either internally provided or from the mclk pin). The CAT1A I2S supports sclk divider values from 1 to 64. On CAT1B devices, the I2S supports sclk divider values from 2 to 256.

On CAT1A devices, if both RX and TX are used, the same GPIO must be specified for mclk in both directions. See the device datasheet for more details on valid pin selections.

The following events are not supported on CAT1B:

Note
If the I2S hardware is initialized with a configurator-generated configuration via the cyhal_i2s_init_cfg function, the CYHAL_I2S_TX_HALF_EMPTY and CYHAL_I2S_RX_HALF_FULL events will be raised at the configurator defined TX and RX FIFO trigger levels, respectively, instead of their usual trigger level of half the FIFO depth.

MXTDM SCLK/WS output signals behavior

On devices with MXTDM IP block (e.g. CAT1B devices), in master role, I2S' SCK and WS signals starts toggling upon cyhal_i2s_init function call, while data is being transmitted / received after corresponding cyhal_i2s_start_* functions call. This is different to the behavior of MXAUDIOSS-based I2S (e.g. CAT1A, CAT1C devices), where SCK and WS signals starts toggling along with data receive / transmit process is being started with corresponding cyhal_i2s_start_* function call. This is important for power efficient applications. For them, it is recommended to init i2s master using cyhal_i2s_init right before data transfers are performed and deinit it using cyhal_i2s_free when no i2s transmission is expected in nearest time, to save power.