关于gpio中断

Discussions on BLE related products, including standard BLE devices, BLE mesh, and Apple HomeKit products
Post Reply
fengpeng_99
Posts: 3
Joined: Tue Jul 16, 2019 9:47 am

Wed Aug 28, 2019 5:09 pm

我这里有个应用,有个器件是iic接口的,接入8266,这个器件接口3根线,2根是i2c,一根是中断。器件数据采集好就发一个中断信号(低电平),然后8266就进入中断服务程序,通过i2c去读取数据。现在我问下,这个外部中断响应时间是多少?因为我通过示波器的波形感觉响应很慢,至少ms级了。 gpio口线配置如下。哪里有不对吗?
//配置int口
gpio_core_irq_enable_all(1);
gpio_set_func(GPIO_PE6, AS_GPIO); //enable GPIO func
gpio_set_input_en(GPIO_PE6, 1); //enable input
gpio_set_output_en(GPIO_PE6, 0); //disable output

//**step2. set the polarity and open pullup **
gpio_setup_up_down_resistor(GPIO_PE6, PM_PIN_PULLUP_10K); //open pull up resistor
gpio_set_interrupt_pol(GPIO_PE6, 1); //falling edge

//**step3. set irq enable **

reg_irq_src = FLD_IRQ_GPIO_EN; //clean irq status
reg_irq_mask |= FLD_IRQ_GPIO_EN;
gpio_en_interrupt(GPIO_PE6, 1);
irq_enable(); //must
CaoLiXiang
Posts: 2
Joined: Tue Jan 02, 2018 10:03 am

Mon Sep 02, 2019 2:51 pm

1.GPIO的中断响应时间跟当前所处的休眠状态密切相关,芯片一般有三种休眠状态,Running,Suspend,Deepsleep。如果芯片运行在Running状态的话,那么中断响应的速度是非常快的,uS级别就可以响应;如果芯片运行在后面两种状态的话,芯片也是很快就会感知到中断,但是此时系统处于低功耗模式,外部的晶振是处于停止状态的,所以要先晶振起振,然后进行PLL处理,这个过程就要耗费1mS以上。然后如果系统是从Deepsleep唤醒的,还要进行各种初始化的处理,就更加耗时了。一般我们芯片处于节省功耗的目的,都是在空闲的时候进入Suspend模式,所以mS级别的延时是正常的。如果不Care功耗,必须要很快的响应,那么可以关掉低功耗模式,一直处于Running模式,那么功耗就在10mA以上。
Post Reply