- 博客(187)
- 收藏
- 关注
原创 STM32中,如何理解看门狗
在STM32微控制器中,看门狗(Watchdog)是一种硬件计时器,用于,防止软件死锁或跑飞。,使程序恢复至初始状态。
2025-05-29 16:13:35
509
原创 什么是CVSD
它通过1比特量化实时跟踪音频信号的变化趋势,是早期蓝牙设备(HSP/HFP 1.0-1.5)的强制语音编码标准,也是现代蓝牙设备兼容老旧设备的备选方案。在您的产测中,需关注其时钟稳定性与噪声环境下的解码鲁棒性,而新一代设备应优先保障mSBC性能。CVSD是蓝牙语音的“老兵”,以超低复杂度在资源受限设备中延续生命。当连续3个相同比特(如"111"),增大δ(斜率变陡)当比特交替(如"1010"),减小δ(斜率平缓):安静时语音清晰,嘈杂环境(如地铁)出现尖锐噪声。优势:适应语音信号的动态范围,减少阶梯噪声。
2025-05-29 14:27:49
364
原创 什么是MSBC
mSBC是蓝牙通话质量的基石,其性能直接影响用户对耳机“清晰度”的感知。,专为HFP/HSP(蓝牙免提/耳机规范)设计。旧版蓝牙使用CVSD(连续可变斜率增量调制)编码,音质粗糙(仅64kbps,8kHz采样),抗噪能力差。mSBC通话时需开启ENC(环境降噪),DSP会融合mSBC解码数据与麦克风信号进行降噪处理。,对语音关键频段(1-4kHz)优先编码,减少环境噪声影响。→ 检查mSBC包丢失率(蓝牙嗅探仪抓取HCI日志),同时兼容蓝牙SCO(同步面向连接)链路。确保蓝牙基带与mSBC编解码器同步。
2025-05-29 14:17:58
381
原创 什么是DSP
在您的产测场景中,验证DSP解码的准确性(如频响曲线、信噪比)直接影响最终产品的音频性能。它是现代音频设备(如蓝牙耳机、智能音箱)的核心技术之一,其核心作用是通过高效算法将压缩的音频数据转换为可播放的模拟信号。在通话或语音助手场景中,DSP实时处理麦克风采集的音频,执行降噪(ENC)、回声消除(AEC)等算法(如文档中。:将MP3、AAC、aptX、LDAC等压缩格式的音频流,通过数学算法解压缩为原始PCM(脉冲编码调制)信号。:在解码过程中进行实时音效处理(如降噪、均衡器调节、空间音频增强)。
2025-05-29 10:00:30
407
原创 大白话解释一下pdm和pcm
PDM 和 PCM 是音频编码领域的 “基础款” 和 “进化款” 关系,就像 “素颜照” 和 “美颜照片” 的区别,核心都是记录声音,但精细度和压缩方式不同。
2025-05-29 09:59:06
432
原创 什么是大端序,什么是小端序,如何记忆它们!!!
x86/x64架构(Intel/AMD处理器)、ARM处理器(可配置)。网络传输(网络字节序)、Java虚拟机、PowerPC处理器。“大端高位先,小端低位前;网络用大端,Intel是小端。类似书写顺序:从左到右,高位在前(如数字。类似反序书写:从右到左,低位在前(如数字。(从左到右为低地址到高地址)。:高位在前,适合人类阅读习惯。“大”对应“高位优先”,即。“小”对应“低位优先”,即。:低位在前,硬件处理更高效。放在内存起始(低地址)。放在内存起始(低地址)。,低位字节存于高地址。,高位字节存于高地址。
2025-05-27 17:18:29
279
原创 蓝牙host和controller
PC 通过 USB 蓝牙 Dongle(Controller)与 Host(Windows 蓝牙协议栈)通信。:Host 运行在主处理器(如手机 CPU),Controller 为独立模块(如 USB 蓝牙适配器)。:Controller 专注实时性(硬件效率),Host 专注功能扩展(软件灵活性)。:L2CAP(逻辑链路控制)、ATT/GATT(属性协议)、SMP(安全管理)。:Host 和 Controller 集成在同一芯片(如手机蓝牙芯片)。:处理无线信号(如 2.4GHz ISM 频段)。
2025-05-21 11:15:32
740
原创 ANC--Active Noise Cancellation
Biquad 滤波器用于实现 ANC 算法中的频率响应调整(如低通、高通、峰值滤波等)。Biq_num 越多,可实现的滤波复杂度越高,但会占用更多 DSP 或芯片资源。:通过耳机内部麦克风采集耳道内的残余噪声,进一步优化低频噪声(如引擎声)的抵消效果。通过 ANC 调试工具(如芯片厂商提供的上位机软件)实时调整滤波器参数,观察降噪频响曲线。结合两种路径的混合降噪方案,兼顾高频和低频噪声抵消(如 TWS 耳机常用)。测试不同环境(如嘈杂街道、办公室)下的降噪效果,优化路径和滤波器配置。
2025-05-20 14:02:17
327
原创 解决将其他盘可用空间,移植到C盘
或者在箭头地方输入想阔的大小,然后开始,一直确定,就行。重启中,会自动进行分配。然后输入,下面的c是c盘如果有其他盘报错,那么下面的c改成其他盘的名称。首先召唤出任务管理器,然后新建任务,输入cmd选择以管理员方式运行。右击-》选择扩容分区-》选择要缩小的分区-》然后确定。
2025-05-16 17:47:29
214
原创 Ubuntu 系统默认已安装 python,此处只需添加一个超链接即可
【代码】Ubuntu 系统默认已安装 python,此处只需添加一个超链接即可。
2025-05-14 14:44:40
343
原创 在 Ubuntu 20.04.6 LTS 中将 SCons 从 3.1.2 升级到 4.9.1
在 Ubuntu 20.04.6 LTS 中将 SCons 从。如果遇到问题,请检查 Python 环境和依赖冲突。通过以上步骤,您应该能成功将 SCons 升级到。:Python 包依赖冲突。如果需要保留多个版本,使用。
2025-05-14 12:59:33
540
原创 PDM采集数字麦克风数据
在嵌入式系统中通过接口采集数字麦克风数据时,需要配置硬件、时钟、数据流和软件解码等多个环节。需根据麦克风规格书设置,常见值为(对应PCM输出采样率16 kHz时,64倍过采样)。通过PLL或外部时钟源生成精确的PDM时钟,避免抖动。通过以上配置,PDM数字麦克风可以稳定采集音频数据,并通过硬件或软件解码为可用的PCM格式。实际开发中需结合具体MCU和麦克风型号调整参数。通过。
2025-05-12 10:15:45
1502
原创 分布式处理架构
分布式处理架构是一种将计算任务分散到多台计算机或服务器上协同完成的系统设计方法。这种架构通过将工作负载分配到多个节点(可以是物理机、虚拟机或容器)来提高性能、可靠性和可扩展性。
2025-05-09 17:15:16
581
原创 ADC和DAC
ADC(Analog-to-Digital Converter,模数转换器)和DAC(Digital-to-Analog Converter,数模转换器)是信号处理中两种关键的转换器,它们的功能和用途有显著区别。现实概念中永远划分不完的量就是模拟量。用有限的存储单元存储起来叫数字量。
2025-05-08 17:30:20
668
原创 .i .o .s后缀文件
在嵌入式开发和编译过程中,.i、.o 和 .s 是常见的中间文件格式,它们在代码编译的不同阶段生成。为什么需要这些文件?如何手动控制编译阶段?嵌入式开发中的特殊场景在编译和嵌入式开发中,.i、.s 和 .o 文件后缀的全称及详细解释如下:.i → "Intermediate"(中间文件).s → "Speech"(像人类语言).o → "Object"(目标)
2025-05-08 14:03:52
467
原创 EDA文件
不同的EDA软件使用不同的文件扩展名和格式,以下是主流工具对应的文件类型:若已知文件来源的EDA工具,直接使用对应软件打开(如Altium Designer打开)。注意:高版本软件可能无法直接打开低版本文件,需更新或联系设计者转换。Gerber查看器:将.pcb文件导出为Gerber(RS-274X格式),用免费工具查看:ViewMatehttps://www.pentalogix.com/viewmate.htmlKiCad GerbViewhttps://www.kicad.org/在线查看器:PCB
2025-05-06 13:29:23
266
原创 RT-Thread
文件系统(DFS)、网络协议栈(SAL)、低功耗管理(PM)、调试工具(ulog、Finsh Shell)等。,专为嵌入式设备设计,具有高度可裁剪性、多任务调度和丰富的中间件支持。提供标准化的外设驱动接口,支持 STM32、ESP32、NXP 等主流芯片的快速移植。一键集成(如MQTT、LVGL、TensorFlow Lite Micro)。任务调度(优先级抢占、时间片轮询)、信号量、消息队列、定时器等实时核心功能。一键编译生成固件,通过 J-Link、ST-Link 等工具烧录至硬件。
2025-05-06 09:45:58
973
原创 嵌软笔记名词汇总
ADK 是面向应用层开发的工具包,通常针对特定功能或生态系统(如语音助手、物联网平台),提供高级API、框架和集成工具,帮助开发者快速实现复杂功能。
2025-05-05 14:12:41
813
原创 I2S音频模块结构设计
二、采样频率:11.025,22.05,24,44.1,48,96KHz。七、数据采样:sclk下降沿发,上升沿收数据。五、传输位宽:8,12,16,24,32。六、传输声道:左声道、右声道、立体声。四、传输格式:左对齐、右对齐、标准。实现音乐播放器音乐播放。三、主时钟:Mclk。
2025-04-27 16:07:25
233
原创 嵌入式硬件开发工具---万用表---示波器---仿真器
带宽---大白话可能要说它能处理的最高频率信号,比如听音乐时的高音部分,如果带宽不够,高音就听不清了。专业解释的话,可能涉及-3dB衰减点,也就是信号幅度下降到70.7%时的频率,这是示波器能准确显示的最高频率。专业上就是存储的采样点数,存储深度大,可以在高采样率下捕获更长时间的信号,或者在长时间记录时保持足够的细节。原理:以一定的采样频率(如10MHz),对超过阈值(如高于1.5V)认为逻辑1,反之认为逻辑0,而后按采样点按逻辑连接,呈现的波形。其他----电容、频率、温度----特殊的万用表。
2025-04-26 14:24:07
1784
原创 解决stm32引脚如果选择输入模式
引脚直接连接到ADC(模数转换器)或比较器输入,不经过施密特触发器。配置为模拟输入时,GPIO的其他功能(如复用功能)自动失效。引脚内部不连接上拉或下拉电阻,完全由外部电路决定电平状态。若引脚悬空(无外部驱动),电平可能不稳定(易受噪声干扰)。引脚内部通过上拉电阻(约20kΩ~50kΩ)连接到VDD。引脚内部通过下拉电阻(约20kΩ~50kΩ)连接到GND。:用于模拟信号输入,直接连接到ADC,不进行数字信号处理。默认电平由内部电阻决定,可简化电路设计(省去外部电阻)。
2025-03-21 20:44:20
1234
原创 PWM控制电机转速的原理及相关寄存器值计算
(高电平时间与周期的比值)来改变电机的平均电压,从而实现转速控制。:决定占空比(高电平时间),捕获/比较寄存器)则设置占空比,因为当计数器达到CCR值时,输出电平会翻转,从而改变高电平的时间。fTIM:定时器时钟频率(STM32通常为72MHz、48MHz等)。常见范围:1kHz ~ 20kHz(根据电机类型调整)。:(自动重装载寄存器)决定PWM的周期(最大值)。频率过高:开关损耗增加(但电机响应更平滑)。:(预分频器)分频定时器时钟,调整计数速度。,ARR越大分辨率越高,但频率会降低。
2025-03-20 17:28:25
1023
1
原创 论枚举和结构体以及共用体的使用
数据类型使用条件优点缺点枚举需要一组有意义的命名常量增强代码可读性本质仍是整型,类型不安全结构体需要组合多个不同类型数据数据组织清晰,支持复杂结构内存占用较大共用体需要内存复用或类型转换节省内存,灵活解析数据数据覆盖风险高。
2025-03-20 11:36:09
425
原创 论冒泡和快排
就像一群人按身高排队,从左到右两两比较,高的往后站。每一轮结束,最高的人就站到了最后。下一轮不用管最后的人,继续从头开始比,直到所有人排好。就像整理书架,先随便挑一本书当“分界线”,把比它薄的书放左边,厚的放右边。然后左右两堆书各自再按同样方法整理,直到所有书排好顺序。快速排序像“聪明人拆解问题”,冒泡排序像“老实人一步步来”。:像“煮开水冒泡”一样把最大的数推到末尾。每轮结束后,最大的数会“沉”到最后。把比基准值小的扔左边,大的扔右边。5和3比 → 交换 →。8和4比 → 交换 →。
2025-03-19 16:41:09
417
原创 论数据结构
(Algorithms + Data Structures = Programs),并凭借其摘得图灵奖,该公式之后也成为计算机领域人尽皆知的名言。1984 年获得图灵奖,1992 年当选瑞士工程院院士,1994 年当选美国国家工程院外籍院士,1999 年 4 月退休。队列(Queue):也是操作受限的线性表,限制为仅允许在表的一端进行插入(` (FILO,First In Last Out)的线性表。组成,每个结点包含一个数据元素和一个指向下一个结点的。,不管何种语言,最先被调用的一定最后返回。
2025-03-19 14:56:14
570
原创 C语言论指针
需要注意的是,指针相减的结果会自动转化为整形,这是因为指针算术运算的结果类型是整数。具体来说,如果指针p指向数组a[i],指针q指向数组a[j],那么p-q的结果就等于i-j,即两个元素之间的索引差。指针之间可以进行比较运算,如 ==、<、 <= 、 >、 >=,比较的是各自指向的内存地址的大小,返回值是 int 类型整数 1 (true)或 0 (false)。低位地址减去高位地址,返回的是负值。符号 * 用于通知系统,这里定义的是一个指针变量,通常跟在类型关键字的后面,表示指针指向的是什么类型的值。
2025-03-18 23:02:53
604
原创 C语言 常用系统函数
相比于 printf(),多了一个参数,第一个参数是要写入的字符串,后面参数与 printf() 一致。sscanf(),用于从一个字符串中按照指定的格式提取数据。相比于 scanf(),多了一个参数,第一个参数是要提取数据的字符串,后面参数与 scanf() 一致。time_t 是C语言中用于表示时间值的数据类型,它通常是一个整数类型(int 或 long 或 long long),用于存储时间戳。返回两个时间值的差,返回值是 double 类型,时间值需是 time_t 类型。将str2中的字符串。
2025-03-18 20:21:15
472
原创 C语言论递归函数及其本质
它强制递归函数先解决最小的问题,再逐层回溯解决更大的问题。这种机制虽然直观,但需要警惕栈溢出的风险(例如无终止条件的递归)。:递归就是“把大象装进冰箱,但冰箱里还有一个冰箱,直到遇到一个空冰箱”——关键在于找到终止条件,否则永远装不完!:每次数一张,然后把剩下的钞票交给“另一个人”用同样的方法数(实际上还是你自己数,但问题规模变小了)。如果递归太深(比如没有终止条件),栈会被塞满,导致程序崩溃(Stack Overflow)。一个函数在函数体内又调用了本身,我们称为递归调用,这样的函数就是递归函数。
2025-03-18 20:05:03
168
原创 C语言 论static和extern关键字
使用 static 关键字修饰的全局变量称为静态全局变量。普通全局变量对整个工程可见,其他文件中,使用extern外部声明后,可以直接使用。静态全局变量仅对当前文件可见,其他文件不可访问,其他文件中可以定义与其同名的变量,两者互不影响。静态全局变量对于需要编译多个源代码文件的程序,能够有效地降低源文件之间的耦合,避免不同文件同名变量的冲突。
2025-03-18 19:44:14
208
原创 C语言 循环控制语句
(1)do...while循环是先执行循环体语句,然后再进行循环条件判断,但只有第一次循环语句的执行没有经过判断,以后的每一次仍然先经过判断。不确定循环直到循环表达式不成立之前,不确定循环次数,不需要循环变量。do_while循环至少执行一次,while循环有可能一次都不执行。当循环条件成立时执行循环体语句,直到循环条件不满足时退出循环。实现需求:输入5位数密码,直到密码匹配成功结束循环。实现需求:输入5位数密码,直到密码匹配成功结束循环。
2025-03-18 15:47:28
236
原创 C语言获取数据存储大小
使用sizeof 可以获取数据类型或变量字面量的存储大小,单位是字节。sizeof返回一个size_t类型的无符号整数值,格式占位符是%zu。size_t 通常是 unsigned int 或 unsigned long 的别名,具体是哪个类型的别名,由系统和编译器决定。
2025-03-18 15:21:36
202
原创 解决window和虚拟机linux,剪切板没有办法共享问题
这三个命令的目的是彻底卸载旧版工具、重新安装核心功能,并补充图形化支持,最终确保虚拟机与宿主机的高效交互。是 apt 的一个参数,用于移除因安装其他软件而自动安装、但当前不再需要的依赖包。在虚拟机中执行下面这三条命令,如果怕卸载不干净,看注意事项中,更加安全的操作。),则会卸载该包并尝试自动移除其关联的依赖(如果它们没有被其他软件使用)。依赖图形界面组件(如 X11),因此仅在桌面版 Linux 中需要安装。在虚拟机中安装基础集成工具,确保虚拟机的基本功能正常运行。文件,避免与新安装的版本冲突。
2025-03-18 11:55:43
1192
原创 C语言的进制
十进制:%d(严格十进制)或%i(自动检测进制)十六进制:%x或%X,或者用%i并输入0x前缀。%#x :显示前缀 0x 的十六进制整数。%#X :显示前缀 0X 的十六进制整数。八进制:%o 或使用%i并输入前导0。二进制:没有直接支持,需手动处理。%x :十六进制整数。%d :十进制整数。
2025-03-18 11:44:02
300
原创 #define定义常量和const定义常量的区别
define常量名常量值下面的代码定义了一个名为 PI 的常量:c99新增标准const数据类型常量名常量值;#define 与 const 这两种方式都可以用来定义常量,选择哪种方式取决于具体的需求和编程习惯。通常情况下,建议使用 const 关键字来定义常量,因为它具有类型检查和作用域的优势,而 #define 仅进行简单的文本替换,可能会导致一些意外的问题。
2025-03-18 11:24:18
242
原创 解决git init 命令不显示.git
输入git init 之后自己的项目没有.git文件,有可能是因为.git文件隐藏了,下面是解决办法。首先在自己的项目代码右击 打开git bash here。
2025-03-17 13:55:09
378
原创 Git 的使用上传下载和更新
项目目录名> 是指为克隆的项目在本地新建的目录名称,可以不填,默认是GitHub的项目名。git config --global user.email 邮箱。git config --global user.email 邮箱。git clone <远端地址> <新项目目录名>git pull <远端代号> <远端分支名>。git remote add <远端代号> <远端地址><远端分支名>是指远端的分支名称,如master。git push <远端代号> <本地分支名称>
2025-03-17 10:35:56
1060
原创 LinuX---Shell正则表达式
由于所有特殊字符都有其特定匹配模式,当我们想匹配某一特殊字符本身时(例如,我想找出所有包含 '$' 的行),就会碰到困难。* 不单独使用,他和上一个字符连用,表示匹配上一个字符0次或多次,+例如。[a-c, e-f]-匹配a-c或者e-f之间的任意字符。[a-z]* ------匹配任意长度的字母字符串。[0-9]*------匹配任意长度的数字字符串。[a-z]------匹配一个a-z之间的字符。[0-9]------匹配一个0-9的数字。[6,8]------匹配6或者8。会匹配出所有以a开头的行。
2025-03-15 08:29:40
461
ESP-IDF包含了编译器,汇编器,链接器,调试器,烧写器
2025-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人