Hello nxp community!
I've currently started exploring the i.MX RT600 evaluation kit. I'm trying out examples as the starting point for a project. I want to use dmic_i2s_dma.c (from dmic driver examples) from the mcuxpresso sdk for MIMXRT685-EVK, further for my work and I'm trying to understand the code thoroughly before I start changing it. Here are the things I'm not able to understand.
- DMIC Callback Frequency:
In my application, I am observing that the dmic_Callback is being called more frequently than the i2s_Callback. I have reviewed the DMIC and I2S configurations, and both seem okay, but I would like to understand why the DMIC callback frequency is higher than expected. This was observed when incremented a counter in each of the callbacks and printed them in the main function. - s_emptyBlock Variable Behavior:
s_emptyBlock variable is to track the availability of data in the buffer. However, I have noticed that whenever I print its value, it is consistently zero. This is unexpected, as I would expect it to be decremented in the DMIC callback and incremented in the I2S callback. I do not understand why this is happening. - The output values are something like this :
dmic 1, i2s 0, main 1, s_emptyBlock = 0;
dmic 4, i2s 1, main 2, s_emptyBlock = 0;
dmic 8, i2s 2, main 3, s_emptyBlock = 0;
dmic 12, i2s 3, main 4, s_emptyBlock = 0;
dmic 16, i2s 4, main 5, s_emptyBlock = 0;
dmic 19, i2s 5, main 6, s_emptyBlock = 0;
I'd really appreciate it if anybody can help me with these points. I've also attached the file for quick reference.
Thank you.
iMXRT600