自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 BES-----------串口(LOG口)输入调试方法

在这个结构体中数组中增加串口指令和串口回调处理函数, 并实现回调函数。在app_tws_ibrt_ui_test.h文件中。

2024-01-23 19:33:12 417

转载 ANC 音乐补偿

举个例子,FB 的降噪效果在 200Hz 降噪深度是 15 dB ,那也就是说播放音乐在 200Hz 会被干掉 15dB,这时候音质就变得很差了,所以我们就必须想办法让音乐这部分的 15dB 不被干掉,只是干掉噪音,这时候就需要音乐补偿了。音乐补偿到底是怎么处理呢,参照上图逻辑,基本逻辑也比较简单,那就是既然反馈降噪不管是噪音还是音乐都会干掉,那我们能不能这样,先将你要干预点的频点对应的先提升,也就是说反馈降噪要在 200Hz 降低 15dB ,我在 200Hz 先提高 15 dB,这时候有。

2024-01-23 14:03:32 81

转载 FB MIC降噪原理

同样 FB 的降噪设计的基本原理也是需要产生一个大小相同,相位相反的信号,刚好抵消进入到耳机里面的噪音,但是与 FF 不同,FF 降噪是从耳机外面获取到的噪音信号,FB 降噪是耳机里面获取的噪音信号,获取到的噪音信号被耳机的外壳挡了一部分的了。我们来看一下这几个值是怎么理解的,A1 进入耳机内得杂音大小,也就是我们需要消灭的信号的大小,A4 是经过麦克风采集信号,再到降噪处理再到喇叭播放一系列操作之后最后由喇叭输出来的信号大小,那么按照降噪最基本的原理,产生一个大小相同,相位相反的信号,就有。

2024-01-23 13:59:01 152

转载 FF MIC降噪原理

先简单说一下 FF 降噪设计的原理,我们知道,ANC 的基本原理是由喇叭产生一个大小相同,相位相反的信号,刚好抵消进入到耳机里面的噪音。 那么这个大小相同,相位相反的信号怎么设计出来的呢,先看下面图 A1 是进入到耳机的幅频特性,幅度单位为分贝,后面提到的其它幅度同样为分贝φ1 是进入到耳机的相位特性A2 是麦克风采集到的噪音幅频特性φ2 是麦克风的相位特性A3 降噪模块传递函数的幅频特性,就是我们要设计的部分φ3 降噪模块传递函数的幅频特性A4 由喇叭到人耳朵的幅频特性,这部分包括喇叭特性,腔体设计,泄

2024-01-23 13:53:44 219

转载 ENC原理介绍

双麦环境降噪则是通过双麦克风阵列,精准计算通话者说话的方位,在保护目标语音的同时,滤除环境中的各种干扰噪声。若为语音段(即上行通话),则根据参考麦克风采集到的环境噪声和语音麦克风的语音数据,预估环境噪声,并计算相应的噪声抑制参数,最终由滤波器模块滤出环境噪声;但笔者目前接触过一款单麦的ENC降噪耳机降噪效果非常可以,做法是将mic和喇叭放在一起,mic收音原理是通过耳腔空气振动,从而避免了外界环境噪音的影响。ENC 的降噪部分重在降低有规律的稳态噪声,或根据多麦拾取到效果的相关运算除噪声。

2024-01-23 13:46:28 142

原创 ARM常用的汇编指令

ARM属于RSIC指令集,不能自己对内存里的数据进行直接操作, 只能通过Load/Store的指令来实现, 所以当我们要对内存中的数据进行操作时, 先要将内存中的数据加载到寄存器中, 然后在寄存器中对数据进行处理,最后将结果重新存储在内存中。为了能在C程序中内嵌汇编代码,不同的编译器基于ANSI C标准扩展了不同的关键字,使用的汇编格式可能也可能不太一样,如GUN ARM编译器提供了一个__asm__ 关键字,它的使用方法如下.SUB {cond} {S} Rd, Rn, operand2;

2024-01-22 15:56:15 1466

原创 BES--------------让蓝牙进入SW-TEST模式

BES常用的SW- BOOSMODE测试模式主要有单线升级模式和DUT模式.单线升级模式主要用于单线POGOPIN更新耳机代码。BES代码重启后会进入BOOT程序进行升级。DUT模式.主要用于产线信号强度测试。BES代码重启后会进入。进入DUT模式的程序。

2023-11-13 14:19:28 46

原创 BES------电源模块

