ESS3H32 FAQ

Subject: ESS3H32 Manual and Example Code — RS485 Pin Discrepancy, Input Interrupts, Debounce Logic, and N16R8 Compatibility
Dear Eletechsup Support Team,
We are integrating an ESS3H32 board with an ESP32-S3 N16R8 module. After reviewing the supplied ESS3H32 MANUAL documents and Arduino examples, we found several points requiring clarification.
1. RS485 pin assignments differ between the manual and schematic
The pin tables in Read before use.txt and ESS3H32 16DI-16DO ESP32 S3 Expansion Board.pdf list:
RS485 Port: GPIO1, GPIO3, GPIO17
However, Schematic_ESS3H32.pdf appears to show:
RS485 function    Schematic connection
Transmit    GPIO43 / TX0 → transceiver DI
Receive    GPIO44 / RX0 ← transceiver RO
Direction control    GPIO1 / RS485_RD → DE and /RE


The ESS3H32_RS485_RW.ino example defines:
const int RS485RD = 1;
Serial0.begin(115200);
It does not explicitly assign TX and RX pins.
Please confirm:
- Are the correct RS485 pins GPIO43 for TX, GPIO44 for RX, and GPIO1 for direction control?
- Is the manual’s GPIO1/GPIO3/GPIO17 entry a typographical error, or does it describe a different board revision?
- Since MO5 is assigned to GPIO17, is there any actual electrical sharing between MO5 and RS485?
- Which Arduino board selection and ESP32 core version should be used so that Serial0 selects the correct pins?
The schematic file’s title block also reads “ES30F27,” REV 1.0, dated 2024-11-19, although the filename is Schematic_ESS3H32.pdf. Please confirm that this schematic applies to our ESS3H32 board.
2. Hardware interrupt and short-pulse support for IN1–IN16
The schematic and examples show two 74HC165 shift registers using:
GPIO9  — CLK
GPIO10 — LOAD
GPIO21 — DATA
The supplied input examples use polling. We did not find an input-change interrupt handler or a separate interrupt connection from the input circuitry to the ESP32-S3.
Please clarify:
- Can a change on any of IN1–IN16 generate a hardware interrupt? If so, which circuit and GPIO provide it?
- Is there any hardware event latch or pulse counter that retains pulses occurring between reads?
- If acquisition is polling-only, what minimum pulse width and maximum pulse frequency can be reliably detected, including optocoupler delays and the required polling interval?
- What do you recommend for applications requiring reliable pulse counting or individual rising/falling-edge detection?
Our concern is that a pulse starting and ending between two parallel-load operations may be missed entirely.
3. The input debounce comparison does not affect the returned value
In both ESS3H32_16DI.ino and ESS3H32_16DI_16DO.ino, Get_Input_Value() contains:
Value1 = Read_74HC165();
delay(20);
Value2 = Read_74HC165();

Value = Value1;
if (Value1 == Value2)
{
    Value = Value1;
}
Because Value is assigned Value1 before the comparison, the function returns the first sample even when the two samples differ. The comparison therefore does not reject an unstable input or change the result.
Please confirm:
- Is this a coding error in the supplied examples?
- Should a mismatch preserve the previous accepted value, trigger another sample, or follow another policy?
- Should debounce operate independently for each input channel?
- Can you provide corrected input acquisition and debounce code?
These examples also contain delay(100) in the main loop. Combined with the 20ms delay between reads, this adds 120ms of explicit delay per loop, excluding processing and communication time. Please explain the intended response time and pulse-detection limitations of these examples.
4. MO10–MO12 conflict with N16R8 Octal PSRAM pins
The supplied output examples assign:
ESS3H32 output    GPIO
MO10    GPIO37
MO11    GPIO36
MO12    GPIO35


Espressif’s ESP32-S3-WROOM-1/1U documentation identifies GPIO35, GPIO36 and GPIO37 as connected to Octal PSRAM and unavailable for other uses on the relevant N16R8 module.
Please confirm:
- Is the N16R8 module supported when using all 16 ESS3H32 outputs?
- How are these output circuits isolated from PSRAM activity, if at all?
- Which exact module model supports all 16 outputs without this conflict?
- Is a hardware modification or different carrier revision required?
Please provide the corrected pin table, the schematic applicable to the current ESS3H32 revision, supported module model numbers, and corrected Arduino examples.
Thank you for your assistance.
Best regards,

 

answer :

1. The schematic diagram takes precedence. There are no conflicts between the RS485 pins and the MOSFET pins.

2. "Schematic_ESS3H32.pdf" is the correct schematic diagram.

 

you mean i can use DO10,11,12 and PSRAM same time right? despite of   ESS3H32 output    ESP32-S3 GPIO    Conflict
MO10    GPIO37    Used by Octal SPI PSRAM
MO11    GPIO36    Used by Octal SPI PSRAM
MO12    GPIO35    Used by Octal SPI PSRAM

i just tested . it can not use same time you must notice this . it is big problem

 

Yes, we have also noted this; however, the ESP32 has a limited number of pins, and many of them are multiplexed.

 

multiplexed is OK. but avoid psram gpio pin

i current develop a new control  language act as plc but not for human for AI. target system is esp32.  first dev board is waveshare 8DI 8RO model   your ess3h32 is second dev board what i choose.  

as you know waveshare choose different approach for input and output.  input is need more timing accuracyor emergency case delay time may critical so interrupted input must have feature i guess.

 

 i will show you when ready to beta test our AI native mcu based PLC system.


 https://callin2.github.io/farm_studio_frontend/pig/#en/ch01


 run example button  bring you example source and simulation page

 

 

Regresar al blog

Deja un comentario