音频调试经验总结
对于配置采样率为48KHZ,位宽为16bit 的I2S总线,即1ms 采样48个点,每个点为两个字节。如果开辟了一个512字节的buffer 用于发送数据,则将这些数据发送出去需要约 512/2/48 = 5ms 时间。对于AR1 向MCU 发送数据结束后,如果MCU I2S 采用ping pong DMA 的形式想PA发送数据,会有一个问题,就是MCU 向外发送的有脏数据,导致有杂音。处理计划:AR1 播放完音频后在后边加一段时间的0数据,时间长度由MCU 开辟的buffer 大小去判断,这样buffer里边的数据为0,就会发送静音数据,可能就不会有杂音。处理计划B:AR1 执行后台播放音频,大约延时这段音频的处理时间,然后执行关闭pa
常见的安卓测指令:
agmplay /data/1648_Sweep_-6db_log_stereo_15s.wav -D 100 -d 100 -i MI2S-LPAIF_VA-RX-PRIMARY -skv 0xA1000001 -svol 1 // 其中skv 参数指的是 高latence (buffer 比较大,适用不需要快速响应的播放场景,如音乐)
agmplay /data/1648_Sweep_-6db_log_stereo_15s.wav -D 100 -d 100 -i MI2S-LPAIF_VA-RX-PRIMARY -svol 1 // 不带skv 参数值的是第latence(buffer 比较小,适用需要快速响应的播放场景,如按键音、游戏音)
可以做一个bash 脚本,将指令按顺序排列到里边,这样可以通过脚本,顺序执行指令
安卓指令后加上 & 代表 该指令的应用程序开始在后台运行,下一条指令可以开始执行,如果不加的话,则串行执行所有指令