Skip to content

Conversation

@LeslieXMOS
Copy link

In FFVA-INT example, software PLL is used to phase lock MCLK with BCLK to eliminate the need of external MCLK.
However, sw_pll_lut_do_control in the original code is called every 240 I2S frame instead of every I2S frame.
This causes the software PLL failed to lock, thus the AEC not converge in FFVA-INT.

This PR put the sw_pll_lut_do_control call in I2S restart callback; this make sure it is called in every I2S frame.
This PR rely on the PR#256 on fwk_rtos, PR#256 need to be merged before this PR can compile.

uint16_t mclk_pt = port_get_trigger_time(i2s_callback_args->p_mclk_count); // Immediately sample mclk_count
uint16_t bclk_pt = port_get_trigger_time(i2s_callback_args->p_bclk_count); // Now grab bclk_count (which won't have changed)

Copy link

@xross xross Aug 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please dont add white space :) (Best to config your editor to remove if you can)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Ross
Additional white space deleted

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants