[ 物联网篇 ] 28 - Linux ES7210 Driver 调试

202 篇文章 28 订阅
订阅专栏


前言

项目开发过程中,由于Broadcom平台音频数字接口比较少,所以采用模拟麦克风作为输入端,经顺芯ES7210 ADC 转换送至Broadcom PCM 数字音频接口。

模拟麦克风
ES7210 ADC
CPU 主控 / PCM

提示:本文记录了调试ES7210 Driver 过程中的问题与收获。


一、ES7210 简介

在这里插入图片描述
ES7210 是一款高性能四通道音频ADC,支持I2S / PCM / TDM 模式,可支持多个ES7210级连模式。常用于智能音箱领域。

二、ES7210 Driver Porting

1. Broadcom 平台 集成 ES7210

ES7210 Driver 需要顺芯原厂提供,虽然Linux 先的音频框架是一样的,但是芯片内部会有一系列寄存器需要设置。

  • 将ES7210.c和ES7210.h复制到src/kernel/linux/v4.4/sound/soc/codecs/路径下
  • 修改src/kernel/linux/v4.4/sound/soc/codecs/Makefile,
#obj-$(CONFIG_SND_SOC_ES7243)   += es7243.o
obj-$(CONFIG_SND_SOC_ES7210)    += es7210.o

默认驱动ees7210.c中采用过的是I2C_detect方式注册,

如有需要用dts方式注册,请将ES7210_MATCH_DTS_EN赋值为1.

#define ES7210_MATCH_DTS_EN		1	
//ES7210 match method select: 0: i2c_detect, 1:of_device_id

2. Broadcom 平台定制化参数

/*  to set internal mclk and adclrclk ratio   */

#define RATIO_768  0xC3
#define RATIO_256  0xC1
#define RATIO_128  0x01
#define RATIO_64   0x41 /* mclk from bclk pin */

#define ES7210_MCLK_LRCK_RATIO   RATIO_128

Broadcom 平台 LRCK 默认是16KHz , 通过逻辑仪看到LRCK的频率为2.04MHz。故ES7210_MCLK_LRCK_RATIO 需要设置为RATIO_128

3. 排查 ES7210 无法正常工作

通过逻辑分析仪观察到波形,PCM In 一直没有数据,相当于ES7210 没有正常工作。

在这里插入图片描述
根据 调试笔记 — 使用ADC芯片ES7243遇到的问题 的分析,快速验证了I2C , 可以正常工作。

参考 数字音频接口
在这里插入图片描述
找到ES7210 Datasheet ,TDM参考设计。MCLK 需要连接
在这里插入图片描述

而Broadcom 中的ES7210 中的MCLK 是悬空的, 这个时候找顺芯FAE 咨询了下,MCLK 不能悬空,一般是LRCLK的256倍。如果没有MCLK,需要将BCLK短接到MCLK。

在这里插入图片描述
通过飞线将MCLK与BCLK连接在一起, 通过逻辑分析仪抓取波形,发现PCM Data 一直都是某个bit持续为高电平,其它为低电平。感觉ES7210 还是没有工作起来。跟顺芯FAE沟通了解. 驱动中不需要更改。

在这里插入图片描述
想起来之前,驱动代码中一旦使能 clk_prepare_enable(es7210->mclk),kernel 会立即发生崩溃。顺芯FAE 解释说 本身提供的是的RK 平台的驱动代码,针对博通平台,需要去掉该操作,只要主控能送出BCLK 就可以,其他不会有影响,代码只是使能MCLK

