- 博客(41)
- 收藏
- 关注
原创 可变长度整数数据编码传输
当直接传输uint32类型变量时,变量值不管是1,还是4294967295最大值,其都占用4个字节传输,当使用可变长度整数数据编码传输,在0-268435455,也就是0x00 - 0x7FFFFFFF,其占用的字节是可变的,变量值越小,字节占用越小,最大4个字节。改编码算法相等于每个字节的7位数据乘以相应的128的幂次,第一位则(value * 128^0),第二位则(value * 128^1),第三位则(value * 128^2)0xFF 0x7F 表示为16383,十六进制0x3FFF。
2025-10-24 10:02:10
237
原创 声音的声波图,频率分析图,频谱图分析
这个也很好理解,因为声音的产生靠的是振动,不同的振动频率会产生不同的声音。那么频谱图中对应坐标点的颜色的深浅,就代表此刻此频率声音大小。也就是说在频谱图中我们可以看到三个变量,频率,时间,声音强度。比如这个坐标(1.0,1K),代表在1s时,1K频率的声音强度。其原理就是对声音进行FFT计算,从而得到声音在不同频率上的表现,或者说为不同频率上声音大小。从这张图中可以看到,曲线图的横坐标为频率(0-20khz),纵坐标为声音强度(db),那么其实我们在听声音的时候,通过频率图角度来看,我们其实是在听频率。
2025-09-19 18:02:05
837
原创 BLE GATT连接以及检索services过程
当两者需要连接的时候,central device首先会发送。(peripheral 一般在某个时隙广播完对应的广播包之后,还会在这个时隙监听一段时间,此时peripheral 就可以监听到central device发出的。则会被认为是master方,master需要对此次BLE 连接负责,包括处理连接,控制,连接参数,events 的timing等。service的检索过程,最主要的就是通过属性的Handle来检索,所以Handle在检索过程中非常重要。1.根据协议文档,当两个BLE设备要建立的时候,
2025-07-28 16:32:30
465
原创 ble中gatt att 关系
characteristic 的定义包含了 characteristic declaration,Characteristic Value declaration,characteristic descriptor declaration,其中前两个属性是必须的,最后一个属性是可选的。客户端特性配置声明应该是可读可写的。GATT则定义了两个BLE设备之间的各自属性的交互逻辑,属性配置,设备间的发现、读写、通知、广播等。简单来说就是ATT 定义了属性的数据结构,属性的分组方式,属性的读取写入等。
2025-07-24 17:49:10
1140
原创 三极管与MOS管功能简述与区分
饱和状态:也就是Ic极,达到最大电压。放大状态:基极电压超过阈值电压,但是为达到饱和电压时。此时 Ic = β * Ib,成一定放大比例。可以看到三极管的两个PN结,类似于两个共阴或共阳的二极管。当我们给基极施加一个正电压,产生一定电流时,C与E两端可以导通。这是我们的基本理解。三极管的打开与关闭,那么就是在截止状态与饱和状态之间切换。当Ib < Ic / β 时,此时三极管处于放大状态。三极管一般分为NPN型,或者PNP型。当我们需要深究下去,施加多大的电压可以导通?Vbe < 0.6V,三极管处于。
2025-07-14 11:53:23
282
原创 tws行业分析
相信以后,在耳机行业,会呈现买耳机芯片送软件的情况,作为tws耳机软件开发从业人员,tws耳机门槛技术不断降低,新生力量的不断涌入,老的从业人员将会面临失业越来越大的压力。这时候,如何寻找突破口,找到自己技术的差异化,从而在行业内站稳脚跟,相信会成为一个很重要思考虑点!做到对声学,电子有自己的思考。tws行业百花齐放,不仅芯片原厂百花齐放,bes,杰理,中科蓝汛,物骐,高通,络达,瑞昱等等,品牌商也百花齐放,不仅文章提到的苹果、三星、小米、华为、OPPO、vivo,索尼、JBL、Bose、森海塞尔,
2025-07-09 16:43:03
502
原创 高通滤波器与低通滤波器 电子电路设计
当低频信号来到C3时,此时C3的阻抗很大,大部分低频信号都作用在了C3上,则R3的分压会很小,此时低频信号被抑制了。当R3分压小时,如果把R3想象成输出元件,那么R3上的电压会被抑制,那么就相等于输出元件没有信号了。低通滤波电路的截止频率计算公式是1/(2*pi*R*C)=1/(2*3.14*47*0.000000056)= 60k,这个是单端的计算公式,差分输入除以2,截止频率是30kHz。当高频信号来到C3时,此时C3的阻抗小,大部分信号都被通过了,R3的分压会很高。高频信号更容易通过电容(到地)
2025-07-07 12:00:35
1061
原创 LE Audio 初探
4.用户对扫描列表中想要接收的BIS广播进行选择,此时手机B会将该BIS广播信息同步给耳机,耳机收到该广播信息之后,耳机则开始接收广播音频信号,然后通过喇叭播放。LE Audio 还支持广播的机制,允许一对多的场景,一个广播源给多个sink端发送音频流。1.首先广播源要开启BIS广播,广播源可以是手机,电视机,音箱,笔记本等其他支持BIS广播的设备。打电话场景则使用到的profile:BAP,VCS/P,AICS,MICS/MICP,TBS,CCP。1.支持BIS 广播的设备,如支持BIS的手机 2台。
2025-01-04 17:26:20
704
原创 四种噪声分析
从频谱分布上来看,白噪声在8k段内,所有的频率声音都是一致的,而粉红噪声和棕色噪声在高频段,声音会小一些,频谱图上也可以看到声音的分布情况。而灰色噪声,在全域频段声音就小很多,并且是均匀分布的,在1K以以会有提高。粉红噪声和棕色噪声的音色会更偏向于低沉,而白噪声则没什么特点,低中高频都可以听到一样的声音。棕色噪声(也称为褐色噪声)的频率分量功率主要集中在低频段,声音比粉红噪声更加低沉,类似于干衣机运转、深沉的潮汐声等。所以生活中比较多区分的还是白噪声和其他噪声的区别。白噪,粉色噪声,棕色噪声,灰色噪声。
2025-01-04 09:49:27
1103
原创 PWM驱动led亮灭原理
LED里面的PN结,在电压驱动作用下,内部的电子和空穴会复合,复合的过程能量会以发光的形式释放,这就是LED灯的工作原理。当电子与空穴相遇复合的时候,电子跌落到较低的能阶,根据能量守恒定律,此时电子与空穴相遇复合会以两种形式将电能转换成其他物质,第一种为热辐射,第二种为光子形式的光转换。一般我们在电路中,只有高电平低电平之分,当需要点亮一个LED灯时,给予LED正极高电压即可点亮,移除LED正极电压,LED随即熄灭。其区别在于,不同的材料,产生的光子的波长不同,那么就会有不一样的颜色。
2024-12-19 14:56:30
1427
原创 常见电平转换电路
一般在消费电路的元器件之间,不同的器件IO的电压是不同的,常规的有5V,3.3V,1.8V等。当器件的IO电压一样的时候,比如都是5V,都是3.3V,那么其之间可以直接通讯,比如拉中断,I2C data/clk 脚双方直接通讯等。3.当SCL为低时,Q4 mos管状态不变,维持截止,但是mos管内部的体二极管把MCU_SCL拉低,此时Q4 mos管导通,进一步拉低MCU_SCL。当A口为高电平的时候(5V),此时二极管截止,B端由于接了上拉电阻,所以电平为3.3V(高)3.MOS管转换电路。
2024-12-14 14:55:12
1440
原创 docker 指令集
docker save -o <tar文件名>.tar <镜像名称>:<标签>在docker run的时候,加上参数 --cap-add=NET_ADMIN。docker commit <容器ID或名称> <镜像名称>:<标签>docker exec -it <容器ID或名称> /bin/bash。docker load -i <tar文件名>.tar。docker attach <容器ID或名称>docker start <容器ID或名称>docker stop <容器ID或名称>
2024-10-12 11:29:38
838
原创 FreeRTOS 低功耗模式
一般可穿戴设备低功耗产品,物联网低功耗产品等会有此需求FreeRTOS提供了一个Tickless低功耗模式,方便低功耗产品开发Tickless低功耗模式本质是通过调用WFI指令(arm平台指令,如果是其他平台则为其他指令)实现睡眠模式。当有中断或者类似中断的事件发生则推出睡眠模式如果要使能该功能需要定义configUSE_TICKLESS_IDLE宏一共由三个值:0:关闭1:使用FreeRTOS配置低功耗流程2:自定义低功耗配置流程系统进入低功耗模式最短时长。
2024-09-05 16:33:44
755
原创 FreeRTOS 软件定时器
相等于闹钟功能。其由vTaskStartScheduler()函数开启任务调度的时候,同时创建一个用于管理软件定时器的任务,叫做软件定时器服务任务。软件定时器与硬件定时器对比:硬件定时器在裸机项目中是由外设提供的功能。优点:数量不限,可以创建多个。硬件定时器数量有限使用简单,成本低缺点:精度不够硬件定时器高。(软件定时器以系统时钟为基准,系统时钟中断优先级较低,容易被打断)在软件定时器的回调中不可以使用会导致阻塞的api,因为软件定时器回调函数本身不是任务。
2024-09-05 16:09:02
485
原创 FreeRTOS 任务通知功能
用于通知任务。任务控制块中的结构体成员变量ulNotifiedValue,就是这个通知值。以及ucNotifyState这个是通知状态信号量,队列,事件标志组这些都可以模拟通知任务的功能。但是任务通知功能与前面这些最主要的区别就是内存消耗比较小。信号量,队列,事件标志组这些需要提前创建,而任务通知则不需要,其结构体成员就在TCB中。对比信号量,队列,事件标志组:优势:效率更好;内存需求更小;劣势:无法发送数据给ISR(中断);无法广播给多个任务;无法缓存多个数据(只能保持一个数据);
2024-09-04 13:52:57
336
原创 FreeRTOS 事件标志组
事件标志位,用一个位来表示某些事情是否发生事件标志组,用一组事件标示位集合。其实就是一个整数特点:每一位标志一个事件(高8位不算)每一位那的事件由用户自己决定,1为发送,0为未发生、任意任务或中断都可以读写这些未可以等待某位成立,也可等待多位同时成立#else#endif由上可见,事件标志位可以为32位,或者64位。取决于系统另外需要注意的是,事件标志位高八位是不可用于事件标志的。也就是说当portUBASE_TYPE为uint32_t时,我们只有24为可以使用。
2024-08-26 15:11:38
251
原创 FreeRTOS信号量
可以理解为状态通知,任务A发送信号给任务B,通知状态已改变。其主要使用在解决同步问题的机制,也就是任务A做完某件事情后通知任务B,任务B才可以继续执行代码。还有就是共享资源的有序访问,比如比较经典的停车问题与生产者和消费者的同步问题。信号量又分为,二值信号量,计数型信号量,互斥信号量二值信号量,计数型信号量区别在于计数值一个为1,一个大于1;
2024-08-25 22:14:16
338
原创 FreeRTOS 消息队列
队列是任务到任务,任务到中断,中断到任务数据交流的一种消息传递机制队列遵循两种出列方式,先进先出,后进先出,支持配置#define queueQUEUE_TYPE_BASE ( ( uint8_t ) 0U ) //队列#define queueQUEUE_TYPE_SET ( ( uint8_t ) 0U ) //队列集#define queueQUEUE_TYPE_MUTEX ( ( uint8_t ) 1U ) //互斥信号量。
2024-08-23 15:28:21
457
原创 FreeRTOS 常用接口解析
动态创建,任务控制块,任务栈空间由FreeRTOS从堆中进行分配。任务创建之后,会自动进去就绪态。静态创建,任务控制块,任务栈空间由用户自己定义。任务创建之后,会自动进去就绪态。
2024-08-15 17:55:33
511
原创 FreeRTOS 系统介绍
RTOS 相比于裸机,可以提供任务管理,实现多任务作业,信号量,消息队列,时钟,断言,延时等接口。对于一些需要实现多任务工作的产品,使用RTOS系统绝对是一个利大于弊的事情,且目前已有很多RTOS已经完全免费开源,RTOS提供的接口可以使系统功能更加稳定可靠。市面上有很多种实时操作系统类型,比如常见的:FreeRTOS,uCOS家族(I/II/III),RT-Thread,RTX等。每种操作系统有自己优势,有些操作系统收费,有些则是完全免费开源。目前很多芯片原厂都使用FreeRTOS,比如杰理,物骐等。
2024-08-15 16:49:09
455
原创 FreeRTOS Config 配置文件解析
值为1代表使用通用方式来选择下一个要执行的任务,为0则代表使用特殊方式。特殊方式则跟硬件相关,需要使用特定的架构汇报指令,且任务优先级有限制。一般与configTICK_RATE_HZ配合使用后,可以得出任务中最大的延时或者阻塞时间。完成FreeRTOS的功能配置和裁剪,比如信号量,互斥锁,队列灯。如果使用的是抢占式调度,此宏设为1后,同优先级的任务可以抢占空闲任务。滴答定时器的频率,单位hz,一般为1000,也就是1ms 中断频率。空闲任务的堆栈大小,单位是字,转换为字节则需要乘4。
2024-08-15 11:58:10
280
原创 tws耳机芯片选型常见参数分析
该参数也是比较重要,如果耳机能在较大的发射功率下,无底噪或者电流音问题,则耳机的性能会比较好。且RF性能也与天线的选型有关,当mcu的RF性能较好时,可以选择性能比较差的天线。越小代表谐波失真越少,代表adc的性能越好。正常来说THD+N 都为一个百分比,且远小于1%,但是专业人会取对数来表示,比如:THD+N= -102dB,相当于10^(-102/20)= 0.0008%。该参数主要看主频,主频越高说明芯片运行速度越快,计算越快,算力也越大。比如6nm,6纳米的制程,22nm,22纳米的制程。
2024-08-09 15:42:00
1226
原创 蓝牙bt SPP精讲之SPP连接
②SDP发起连接服务,展开后如下,上一章已介绍过,其中需要注意的是Servel Channel为1。后续建立的RFCOMM会在该channel上进行通讯。③发起RFCOMM连接,配置相关参数,以及交换双方此时状态。可以看到的是Channel为1。①L2CAP发起SDP连接,并且配置对应的signaling channel。可以看到data中即为我们发送的数据。
2024-07-24 14:22:46
642
原创 TWS耳机入耳检测原理分析介绍
tws耳机业内入耳检测。直接理解就是检测耳机是否放入耳道中,当检测到耳机放入耳道后,耳机会做一些相关的动作。比如播放音乐,接听电话等其他UI动作,以及优化电池电量、延长续航的作用。入耳检测功能在tws业内一些定位稍微高端点的机型中都比较常见,入耳检测也为耳机带来更加智能化的体验。入耳检测行业内目前分为两种技术路线,电容检测和光学检测。
2024-07-24 11:19:21
4163
原创 蓝牙bt SPP精讲之SPP 介绍
SPP(),这个profile可以简单点来理解就是基于C/S架构,一对一,点对点的通讯。只不过在该profile中称为DevA/DevB。在两个设备之间建立简单的虚拟串口进行数据通信。目前该协议比较多的使用场景为在调试的时候,比如使用spp连接需要调试的设备,然后发送对应的指令给设备,触发调试相关功能等。产线也会使用得比较多,像声学测试站兆华CRY6151,指南测控,美格信,ANC测试站等。
2024-07-23 18:02:14
1102
原创 蓝牙bt AVRCP精讲之AVRCP 连接及交互通讯
可以看到CT与TG之间可以建立两条channel。一个用于控制,一个用于browsing。用于control 的channel是必选项,且必须第一时间建立,用于browsing的channel是可选项。不过profile中建议如果有使用到browsing channel,则最好也同时建立。
2024-07-19 16:56:22
738
原创 蓝牙bt AVRCP精讲之AVRCP 介绍
AVRCP的下层为AVCTP。AVRCP与BIP(Basic Imaging Profile)共同定义了两个设备之间信息交换流程以及相关消息的数据结构定义。AVRCP(Audio/Video Remote Control Profile),定义了两个角色,如下:很好理解,CT一端就是控制者,TG就是目标。谁发送command谁就是CT。AVRCP的运用一般有以下几种场景,由profile定义:①蓝牙遥控器作为CT控制光盘播放器进行播放暂停。
2024-07-19 11:54:34
1138
原创 蓝牙bt AVCTP精讲之AVCTP 介绍
AVCTP上承AVRCP,下接L2CAP。其本身不做具体的数据定义,主要的作用是利用L2CAP提供的面向连接的信令通道,定义了在TG和CT之间的数据传输方式以及数据包的总格式。为UL AVRCP提供传输方式,并且对AVRCP中定义的各种控制指令进行二次封包后,经过L2CAP传输给对方。比较需要注意的点如下:①其由L2CAP 建立channel,使用signaling channel进行数据传输②TG和CT双方都需要支持AVCTP③在两个设备之间,多AVCTP连接是存在的。
2024-07-18 17:41:19
1295
原创 蓝牙bt AVDTP精讲之AVDTP 链路连接
由前面我们介绍,AVDTP的下一层是L2CAP,所以AVDTP首先需要使用L2CAP逻辑链路层进行Signalling Channel Establishment,且PSM为AVDTP,并且同时生成Source CID以及Destination CID以便后续区分使用。耳机在建立完Signalling Channel后,需要使用该channel主动发送discover command,来查询手机支持的所有ACP,手机收到此命令,需要返回自身所有ACP。耳机主动发送Open command,打开某个ACP。
2024-07-17 18:06:27
631
原创 蓝牙bt AVDTP精讲之AVDTP介绍二
对于一些重传计算能力有限,但是又需要较大的带宽传输设备时,会起到很好的效果,保证音视频流的传输。信令交互也就是INT/ACP双方交互command,该command包括的范围从连接discover,连接get_capabilties,连接set_configuration,连接open,连接start,连接close等都通过该Signalin功能进行交互。由于公用一条transport channel,所以传输的packet也会有有所改变,需要加上相关包头/flag来区分不同类型的包。
2024-07-16 17:29:40
1006
原创 蓝牙bt AVDTP精讲之AVDTP介绍一
Audio/Video Distribution Transport Protocol(AVDTP),音视频分布传输协议。如其名,AVDTP在BT连接使用的过程中起的作用就是对连接双方之间的音频流进行管理。包括音频链路建立,音频流的传输/分包/恢复/,音频流链路的控制,音频链路信令包的定义以及交互等功能。根据AVDTP SPEC,AVDTP是基于RTP协议,其包括RTP/RTCP两个协议。
2024-07-15 15:56:52
774
原创 蓝牙bt HFP 精讲之HFP SLC建立
如果使能之后,当该indicator状态变化之后,AG要主动使用+CIEV指令向HF更新。在发送完AT+BAC后,HF必须首先发送此AT指令查询AG indicator列表。,用于HF向AG查询,AG侧支持的HF Indicators Feature。AT+BIND= ,用于HF向AG告知自己支持的HF Indicators Feature。,HF向AG发送使能哪些HF Indicators Feature。,HF向AG查询,AG端支持的indicator列表。
2024-07-13 11:49:26
922
原创 蓝牙bt HFP 精讲之HFP介绍
HFP(Hands-Free Profile),说简单点其实就是免提功能。耳机和手机通过HFP协议可以实现接听、挂断、拒接、语音拨号等功能。HFP中分有两个角色,AG/HF。HF是免提的一端,AG则是音频一端。举一个最简单的例子,手机连接我们的蓝牙耳机,那么手机中的HFP的角色就是AG,我们平时用的蓝牙耳机中的HFP角色就是HF。
2024-07-13 11:00:37
1077
原创 电池充放电参数解析
一段时间后,如果电池电压超过3V,那么我们就认为电池状态为正常,即可进行下一阶段充电,否则就认为电池不正常并放弃充电。如上图2,在电池3V以下,电池以涓流充电形式给电池充电,此时充电电流很小,只有0.1C。某只电池标称容量1200mAh,0.2C放电电流为240mA(充电时间5h),1C表示1200mA(充电时间1h)。某只电池标称容量1000mAh,1C充电电流为1000mA(充电时间1h),0.5C表示500mA(充电时间2h)。对于一个电量为2AH电池,它的1C充放电流,就是2A。
2024-06-07 09:07:56
8040
1
原创 微源 LP5308
LP5308是一种电源开关设备,为可能遇到大电流和输入过电压条件的系统和负载提供全面保护。该器件包含一个135mΩ的MOSFET,可在3.0V至36V的输入电压范围内工作。当VIN上的电压高于过电压阈值时,OVP将断开VIN和VOUT。当电流达到阈值时,该器件将关闭功率FET,以防止过大的电流造成损坏。开关由激活的低逻辑引脚控制。当VBUS超过阈值时,LP5308将断开VIN和VOUT,起到保护电路的作用。该芯片一般放置于充电口正极处,比如耳机正极pin口,USB的vubs线路处。
2024-05-28 15:43:58
986
1
原创 LP4069 蓝牙耳机电池充电管理IC
注意:full与chrg的区别,如果使用FULL pin来指示电池是否满电,那么直接读取FULL引脚低电平状态即可。如果使用CHRG pin来指示电池是否满电时,当满电时,CHRG引脚应由外部拉高电平,读取该引脚是,为高电平状态。FULL:电池满电状态输出引脚,当电池正在充电中,该引脚输出由IC外部上拉电阻拉高,当电池充满电,则该引脚会被IC内部主动拉低。CHRG:与FULL脚功能类似,当电池正在充电中,该引脚由IC内部主动拉低,当电池满电,则由IC外部拉高。EN:充电使能引脚,低电平使能。
2024-05-20 11:38:00
1506
原创 华为mate 60手机连接耳机,播放音乐。同等音量下,听感比别的手机小声
安卓或苹果用的一般就是a-law或u-law,假设是1.57V/FS的对应关系;但华为鸿蒙的用的应该不一样,我猜应该是1.0V/FS;这其实也跟手机传输音源有关系。对于耳机来说,同等音量等级下,耳机端spk gain都是一样的,如果手机传输过来的音乐音源小声,那么经过耳机端播放后,对应的声音也会小。如上图,蓝色为华为手机eq曲线,黄色图为苹果eq曲线。可以看到在所有频点,华为手机db都平等小于苹果手机。也就是华为手机在同等音量等级下,跟其他手机相比,音乐听感会小3.9dB左右。
2024-04-24 17:55:14
1813
原创 bt HFP 建立流程
问询支持的indicators(包括service/call/callsetup/callheld/signal/ roam/ battchg)的index。发送完+CMER指令后,AG可以通过+CIEV指令来修改任何indicators的状态。需要注意的是HF角色要发送AT+BRSF=指令,而AG角色要发送+BRSF=指令回复。需要注意的是当互相都通知对方后,HF角色要发送AT+BAC=来决定使用哪个codec。6.以上发送完毕后,如果HF&AG都支持三方通话,那么发送AT+CHLD=?
2024-03-04 14:47:29
671
1
原创 优化蓝牙耳机充电仓5v输出方波能力电路改造方案
这种方式控制的充电仓5V输出,可以保证充电仓5V输出稳定拉高拉低,不会出现拉升或者拉低过程中出现抖动现象,在充电盒发码的场景中,耳机对于方波电平要求比较高时,可以使用。当5V_EN拉高时,Q5导通,则Q3 G基接地,Q3导通,此时VOUT输出的5V可以直接到达VDD_5VOUT。当5V_EN拉低时,Q5截止,则Q3截止,此时VOUT输出的5V无法到达VDD_5VOUT。如上图所示,VOUT 接入充电盒主芯片5V输出引脚,VDD_5VOUT接入popin,5V_EN与LOAD_EN接入主芯片控制端口。
2024-02-27 16:05:39
1808
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