当前位置:网站首页>Esp32-ulp coprocessor low power mode RTC GPIO interrupt wake up

Esp32-ulp coprocessor low power mode RTC GPIO interrupt wake up

2022-07-07 08:50:00 Morning breeze

Chen Tuo 2022/07/06-2022/07/06

1. summary

This example shows when ULP adopt  WAKE  Command to RTC When the controller sends an interrupt signal , How should the main program configure the interrupt handling function to respond to the interrupt signal .

  • RTC GPIO

RTC GPIO Altogether 18 individual IO mouth , these GPIO Pins have low power consumption RTC Performance and simulation functions , And by the ESP32 Of RTC Subsystem control . These functions are not used IO_MUX and GPIO Commutative matrix , But use RTC_MUX take IO Point to RTC Subsystem .

When these pins are configured as RTC GPIO When pin , As an output pin, the chip can be in Deep-Sleep Keep the output level value in sleep , Or when used as an input pin, the chip can be removed from Deep-Sleep Wake up in the .

The following table lists them RTC Pin and its corresponding GPIO Pin

 

ULP Interrupt sending official routine in ESP-IoT-Solution In the library :

GitHub - espressif/esp-iot-solution: Espressif IoT Library. IoT Device Drivers, Documentations And Solutions.icon-default.png?t=M5H6https://github.com/espressif/esp-iot-solution

  • ESP-IoT-Solution brief introduction

RTC GPIO

Official documents :

https://docs.espressif.com/projects/espressif-esp-iot-solution/zh_CN/latest/gettingstarted.html

 

  • ESP-IoT-Solution edition

Different versions ESP-IoT-Solution The explanation is as follows :

 

  • ESP-IoT-Solution Programming Guide

https://docs.espressif.com/projects/espressif-esp-iot-solution/zh_CN/latest/index.html

 

2. obtain ESP-IoT-Solution

  • Get orders

 

If from the official of Lexin github Library Download is difficult , You can start with gitee Clone a library on , And then from gitee Upload and download . Here is the download from my cloned Library , My library is private , You need to clone one yourself .

  • download esp-iot-solution v1.1

cd ~/esp

git clone -b release/v1.1 --recursive https://gitee.com/chentuo2000/esp-iot-solution.git

 

from gitee When downloading clone library , The subject is going well , Having trouble downloading submodules , You need to manually download the following sub modules :

 

Download manually according to the source and the corresponding installation path .

If you still can't download , You can download this from the link below 3 Sub module :

download Adafruit-GFX-Library.tar.gz

https://download.csdn.net/download/chentuo2000/85481416

download ugfx.tar.gz

https://download.csdn.net/download/chentuo2000/85481491

download lvgl.tar.gz

https://download.csdn.net/download/chentuo2000/85481538

3. development environment

《 Use Lexin domestic Gitee Image building ESP32 development environment 》

https://zhuanlan.zhihu.com/p/348106034

https://blog.csdn.net/chentuo2000/article/details/113424934?spm=1001.2014.3001.5501

4. Build the project

  • Official routine

ULP Example of interrupt sending program :

https://github.com/espressif/esp-iot-solution/tree/release/v1.1/examples/ulp_examples/ulp_send_interrupt

 

according to ULP Of WAKE Instructions :

-- If the Lord CPU In sleep mode , And ULP Wakeup is enabled , Then the interrupt signal will wake up the master CPU;

-- If the Lord CPU In non sleep mode , And RTC Interrupt enable register (RTC_CNTL_INT_ENA_REG) Corresponding ULP Interrupt enable bit (RTC_CNTL_ULP_CP_INT_ENA) To be placed , Then the interrupt signal will trigger RTC The controller generates an interrupt ;

The following is a ULP Interrupt registration and interrupt handling functions :

 

  • Copy official routine

Copy the official example project to ESP-IDF Beyond development tools :

cd ~/esp

cp -r ~/esp/esp-iot-solution/examples/ulp_examples/ulp_send_interrupt ~/esp/

  • Project tree

cd ulp_send_interrupt

 

  • Refresh esp-idf Environmental Science

get_idf

Be careful : Each time you open the terminal, enter sdk Execute this command once

  • Set the target chip

idf.py set-target esp32

  • Clear previous builds

idf.py fullclean

  • Configuration items

idf.py menuconfig

1) Set up Flash The memory size is 4MB

 

2) ULP It is enabled by default

 

3) choice Support array 'rtc_gpio_desc' fot ESP32

 

Otherwise, there will be error: 'rtc_gpio_desc' undeclared

preservation , sign out .

  • Compile the project

idf.py build

  • Burn project

see USB Serial port COM slogan :

 

burning :

idf.py -p /dev/ttyS3 -b 115200 flash

  • Enable monitor

idf.py monitor -p /dev/ttyS3

5. Sample test

After example startup ,ULP Will always be in a cycle ( Time is 20ms) Running state , testing GPIO0 Is it pressed . When the key is pressed and released :

-- If the Lord CPU In sleep mode , Then this operation will wake up the master CPU;

-- If the Lord CPU In non sleep mode , Then this operation will send a RTC interrupt , After the interrupt program completes the corresponding processing , Will the Lord CPU Set to enter sleep mode ;

The log of the system is printed as follows :

 

原网站

版权声明
本文为[Morning breeze]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207070615146791.html