ssoc-audio soc-audio: ASoC: machine MapleTree should use snd_soc_register_card()
########### debug 1es7210_probe!
Unable to handle kernel paging request at virtual address fffffffe
pgd = c0014000
[fffffffe] *pgd=1fffd821, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.1.52 #8
Hardware name: Generic DT based system
task: df422c00 ti: df43a000 task.ti: df43a000
PC is at clk_prepare+0x14/0x2c
LR is at clk_prepare_lock+0x10/0xf8
pc : [<c02721b8>]    lr : [<c02710f8>]    psr: 60000113
sp : df43bdb0  ip : 00000000  fp : 00000000
r10: df4c4e20  r9 : df4c4c58  r8 : fffffffe
r7 : df4c4c00  r6 : df4c3d90  r5 : c07b6ca0  r4 : fffffffe
r3 : df422c00  r2 : 00000001  r1 : 00000000  r0 : 00000001
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c5387d  Table: 0001404a  DAC: 00000015
Process swapper/0 (pid: 1, stack limit = 0xdf43a210)
Stack: (0xdf43bdb0 to 0xdf43c000)
bda0:                                     df4c4c10 c02bb894 df4c4c10 df4c4c28
.....
[<c02721b8>] (clk_prepare) from [<c02bb894>] (es7210_probe+0x58/0x110)
[<c02bb894>] (es7210_probe) from [<c028d3bc>] (soc_probe_component+0x1f0/0x320)
[<c028d3bc>] (soc_probe_component) from [<c028ff7c>] (snd_soc_register_card+0x8b0/0xfc0)
[<c028ff7c>] (snd_soc_register_card) from [<c02186fc>] (platform_drv_probe+0x2c/0x60)
[<c02186fc>] (platform_drv_probe) from [<c02172a0>] (really_probe+0x190/0x290)
[<c02172a0>] (really_probe) from [<c0215a0c>] (bus_for_each_drv+0x60/0x94)
[<c0215a0c>] (bus_for_each_drv) from [<c0217108>] (device_attach+0x84/0x8c)
[<c0217108>] (device_attach) from [<c02167f8>] (bus_probe_device+0x84/0xa8)
[<c02167f8>] (bus_probe_device) from [<c0214b30>] (device_add+0x358/0x544)
[<c0214b30>] (device_add) from [<c02184c8>] (platform_device_add+0x110/0x220)
[<c02184c8>] (platform_device_add) from [<c05c3a6c>] (bcm63xx_audio_init+0x38/0x60)
[<c05c3a6c>] (bcm63xx_audio_init) from [<c001973c>] (do_one_initcall+0x8c/0x1d4)
[<c001973c>] (do_one_initcall) from [<c05a9dcc>] (kernel_init_freeable+0x148/0x1e8)
[<c05a9dcc>] (kernel_init_freeable) from [<c0446484>] (kernel_init+0x8/0xe8)
[<c0446484>] (kernel_init) from [<c001f4e8>] (ret_from_fork+0x14/0x2c)
Code: 012fff1e e92d4010 e1a04000 ebfffbcb (e5940000) 
---[ end trace 0daed059f560601b ]---
Kernel panic - not syncing: Fatal exception
CPU3: stopping
CPU: 3 PID: 0 Comm: swapper/3 Tainted: G      D         4.1.52 #8
Hardware name: Generic DT based system
[<c0026be0>] (unwind_backtrace) from [<c00229c8>] (show_stack+0x10/0x14)
[<c00229c8>] (show_stack) from [<c044a57c>] (dump_stack+0x8c/0xa0)
[<c044a57c>] (dump_stack) from [<c00253a4>] (handle_IPI+0x148/0x158)
[<c00253a4>] (handle_IPI) from [<c001941c>] (gic_handle_irq+0x5c/0x60)
[<c001941c>] (gic_handle_irq) from [<c00234c0>] (__irq_svc+0x40/0x74)
Exception stack(0xdf45ff88 to 0xdf45ffd0)
ff80:                   00000001 00000000 00000000 c002bd00 df45e000 c05dc4b0
ffa0: c0450704 00000000 df45ffd8 c05d7200 00000000 00000001 01000000 df45ffd0
ffc0: c00205f0 c00205f4 60000113 ffffffff
[<c00234c0>] (__irq_svc) from [<c00205f4>] (arch_cpu_idle+0x38/0x3c)
[<c00205f4>] (arch_cpu_idle) from [<c005ce60>] (cpu_startup_entry+0x15c/0x264)
[<c005ce60>] (cpu_startup_entry) from [<000194ac>] (0x194ac)                                         
CPU0: stopping                                                                                       
CPU: 0 PID: 0 Comm: swapper/0 Tainted: G      D         4.1.52 #8                                    
Hardware name: Generic DT based system                                                               
[<c0026be0>] (unwind_backtrace) from [<c00229c8>] (show_stack+0x10/0x14)
[<c00229c8>] (show_stack) from [<c044a57c>] (dump_stack+0x8c/0xa0)
[<c044a57c>] (dump_stack) from [<c00253a4>] (handle_IPI+0x148/0x158)
[<c00253a4>] (handle_IPI) from [<c001941c>] (gic_handle_irq+0x5c/0x60)
[<c001941c>] (gic_handle_irq) from [<c00234c0>] (__irq_svc+0x40/0x74)
Exception stack(0xc05dbf28 to 0xc05dbf70)
bf20:                   c05dbf70 00000018 312acb4c 00000000 dfbc9910 00000001
bf40: 3124e81c 00000000 312acb4c 00000000 c0602f54 c05d9200 14000000 c05dbf70
bf60: fffffff8 c0267dac 00000113 ffffffff
[<c00234c0>] (__irq_svc) from [<c0267dac>] (cpuidle_enter_state+0xd8/0x20c)
[<c0267dac>] (cpuidle_enter_state) from [<c005cf08>] (cpu_startup_entry+0x204/0x264)
[<c005cf08>] (cpu_startup_entry) from [<c05a9c78>] (start_kernel+0x3a8/0x3b4)
[<c05a9c78>] (start_kernel) from [<0001807c>] (0x1807c)
CPU2: stopping
CPU: 2 PID: 371 Comm: ubi_bgt0d Tainted: G      D         4.1.52 #8
Hardware name: Generic DT based system
[<c0026be0>] (unwind_backtrace) from [<c00229c8>] (show_stack+0x10/0x14)
[<c00229c8>] (show_stack) from [<c044a57c>] (dump_stack+0x8c/0xa0)
[<c044a57c>] (dump_stack) from [<c00253a4>] (handle_IPI+0x148/0x158)
[<c00253a4>] (handle_IPI) from [<c001941c>] (gic_handle_irq+0x5c/0x60)
[<c001941c>] (gic_handle_irq) from [<c00234c0>] (__irq_svc+0x40/0x74)
Exception stack(0xd965fe20 to 0xd965fe68)
fe20: c07aeafc 80000193 00000001 20000113 dfbc3f08 00000005 00000035 c07906b8
fe40: 00000000 00000006 00000000 00000100 00000002 d965fe68 c0061710 c0062310
fe60: 60000113 ffffffff
[<c00234c0>] (__irq_svc) from [<c0062310>] (console_unlock+0x33c/0x4f8)
[<c0062310>] (console_unlock) from [<c0062814>] (vprintk_emit+0x348/0x5a0)
[<c0062814>] (vprintk_emit) from [<c0062b8c>] (vprintk_default+0x20/0x28)
[<c0062b8c>] (vprintk_default) from [<c0448810>] (printk+0x6c/0x7c)
[<c0448810>] (printk) from [<c02495c4>] (ubi_thread+0x40/0x174)
[<c02495c4>] (ubi_thread) from [<c0046da8>] (kthread+0xdc/0xf4)
[<c0046da8>] (kthread) from [<c001f4e8>] (ret_from_fork+0x14/0x2c)
Rebooting in 5 seconds..

