刚接触BlueNRG-1低功耗时在代码里配置芯片进入低功耗模式,上电后测量VBLUE电流会忽高忽低变化 (VBLUE电源网络包含BlueNRG-1、加速度传感器和气压传感器) 将BLUENRG-1所有I/O配置为输出或输入,测量VBLUE电流,同样会有下图的变化 使用sleep test例程进入低功耗模式后用手摸气压传感器电流会升高 使用BLE_Beacon例程,直接测量VBLUE1电流,STM32L需要通过USB供电, 不然BLUENRG-1无法启动 2次尖峰为广播时的电流 测量电流如下,因为STM32在工作,电流会通过I/O为BLUENRG-1供电,实际电流可能不准 将电源接在VBLUE1上,不使用其它电源,用同一电源将RESETN上拉,使BLUENRG-1工作,测量电流如下 (VBLUE1电源网络只包含BlueNRG-1) 每发送一个广播后,电流上升,再缓慢下降 在sleep test例程里直接在while循环中加入sleep()函数,免去STM32L介入 电流无高低变化 改成5s一唤醒的sleep_timer函数试试,每唤醒一次翻转LED1 测量电流如下,LED熄灭时电流2.2mA左右,空闲时电流同样会高低变化 (当时测试Sleep_Test例程时可能有些地方没考虑到,测试的实际电流可能会有问题) 再回到BLE_Beacon例程 仔细观察电流在广播后300ms左右才上升的,试试将广播间隔设置小于300ms看看效果 效果如下 测量20秒内的平均电流为50.6uA 将广播改回10秒间隔 测量平均电流为93.59uA,比间隔为300ms的高出将近一倍 为了降低电流还要继续尝试 把while中的BTLE_StackTick去掉,可以发送数据,电流更高 休眠使用SLEEPMODE_CPU_HALT模式,平均电流2.7mA 不休眠平均电流3.08mA 既然软件设置引脚不好用(可能因为掉电模式I/O已经不工作了) 接好后的效果 将所有引脚都接地以后看到电流变得稳定了,可是平均电流居然80多uA? 去掉CN4上的GND,发现电流没有变化,去掉CN3接地电流变为650uA 去掉CN1电流变为60Ua 所有引脚连在一起,去掉接地电流没有变化 同时去掉CN1和CN3恢复原来的不稳定状态 经过测试,发现只要CN4和CN3的所有引脚连接在一起电流就可以控制在60uA左右 虽然电流很低,不过和不稳定时刚发送完广播后的25.68uA还相差很多 用万用表测量所有IO,DIO13、DIO11、DIO1有3.3V,其它为0V左右 看到DIO13连接在PUSH1按键上, 按键有100K电阻,100K就会消耗33uA的电流 其它有3.3V的引脚同样有不同的连接,将这些引脚悬空,只将无3.3V的引脚接地后测量电流终于可以降下来了 掉电后的电流为9.71uA,10秒一次广播的平均电流为15.44uA 最后连接后的效果 连接后的板子不能直接使用BlueNRG-1_Flasher_GUI下载程序,因为对应的引脚已经被接地,下程序时还需要将排针取下
ADC测量电池
后来测试只要DIO8与整体引脚连接在一起,即使不接GND,测量电压会比实际电压低0.4V DIO8为UART的TX功能,代码中有将DIO8配置成UART的代码,去掉,将DIO8配置为GPIO后问题解决 使用LSM6DS3时需要用到SPI接口, 对应的GPIO为DIO0,DIO1,DIO2,DIO3,如果这几个引脚对外悬空电流又会出现原来的情况 最后选择将这些引脚接上20K的下接电阻后解决,电阻值可以更大
|