EZP2023+ USB Programmer Overview and Schematic

 Posted by:   Posted on:   Updated on:  2023-12-26T12:52:50Z

Another cheap USB programmer for SPI, I2C and MicroWire gets dissected only to find the same old issues about voltage levels

EZP2023+ is another USB programmer for SPI, I2C and MicroWire memory chips. It is not as cheap as the CH341A however it has some nice features. I got mine from AliExpress with a set of adapters for SMD packages, an SMD clip and LCD panel adapter. It also came with 1.8 V adapter board which is also a nice thing. EZP2023+ is advertised as the fastest programmer, better than previous EZP2019. Soon after I ordered it, I found there is also EZP2025, already available in 2023...

Anyway, the main reason I got myself one is for the set of adapters which can also be used for CH341A MiniProgrammer. In comparison to that, EZP2023+ seems to be a better product, having a proper enclosure. Although I got a CD with this programmer (which contains driver, software and user manual), they forgot to mention how should I place the IC in the programming socket. I had to get a clear understanding of how it should be used properly, so I disassembled the case to have a look at the electronics.

EZP2023+ High Speed Programmer Schematic and Drivers
EZP2023+ USB Programmer

To my surprise, I quickly recognized the WinChipHead logo of Nanjing Qinheng Microelectronics Co., Ltd. on the main IC present on the PCB. This is the same company which manufactures CH340 and CH341. The programmer is based on one of their microcontrollers, CH552G, an enhanced E8051 core MCU compatible with MCS51 instruction set.

CH552 supports at most 24MHz system clock frequency and has built-in 16K program memory ROM, 256-byte internal iRAM and 1K-byte internal xRAM which supports direct memory access (DMA). CH552 has built-in analog-to-digital converter (ADC), touch key capacitance detection, 3 sets of timers, signal capture, PWM, 2 UARTs, SPI, USB device controller and full-speed transceiver and other function modules.

EZP2023+ electronics PCB
EZP2023+ PCB

There are only a few parts on the PCB: main microcontroller, USB connector, a voltage regulator, two transistors, two LEDs and some capacitors and resistors. Only the upper half of the ZIF socket is used (next to the handle). The USB connector is held in place by the enclosure (if you open the programmer, you have to be careful not to bend it and break its soldered pins).

There is an unpopulated jumper between MCU and voltage regulator U2. Put a 10k resistor here and the MCU will enter programming (download) mode.

EZP2023+ USB Programmer Schematic
EZP2023+ USB Programmer Schematic

There are two 3.3 V sources on this programmer. First, there is CH552G which has an internal 3.3 V low current regulator for its USB interface. Note that the programming mode jumper pulls up USB D+ to this power output. Second, there is U2, a common 1117 linear regulator which supplies power to ZIF socket.

Both power lines at the ZIF socket are activated by a MOSFET. Therefore the MCU can decide when to power the device placed in the socket and what levels to use. Q1 (SI2302) pulls socket ground to GND. Q2 (SI2305) allows bypassing voltage regulator U2, therefore acting as a switch between 3.3 V and 5 V.

Chip placement in ZIF socket with EZP2023
Chip placement in ZIF socket with EZP2023

Ok, so there is a voltage switch and it controls the supply lines. But what about I/O? Is this programmer having the same problem as CH341A MiniProgrammer? I had to look in the datasheet and use the oscilloscope to find out. Well, the datasheet only let me know that, even when powered from 5 V, CH552 considers high a voltage level above 2.4 V.

Memory supply voltage (yellow trace) and clock signal (cyan trace)
Memory supply voltage (yellow trace) and clock signal (cyan trace)

The above screen capture proves EZP2023+ has the same flaw as CH341A MiniProgrammer... The yellow probe is connected to socket VCC, while the cyan one to clock signal. Oscilloscope ground is connected to socket GND. When idle, the memory supply voltage stays at 3.3 V. However, when performing an operation it seems to increase a bit and I don't understand why (maybe it isn't a true voltage increase since I'm using long dupont wires to connect to oscilloscope probes; also this is why the signal waveforms look so wobbly).

Next comes the obvious question. Can it be tweaked to be fully 3.3 V compatible? In theory yes, the CH552 can work properly with 3.3 V. According to datasheet, in 3.3 V applications, V33 pin must be connected to VCC and supplied with 3.3 V.


EZP2023+ is another cheap USB programmer for SPI, I2C and MicroWire devices. Although it is advertised as the fastest programmer on the market, it comes with the same voltage levels issue as CH341A MiniProgrammer. The good thing about it is that you can usually get it with a lot of adapters.

The only available programming utility is the one shipped with the device itself, on a CD. It is a Windows only application.

There will be some future posts about the programming workflow and (maybe) an attempt to fix the voltage levels.

No comments :

Post a Comment

Please read the comments policy before publishing your comment.