Wanted to share my experience concerning audio and the Pico series (both RV1103/RV1106). Im specifically talking about the integrated audio codec. The microphones I used are Knowles analog mics, both single-ended and differential. Quite expensive, I've been using them for years in various applications.
I've been running the following command to record audio. My findings have been consistent when using both ffmpeg and the rk_mpi_ai_test application.
Code: Select all
ffmpeg -f alsa -i default -t 10 -ar 48000 -ac 2 -sample_fmt s16 output.wavWithout the default (rkipc) application running, audio is as clean as can be expected. Pretty serviceable. Next up, I started the rkipc application (without audio - by that I mean it's disabled in the ini configuration file) and ran the aforementioned ffmpeg command (in parallel with rkipc). The output was devastating. In a quiet room, it sounded like somebody was beating a loud drum 10 times per second. Upon further investigation, I ruled out software as being the culprit. When looking at the spectrograms of the recordings, I could see a spike popping up at ~ 20 khz when the ISP/ VENC are running. When those are idle, the spikes disappeared.
Solution
What I did next was disable everything relating to AGC (auto gain control), ALC (auto level control), analog and (of course) digital gains. Then, I powered the microphone and the pico from a lipo battery. The spike disappeared.
I'm too lazy to check right now for specific part numbes, but across all dev. boards, there's a filter (cap + ferrite bead) for the AVDD 1V8 (pin 23 on the RV1103) of the audio codec. I desoldered the ferrite and provided a clean 1v8 voltage from a LDO.
HUGE improvement.
I also used an external AGC IC (MAX9814). I can honestly say there's really no point in using an external audio codec for audio capture. This minor tweak is more than enough for high quality, full band audio.
Luckfox guys, if you're reading this, I urge you to do a hardware revision and stick a LDO in there, for audio. Especially for the Core board. While not a deal breaker, right now any project I'd build around that module would require manually applying the above fix. While that's not a problem for proof-of-concepts, it's a deal breaker for hundreds or thousands of pieces.
Hope this helps someone.

