-
Couldn't load subscription status.
- Fork 3.1k
ESP8266 ESP32 Compatibility
Rene K. Mueller edited this page Mar 10, 2018
·
18 revisions
This document reflects conflicts between
and requirements to achieve larger degree of compatibility.
-
adc: configure ADC (Analog/Digital Converter), read -
file: file operations, read/write -
gpio: configure GPIO, read/write -
i2c: configure I2C, read/write -
spi: configure SPI, read/write -
tmr: timer operations millisecond exact -
net: client and server (tcp/udp) networking -
node: general device information, cpu freq settings etc, read/write -
uart: configure UART, read/write -
wifi: configure WIFI (station/access-point)
| Function | ESP8266 | ESP32 | Linux |
|---|---|---|---|
| init ADC | adc.force_init_mode(node) |
adc.setup(adc_number,channel,atten) |
|
| read ADC | adc.read() |
adc.read() |
|
| read system ADC | adc.readvdd33() |
ESP8266:
-
adc.force_init_mode(node)Checks and if necessary reconfigures the ADC mode setting in the ESP init data block.-
mode:adc.INIT_ADCadc.INIT_VDD33
-
-
adc.read()Samples the ADC. -
adc.readvdd33()Reads the system voltage.
ESP32:
-
adc.setup(adc_number,channel,atten)-
adc_numberOnlyadc.ADC1now -
channelWhen using adc.ADC1: 0 to 7.0: GPIO36, 1: GPIO37, 2: GPIO38, 3: GPIO39, 4: GPIO32, 5: GPIO33, 6: GPIO34, 7: GPIO35 -
attenOne of following constants-
adc.ATTEN_0dbThe input voltage of ADC will be reduced to about 1/1 (1.1V when VDD_A=3.3V) -
adc.ATTEN_2_5dbThe input voltage of ADC will be reduced to about 1/1.34 (1.5V when VDD_A=3.3V) -
adc.ATTEN_6dbThe input voltage of ADC will be reduced to about 1/2 (2.2V when VDD_A=3.3V) -
adc.ATTEN_11dbThe input voltage of ADC will be reduced to about 1/3.6 (3.9V when VDD_A=3.3V, maximum voltage is limited by VDD_A)
-
-
-
adc.read()Samples the ADC.
The object mode of file operations isn't implemented yet (file.read() vs src = file.open() src:read()) according dev-esp32 documentation.
| Function | ESP8266 | ESP32 | Linux |
|---|---|---|---|
| open file | file.open() |
file.open() |
file.open() |
| close file | file.close() |
file.close() |
file.close() |
| read file | file.read() |
file.read() |
file.read() |
| write file | file.write() |
file.write() |
file.write() |
| seek file | file.seek() |
file.seek() |
file.seek() |
| flush file | file.flush() |
file.flush() |
file.flush() |
| stat file | file.stat() |
file.stat() |
file.stat() |
| list files | file.list() |
file.list() |
file.list() |
| close file (object-based) | file:close() |
file:close() |
|
| read file (object-based) | file:read() |
file:read() |
|
| write file (object-based) | file:write() |
file:write() |
|
| read line (object-based) | file:readline() |
file:readline() |
|
| write line (object-based) | file:writeline() |
file:writeline() |
|
| seek file (object-based) | file:seek() |
file:seek() |
|
| flush file (object-based) | file:flush() |
file:flush() |
ESP8266:
-
file.obj:close()Closes the open file, if any. -
file.obj:flush()Flushes any pending writes to the file system, ensuring no data is lost on a restart. -
file.obj:read()Read content from the open file. -
file.obj:readline()Read the next line from the open file. -
file.obj:seek()Sets and gets the file position, measured from the beginning of the file, to the position given by offset plus a base specified by the string whence. -
file.obj:write()Write a string to the open file. -
file.obj:writeline()Write a string to the open file and append '\n' at the end.
ESP32:
- all above listed are missing according documentation
| Function | ESP8266 | ESP32 | Linux |
|---|---|---|---|
| set single pin mode | gpio.mode(pin,type,pullup) |
gpio.mode(pin,type,pullup) |
|
| set multiple pin mode | gpio.config({gpio=..,dir=..,pull=..,opendrain=..}) |
||
| trigger callback | gpio.trig(pin,type,callback(level,when)) |
gpio.trig(pin,types,callback(pin,level)) |
ESP8266:
-
gpio.mode(pin,type,pullup)-
type:gpio.INPUTgpio.OUTPUTgpio.OPENDRAINgpio.INT
-
pullup:-
gpio.FLOAT(default) -
gpio.PULLUPenables the weak pull-up resistor
-
-
-
gpio.trig(pin,type,callback(level,when))-
type:"up", "down", "both", "low", "high"
-
ESP32:
-
gpio.config({gpio=..,dir=..,pull=..,opendrain=..})-
dir:gpio.INgpio.OUTgpio.IN_OUT
-
pull:-
gpio.FLOATINGdisables both pull-up and -down -
gpio.PULL_UPenables pull-up and disables pull-down -
gpio.PULL_DOWNenables pull-down and disables pull-up -
gpio.PULL_UP_DOWNenables both pull-up and -down
-
-
-
gpio.trig(pin,types,callback(pin,level))-
type:-
gpio.INTR_UPfor trigger on rising edge -
gpio.INTR_DOWNfor trigger on falling edge -
gpio.INTR_UP_DOWNfor trigger on both edges -
gpio.INTR_LOWfor trigger on low level -
gpio.INTR_HIGHfor trigger on high level
-
-
| Function | ESP8266 | ESP32 | Linux |
|---|---|---|---|
| general info | node.info() |
node.info() |
|
| chip id | node.chipid() |
node.chipid() |
node.chipid() |
ESP8266:
-
node.info()returns 8 elements:- majorVer (number)
- minorVer (number)
- devVer (number)
- chipid (number)
- flashid (number)
- flashsize (number)
- flashmode (number)
- flashspeed (number)
-
node.chipid()returns an integer (last 3 bytes of the station MAC address)
ESP32:
-
node.info()missing -
node.chipid()returns hex string with '0x' as prefix and 7 bytes whereas the last byte of the MAC address is dropped (risk of 256 identical chipids)
Linux:
-
node.info()reports 8 elements plus new 9th element the architecture 'linux' ('esp8266' or 'esp32' as other options) -
node.chipid()reports last 3 octets of first network MAC address
| Function | ESP8266 | ESP32 | Linux |
|---|---|---|---|
| microsecond counter [integer] | tmr.now() |
tmr.now() |
|
| second counter [integer] | tmr.time() |
tmr.time() |
|
| seconds with us precision [float] | tmr.uptime() |
ESP8266:
-
tmr.now()returns microseconds [integer] -
tmr.time()time in seconds since boot (uptime) [integer] -
tmr.uptime()might not be available when integer only firmware
ESP32:
-
tmr.now()missing -
tmr.time()missing -
tmr.uptime()missing
Linux:
-
tmr.uptime()added, uptime with microsecond precision [float]
| Function | ESP8266 | ESP32 | Linux |
|---|---|---|---|
| change pins | uart.alt() |
||
| set callbacks |
uart.on()1)
|
uart.on()2)
|
|
| setup | uart.setup() |
uart.setup() |
|
| get config | uart.getconfig() |
||
| write uart | uart.write() |
uart.write() |
|
| start uart | uart.start() |
||
| stop uart | uart.stop() |
- and 2) API has changed, not compatible.
ESP8266:
-
uart.alt(on)Change UART pin assignment (on: 0 = default, 1 = use alternate pins GPIO13 and GPIO15) -
uart.on(method, [number/end_char], [function], [run_input])Sets the callback function to handle UART events. -
uart.setup()(Re-)configures the communication parameters of the UART. -
uart.getconfig()Returns the current configuration parameters of the UART. -
uart.write()Write string or byte to the UART.
ESP32:
-
uart.on([id], method, [number/end_char], [function], [run_input])Sets the callback function to handle UART events. -
uart.setup()(Re-)configures the communication parameters of the UART. -
uart.start()Start the UART. -
uart.stop()Stop the UART. -
uart.write()Write string or byte to the UART.
ESP8266 and ESP32 differ a lot:
ESP8266
- events are captured via
wifi.eventmon.*:-
wifi.eventmon.register(event[, function(T)])wifi.eventmon.STA_CONNECTEDwifi.eventmon.STA_DISCONNECTEDwifi.eventmon.STA_AUTHMODE_CHANGEwifi.eventmon.STA_GOT_IPwifi.eventmon.STA_DHCP_TIMEOUTwifi.eventmon.AP_STACONNECTEDwifi.eventmon.AP_STADISCONNECTEDwifi.eventmon.AP_PROBEREQRECVED
-
ESP32:
- events are captured via
wifi.on()-
wifi.ap.on(event, callback)-
event:-
start: no additional info -
stop: no additional info -
sta_connected: information about the client that connected: -
mac: the MAC address -
id: assigned station id (AID) -
disconnected: information about disconnecting client -
mac: the MAC address -
probe_req: information about the probing client -
from: MAC address of the probing client -
rssi: Received Signal Strength Indicator value
-
-
-