Skip to content

Enable "dual" full-duplex I2S for "v2_i2s" devices #4698

@bifurcation

Description

@bifurcation

Currently, embassy_stm32 doesn't support full-duplex I2S operation in some cases where the hardware does support it. For example, the STM32F405RG datasheet says that full duplex I2S is supported, but the I2S::new_full_duplex() method isn't enabled in embassy_stm32 because that chip uses the older v2_i2s SPI interface.

Those devices implement a different style of full-duplex I2S, leveraging an extra "I2SEXT" peripheral to instantiate two SPI interfaces, one in each direction. This approach is implemented, somewhat incompletely, in the stm32_i2s_v12x crate.

It seems like the "dual" approach to full-duplex I2S could be implemented within the current API, as a variation on new_full_duplex. Or as a minor variation, where the I2SEXT peripheral is provided explicitly. Unfortunately, it doesn't look like the I2SEXT peripherals are captured by the stm32-metapac crate, so the stm32-data repo would have to be updated to generate code for those peripherals.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions