Download Print this page

Espressif ESP32 Technical Reference Manual page 666

Hide thumbs Also See for ESP32:

Advertisement

30 ULP Coprocessor (ULP)
30.3 Functional Description
The ULP coprocessor is a programmable FSM (Finite State Machine) that can work during deep sleep. Like
general-purpose CPUs, ULP coprocessor also has some instructions which can be useful for a relatively
complex logic, and also some special commands for RTC controllers/peripherals. The 8 KB of SRAM RTC slow
memory can be accessed by both the ULP coprocessor and the CPU; hence, it is usually used to store
instructions and share data between the ULP coprocessor and the CPU.
The ULP coprocessor can be started by software or a periodically-triggered timer. The operation of the ULP
coprocessor is ended by executing the
RTC domain, either through built-in instructions or RTC registers. In many cases the ULP coprocessor can be a
good supplement to, or replacement of, the CPU, especially for power-sensitive applications. Figure
shows the overall layout of a ULP coprocessor.
30.4 Instruction Set
The ULP coprocessor provides the following instructions:
• Perform arithmetic and logic operations - ALU
• Load and store data - LD, ST, REG_RD and REG_WR
• Jump to a certain address - JUMP
• Manage program execution - WAIT/HALT
• Control sleep period of ULP coprocessor - SLEEP
• Wake up/communicate with SoC - WAKE
• Take measurements - ADC
• Communicate using I²C - I2C_RD/I2C_WR
The ULP coprocessor's instruction format is shown in Figure 30-2.
31
28
27
OpCode
An instruction, which has one OpCode, can perform various different operations, depending on the setting of
Operands bits. A good example is the
operations; or the
JUMP
Each instruction has a fixed width of 32 bits. A series of instructions can make a program be executed by the
ULP coprocessor. The execution flow inside the program uses 32-bit addressing. The program is stored in a
dedicated region called Slow Memory (RTC_SLOW_MEM), which is visible to the main CPUs as one that has
an address range of 0x5000_0000 to 0x5000_1FFF (8 KB).
The OpCode in this chapter is represented by 4'dx, where 4 stands for 4-bit width, 'd is a decimal symbol,
stands for the value of OpCode (x: 0 ~ 15).
Espressif Systems
HALT
instruction. Meanwhile, it can access almost every module in
Figure 30-2. The ULP Coprocessor Instruction Format
ALU
instruction, which is able to perform 10 arithmetic and logic
instruction, which may be conditional or unconditional, absolute or relative.
Submit Documentation Feedback
Operands
666
30-1
0
x
ESP32 TRM (Version 5.2)

Advertisement

loading
Need help?

Need help?

Do you have a question about the ESP32 and is the answer not in the manual?