Hi @RomanVR ,
Thank you for your response. Please find the clarifications below.
1. RTOS
We are using bare-metal and FreeRTOS for both test. No Zephyr is involved in these tests. All initialization and I2S configuration are done directly with the NXP SDK drivers.
2. Board
We are not using the FRDM-RW612. We are using a custom Dev Board based on RW612ETA2I. The MCU is the same, but the board layout differs.
The audio codec (PCM6120) is wired to FLEXCOMM3 / I2S3 on the following fixed pins:
Signal GPIO Direction
| I2S DATA (SDOUT from PCM6120) | GPIO24 | Input |
| I2S SCK (BCLK to PCM6120) | GPIO25 | Output |
| I2S WS (FSYNC to PCM6120) | GPIO26 | Output |
| I2C SDA (PCM6120 config) | GPIO56 (FC14) | Bidirectional |
| I2C SCL (PCM6120 config) | GPIO57 (FC14) | Bidirectional |
| AUX_EN (PCM6120 power) | GPIO54 | Output |
3. SDK Version
We are using SDK_2.x_RD-RW612-BGA, version 25.03.00.
4. Base Example
We used rdrw612bga_i2s_dma_record_playback as the reference example. That example uses FLEXCOMM1 (TX master) + FLEXCOMM0 (RX slave) + I2S bridge, which we confirmed is working.
However, our hardware constraint forces us to use a single FLEXCOMM (FC3 only) for the entire I2S link to PCM6120. PCM6120 must work in Slave mode because we dont have External clock to source for BCLK . We attempted to configure FC3 as kI2S_MasterSlaveNormalMaster to have it generate SCK/WS while receiving data.
5. UM11865 Section 28.2 – I2S Configuration Steps
We have reviewed UM11865 Section 28.2 and can confirm all 6 configuration
steps are followed:
Step 1: Flexcomm enabled with CLOCK_EnableClock + RESET + CLOCK_AttachClk
Step 2: FIFO configured (FIFOCFG=0x35, ENABLETX=1, SIZE=8)
Step 3: I2S pins set via IO_MUX_SetPinMux(IO_MUX_FC3_I2S), AON MCI_IOMUX enabled
Step 4: Rate configured (CFG1 MSTSLVCFG=0b11=NormalMaster, DIV=3 → BCLK=3.072MHz)
Step 6: DMA enabled in FIFOCFG
Despite following all steps, we observe:
- No SCK/WS edges on GPIO25/GPIO26
- TX FIFO not accepting data: TXNOTFULL=1 but TXLVL stays 0 after FIFOWR writes
Section 28.2 Step 4 states "For controller operation, the clock determines
the I2S rate" but does not specify whether PERSEL=I2S_RECEIVE with
NormalMaster is expected to drive SCK/WS onto the pads.
Can you clarify:
1. Is PERSEL=I2S_RECEIVE (0b101) capable of driving SCK/WS as outputs
when MSTSLVCFG=NormalMaster?
2. Why does TXLVL remain 0 after writes to FIFOWR with PERSEL=I2S_TRANSMIT?
Is MAINENABLE required before FIFOWR writes are accepted?
6. Observed Issue – Our Specific Question
After all configuration above, GPIO25 and GPIO26 produce zero edges. PCM6120 reports missing clocks (ASI_STS = 0xFF, DEV_STS1 = 0x80).
We further ran a diagnostic: we configured FC3 as I2S TX master (instead of RX master) and found that writes to FIFOWR do not increment TXLVL — FIFOSTAT stays at 0x30 (TXNOTFULL=1, TXLVL=0) regardless of how many words we write.
Relevant register state after TX master probe:
CFG1 = 0x17003C (MSTSLVCFG=3 = NormalMaster, DATALEN=24, MAINENABLE=0)
DIV = 3 (divider=4, BCLK = 12.288MHz / 4 = 3.072MHz)
FIFOCFG = 0x35 (ENABLETX=1, TXI2SE0=1)
FIFOSTAT = 0x30 (TXNOTFULL=1, TXLVL=0 after writes)
After MAINENABLE=1:
STAT = 0x5 (BUSY=1, LR=1 — clock logic running internally)
SCK/WS edges on GPIO25/GPIO26: 0
Our specific question to NXP:
When FLEXCOMM3 I2S is configured as kI2S_MasterSlaveNormalMaster (either TX or RX), is it expected behavior on RW612 that SCK/WS are not driven onto GPIO25/GPIO26 (AON domain), even though STAT shows the peripheral is internally running?
Alternatively: Is a single-FLEXCOMM topology (one FC as both clock master and RX data receiver) supported by the RW612 I2S hardware, or does RW612 always require two separate FlexComm instances (one TX master + one RX slave via I2S bridge) for this use case?
Thank you.