mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
4fde033a5f
This commit adds support for using the RTC I2C peripheral on the ULP RISC-V core for esp32s2 and esp32s3. It also adds an example to demonstrate the usage of the RTC I2C peripheral. This commit also modifies the rtc_i2c register structure files to enable the use of bitfields in the ULP RISC-V RTC I2C driver.
77 lines
2.1 KiB
Markdown
77 lines
2.1 KiB
Markdown
| Supported Targets | ESP32-S2 | ESP32-S3 |
|
|
| ----------------- | -------- | -------- |
|
|
|
|
# ULP RISC-V I2C Example
|
|
|
|
This example demonstrates how to use the RTC I2C peripheral from the ULP RISC-V coprocessor in deep sleep.
|
|
|
|
The ULP program is based on the BMP180 Temperature and Pressure sensor (https://cz.mouser.com/datasheet/2/783/BST-BMP180-DS000-1509579.pdf) which has an I2C interface. The main CPU initializes the RTC I2C peripheral, the BMP180 sensor and loads the ULP program. It then goes into deep sleep.
|
|
|
|
The ULP program periodically measures the temperature and pressure values from the BMP180 sensor and wakesup the main CPU when the values are above a certain thershold.
|
|
### Hardware Required
|
|
|
|
* A development board with a SOC which has a RISC-V ULP coprocessor (e.g., ESP32-S2 Saola)
|
|
* A BMP180 sensor module
|
|
* A USB cable for power supply and programming
|
|
|
|
## Example output
|
|
|
|
Below is the output from this example.
|
|
|
|
```
|
|
Not a ULP-RISC V wakeup (cause = 0)
|
|
Initializing RTC I2C ...
|
|
RTC_I2C_STATUS_REG = 0x00000000
|
|
Reading calibration data from BMP180 ...
|
|
ac1 = 7819
|
|
ac2 = -1152
|
|
ac3 = -14317
|
|
ac4 = 34252
|
|
ac5 = 25122
|
|
ac6 = 14289
|
|
b1 = 6515
|
|
b2 = 44
|
|
mb = -32768
|
|
mc = -11786
|
|
md = 2746
|
|
|
|
Reading initial uncompensated temperature and pressure data ...
|
|
Uncompensated Temperature = 22865
|
|
Uncompensated Pressure = 41768
|
|
|
|
Real Temperature = 24.900000 deg celcius
|
|
Real Pressure = 990.640000 hPa
|
|
|
|
Entering in deep sleep
|
|
|
|
ESP-ROM:esp32s2-rc4-20191025
|
|
Build:Oct 25 2019
|
|
rst:0x5 (DSLEEP),boot:0x9 (SPI_FAST_FLASH_BOOT)
|
|
SPIWP:0xee
|
|
mode:DIO, clock div:1
|
|
load:0x3ffe6108,len:0x1298
|
|
load:0x4004c000,len:0x92c
|
|
load:0x40050000,len:0x2f04
|
|
entry 0x4004c154
|
|
W (76) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
|
|
ULP RISC-V woke up the main CPU
|
|
Uncompensated Temperature = 22865
|
|
Uncompensated Pressure = 41765
|
|
Reading calibration data from BMP180 ...
|
|
ac1 = 7819
|
|
ac2 = -1152
|
|
ac3 = -14317
|
|
ac4 = 34252
|
|
ac5 = 25122
|
|
ac6 = 14289
|
|
b1 = 6515
|
|
b2 = 44
|
|
mb = -32768
|
|
mc = -11786
|
|
md = 2746
|
|
|
|
New Real Temperature = 24.900000 deg celcius
|
|
New Real Pressure = 990.550000 hPa
|
|
Entering in deep sleep
|
|
```
|