1、用了FM1288做对讲,需要回音消除,噪音抑制等功能
2、买了FM1288芯片,音频输入流程为:mic-->iis ,输出流程:iis-->spk
3、主机为A40i,通过iis和UART连接FM1288,UART用来配置参数,iis传输音频信号,先播放一首《夜的第七章》测试下。
4、FM1288默认上电是不工作的,处于待机状态,需要配置启动才行,往22FB寄存器写0000即可启动
从待机到工作时,配置的参数结尾必须以22FB寄存器写0开可以启动,启动的标志是该寄存器写完后,22FB寄存器变成0xA5A5,如果需要在运行状态中直接修改参数,则不用以22FB写0结尾(如果写了0,则22FB寄存器会变为0,不再是A5A5了)
5、UART的读写没啥特殊,直接按照手册操作就行,读的时候注意下,读的内存值存在了寄存器25和26中,所以需要再读寄存器25和26,才会读取到内存的值(这些在手册上都有详细描述)。
6、播音效果不咋好,失真,感觉两个声道都错开了,需要配置参数,但是不知道怎配置
7、配置了N天,效果不行,由于没有买开发板,没有技术支持,所以打算蹭个技术支持。
8、买块开发板(芯片才十几块钱,开发板2000,核心板800),看来这份参数很值钱,但是我产生了一个想法。买个核心板,顺便要技术支持
9、买了块核心板,但是还是没技术支持,吐槽一下,买的是深圳北均的核心板,但是人家说核心板是验证的,想要技术支持,需要买开发板,问个问题就是买开发板,这个技术支持比销售还敬业。
10、没办法,由于核心板的参数是在eeprom里,那简单了,eeprom拿掉,随便找个板子带eeprom接口的,焊上去,写了个代码把里面存的参数全部读出来分析一下
11、核心板里带的参数配置fm1288的iis是主机,在这里把他的参数稍稍修改了下,在用在我的配置上,完美解决。
12、本来想把这块核心板再退了,想想还是算了。
13、附上核心板的完整参数,自己在这个上面微调即可。
14、调试参数一份:
typedef struct{
uint16_t addr;
uint16_t value;
}Item_t;
{0x1E34 , 0x008B},
// {0x22C8 , 0x0029}, /* pll_div_type :002C*/
// {0x22D0 , 0x3F03}, /* i2s_clk_set_8k :0F07 */
/* MIC PGA 控制
bit[3~0] mic0
bit[7~4] mic1
bit[11~8] linein
*/
{0x22E5 , 0x0202},
/* SPK out PGA
bit[3~0] spk out gain
*/
{0x22E9 , 0x0011},
{0x22F2 , 0x0034}, /* mips_setting :003C */
/* IIS master or slave */
{0x22F9 , 0x007F},
/* IIS or PCM */
{0x22FA , 0x003D},
{0x2301 , 0x0012}, /* sample_rate :0012 */
{0x2302 , 0x0001}, /* _num_of_mics :0012 */
{0x2303 , 0x5DF1}, /* _kl_config : 5991 */
/* MIC HPF */
{0x2304 , 0x83DF},
{0x2305 , 0x0033}, /* _ft_flag :0031 */
/* MIC VOL CTL
bit[7~0] mic0
bit[15~8] mic1
*/
{0x2307 , 0xF0F0},
{0x2309 , 0x0000}, /* _lin_vol_ctl :0000 */
/* MIC volume
0x0000 : min
0x7fff : max
0x0100 : same as input
*/
{0x230C , 0x0A00},
{0x230D , 0x0500}, /* _spk_volume :0180 */
/* MIC Mute */
//{0x230F , 0xFFFF},
/* MIC0 LPF */
{0x2310 , 0x1280}, /* _linein_HPF_sel :1205 */
{0x232D , 0x0001}, /* _reserve_232D[0] :0000 */
/* AEC */
{0x232F , 0x0088}, /* _aec_ref_gain :0080 */
//{0x2332 , 0x0020},
//{0x2333 , 0x0004},
{0x2337 , 0x8000},
{0x2339 , 0x0010}, /* _tdaec_delay_length :0010 */
/* mic0 Gain */
{0x2348 , 0x6000},
/* mic1 Gain */
{0x2349 , 0x4000},
/* MIC Emph l滤波器系数*/
{0x234A , 0x3487},
{0x234B , 0x1144},
//{0x234C , 0x3487},
//{0x234D , 0x1144},
{0x234E , 0x3487},
{0x234F , 0x1144},
/* FFP Setting */
//{0x2360 , 0x07ff},
//{0x2361 , 0x07ff},
//{0x2362 , 0x07ff},
/* Noise Suppression */
{0x236E , 0x1500}, /* 值约小,噪音抑制越厉害,7fff不抑制 */
{0x236F , 0x0500}, /* 噪音抑制因子 ,值越大,抑制越厉害 */
{0x2370 , 0x0300}, /* 当没有大的回音时的噪音抑制因子,值越大,抑制越厉害 */
{0x2382 , 0x0200},
{0x2383 , 0x0300},
{0x2384 , 0x0C00}, /* 信噪比阈值,值越大,抑制越厉害 */
{0x2385 , 0x0E00},
{0x2386 , 0x1000},
{0x2390 , 0x4444},
{0x2391 , 0x4444},
{0x2393 , 0x4444},
{0x2394 , 0x4444},
{0x2395 , 0x4444},
/* 当SNR非常高时,降低NS。 较大的值可以改善安静环境中的语音质量,但也可以提高本底噪声。
因此,它需要与空闲噪声抑制一起调整*/
//{0x239C , 0x1000},
/* Non-Linear AEC */
{0x23B3 , 0x0002},
{0x23B4 , 0x0001},
{0x23B5 , 0x3000},
{0x23B7 , 0x0000},
{0x23B8 , 0x0001},
//{0x23BA , 0x0001},
{0x23BE , 0x00E0},
{0x23BF , 0x0054},
//{0x23BB , 0x0054},
{0x23ED , 0x0400}, /* idle noise threshold */
{0x23EE , 0x2000}, /* idle ins attn */
{0x22FB , 0x0000}
效果还可以,如果效果很差的话,检查一下音频走线,地回路之类的,硬件的影响还是有一点的
参数下载链接:https://download.csdn.net/download/gang_life/16674063