3.在APP线程中添加BATTERY_MODUAL模块的处理函数. 然后电压采集结束后,会给APP线程发一个app_battery的处理邮件,并进行电压处理.1.struct APP_BATTERY_MEASURE_T结构体的数据进行初始化.在app_init()的初始化函数中, 电源管理模块初始化后会启动 开启定时器。在app_init()的初始化函数中, 会打开电源管理模块初始化函数。app_battery_open()中主要对。采集完成后会有adc中断, 给线程发送邮箱。

2023-11-02 16:59:44 20

原创 BES------内部FLASH的读写

如果变量少, 可以定义在nvrecord_env_t结构体下申请自己的变量, 这个结构体会在关机前自动存如FLASH, 并在开机app_init()中自动从FLASH取出.在link_sym_armclang.h文件中,定义相关的宏 说明__uiflash_start和__uiflash_end的尾地址。在LINK文件下. 打开tail_section_lds.s文件, 在尾部增加。在npiflash_api.h文件中的枚举中添加自己的FLASH名字。

2023-10-31 20:06:49 30

原创 BES-----------软件IIC的使用

调用hal_gpio_i2c_open(&i2c_cfg ), 将配置注册进蓝牙芯片, 其实就是做SCL, SDA两个GPIO的初始化。,不允许有电平跳变,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。SCL保持高电平,SDA由高电平变为低电平后,延时(>4.7us),SCL变为低电平。SDA由低电平变为高电平。我们可以看着图中的信号,进行软件编写。我们可以看着图中的信号,进行软件编写。IIC信号在数据传输过程中,当。创建一个IIC软件配置结构体。PS 在应用层包裹一下。

2023-10-27 12:01:27 43

原创 BES------------GPIO的使用

【代码】BES------------GPIO的使用。

2023-10-25 22:00:53 61

原创 BES------------软件定时器的使用

BES------------软件定时器的使用。

2023-10-25 20:49:39 23

原创 BES------------机盒通讯代码解析

串口的TX模式由UI设置, 可以通过调用communication_send_buf函数, 将发送的BUF数据装进malloc的cmd_blk->cmd_buf中, 生成COMMUNICATION_MSG_TX_REQ消息. , 通过处理COMMUNICATION_MSG_TX_REQ消息将机盒数据发给充电盒, DMA发送完成后会生成COMMUNICATION_MSG_TX_DONE消息.串口的RX模式由UI设置, 可以通过调用uart_rx_edge_detect_handler,将串口设置成RX模式。

2023-10-25 18:25:24 37

原创 RT - thread学习(四)邮箱

邮箱在rtthread操作系统中是一种常用的IPC通信方式, 邮箱可以在线程与线程之间,中断与线程之间进行消息的传递,特点是开销比较低,效率较高。邮箱中的每一封邮件只能容纳固定的 4 字节内容(针对 32 位处理系统,指针的大小即为 4 个字节,所以一封邮件恰好能够容纳一个指针, 即可以容纳一个处理函数指针).以下是我对邮箱的一些简单见解发送邮箱是将每个事件触发时暂不处理, 放在某个线程同一处理. 便于可以将事件触发函数和事件处理函数分开.

2023-04-11 17:15:00 1849

原创 RT - thread学习(三) 内核解析

链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构。简单的说就是ps.在每个数据元素中放入下一个存储数据元素的地址即可。这样即构成了最简单的链表-单向链表结构。这里拿我们熟悉的数组和链表做个比较,方便理解链表是怎么存区数据的。数组是一段连续的地址空间且数组中的每个元素大小是相等的。编译器只要知道数组中其中一个元素地址就能算出其他元素的地址。所以写程序时访问数组中每个元素特别方便,通过下标迅速就可以访问数组中任何元素。

2023-03-07 16:34:38 329

转载 C语言内存分区

栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。栈区按内存地址由高到低方向生长,其最大大小由编译时确定,速度快,但自由性差,最大空间不大。栈区是先进后出原则,即先进去的被堵在屋里的最里面,后进去的在门口,释放的时候门口的先出去。栈区存放内容临时创建的局部变量和const定义的局部变量存放在栈区。函数调用和返回时,其入口参数和返回值存放在栈区。

2023-01-13 17:27:21 205

转载 C代码优化

C代码优化方案,1、使用尽量小的数据类型能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变量。当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,而且这样的错误很难发现。

2023-01-12 19:49:17 735

原创 VIM文本编辑器的使用

Vim的介绍 Vim使用说明

2023-01-09 17:28:16 924

原创 RT - thread学习(二) 内核解析

RT-thread学习二 MCU的启动流程介绍,rt-thread的启动流程

2023-01-06 16:47:39 908

原创 RT - thread学习(一)

RT-thread学习 nano介绍,M0芯片SDK中移植rt-thread

2022-12-28 16:39:31 2647

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除