转:https://blog.csdn.net/lugandong/article/details/72468831

一、
拿512fs说话:
看图知道采样的位深是32bit(位),左右声道各占了8*32BCLK,那一个完整的LRCLK一共8*32*2=512BCLK。
其实xxxfs就是这么算出来的,也是固定的,当你定了几个channel,多少位深,就几乎可以确认是多少fs了。从主观的角度来看,fs的数值越大,那么一个完整的LRCLK越多,那承载的数据量就越大,随之的就是音质就会更加好。

上图是32位的采样,2channel,xxxfs的选择有:
128fs、256fs、512fs

如果是16bit的采样,2channel呢?
16*2(channel)*2(每个LR有几个16BCLK组成) = 64fs
按照倍数的增加,会有如下的选择:
64fs、128fs、256fs、512fs

如果是24bit的采样,2channel呢?
24*2(channel)*2(每个LR有几个16BCLK组成) = 96fs
按照倍数的增加,会有如下的选择:
96fs、192fs、384fs、768fs(这个级别的估计一般的ADC很难)

二、
那BCLK是怎么算的?
例在Android系统中,播放的音频文件格式:
sample_rate=44.1Khz,sample_length=16,channel=2时,
那么BCLK应该为2×44.1Khz×16=32xsample_rate=1.4112Mhz

MCLK存在着关系,这个一般要看芯片。如果存在这4倍的关系,那么:
MCLK = 4*BCLK=5.6448Mhz
至于MCLK的选择还要看外部的晶振。

鉴于如上的,那它是xxxfs?
正常是fs=MCLK/ sample_rate=5.6448*1000/44.1=128fs

fs=16*2*(LRCLK各几个16 BCLK组)=128fs,一共是4个。

如果现在你要对外部晶振进行选型了,现在是sample_rate=48Khz,sample_length=16,channel=2,我们选择512fs,那外部晶振MCLK要选择多大?
MCLK=fs*sample_rate=512*48=24.576Mhz
---------------------
作者:慢几步-深几度-前行
来源:CSDN
原文:https://blog.csdn.net/lugandong/article/details/72468831
版权声明:本文为博主原创文章,转载请附上博文链接!

linux alsa音频中采样率fs、比特率BCLK 、主时钟MCLK关系的更多相关文章

  1. 基于Linux ALSA音频驱动的wav文件解析及播放程序 2012

    本设计思路:先打开一个普通wav音频文件,从定义的文件头前面的44个字节中,取出文件头的定义消息,置于一个文件头的结构体中.然后打开alsa音频驱动,从文件头结构体取出采样精度,声道数,采样频率三个重 ...

  2. 嵌入式驱动开发之---Linux ALSA音频驱动(一)

    本文的部分内容参考来自DroidPhone的博客(http://blog.csdn.net/droidphone/article/details/6271122),关于ALSA写得很不错的文章,只是少 ...

  3. Linux ALSA音频库(二) 环境测试+音频合成+语音切换 项目代码分享

    1. 环境测试 alsa_test.c #include <alsa/asoundlib.h> #include <stdio.h> // 官方测试代码, 运行后只要有一堆信息 ...

  4. Linux ALSA 音频库 配置和使用

    ALSA应用库是核心功能,而alsa-utils是一些工具功能集合库.单纯地播放一个wav文件,使用alsa-utils即可,如果还需要合成音频.调试音频质量,那么就需要ALSA应用库. 欲安装使用A ...

  5. Linux ALSA音频PCM播放编程

    使用ALSA播放两个频率的单音,并使用GNU Radio中的Audio Source和FFT来观测声音的频谱. #include <alsa/asoundlib.h> #include & ...

  6. 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(三)

    作品已经完成,先上源码: https://files.cnblogs.com/files/qzrzq1/WIFISpeaker.zip 全文包含三篇,这是第三篇,主要讲述接收端程序的原理和过程. 第一 ...

  7. Linux ALSA声卡驱动之八:ASoC架构中的Platform

    1.  Platform驱动在ASoC中的作用 前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过C ...

  8. Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)

    转自http://blog.csdn.net/droidphone/article/details/7165482 1.  ASoC的由来 ASoC--ALSA System on Chip ,是建立 ...

  9. 嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得

    **************************************************************************************************** ...

随机推荐

  1. ecshop数据表结构说明

    深深地看看这个吧,会很有帮助的... ecs_account_log 用户帐号情况记录表,包括资金和积分等 log_id mediumint 自增ID号user_id mediumint 用户登录后保 ...

  2. google浏览器插件fq教程

    google插件fq教程 思路 谷歌浏览器的应用市场 上有很多vp恩插件,不过要能访问谷歌浏览器的应用市场就得fq出去才行,而有一个很棒的插件就可以访问谷歌的旗下的一些东西,例如邮箱,Google搜索 ...

  3. 【计算机视觉】基于OpenCV的人脸识别

    一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...

  4. C++用于类型转换的4个操作符

    Dynamic_cast,   const_cast,  static_cast,  reinterpret_cast. (1)reinterpret_cast 用于基本的类型转换.如 in *ip; ...

  5. 在ensp上简单的配置交换机

    在ensp中我们经常用到交换机,但是我们还没有配置过,下面我们来学习一下怎样简单的配置交换机的速率,双工模式等. 全双工:同时发送和接收数据  半双工:只能在一个时间做一件事     速率:交换机每秒 ...

  6. 生命不息,奔跑不止,持之以恒,勇攀高峰——JasonCeng的跑步打卡

    生命不息,奔跑不止,持之以恒,勇攀高峰!JasonCeng的跑步打卡博文,持续更新,培养好习惯,一起变成更优秀的自己! 2019-12-20-5.05km Avg-speed(均速): 5'56'' ...

  7. LeetCode 189. 旋转数组(Rotate Array)

    189. 旋转数组 LeetCode189. Rotate Array 题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1,2,3,4,5,6, ...

  8. linux语句

    查看网卡 ip addr ifconfig

  9. Jenkins+maven+gitlab自动化部署之前端构建发布(六)

    前端项目构建,需要在jenkins主机部署node服务,网上有说介绍说安装对应的nodejs插件进行前端项目构建,我这里是直接调用系统npm命令,进行前端打包.具体node部署参考:Centos7部署 ...

  10. PAT(A) 1144 The Missing Number(C)统计

    题目链接:1144 The Missing Number (20 point(s)) Description Given N integers, you are supposed to find th ...