深圳市泰子电子有限公司
深圳市泰子电子有限公司 入驻平台 第12
  • 资质核验已核验企业营业执照
  • 真实性核验企业已实名认证
  • 资质核验已核验企业营业执照
  • 真实性核验企业已实名认证
当前位置:
首页>
供应产品>
音频 功放 类>
供应供应wolfson(欧盛微)代理商供应WM9713 WM9715 WM9714 WM8501

供应供应wolfson(欧盛微)代理商供应WM9713 WM9715 WM9714 WM8501

价    格

订货量

  • 面议 价格为商家提供的参考价,请通过"获取最低报价"
    获得您最满意的心理价位~

    不限

胡先生
邮箱已验证
手机已验证
微信已验证
𐁡𐁢𐁣 𐁤𐁥𐁥𐁣 𐁦𐁧𐁢𐁦 𐁨𐁤𐁥𐁥𐁩𐁪𐁪𐁢𐁨𐁫𐁡𐁥𐁤
微信在线
  • 发货地:广东 深圳
  • 发货期限:3天内发货
  • 供货总量: 6930000片
深圳市泰子电子有限公司 入驻平台 第12
  • 资质核验已核验企业营业执照
  • 真实性核验企业已实名认证
  • 胡先生
    邮箱已验证
    手机已验证
    微信已验证
  • 𐁡𐁢𐁣 𐁤𐁥𐁥𐁣 𐁦𐁧𐁢𐁦
  • 广东 深圳
  • 音频 视频,音响安防车载,照明 充电器,内存 闪存

联系方式

  • 联系人:
    胡先生
  • 职   位:
    销售经理
  • 电   话:
    𐁨𐁤𐁥𐁥𐁩𐁪𐁪𐁢𐁨𐁫𐁡𐁥𐁤
  • 手   机:
    𐁡𐁢𐁣𐁤𐁥𐁥𐁣𐁦𐁧𐁢𐁦
  • 地   址:
    广东 深圳 宝安区 宝安区西乡西城丰和大厦A-7A
品牌:wolfson型号:WM9713功率:50
电源电压:60电源电流:5

供应供应wolfson(欧盛微)代理商供应WM9713 WM9715 WM9714 WM8501详细介绍


 

上层使用amixer命令设置声卡,首先可以使用amixer contents 命令查看可供设置的选项,包括当前设置的值,通过amixer cset 命令修改设置。使用amixer命令设置声卡,用户可以直观的看到当前设置的功能,而不需要了解底层修改了哪些寄存器。

 

一、上层使用的amixer命令

amixer命令示例如下:

amixer cset iface='MIXER',name='Mic A Source' 2 'Mic 2 B'

amixer cset iface='MIXER',name='Mic Sel' 2

amixer cset iface='MIXER',name='MPA Volume Control' 3

amixer.c文件的cset函数说明了该函数的使用方法。

流程图如下:

 

二、kernel层寄存器设置

         在Kernel层定义了供amixer命令设置的内容。Kernel层寄存器设置分多种类型。

         Wm9713设备初始化函数wm9713_soc_probe中包含

                   wm9713_add_controls(codec);

                   wm9713_add_widgets(codec);

控制接口control对于许多开关(switch)和调节器(slider)而言应用相当广泛,它能从用户空间被存取。control的最主要用途是mixer,所有的mixer 元素基于control 内核API 实现,在ALSA 中,control 用snd_kcontrol结构体描述。

创建一个control,调用snd_ctl_add()和snd_ctl_new1()这两个函数来完成,这两个函数的原型为:

int snd_ctl_add(struct snd_card *card, struct snd_kcontrol *kcontrol);

 

struct snd_kcontrol *snd_ctl_new1(const struct snd_kcontrol_new *ncontrol,

void *private_data);

snd_ctl_new1()函数用于创建一个snd_kcontrol 并返回其指针,snd_ctl_add()函数用于将创建的snd_kcontrol 添加到对应的card 中。

wm9713创建一个control控制各通道静音开关和音量大小。

结构体snd_soc_dapm_widget中包含一个snd_kcontrol_new参数,当该参数的定义不为空时,其配置方法与control类似;当该参数定义为空时(暂时没有找到配置方法)。

