- 博客(30)
- 收藏
- 关注
原创 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 771
原创 FreeRTOS 低功耗模式
一般可穿戴设备低功耗产品,物联网低功耗产品等会有此需求FreeRTOS提供了一个Tickless低功耗模式,方便低功耗产品开发Tickless低功耗模式本质是通过调用WFI指令(arm平台指令,如果是其他平台则为其他指令)实现睡眠模式。当有中断或者类似中断的事件发生则推出睡眠模式如果要使能该功能需要定义configUSE_TICKLESS_IDLE宏一共由三个值:0:关闭1:使用FreeRTOS配置低功耗流程2:自定义低功耗配置流程系统进入低功耗模式最短时长。
2024-09-05 16:33:44 439
原创 FreeRTOS 软件定时器
相等于闹钟功能。其由vTaskStartScheduler()函数开启任务调度的时候,同时创建一个用于管理软件定时器的任务,叫做软件定时器服务任务。软件定时器与硬件定时器对比:硬件定时器在裸机项目中是由外设提供的功能。优点:数量不限,可以创建多个。硬件定时器数量有限使用简单,成本低缺点:精度不够硬件定时器高。(软件定时器以系统时钟为基准,系统时钟中断优先级较低,容易被打断)在软件定时器的回调中不可以使用会导致阻塞的api,因为软件定时器回调函数本身不是任务。
2024-09-05 16:09:02 388
原创 FreeRTOS 任务通知功能
用于通知任务。任务控制块中的结构体成员变量ulNotifiedValue,就是这个通知值。以及ucNotifyState这个是通知状态信号量,队列,事件标志组这些都可以模拟通知任务的功能。但是任务通知功能与前面这些最主要的区别就是内存消耗比较小。信号量,队列,事件标志组这些需要提前创建,而任务通知则不需要,其结构体成员就在TCB中。对比信号量,队列,事件标志组:优势:效率更好;内存需求更小;劣势:无法发送数据给ISR(中断);无法广播给多个任务;无法缓存多个数据(只能保持一个数据);
2024-09-04 13:52:57 233
原创 FreeRTOS 事件标志组
事件标志位,用一个位来表示某些事情是否发生事件标志组,用一组事件标示位集合。其实就是一个整数特点:每一位标志一个事件(高8位不算)每一位那的事件由用户自己决定,1为发送,0为未发生、任意任务或中断都可以读写这些未可以等待某位成立,也可等待多位同时成立#else#endif由上可见,事件标志位可以为32位,或者64位。取决于系统另外需要注意的是,事件标志位高八位是不可用于事件标志的。也就是说当portUBASE_TYPE为uint32_t时,我们只有24为可以使用。
2024-08-26 15:11:38 188
原创 FreeRTOS信号量
可以理解为状态通知,任务A发送信号给任务B,通知状态已改变。其主要使用在解决同步问题的机制,也就是任务A做完某件事情后通知任务B,任务B才可以继续执行代码。还有就是共享资源的有序访问,比如比较经典的停车问题与生产者和消费者的同步问题。信号量又分为,二值信号量,计数型信号量,互斥信号量二值信号量,计数型信号量区别在于计数值一个为1,一个大于1;
2024-08-25 22:14:16 264
原创 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 383
原创 FreeRTOS 常用接口解析
动态创建,任务控制块,任务栈空间由FreeRTOS从堆中进行分配。任务创建之后,会自动进去就绪态。静态创建,任务控制块,任务栈空间由用户自己定义。任务创建之后,会自动进去就绪态。
2024-08-15 17:55:33 256
原创 FreeRTOS 系统介绍
RTOS 相比于裸机,可以提供任务管理,实现多任务作业,信号量,消息队列,时钟,断言,延时等接口。对于一些需要实现多任务工作的产品,使用RTOS系统绝对是一个利大于弊的事情,且目前已有很多RTOS已经完全免费开源,RTOS提供的接口可以使系统功能更加稳定可靠。市面上有很多种实时操作系统类型,比如常见的:FreeRTOS,uCOS家族(I/II/III),RT-Thread,RTX等。每种操作系统有自己优势,有些操作系统收费,有些则是完全免费开源。目前很多芯片原厂都使用FreeRTOS,比如杰理,物骐等。
2024-08-15 16:49:09 211
原创 FreeRTOS Config 配置文件解析
值为1代表使用通用方式来选择下一个要执行的任务,为0则代表使用特殊方式。特殊方式则跟硬件相关,需要使用特定的架构汇报指令,且任务优先级有限制。一般与configTICK_RATE_HZ配合使用后,可以得出任务中最大的延时或者阻塞时间。完成FreeRTOS的功能配置和裁剪,比如信号量,互斥锁,队列灯。如果使用的是抢占式调度,此宏设为1后,同优先级的任务可以抢占空闲任务。滴答定时器的频率,单位hz,一般为1000,也就是1ms 中断频率。空闲任务的堆栈大小,单位是字,转换为字节则需要乘4。
2024-08-15 11:58:10 162
原创 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 489
原创 蓝牙bt SPP精讲之SPP连接
②SDP发起连接服务,展开后如下,上一章已介绍过,其中需要注意的是Servel Channel为1。后续建立的RFCOMM会在该channel上进行通讯。③发起RFCOMM连接,配置相关参数,以及交换双方此时状态。可以看到的是Channel为1。①L2CAP发起SDP连接,并且配置对应的signaling channel。可以看到data中即为我们发送的数据。
2024-07-24 14:22:46 395
原创 TWS耳机入耳检测原理分析介绍
tws耳机业内入耳检测。直接理解就是检测耳机是否放入耳道中,当检测到耳机放入耳道后,耳机会做一些相关的动作。比如播放音乐,接听电话等其他UI动作,以及优化电池电量、延长续航的作用。入耳检测功能在tws业内一些定位稍微高端点的机型中都比较常见,入耳检测也为耳机带来更加智能化的体验。入耳检测行业内目前分为两种技术路线,电容检测和光学检测。
2024-07-24 11:19:21 987
原创 蓝牙bt SPP精讲之SPP 介绍
SPP(),这个profile可以简单点来理解就是基于C/S架构,一对一,点对点的通讯。只不过在该profile中称为DevA/DevB。在两个设备之间建立简单的虚拟串口进行数据通信。目前该协议比较多的使用场景为在调试的时候,比如使用spp连接需要调试的设备,然后发送对应的指令给设备,触发调试相关功能等。产线也会使用得比较多,像声学测试站兆华CRY6151,指南测控,美格信,ANC测试站等。
2024-07-23 18:02:14 349
原创 蓝牙bt AVRCP精讲之AVRCP 连接及交互通讯
可以看到CT与TG之间可以建立两条channel。一个用于控制,一个用于browsing。用于control 的channel是必选项,且必须第一时间建立,用于browsing的channel是可选项。不过profile中建议如果有使用到browsing channel,则最好也同时建立。
2024-07-19 16:56:22 268
原创 蓝牙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 348
原创 蓝牙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 416
原创 蓝牙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 356
原创 蓝牙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 793
原创 蓝牙bt AVDTP精讲之AVDTP介绍一
Audio/Video Distribution Transport Protocol(AVDTP),音视频分布传输协议。如其名,AVDTP在BT连接使用的过程中起的作用就是对连接双方之间的音频流进行管理。包括音频链路建立,音频流的传输/分包/恢复/,音频流链路的控制,音频链路信令包的定义以及交互等功能。根据AVDTP SPEC,AVDTP是基于RTP协议,其包括RTP/RTCP两个协议。
2024-07-15 15:56:52 159
原创 蓝牙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 310
原创 蓝牙bt HFP 精讲之HFP介绍
HFP(Hands-Free Profile),说简单点其实就是免提功能。耳机和手机通过HFP协议可以实现接听、挂断、拒接、语音拨号等功能。HFP中分有两个角色,AG/HF。HF是免提的一端,AG则是音频一端。举一个最简单的例子,手机连接我们的蓝牙耳机,那么手机中的HFP的角色就是AG,我们平时用的蓝牙耳机中的HFP角色就是HF。
2024-07-13 11:00:37 560
原创 电池充放电参数解析
一段时间后,如果电池电压超过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 2338
原创 微源 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 419
原创 LP4069 蓝牙耳机电池充电管理IC
注意:full与chrg的区别,如果使用FULL pin来指示电池是否满电,那么直接读取FULL引脚低电平状态即可。如果使用CHRG pin来指示电池是否满电时,当满电时,CHRG引脚应由外部拉高电平,读取该引脚是,为高电平状态。FULL:电池满电状态输出引脚,当电池正在充电中,该引脚输出由IC外部上拉电阻拉高,当电池充满电,则该引脚会被IC内部主动拉低。CHRG:与FULL脚功能类似,当电池正在充电中,该引脚由IC内部主动拉低,当电池满电,则由IC外部拉高。EN:充电使能引脚,低电平使能。
2024-05-20 11:38:00 423
原创 华为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 862
原创 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 476 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 798
原创 简单ntc电路分析
把(1)号公式代入(2)公式,并且获取热敏电阻的,温度阻抗表,我们则可以计算出V(temp)的电压,也就是连接到adc采样点的电压。假设热敏电阻的电阻值为R(x),R2电阻与热敏电阻的并联电阻表示为R(r)可以看到A点即为,adc采样点,并且电路为一个简单的串并联电路。右端TEMP 接入adc 采样gpio,并且接入电路主芯片。左端 VDD18 提供一个稳定的1.8V电压。如上图为一个简单的ntc电路。
2024-02-26 15:03:39 1704
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人