1.ULP 協處理器是一個功耗極低的協處理器設備,無論主 CPU 是處於正常運行模式還是 Deep-sleep 模式,ULP 協處理器都可以獨立運行。超低功耗協處理器的補充使得 ESP32 能夠勝任一些對低功耗要求較高的應用場合。ULP 協處理器的主要特性有:
- 采用 8 MHz 頻率和 8 KB 內存
- 內建 ADC 和 I2C 接口
- 支持正常模式和 Deep-sleep 模式
- 可喚醒主 CPU 或向主 CPU 發送中斷
- 能夠訪問主 CPU 的外圍設備、內部傳感器及 RTC 寄存器
2.ULP 協處理器能夠在消耗較低電流的情況下,完成 ADC 采樣,進行 I2C Sensor 的讀寫,驅動 RTC GPIO 口動作,可以在某些超低功耗場景中完全替代主 CPU。ULP 協處理器的理想工作狀態是周期性喚醒,短暫工作之后,繼續進入休眠狀態,以短時間高效的工作和長時間的休眠換取低功耗平衡。
3.ULP(Ultra Low Power 超低功耗)協處理器是一種簡單的有限狀態機 (FSM),可以在主處理器處於深度睡眠模式時,使用 ADC、溫度傳感器和外部 I2C 傳感器執行測量操作。ULP 協處理器可以訪問 RTC_SLOW_MEM 內存區域及 RTC_CNTL、RTC_IO、SARADC 等外設寄存器。ULP 協處理器使用 32 位固定寬度的指令,32 位內存尋址,配備 4 個 16 位通用寄存器。
4.ULP 協處理器由定時器啟動,而調用 ulp_run 則可啟動此定時器。定時器為 RTC_SLOW_CLK 的 Tick 事件計數(默認情況下,Tick 由內部 150 KHz 晶振器生成)。使用 SENS_ULP_CP_SLEEP_CYCx_REG 寄存器 (x = 0..4) 設置 Tick 數值。第一次啟動 ULP 時,使用 SENS_ULP_CP_SLEEP_CYC0_REG 設置定時器 Tick 數值,之后,ULP 程序可以使用 sleep 指令來另外選擇 SENS_ULP_CP_SLEEP_CYCx_REG 寄存器。