LE5010蓝牙芯片(凌思微)开发总结

一、问题描述:项目中有一个温度传感器NST1001是通过计数脉冲来获取温度原始值的,每个 周期50ms,脉冲周期最大35ms,空闲时间15ms,脉冲脚配置为外部中,因为频繁进入外部中断,导致和蓝牙广播中断冲突,造成程序死机。

解决思路如下:

        1. 造成死机的原因是蓝牙和外部中断异常,可以把蓝牙和外部中断分开执行;

        2. 蓝牙广播间隔20ms~10.24s,可以适当拉大蓝牙广播间隔;

        3. 外部中断计数脉冲结束,关闭NST1001电源和外部中断,再进行蓝牙广播更新数据;

        4. 所有用到中断的模块,统一采集完数据之后,进行广播更新,然后再采集。

二、关于LE5010

        该芯片内核是采用cortex-m0架构,用蓝牙时添加蓝牙部分代码相当于:MCU+蓝牙(外设),不用蓝牙时就是一个普通的MCU,flash为512KB,SRAM为64KB。

        蓝牙项目总结:

        1)  裸机代码开发不能用while(1),功能模块添加到定时器回调函数中,函数中仅调用API和计时,其他的封装到外部,这样代码逻辑看起来更加整洁;

        2) 定时器、ADC、串口等外设,基本都是调用回调函数进行操作;

        3)  MCU的ADC特性,官方手册没有说明,测试发现采样电阻为200K,采集电压误差0.02,因为功耗为21uA,所以如果对功耗敏感,就不太适用于低功耗电路。可行的方案是:采样电路设计为2/3分压(因为电池电压4.2V,ADC仅采集到3.3V),采样电阻可以用200K(ADC采集更稳定,因为阻抗越大,变化越不敏感,更适用于采集电池电压计算电量值),在电路2/3分压处,一端接入ADC输入端,一端接I/O口,采集时拉低电平,不采集时拉高以降低功耗,另一端接的是Vbat;

        ADC输入大阻抗1M、2M,解决采集数据不稳定方法如下:

        ADC采集电压不稳定,每次休眠后复位采集的数据通过测试发现,只有间隔60ms采集一次,数据才能在第五次采集时稳定下来,对于低功耗设备来说不可取,因为采样电阻并联了一个100nf的电容,因为阻抗太大,导致电容充电时间太长,所以,复位之后开始时ADC采集电压会慢慢升高到稳定阶段,把并联电容去掉,ADC初始化驱动采用经过buf运放,ADC采集电压一开始采集上来就很稳定了。

        4) 查看蓝牙广播数据是否正常,可以通过nRF Connect进行实时监视;

        5) 蓝牙协议格式:len+type+data(len=type+data)。

        

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值