User manual

22.8.2018 Pmod ESP32 Reference Manual [Reference.Digilentinc]
https://reference.digilentinc.com/reference/pmod/pmodesp32/reference-manual 5/8
The Pmod ESP32 has the ability to operate in slave mode using the UART interface on the top row of pins. In slave mode, the device
responds to a specific set of AT commands. More information about the AT command firmware can be found here: ESP 32 AT
Source (https://github.com/espressif/esp32-at). The device comes pre-configured with the AT command firmware installed. In slave mode,
the SPI peripheral and the GPIOs on the bottom row are unused.
The Pmod also has the ability to operate in stand alone mode. In stand alone mode, the user can write custom applications for the ESP
32. Custom applications can interface with the otherwise unused SPI interface and program the two GPIOs in the bottom row of pins.
To send the new application to the ESP32, the user can modify the switches and use the UART that is connected to the J2 header to
both flash and monitor the device.
The Pmod ESP32 has two switches. SW1.1 (labeled “SPI”) controls whether the top row of the Pmod is configured as a SPI interface or
UART interface. When SW1.1 is in the ON position, the top row of the Pmod is set as a SPI interface. Alternatively, when SW1.1 is set
in the OFF position, the top row of the Pmod is set as a UART interface.
SW1.2 (labeled “BOOT”) controls whether the ESP32 boots into an application stored in memory or, on power-up, waits to be flashed
with a new application. When the ESP32 is powered on, if SW1.2 is in the ON position, the ESP32 will enter a mode where it waits to be
flashed with a new application. If SW1.2 is in the OFF position, the ESP32 will boot and begin to run whatever application it has stored
in its memory.
The behavior of SW1.1 can be controlled by a host board by using the “Select” pin (pin 9 of Pmod header J1). Driving the Select pin
high will cause the top row of the Pmod connector to have SPI functionality, regardless of the value of SW1.1. Similarly, driving the
Select pin low will cause the top row of the Pmod connector to have UART functionality, regardless of the value of SW1.1.
Switch Value Behavior
SW1.1 (SPI) OFF UART interface is present on pins 1 - 4 of Pmod header J1
SW1.1 (SPI) ON SPI interface is present on pins 1 - 4 of Pmod header J1
SW1.2 (BOOT) OFF Upon boot, the ESP32 will load the application that is currently in memory
SW1.2 (BOOT) ON Upon boot, the ESP32 will not load any application and will wait for a new application to be programmed
After flashing the device with a new application, or when switching between boot modes specified by SW1.2, it is necessary to reset the
ESP32. A simple press of BTN1 will cause the ESP32 to reset, regardless of the state of the Enable pin, described below.
The behavior of BTN1 can be controlled by a host board by using the “Enable” pin (pin 8 of Pmod header J1). Driving the Enable pin
low will disable the ESP32. When Enable is driven high again, the ESP32 will reset and boot into the selected mode of operation.
The Pmod ESP32 contains an on-board LED () that can be directly programmed by the user. The LED () (LD0) is connected to IO12
on the ESP32. When using the AT firmware, LD0 cannot be directly controlled by the user. However, LD0 can be programmed by
writing custom applications for, and flashing, the ESP32.
The Pmod ESP32 is delivered to users in slave mode. In slave mode, the top row of pins are mapped to their UART functionality. It is
important that switches SW1.1 and SW1.2 are both in the off position when power is applied to the device. Once power has been
applied, the value of SW1.2 is arbitrary. However, SW1.1 must remain in the off position during the duration of operation in slave mode.
In slave mode, commands of a specific format (referred to as AT commands hereafter) are passed to the Pmod via the UART interface
on the top row of pins. The UART interface on the Pmod is initially set to function at 115200 baud with 8 data bits, 1 stop bit, and no
parity or hardware flow control. The settings of the UART interface can be modified by using specific AT commands later.
AT commands must always be followed by a carriage return and newline character, in that order. For example, the AT command “AT”
would be typed into the serial terminal as “AT<CR><LF>”, where CR stands for carriage return and LF stands for line feed or newline.
If the carriage return or line feed are not included at the end of the command, the Pmod will not respond to the command. Additionally,
AT commands may be sent to the Pmod in either upper case or lower case. The Pmod is initially set to echo back any UART data it
receives to the sender. Upon boot, when in slave mode, the Pmod will send the word “ready” over the UART interface.
A very sparse table of some AT commands is shown below. For the full list of supported AT commands, please visit the official AT
Command Set documentation (http://espressif.com/sites/default/files/documentation/esp32_at_instruction_set_and_examples_en.pdf), which is
provided by Espressif.
Switches
Pmod ESP32 Switch Behaviors
Reset Button
On-board LED
AT Command (Slave) Mode