然后查看原理图,发现有MIC_EN引脚,连接的是ES7210中断引脚,咨询TP硬件之后,发现这个脚目前是悬空状态,因此排除中断引脚的问题。
在这里插入图片描述
发现该排查的问题已经排查完成,先和FAE沟通,看还有哪些忽略的点,FAE说打开调试信息,查看Reg的值,沟通之后,了解方法之后,查看代码。通过应用层操作可以看出全部寄存器的数值。

1721 static struct attribute_group es7210_debug_attr_group = {
1722         .name   = "es7210_debug",
1723         .attrs  = es7210_debug_attrs,
1724 };
static DEVICE_ATTR(es7210, 0644, es7210_show, es7210_store);

06 static ssize_t es7210_show(struct device *dev, struct device_attribute *attr, char *buf)
1707 {
1708         printk("echo flag|reg|val > es7210\n");
1709         printk("eg read star address=0x06,count 0x10:echo 0610 >es7210\n");
1710         printk("eg write star address=0x90,value=0x3c,count=4:echo 4903c >es7210\n");
1711         return 0;
1712 }


/由于echo flag打印的寄存器不全,需要用 echo 0x47可以打印出全部寄存器


echo 0x4f > /sys/devices/platform/ubus@ff800000/ff802100.i2c/i2c-0/0-0040/es7210_debug/es7210

