基于NRF52832的一个蓝牙门锁低功耗方案

基于NRF52832的一个蓝牙门锁低功耗方案

在八月份的时候接受了一个做到一半的基于NEF52832的蓝牙门锁,用的是四节南孚电池,甲方那边的要求是功耗要做到半年以上,查阅了一下资料之后看到一些NEF52832的产品的功耗可以做到几年,比如加入DCDC,或者进入睡眠模式低功耗模式等。

我采用的是让门锁在不被外设唤醒的情况下进入睡眠模式的方法。至于外设的话用的是一种人体红外传感器,可以通过调节电阻来设置传感距离,在感应到人体时反馈回一个高电平,通过配置一个引脚作为唤醒引脚以接收高电平信号从而达到唤醒芯片的作用,通过测量,在睡眠模式下加上人体红外的耗电量大约为20微安(20μA),可以满足客户的要求。

1.配置高电平接收口的程序以下:

nrf_gpio_cfg_sense_input(BUTTON_1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_HIGH);

2.进入它的注释之后就会发现还可以配置IO口为低电平接收等多种模式可供选择:

typedef enum
{
    NRF_GPIO_PIN_NOSENSE    = GPIO_PIN_CNF_SENSE_Disabled, ///<  Pin sense level disabled.
    NRF_GPIO_PIN_SENSE_LOW  = GPIO_PIN_CNF_SENSE_Low,      ///<  Pin sense low level.
    NRF_GPIO_PIN_SENSE_HIGH = GPIO_PIN_CNF_SENSE_High,     ///<  Pin sense high level.
} nrf_gpio_pin_sense_t;

下面放一下主函数:

int main(void)
{
	 NRF_POWER->DCDCEN = 1;
	 nrf_gpio_cfg_default(O1);									 
     nrf_gpio_cfg_default(K1);
	 log_init();
	 timers_init();
	 power_management_init();
     ble_stack_init();
	 gap_params_init();
	 gatt_init();
	 advertising_init();
	 services_init();
     conn_params_init();
     control_set();  
	 NRF_LOG_INFO("Template example started.");  
	 scan_start();
	 //上述为初始化函数
	while(true)
	{
		idle_state_handle();
		nrf_delay_ms(5000);
		nrf_gpio_cfg_sense_input(BUTTON_1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_HIGH);
		nrf_gpio_cfg_default(INTA);		 								 
        nrf_gpio_cfg_default(INTB);										 
        nrf_gpio_cfg_default(LED2);
       nrf_gpio_cfg_default(beep);    
	   app_timer_stop_all();
       NRF_POWER->SYSTEMOFF = 1; 

	}
}
 

你可能感兴趣的:(基于NRF52832的一个蓝牙门锁低功耗方案)