笔记

本文分享了DA14585芯片的实用技巧,包括复位框图理解、数据追加给扫描响应包的方法、字节对齐的重要性以及BUCK和BOOST模式的应用场景。此外,还介绍了C语言中除法的四舍五入与进一法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际项目中经常遇到一些小问题,解决后不足以写个博客,所以就开个文章写些杂七杂八的东西,当作小知识经验总结。

一、DA14585复位框图理解

在这里插入图片描述
已知DA14585复位信号有三类,当信号有效时会启动POR Timer,若达到设定的值则POReset有效,复位成功。

二、C语言除法”四舍五入“与“进一法”的实现

R:计算结果 a:被除数 b:除数:
1(四舍五入) : R=(a+(b/2))/b
2(进一法) : R=(a+(b-1))/b

三、DA14585如何将数据追加给扫描响应包

app_easy_gap_undirected_advertise_start_create_msg函数用于广播包组包,该函数中会对广播包的剩余长度进行判断,如果不够的话会将多余的数据写进扫描响应包,所以要做的事情就是修改该函数,直接将项目需要的包写进扫描响应包,这里还要主要一个追加函数:app_add_ad_struct()这里面可以将一些数据追加给广播包还是扫描响应包,至于扫描响应包如何被585主机读取,需要将主机的扫描模式设置下。

四、字节对齐一定要成对出现

转自:https://blog.youkuaiyun.com/wanxuexiang/article/details/86658855
在我们代码里若需要按照自己的方式对结构体进行字节对齐,那么在使用完成后一定要使用语句#pragma pack(pop)或#pragma pack(pop)恢复之前的对齐方式,因为可能自定义的方式不适用于底层,如下,之前我在自定义1字节对齐后没有恢复对齐方式,导致蓝牙底层传上来的数据错误,之前考虑过代码量太大导致的,找了很久原因才发现是字节对齐后没恢复本来的方式,特此写出来。
#pragma pack(1) //这里打开会导致接收的蓝牙数据出错
// Data ADV structure type
typedef struct
{
uint8_t thmmtr_data_integer;//温度数据整数
uint8_t thmmtr_data_decimal;//温度数据小数
}thmmtr_data_t;

typedef struct
{
uint8_t data_structure_size;
uint8_t data_structure_type;
module_state_t module_state;//开关机状态
batt_state_t batt_state;//低电量报警
thmmtr_measure_t thmmtr_measure_state;//温度测量状态
thmmtr_data_t thmmtr_data;//温度数据
thmmtr_state_t thmmtr_state;//温度报警
uint8_t batt_perct;//电量最大100%
}data_structure_t;
#pragma pack()

五、DA1458x系列芯片的BUCK和BOOST模式问题

总所周知,585的供电范围可达0.9-3.6V,这其中就用到了降压与升压模式
在这里插入图片描述
在这里插入图片描述
其中,32k晶振可在BUCK模式下省掉,以节约成本,但是BOOST模式时不能省,因为会引起芯片内部电源模块启动不稳定导致芯片有可能起不来。一般情况,纽扣电池供电时用BUCK模式,同时可省掉外部32k晶振,采用内部32k;1.5V碱性电池供电时用BOOST模式。
那么,判断是哪种模式主要看VBAT1V脚,如果接地了就是BUCK模式,接电源则是BOOST模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TomWang-0214

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

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

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

打赏作者

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

抵扣说明:

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

余额充值