Read: start REG:0x00,count:0x4f
REG[0x00]: 0x41;  REG[0x01]: 0x20;  REG[0x02]: 0xc3;  REG[0x03]: 0x04;  
REG[0x04]: 0x01;  REG[0x05]: 0x00;  REG[0x06]: 0x00;  REG[0x07]: 0x20;  
REG[0x08]: 0x20;  REG[0x09]: 0x30;  REG[0x0a]: 0x30;  REG[0x0b]: 0x02;  
REG[0x0c]: 0x00;  REG[0x0d]: 0x09;  REG[0x0e]: 0xff;  REG[0x0f]: 0xff;  
REG[0x10]: 0x00;  REG[0x11]: 0x63;  REG[0x12]: 0x07;  REG[0x13]: 0x00;  
REG[0x14]: 0x03;  REG[0x15]: 0x03;  REG[0x16]: 0x00;  REG[0x17]: 0x00;  
REG[0x18]: 0xf7;  REG[0x19]: 0xf7;  REG[0x1a]: 0x00;  REG[0x1b]: 0xbf;  
REG[0x1c]: 0xbf;  REG[0x1d]: 0xbf;  REG[0x1e]: 0xbf;  REG[0x1f]: 0xff;  
REG[0x20]: 0x0a;  REG[0x21]: 0x2a;  REG[0x22]: 0x0a;  REG[0x23]: 0x2a;  
REG[0x24]: 0x11;  REG[0x25]: 0xff;  REG[0x26]: 0xff;  REG[0x27]: 0x0a;  
REG[0x28]: 0xff;  REG[0x29]: 0xff;  REG[0x2a]: 0xff;  REG[0x2b]: 0x2a;  
REG[0x2c]: 0xff;  REG[0x2d]: 0xff;  REG[0x2e]: 0xff;  REG[0x2f]: 0x2a;  
REG[0x30]: 0xff;  REG[0x31]: 0xff;  REG[0x32]: 0xff;  REG[0x33]: 0x2a;  
REG[0x34]: 0xff;  REG[0x35]: 0xff;  REG[0x36]: 0xff;  REG[0x37]: 0x2a;  
REG[0x38]: 0xff;  REG[0x39]: 0xff;  REG[0x3a]: 0xff;  REG[0x3b]: 0xff;  
REG[0x3c]: 0xff;  REG[0x3d]: 0x72;  REG[0x3e]: 0x10;  REG[0x3f]: 0x01;  
REG[0x40]: 0x42;  REG[0x41]: 0x70;  REG[0x42]: 0x70;  REG[0x43]: 0x1c;  
REG[0x44]: 0x1c;  REG[0x45]: 0x1c;  REG[0x46]: 0x1c;  REG[0x47]: 0x08;  
REG[0x48]: 0x08;  REG[0x49]: 0x08;  REG[0x4a]: 0x08;  REG[0x4b]: 0x00;  
REG[0x4c]: 0x00;  REG[0x4d]: 0xff;  REG[0x4e]: 0xff; 

