楼主: NXP顽主

[分享] 修改关于LPC54114 音频库的两个BUG

[复制链接]
  • TA的每日心情
    开心
    2025-1-21 08:52
  • 签到天数: 861 天

    连续签到: 1 天

    [LV.10]以坛为家III

    75

    主题

    2523

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5867
    最后登录
    2025-1-22
    发表于 2017-10-12 21:03:50 | 显示全部楼层
    666,大神
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    72
    最后登录
    2022-3-3
     楼主| 发表于 2017-10-13 09:26:15 | 显示全部楼层
    wambob 发表于 2017-10-12 18:42
    另外试了下mp3的,还是不行

    mp3 除了定义了那两个缓冲区 还定义了一个别的,你仔细看一下,好像是3个缓冲区
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5785
    最后登录
    2025-5-7
    发表于 2017-10-13 09:29:56 | 显示全部楼层
    本帖最后由 wambob 于 2017-10-13 09:36 编辑
    NXP顽主 发表于 2017-10-13 09:26
    mp3 除了定义了那两个缓冲区 还定义了一个别的,你仔细看一下,好像是3个缓冲区 ...

    第一个不改,wav改了缓冲也可以放。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-4-13 21:11
  • 签到天数: 550 天

    连续签到: 1 天

    [LV.9]以坛为家II

    14

    主题

    1049

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    2417
    最后登录
    2022-6-16
    发表于 2017-10-13 09:51:25 | 显示全部楼层
    感谢分享               
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5785
    最后登录
    2025-5-7
    发表于 2017-10-13 09:55:17 | 显示全部楼层
    本帖最后由 wambob 于 2017-10-13 09:58 编辑

    看看这个,第一个不改的情况
    1.jpg 2.jpg
    从图中可以看出采样率和bit率不一样,上面有个错也不同,改了缓冲倒是解决了不能重放的问题
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    72
    最后登录
    2022-3-3
     楼主| 发表于 2017-10-13 10:04:00 | 显示全部楼层
    wambob 发表于 2017-10-13 09:55
    看看这个,第一个不改的情况

    从图中可以看出采样率和bit率不一样,上面有个错也不同,改了缓冲倒是解决了 ...

    我刚刚试了下mp3,确实有点问题,我再仔细找找,咱俩的错误不太一样
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    72
    最后登录
    2022-3-3
     楼主| 发表于 2017-10-13 10:50:54 | 显示全部楼层
    wambob 发表于 2017-10-13 09:55
    看看这个,第一个不改的情况

    从图中可以看出采样率和bit率不一样,上面有个错也不同,改了缓冲倒是解决了 ...

    我刚看了下代码 shell报的那个 ERR_MP3_MAINDATA_UNDERFLOW错误应该是不用理会的,还有那个
    unknown error: -8, left: 7810,应该就是左声道的某个数据解码错误,不影响整体音乐。所以播放mp3还是没问题的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5785
    最后登录
    2025-5-7
    发表于 2017-10-13 11:20:54 | 显示全部楼层
    NXP顽主 发表于 2017-10-13 10:50
    我刚看了下代码 shell报的那个 ERR_MP3_MAINDATA_UNDERFLOW错误应该是不用理会的,还有那个
    unknown erro ...

    第一个公式的由来  
    主频98304000   
    2457600 是 I2S最大MCLK时钟 256fs 即96K*256。
    所以有个宏定义
    1. #define LPC54110_IIS_MUL    LPC54110_MAIN_CLOCK/24576000
    复制代码

    这个结果是4。

    1. static I2S_AUDIO_FORMAT_T audio_fmt_tx = {
    2.         I2S_TX,                                        /*!< Data direction: tx or rx */
    3.         NORMAL_MASTER,                        /*!< Master / Slave configuration */
    4.         I2S_CLASSIC,                        /*!< I2S mode */
    5.         false,                                        /*!< right channel data in low portion of FIFO */
    6.         false,                                        /*!< left justify data in FIFO */
    7.         false,                                        /*!<  data source is the D-Mic subsystem */
    8.         false,                                        /*!<  SCK polarity */
    9.         false,                                        /*!<  WS polarity */
    10.         16*LPC54110_IIS_MUL,                                                /*!< Flexcomm function clock divider */
    11.         2,                                                /*!< Channel Number - 1 is mono, 2 is stereo */
    12.         16,                                                /*!< Word Width */
    13.         32,                                                /*!< Frame Width */
    14.         0,                                                /*!< Data position in the frame */
    15.         5,                                                /*!< FIFO depth (fifo config) */
    16. };
    复制代码

    16*4==64,即分频64,为什么分频64。
    因为位时钟SCK为48k*2*16==1.536MHz。正好是主时钟分频64后的值。
    绕来绕去,最终的原因是
    MCLK使用了96K采样率时钟。而位时钟使用了48K采样率
    In general, the I2S can support:
    • Standard sample rates such as 16, 22.05, 32, 44.1, 48, and 96 kHz, and others.
    • External MCLK inputs up to approximately 25 MHz (256 fs of a 96 kHz sample rate)
    and more. Refer to a specific device data sheet for details.

    真绕啊
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    72
    最后登录
    2022-3-3
     楼主| 发表于 2017-10-13 11:46:24 | 显示全部楼层
    wambob 发表于 2017-10-13 11:20
    第一个公式的由来  
    主频98304000   
    2457600 是 I2S最大MCLK时钟 256fs 即96K*256。

    我当时也看到这段了,但是和WM8904的寄存器配置不太匹配,WM8904寄存器配置如下: 1507795434(1).png

    R16 = 0x000e :使能系统时钟SYSCLK  选择时钟原为MCLK
    1507866291(1).png
    R14 = 0x845e :MCLK_DIV=0不分频   SYSCLK = MCLK
    1507866318(1).png
    R15 = 0x0c05  : SYSCLK/fs = 256   fs =  44.1kHz or 48kHz
    1507866336(1).png
    按照上面的配置 MCLK = 256*fs = 256 * 48K = 12288000
    而程序里面设置的IIS是按照 96k的采样率设置的。我是这点搞不太懂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    连续签到: 1 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    9292
    最后登录
    2022-5-12
    发表于 2017-10-13 16:46:05 | 显示全部楼层
    大神膜拜下,吊爆了
    好好
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-24 05:33 , Processed in 0.112070 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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