创建一个新的control 至少需要实现snd_kcontrol_new 中的info()、get()和put()这3 个成员函数。数组wm9713_snd_ac97_controls[]内容单值元素SOC_SINGLE()和SOC_DOUBLE()的info()、get()、put()成员函数分别为:snd_soc_info_volsw ()、snd_soc_get_volsw ()和snd_soc_put_volsw ();(我还没弄清楚SOC_SINGLE()与SOC_DOUBLE()的区别。)

#define SOC_SINGLE(xname, reg, shift, max, invert) /

{   .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, /

    .info = snd_soc_info_volsw, .get = snd_soc_get_volsw,/

    .put = snd_soc_put_volsw, /

    .private_value =  SOC_SINGLE_VALUE(reg, shift, max, invert) }

 

#define SOC_DOUBLE(xname, xreg, shift_left, shift_right, xmax, xinvert) /

{   .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),/

    .info = snd_soc_info_volsw, .get = snd_soc_get_volsw, /

    .put = snd_soc_put_volsw, /

    .private_value = (unsigned long)&(struct soc_mixer_control) /

        {.reg = xreg, .shift = shift_left, .rshift = shift_right, /

         .max = xmax, .invert = xinvert} }

枚举元素SOC_ENUM()的info()、get()、put()成员函数分别为snd_soc_info_enum_double ()、snd_soc_get_enum_double ()和snd_soc_put_enum_double ()。

#define SOC_ENUM(xname, xenum) /

{   .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname,/

    .info = snd_soc_info_enum_double, /

    .get = snd_soc_get_enum_double, .put = snd_soc_put_enum_double, /

    .private_value = (unsigned long)&xenum }

(1) iface 字段定义了control 的类型,形式为SNDRV_CTL_ELEM_IFACE_XXX,通常是MIXER,对于不属于mixer的全局控制,使用CARD。如果关联于某类设备,则使用HWDEP、 PCM、RAWMIDI、TIMER 或SEQUENCER。

(2) name 是名称标识字符串,control 的名称非常重要,因为control 的作用由名称来区分。对于名称相同的control,则使用index 区分。name 定义的标准是“SOURCE DIRECTION FUNCTION”即“源、方向、功能”:

SOURCE 定义了control 的源,如“Master”、“PCM”、“CD”和“Line”等

DIRECTION方向则为“Playback”、“Capture”、“Bypass Playback”或“Bypass Capture”,如果方向省略,意味着playback 和capture双向。

FUNCTION可以是“Switch”、“Volume”和“Route”等

iface 和 name 可以通过上层输入amixer命令获取,如下:

# # amixer controls

 

numid=100,iface=CARD,name='BB'

numid=30,iface=MIXER,name='Headphone Playback ZC Switch'

numid=6,iface=MIXER,name='PCM Playback Volume'

(3) info()函数用于获得该control 的详细信息,该函数必须填充传递给它的***个参数。

(4) get()函数用于得到control 的目前值并返回用户空间。

(5) put()函数用于从用户空间写入值,如果值被改变,该函数返回1,否则返回0;如果发生错误,该函数返回错误码。

get()和put()的***个参数的类型为snd_ctl_elem_value。snd_ctl_elem_value结构体的内部也包含一个由integer、integer64、enumerated 等组成的值联合体,它的具体类型依赖于control 的类型和info()函数。

对于get()和put()函数而言,如果control 有多于一个元素,即count>1,则每个元素都需要被返回或写入。在使用amixer命令配置声卡时都会调用到get()和put()函数。get()和put()函数中讲判断设置值与原有值,判断是否配置寄存器。


免责声明:
本页面所展现的公司信息、产品信息及其他相关信息,均来源于其对应的商铺,信息的真实性、准确性和合法性由该信息来源商铺的所属发布者完全负责,供应商网对此不承担任何保证责任。
友情提醒:
建议您在购买相关产品前务必确认供应商资质及产品质量,过低的价格有可能是虚假信息,请谨慎对待,谨防欺诈行为。
 
建议您在搜索产品时,优先选择带有标识的会员,该为供应商网VIP会员标识,信誉度更高。

版权所有 供应商网(www.gys.cn)

京ICP备2023035610号-2

深圳市泰子电子有限公司 手机:𐁡𐁢𐁣𐁤𐁥𐁥𐁣𐁦𐁧𐁢𐁦 电话:𐁨𐁤𐁥𐁥𐁩𐁪𐁪𐁢𐁨𐁫𐁡𐁥𐁤 地址:广东 深圳 宝安区 宝安区西乡西城丰和大厦A-7A