根据寄存器的值判断ES7210的工作状态,这个时候想到确实应该这样操作,FAE确实从其中发现了问题:

通过寄存器0x14和0x15发现处于Mute状态。

同时0x02寄存器值不对,没匹配到没有mclk的值。这才真正的问题所在,这个时候思考为什么会导致这样的情况发生?

FAE推测到 说明没执行到es7210_pcm_startup()或者录音没有跑这个7210的声卡。这个时候最终明白问题所在了。

目前ES7210只走初始化流程,并不走es7210_pcm_startup() 这个时候明白了问题所在。

在这里插入图片描述

当初最初设计的方案 :

● ES7210 只需要走初始化流程,不需要完全对接Alsa的应用层,因为ES7210 SOC 是被动的,最终是Broadcom SOC PCM 接口去ES7210 获取数据的。
● Broadcom SOC 不需要通过Alsa 应用层,可以先通过bhDsphal.c应用程序调试看PCM是否又音频数据。

而ES7210中是对接的Alsa Lib接口,当通过arecord 录音的时候,Alsa Driver 是需要调用
es7210_pcm_startup(),而该函数的功能是启动延迟队列,执行 umute 操作。

通过这样的分析,解释了为什么ES7210 没数据的问题,主要是驱动初始化执行了mute操作,当arecoed的时候执行umut操作。而BCM6755 PCM 并没有走Alsa流程,导致一直处于mute状态。

 831 static struct snd_soc_dai_ops es7210_ops = {
 832         .startup = es7210_pcm_startup,
 833         .hw_params = es7210_pcm_hw_params,
 834         .set_fmt = es7210_set_dai_fmt,
 835         .set_sysclk = es7210_set_dai_sysclk,
 836         .digital_mute = es7210_mute,
 837 };
 
 
static int es7210_pcm_startup(struct snd_pcm_substream *substream,struct snd_soc_dai *dai)
{
    struct snd_soc_codec *codec = dai->codec;
    struct es7210_priv *es7210 =                        snd_soc_codec_get_drvdata(codec);
    if (es7210_init_reg == 0) {
        schedule_delayed_work(&es7210->pcm_pop_work, msecs_to_jiffies(100));
    }
        return 0;
}
// 延迟队列执行函数
 747 static void pcm_pop_work_events(struct work_struct *work)
 748 {
 749         printk("enter into %s\n", __func__);
 750         es7210_unmute();
 751         es7210_init_reg = 1;
 752 }

4. ES7210 Gain Channels Adjust

// 由于echo flag打印的寄存器不全,需要用 echo 0x47可以打印出全部寄存器
echo 0x4f > /sys/devices/platform/ubus@ff800000/ff802100.i2c/i2c-0/
0-0040/es7210_debug/es7210
//寄存器列表如下图 

在这里插入图片描述

//需要调整ES7210 通道的GAIN数值

#define ES7210_MIC1_GAIN_REG43		0x43
#define ES7210_MIC2_GAIN_REG44		0x44
#define ES7210_MIC3_GAIN_REG45		0x45
#define ES7210_MIC4_GAIN_REG46		0x46

#define ES7210_MIC_GAIN 0x1c  // need check hw design and channel
#define ES7210_AEC_GAIN 0x13  // need check hw design and channel

es7210_write(ES7210_MIC1_GAIN_REG43, ES7210_MIC_GAIN, i2c_clt1[i]);
es7210_write(ES7210_MIC2_GAIN_REG44, ES7210_MIC_GAIN, i2c_clt1[i]);
es7210_write(ES7210_MIC3_GAIN_REG45, ES7210_MIC_GAIN, i2c_clt1[i]);
es7210_write(ES7210_MIC4_GAIN_REG46, ES7210_MIC_GAIN, i2c_clt1[i]);

