查看: 4582|回复: 6

[原创] 【LPC54114双核任务三】双核音频之模数双调----录音扩音器

[复制链接]
  • TA的每日心情
    奋斗
    2018-7-12 20:45
  • 签到天数: 75 天

    [LV.6]常住居民II

    7

    主题

    213

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    441
    最后登录
    2018-10-25
    发表于 2017-7-9 08:56:17 | 显示全部楼层 |阅读模式
    本帖最后由 NXP+LPC+FSL 于 2017-7-12 12:35 编辑

    主要内容:
    通过数字麦克风录音,捕获音频信号,产生的PDM数据送给cpu,转化为pcm数据,通过iis总线传输给wm8904,在cn7接入耳机或者音频,就可以实现声音的放大了,接上贴的调音功能,可以通过按键,或者电位器实现对音量的双调,就可以实现话筒+声音放大功能了,就当是扩音功能吧。


    本次测试依然用到按键、adc,数字麦克,wm8904等模块,相关初始化工作上个帖子有细讲。。。


    最新增加
    看到有大神添加了屏显外设,也献上我的最新测试成果吧(先看下效果图)
    IMG_20170712_005501.jpg


    IMG_20170712_005534.jpg


    屏显:利用板子上的usart5,配置后,增加 迪文屏 的相关驱动,并初始化屏幕。
    系统上电后,模式显示模拟调节模式。
    模拟模式下,旋转电位器,屏幕实时刷新当前音量值
    按下PB2,切换模式,屏幕实时刷新模式
    数字模式下,按键调节的音量值也实时刷新显示。




    配置完时钟,fleccomm后,开始配置IIC波特率为400000UBps





    1. I2C_MasterGetDefaultConfig(&i2cConfig);
    2.     i2cConfig.baudRate_Bps = WM8904_I2C_BITRATE;
    3.     I2C_MasterInit(DEMO_I2C, &i2cConfig, DEMO_I2C_MASTER_CLOCK_FREQUENCY);
    复制代码



    然后配置wm8904

    1. <div><div>    WM8904_GetDefaultConfig(&codecConfig);</div><div>    codecHandle.i2c = DEMO_I2C;</div><div>    codecConfig.format.sampleRate = kWM8904_SampleRate16kHz;</div><div>    if (WM8904_Init(&codecHandle, &codecConfig) != kStatus_Success)</div><div>    {</div><div>        PRINTF("WM8904_Init failed!\r\n");</div><div>    }</div></div><div></div>
    复制代码



    然后就是通过adc采样 电位器的电压值,初始化音量了。。。
    1.     wADCValue = adc_read(ADC_CHANNEL_NUM);
    2.                 if(wADCValue != 0xFFFF)
    3.                 {
    4.                         if(_Cur_Volume<=63)
    5.                                 _Cur_Volume = (wADCValue*1000)/0xFFFF; // ajust the led blinky freqency
    6.                         PRINTF("\r\n----------------\r\n");
    7.                          PRINTF("初始化读取当前音量:º%d%%,\r\n" , _Cur_Volume*100/VOLUME_MAX);
    8.                         PRINTF("\r\n----------------\r\n");               
    9.                         Per_wADCValue        = adc_read(ADC_CHANNEL_NUM);               
    10.                 }
    复制代码


    然后初始化配置 数字麦克,失能fifo

    1.     dmic_channel_cfg.divhfclk = kDMIC_PdmDiv1;
    2.     dmic_channel_cfg.osr = 25U;
    3.     dmic_channel_cfg.gainshft = 3U;
    4.     dmic_channel_cfg.preac2coef = kDMIC_CompValueZero;
    5.     dmic_channel_cfg.preac4coef = kDMIC_CompValueZero;
    6.     dmic_channel_cfg.dc_cut_level = kDMIC_DcCut155;
    7.     dmic_channel_cfg.post_dc_gain_reduce = 1U;
    8.     dmic_channel_cfg.saturate16bit = 1U;
    9.     dmic_channel_cfg.sample_rate = kDMIC_PhyFullSpeed;
    10.     DMIC_Init(DMIC0);

    11.     DMIC_ConfigIO(DMIC0, kDMIC_PdmDual);
    12.     DMIC_Use2fs(DMIC0, true);
    13.     DMIC_SetOperationMode(DMIC0, kDMIC_OperationModePoll);
    14.     DMIC_ConfigChannel(DMIC0, kDMIC_Channel0, kDMIC_Left, &dmic_channel_cfg);
    15.     DMIC_ConfigChannel(DMIC0, kDMIC_Channel1, kDMIC_Right, &dmic_channel_cfg);

    16.     /* FIFO disabled */
    17.     DMIC_FifoChannel(DMIC0, kDMIC_Channel0, FIFO_DEPTH, false, true);
    18.     DMIC_FifoChannel(DMIC0, kDMIC_Channel1, FIFO_DEPTH, false, true);
    19.     DMIC_EnableChannnel(DMIC0, (DMIC_CHANEN_EN_CH0(1) | DMIC_CHANEN_EN_CH1(1)));
    20.     DMIC_DisableIntCallback(DMIC0, DMIC0_Callback);
    复制代码


    最后配置IIS的发送

    1.     I2S_TxGetDefaultConfig(&tx_config);
    2.     tx_config.divider = 16U; /* divide by 16*/
    3.     tx_config.pdmData = true;
    复制代码


    到此就配置完了,,,成功配置后,启动板子,串口打印的信息为

    1.png



    这时候对着板子上的数字麦克风讲话是可以从音响听到放大后的声音的,当然,在 上贴的基础上,还增加了按键和电位器调音功能。。。

    开机默认为模拟模式,LED11亮,
    按下PB2后,进入数字模式,  LED11熄灭,打印  数字调节模式,并通过屏幕实时刷新模式显示
                        通过调节电位器的阻值,就可以调节音响的输出音量了,同时屏幕显示的音量也实时刷新

    再次按下PB2,进入模拟模式, LED11点亮,打印 模拟调节模式,并通过屏幕实时刷新模式显示
                       通过按键调节,PB4增加音量,PB5减小音量,就可以调节音响的输出音量了,,同时屏幕显示的音量也实时刷新


    效果串口有打印信息

    222.png


    这部分代码上个帖有讲到,就不贴了,移植到本帖主要是为了控制录音播放的输出音量。。。


    增加了屏幕显示功能,确实能够更方便的看到当前音量状态,有助于调节wm8904输出声音音量的大小。。。














    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-7-5 15:45
  • 签到天数: 664 天

    [LV.9]以坛为家II

    42

    主题

    1594

    帖子

    19

    金牌会员

    Rank: 6Rank: 6

    积分
    5383
    最后登录
    2021-12-22
    发表于 2017-7-9 10:35:54 | 显示全部楼层
    产生的PDM数据送给cpu,转化为pcm数据

    楼主能不能共享下这个代码?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-7-12 20:45
  • 签到天数: 75 天

    [LV.6]常住居民II

    7

    主题

    213

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    441
    最后登录
    2018-10-25
     楼主| 发表于 2017-7-9 17:22:41 | 显示全部楼层
    okwh 发表于 2017-7-9 10:35
    产生的PDM数据送给cpu,转化为pcm数据

    楼主能不能共享下这个代码?

    这个配置好就可以了,sdk有dmic_i2s_codec
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-7-5 15:45
  • 签到天数: 664 天

    [LV.9]以坛为家II

    42

    主题

    1594

    帖子

    19

    金牌会员

    Rank: 6Rank: 6

    积分
    5383
    最后登录
    2021-12-22
    发表于 2017-7-9 23:11:07 | 显示全部楼层
    这个有灯闪动,就是没声音
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-7-12 20:45
  • 签到天数: 75 天

    [LV.6]常住居民II

    7

    主题

    213

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    441
    最后登录
    2018-10-25
     楼主| 发表于 2017-7-10 08:40:27 | 显示全部楼层
    cn8话筒 的声音怎么播放不出来额
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-7-21 17:51
  • 签到天数: 65 天

    [LV.6]常住居民II

    0

    主题

    123

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    448
    最后登录
    2018-8-5
    发表于 2017-7-10 08:51:03 | 显示全部楼层
    学习了     
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-30 16:08
  • 签到天数: 184 天

    [LV.7]常住居民III

    3

    主题

    651

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1310
    最后登录
    2020-11-30
    发表于 2017-7-10 11:14:53 | 显示全部楼层
    学习了  ...............
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-28 17:31 , Processed in 0.132947 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表