// 根据寄存器可以分析出,增益值现在为34.5dB, 根据算法的要求,麦克风的录音数据应该是不需要添加任何增益的,需要改为0
i2cset -f -y 0 0x40 0x43 0x10
i2cset -f -y 0 0x40 0x44 0x10
i2cset -f -y 0 0x40 0x45 0x10
i2cset -f -y 0 0x40 0x46 0x10

在这里插入图片描述


总结

调试ES7210 Driver 前后花费了一周的时间,过程中遇到的很多问题,所以每次交付的时间都Delay。主要这个Broadcom平台对接的是TDM接口以及走的ALSA 接口有区别,很多东西不是很熟悉,解决问题过程中需要去弄明白才能快速的解决问题。

六、MT8168/MT8175 音频驱动之TDM(ES7210
Joon2020的博客
08-10 1795
本章主要介绍MT8175(MT8168)平台ES7210驱动移植方法。通过本章学习,可以了解到TDM接口配置方法,ES7210驱动移植方法,tinymix调试方法。使用tinycap进行录音测试。
【MTK】ES7210、ES7243E Driver调试
Healer
07-06 2168
调试ES7210、ES7243E Driver花了很长一段时间,主要时间还是花费在I2S这块,第一次调试调试了一两天才知道接出来的I2S 不支持输入,后面飞线又改板才使用正确的I2S, 在MCLK这里有卡住了,最终还是寻求MTK才解决MCLK不出来的问题,主要还是因为很少调试I2S设备,基本都是LCD/TP/Camer/Sensor的调试,还有很多细节就没有写了,具体还是根据自身的调试情况来处理。通过代码重新复位初始化就正常了。如果录制出来的的文件内容都是全0的文件,就得排查,I2S的信号是否正常。
关于ES7210-TDM级联模式的简介-NxFs
06-16
音频硬件,TDM级联,NxFs,多麦克风链路设计
ES7210调试手册
12-24
7210高性能ADC-4通道ADC采集,高信噪比,对比TI-ADC3101.
ES7210使用TDM模式(基于ESP32-S3-BOX、ESP-IDF)
qq_40773212的博客
08-25 1852
目录0.概述1.硬件连接2.驱动配置2.1 ESP-BOX主机I2S配置2.2 ES7210从机寄存器配置3.应用层 0.概述 es7210有两个手册,一个是datasheet,一个是user guide. 比较难啃,很多单词缩写直接扔上来,只能靠着上下文勉强猜一猜…… 1.硬件连接 在datasheet中,官方给出了参考设计,其中IIC负责配置,IIS负责音频传输。 这里的IIS是接了两根数据线SDOUT1和SDOUT2,MIC0、MIC1从SDOUT1输出,MIC2、MIC3从SDOUT2输出。如果要
ES7210四通道ADC芯片电路PCB-LAYOUT注意
CJC8988WM8988的博客
03-26 2484
7210高性能ADC-4通道ADC采集,高信噪比,对比TI-ADC3101. ES7210调试手册 提供IIS音频CODEC的电路原理图和代码 ES8323S完全替换ES8323 audio芯片 RK3288主板上面ES8323S完全pin对PIN兼容ES8323,驱动程序不需要更改。 ES7210是一颗4路ADC(MIC)音频模数转换IC ES7243是一颗2路ADC(MIC)音频模数转换IC...
ES7210 高性能四通道音频ADC
MyLovelyJay的博客
04-08 2196
ES7210是一款用于麦克风阵列应用的高性能、低功耗 4 通道音频模数转换器,同时具备声学回声消除 (AEC) 功能,非常适合音乐和语音应用。 ​
苏州顺芯ES72104路ADC音频模数转换芯片
weixin_59145105的博客
08-09 2962
ES7210是一颗4路ADC(MIC)音频模数转换IC 类似NAU85L40,AC108,TVL320ADC3101*应用与人工智能AI 麦克风矩阵应用,多麦克应用。 •高性能多位 delta-sigma 音频 ADC •102 db 信噪比•-85 db thd + n •24位,8至100 khz 采样频率 • i2s / pcm 主 / 从串行数据端口 •支持 tdm •256 / 384fs,usb 12 / 24 mhz 和其他非标准音频系统时钟 •低功耗待机模式 产品应用 •麦克风阵列 •智能扬
【RK3399】Android平台增加一款声卡设备(ES7210+ES8156),进行录音/播放测试。
rentong123的博客
09-15 1万+
文章目录前言一、开发环境二、概述三、硬件介绍1、ES72102、ES81563、数字麦克风阵列4、音频示意图四、下载SDK五、编译、烧写1、u-boot2、kernel3、Android SDK4、烧写分区5、烧写固件六、声卡驱动1、添加codec代码2、修改Kconfig3、修改Makefile4、修改rockchip_defconfig5、修改DTS七、声卡调试1、查看声卡注册信息2、使用tinycap/tinyplay录音和放音3、使用示波器观测八、修改HAL层1、修改默认capture/playba
物联网成熟产品-USB无线模块,用于调试NRF24L01模块-电路方案
04-21
这样一款可以插到电脑上的USB无线模块,用于调试NRF24L01的通信非常方便。可以用在无线收发数据方面,作为接收端或者发送端,用在物联网等方面。 实现的功能 1.可以作为电脑端的无线数据接收器或者发送器。 2.板子用STC15W404AS作为主控芯片,简单易用,易学易懂。 3.无线通信芯片采用SI24R1,兼容NRF24L01+,唯一的不同点就是SI24R1通信距离要比NRF24L01+远一些,这也是采用SI24R1的原因。NRF24L01+和SI24R1之间也可以互相通信。 4.板子一键下载,插好USB口,打开STC下载软件,选好程序,点击下载,然后按一下板子上的按键,就下载完毕了。 项目完全开源,提供原理图和PCB源文件已经单片机程序
5G物联网及NB-IoT技术详解(pdf).zip
12-13
5G物联网及NB-IoT技术详解(pdf).zip
ES7210 规格书,包含寄存器和原理
最新发布
03-05
ES7210 规格书,包含寄存器和原理
ES7210ConfidentialDS.pdf
02-07
FEATURES • High performance multi-bit delta-sigma audio ADC • 102 dB signal to noise ratio • -85 dB THD+N • 24-bit, 8 to 200 kHz sampling frequency • I 2 S/PCM master or slave serial data port • Support TDM • 256/384Fs, USB 12/24 MHz and other non standard audio system clocks • Low power standby mode
5G物联网及NB-IoT技术详解.pdf
04-12
5G物联网及NB-IoT技术详解.pdf
集客业务支撑-物联网-通用-L1-认证考试题目.xlsx
12-14
集客业务支撑-物联网-通用-L1-认证考试题目.xlsx
基于ARM-LINUX平台的物联网服务器设计-论文
05-19
基于ARM-LINUX平台的物联网服务器设计
顺芯ES7241ES7210 ES7242 高性能立体声单路音频ADC 24Bit 85dB 200kHZ音频
CJC8988WM8988的博客
03-01 3298
ES7241 高性能立体声单路音频ADC 24Bit 85dB 200kHZ音频 特征 •高性能多位delta-sigma音频ADC •100 dB信噪比 •-85 dB THD + N •3 Vpp模拟输入 •24位,8到200 kHz采样频率 •I2S / LJ主或从串行数据端口 •256 / 384F和其他非标准音频系统时钟 •低功耗待机模式 •封装QFN16 应用 •Soundbar •音...
嵌入式端音频开发(基础)之2021-2022年国内主流语音识别芯片科普(1)
热门推荐
心跳包的博客
12-11 1万+
前言 随着造芯技术越来越精密,AIOT在时代的步伐中不断迈进,语音识别芯片我作为AIOT的入口选择,其地位在智能硬件中变的越来越重要。国内各个语音头部公司、专业的音频/语音公司,不断的出现在造芯这个赛道上。下面就为大家科普下当前市面主要流行的一些语音识别芯片。以下排名不分先后。 1.云知声蜂鸟 具体资料可以去云知声UniOS平台查看。 芯片简介 蜂鸟芯片(US526U5/US527U5 )(是云知声最新一代专门为离在线远场语音交互场景设计的高性能,高集成度, 低成本的智能语...
物联网LoRa系列-
07-27
物联网LoRa系列是指基于LoRa技术的物联网设备和应用。LoRa是一种低功耗、远距离的无线通信技术,适用于物联网应用中的长距离传输和低功耗需求。LoRa系列产品包括LoRa传感器节点、LoRa网关和LoRa网络服务器等。LoRa传感器节点通过感知层采集环境数据,并将其转换为数字信号,然后通过LoRa无线通信传输到LoRa网关。LoRa网关将数据转发到LoRa网络服务器,最终由应用层进行数据分析和处理。LoRa系列产品可以应用于各种物联网场景,如城市交通情况分析与预测、城市资产状态监控与分析、环境状态监控与预警、健康状况监测与医疗方案建议等。\[1\]\[2\]在未来的5G物联网时代,5G技术的高带宽、低延时、大容量和低功耗特性将进一步推动物联网的发展,而LoRa技术作为一种低功耗、长距离的无线通信技术,将继续在物联网中发挥重要作用。\[3\] #### 引用[.reference_title] - *1* *2* *3* [物联网LoRa系列-1:物联网系统分层架构](https://blog.csdn.net/HiWangWenBing/article/details/107570137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 团队效率工具: 代码格式化之Clang-format 32411
  • Linux下进程间通讯方式 - UNIX Domain Socket 23375
  • shell解析json字符串 17869
  • GitBlit服务器团队协作方式 16920
  • lua解析json 15288

分类专栏

  • 【Linux 音频系统编程】 19篇
  • 【工作项目积累】 202篇
  • 【好用效率工具】 43篇
  • 【职业复盘笔记】 14篇

最新评论

  • [ Linux Audio 篇 ] 音频开发入门基础知识

    程序手艺人: 可以的,这个一直有效

  • [ Linux Audio 篇 ] 音频开发入门基础知识

    GTKY: 博主,你之前那个嵌入式音频交流群还能加不? 另外,有个问题想请教一下,音频算法的相关开发能自学吗

  • [ 利器篇 ] - Thinkpad L14 系列安装 Ubuntu 20.04 系统

    程序手艺人: Sorry

  • [ 利器篇 ] - Thinkpad L14 系列安装 Ubuntu 20.04 系统

    2401_82585268: 勾丝一样

  • 【开篇】如何转行成为一名嵌入式音频工程师?

    weixin_42920984: 如何加群 拉我下

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ Linux Audio 篇 ] 音频软件 Audacity 指导手册
  • [ Linux Audio 篇 ] Linux Audio 子系统资料集锦
2023年3篇
2022年7篇
2021年18篇
2020年41篇
2019年45篇
2018年102篇
2017年45篇
2016年4篇
2015年1篇
2014年9篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序手艺人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司日照网站设计模板公司遵义SEO按效果付费公司嘉兴网站推广系统推荐通化百姓网标王报价临夏百度爱采购多少钱洛阳百度竞价包年推广价格木棉湾网站建设哪家好武威关键词按天收费哪家好上饶关键词按天计费价格三亚网站推广工具哪家好揭阳网站推广方案价格自贡网站优化按天计费公司合肥网站设计价格北海百度竞价报价衡阳模板推广公司铜陵关键词排名推荐自贡百度网站优化报价益阳英文网站建设多少钱安康企业网站设计价格福永百姓网标王推广沙井网站改版公司黑河网络广告推广报价吴忠品牌网站设计哪家好邯郸SEO按天收费报价黔南网站建设设计价格南平网站优化按天收费公司长沙建设网站多少钱百色网站设计哪家好安顺网站优化按天计费萍乡百度关键词包年推广价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化