Showing posts with label Programmer. Show all posts
Showing posts with label Programmer. Show all posts

CH347 Programmer Drivers and Software for Windows

 Posted by:   Posted on:    15 comments

Now that we’ve explored the hardware aspects of the CH347T-based programmer, it’s time to dive into the drivers and software that bring this device to life. While the hardware offers substantial improvements in terms of speed and functionality, its true potential can only be unlocked with the appropriate software tools. This section will guide you through the installation process of the drivers and examine the software options available for interacting with the programmer.

One key consideration when using the CH347T programmer is the compatibility of the software and how well it manages the various serial interfaces it supports, including UART, I2C, SPI, JTAG, and SWD. We’ll explore Windows only tools, focusing on how they handle specific tasks such as memory programming, serial communication, and debugging.

CH347 Programmer Drivers and Software for Windows

CH347 Fast USB Programmer Schematic and Review

 Posted by:   Posted on:    2 comments

There is a new product on the cheap serial programmers market. Nanjing Qinheng Microelectronics Co., Ltd. (the same company which created CH341A under the brand WinChipHead) released a new and improved USB interface IC: the CH347. Zigong Yaojie Electronic Technology Co., Ltd. used this chip to make an upgraded serial memory programmer. To be more specific, they used the “T” version (CH347T) for a cheap programmer in a similar shape and size to the well known CH341A Mini Programmer.

So, is it worth to switch to CH347T programmer? If you’ve previously used CH341A Mini Programmer you may know it had some voltage levels issues (not the IC itself, but the programmer by design). It’s time to analyze the new CH347T programmer to see if old issues were fixed and what new limitations come from its currently available version.

CH347 Fast USB Programmer Schematic and Review

XTW100 Mini Programmer Usage and Tests

 Posted by:   Posted on:    No comments

Long time ago I got an XTW100 Mini Programmer and because it came without documentation I began by analyzing the hardware which resulted in tracing of its schematic. This is yet another cheap Chinese serial programmer for I2C and SPI memory chips based on STM32 microcontroller. Last time I managed to break its firmware by attempting to read it from the microcontroller. However, I got a new programmer and I’m ready to do some tests with it.

This time I will stay away from the programming port to avoid firmware damage. I will therefore focus solely on using it for the intended purpose: reading and writing memory ICs. I got myself two chips, the I2C EEPROM 24C02 and the SPI flash memory which will be used for tests. I talked about the software utility which you can use with this programmer in a previous post.

XTW100 Mini Programmer Usage and Tests

How to use the EZP2023+ USB Programmer

 Posted by:   Posted on:    19 comments

Previously I analyzed the hardware of EZP2023+ USB Programmer to find it is a rather simple device, based on CH552G microcontroller which allows for SPI, I2C and MicroWire capabilities. If you didn't know this is a serial memory programmer, which can be used to read and write a variety of memory chips, including EEPROMs and BIOS ICs commonly found in computers and other electronic devices. After I traced the schematic, I realized EZP2023+ also comes with mixed voltage levels (meaning it powers the memory to program with 3.3 V while the data bus uses 5 V for I/O) and this is a big issue since it can destroy whatever you are trying to read or program. 

In this post I will share my experience with the programmer and discover some flaws of its programming software. You should get the programming utility on a CD which is in the product box. Since recent computers and notebooks no longer have an optical drive, this is already an issue. Getting past that, on the CD you will find the user manual and accompanying software, with driver. Let's see how you get everything ready to program memory chips.

How to use EZP2023+ USB Programmer

EZP2023+ USB Programmer Overview and Schematic

 Posted by:   Posted on:    5 comments

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

IMSProg and other Linux utilities for CH341A

 Posted by:   Posted on:    6 comments

It was July 2017 when I ordered an EEPROM programmer I found on AliExpress for only 2.13 USD with free shipping. It wasn't a surprise it came without any kind of documentation. So I began searching for information since I didn't knew how to use it or what PC software I need to read a memory chip. In fact, I didn't even know how to place a chip in the programming socket. I gathered all information about the programmer hardware in this post. At that time I wasn't expecting this programmer to become so popular, still being used today.

The CH341A MiniProgrammer and other programmers based on this controller are affordable USB programmers used for reading and writing EEPROM chips and flash memory. They are widely used by hobbyists and technicians for tasks like flashing BIOS chips, recovering data from bricked devices, and working with various types of EEPROM and SPI flash memory chips. Yet, with all this popularity, the only (probably) official software for this programmer is Windows-only, hard to get and some of the alternatives come from not very trustful sites. Let's see what is available for Linux (Ubuntu).

Reading SPI Flash with IMSProg
Reading SPI Flash with IMSProg

Alternative firmware for XTW100 Programmer

 Posted by:   Posted on:    4 comments

I have bought the XTW100 Mini Programmer and while attempting to read the firmware of the STM32 MCU using an ST-Link programmer, somehow I erased the flash and got a totally useless piece of hardware. XTW100 is advertised as a better replacement for the CH341A based programmers and after tracing the schematic I failed to find any reasons why it should be better. The information I gathered can be found here.

With the original firmware, the programmer should be able to interface SPI and I2C EEPROMs and flash memory chips. However, since I have no way of getting that back to test whether the programmer works or not, I found there is an open-source firmware available. Unfortunatety, it does not come with I2C support.

Alternative firmware for XTW100 Programmer

XTW100 Mini Programmer Software and Tests

 Posted by:   Posted on:    1 comment

I traced the schematic of a new SPI/I2C memory programmer based on STM32 microcontroller: the XTW100 Mini Programmer. I should now use it to program some EEPROM and flash memory chips. Unfortunately, I can't go that far. All tests with the only programming application available went wrong. Everything failed except I2C EEPROM erase. The programming utility is a simple Delphi application, with "Chinese user-friendly operation interface". Not at all user-friendly for someone whose computer does not have any support for Chinese language installed. Anyway, after I couldn't use the programmer at all, I tried debugging it. I put a logic analyzer on all the pins for I2C EEPROM and got some strange PWM-like signals on SCL and A0 lines. Then I thought I could extract the binary firmware from STM32 flash with ST-Link. Bad idea. The device seems to have entered "self-destruct" mode after I cleared the read protection bit and all I can read now is an empty flash.

My programmer is now completely useless (no LEDs, no USB activity). All it needs is a new firmware (I found that an alternative firmware does exist). Having the schematic and plenty of development options, including Arduino support, writing an alternate firmware for this device is not an impossible task. But it requires time, since a new PC programming utility is also needed. I decided to write this post anyway, maybe this programmer really works for somebody. You can get a partially translated programming tool at the end of this post.

CH341A and XTW100 Mini Programmer

CH341A and XTW100 Mini Programmer

XTW100 Mini Programmer Schematic and Driver

 Posted by:   Posted on:    2 comments

I recently found a new serial programmer, the XTW100 Mini Programmer which is supposed to be an "upgraded" variant of the well-known CH341A Mini Programmer. Having a similar price to CH341A, I didn't wait any longer and ordered myself one. With a PCB slightly bigger (in length) than the PCB of CH341A, this new device is built around an STM32 ARM microcontroller. Having native USB port and hardware I2C and SPI, these microcontrollers with proper firmware could do a good job for this purpose.

Yet, there are some advertised features of this programmer that seem to good to be true (for a 4 USD programmer). Just as I did with the CH341A, I will try to draw the schematic and look for drivers and software for this XTW100 memory programmer. Because the STM32 is a 3.3 V device I can say for sure that this programmer will not have the 5 V bus levels issue. I got my XTW100 from AliExpress / WAVGAT store.

Product photo of XTW100 programmer

Product photo of XTW100 programmer

Old Prolific USB-Serial cable as programmer for Arduino

 Posted by:   Posted on:    No comments

I got a 3.3 V Atmega328p development board for a project. Since the board will be plugged into a PCB, I choose the Arduino Pro Mini compatible design, which is just the MCU with a few external parts that are required for proper functionality. There is no USB to serial TTL converter chip. This means that in order to program this board, I needed such a converter.

And I realized I didn't have a suitable one just when the development board arrived. All I own were CH340G with Tx and Rx lines only and the CH341A programmer locked to 5 V levels. The price of such a converter is not a problem, but having to wait for a month or so to be delivered is a problem. I remembered I had some old USB phone cables with included USB-RS232 converter so I decided to make my own adapter to program the 3.3 V Pro Mini board.

PL2303 Serial Adapter for Arduino Pro Mini

PL2303 Serial Adapter for Arduino Pro Mini

AsProgrammer and other Windows utilities for CH341A

 Posted by:   Posted on:    23 comments

CH341A serial programmers are cheap and quite popular. Probably the most used device is the MiniProgrammer. The CH341A is a USB interface chip that can emulate various communication protocols, such as UART, I2C, SPI, and JTAG. It is commonly used for programming EEPROM and BIOS chips, as well as debugging serial devices. The MiniProgrammer has a 16-pin ZIF socket that can hold different types of chips. CH341A requires a driver and a software tool to operate.

The manufacturer of CH341A chip offers drivers for all operating systems. They even offer API for programmers who want to build software to talk to CH341A. In spite of this, software tools for CH341A are not very easy to find. For Windows there is a programming utility that requires a license which is offered only if you buy the programmer from the developer's shop, on Chinese platform Taobao. In this post I'll show you the alternatives.

Reading 25xx SPI FLASH with AsProgrammer
Reading 25xx SPI FLASH with AsProgrammer

Program Arduino Pro Mini with CH341A dongle

 Posted by:   Posted on:    3 comments
Arduino Pro Mini is a development board based on ATmega168 or ATmega328 microcontroller. Unlike other members of the Arduino family, this board does not have an USB port for PC connection. To program it, you need an USB to serial TTL converter. There are many choices here, and the Arduino Pro Mini has a pinheader port that matches the pinout of FTDI USB serial breakout boards. ATmega MCU doesn't need all serial port pins. It requires serial data pins RxD and TxD and also DTR, which is connected to reset pin.

CH340 is another USB serial interface. It can be found at the core of the cheapest USB serial adapters, but these dongles are difficult to connect to Arduino because there is no power pin and no exposed DTR pin. The power pins on the CH340 USB breakout board are used with jumpers to select voltage levels (3.3V or 5V).

CH341A is a complex interface chip which adds parallel, I2C or SPI interface. It is used by memory programmers. However, by setting a jumper, it works as an usual USB to serial adapter. I will be using here a popular device based on CH341A, the black MiniProgrammer, to program an Arduino Pro Mini compatible board.
Program Arduino Pro Mini with CH341A dongle

CH341A SPI Programming (Windows API)

 Posted by:   Posted on:    11 comments
CH341A is an USB interface chip that can emulate UART communication, standard parallel port interface, parallel communication and synchronous serial (I2C, SPI). The chip is manufactured by Chinese company Jiangsu QinHeng Ltd.

CH341A is used by some cheap memory programmers. The IC is somehow limited in this configuration, because the programmer makes use only of the SPI and I2C interface. A popular device is the so-called "CH341A MiniProgrammer" that you can buy for 2 to 5 USD. And this is probably the cheapest device using CH341A.

If you got a "MiniProgrammer", you may want to use for more than memory chips programming. The device can actually be used as USB to SPI converter (not only SPI, but this article will focus only on SPI function). Let's see how to use the included library and header to communicate with SPI peripherals.
CH341A SPI Programming (Windows API)

PonyProg release 3.0 comes with modern UI

 Posted by:   Posted on:    2 comments
PonyProg is a software application that can read, write and program various memory chips and microcontrollers using the simplest possible interface: a serial port adapter. This adapter consist of only some resistors and some voltage limiting zener diodes. However, this approach has a big downside nowadays. It doesn't work with USB to serial converters. And computers with a real serial port are becoming very rare.

If you still have an older computer with a motherboard serial port, you may take into consideration building the serial adapter used by PonyProg, because it is easy to build and probably the cheapest programmer possible. The schematic of the interface can be found at the author's page (SI-Prog by Claudio Lanconelli).

Currently, PonyProg only support SI-Prog or other serial based programmers and some parallel port programmers. With serial port, it communicates by bit-banging various protocols to the signaling lines contained in the RS232 interface (RTS, CTR and DTR). It would be nice if a future version would support the modern USB based programmers (like the CH341A MiniProgrammer) which lack a good software.

PonyProg release 3.0 comes with modern UI
PonyProg 3.0 main window after reading an I2C EEPROM

CH341A I2C Programming (Windows API)

 Posted by:   Posted on:    21 comments
CH341A is an USB interface chip that can emulate UART communication, standard parallel port interface, parallel communication and synchronous serial (I2C, SPI). The chip is manufactured by Chinese company Jiangsu QinHeng Ltd.

CH341A is used by some cheap memory programmers. The IC is somehow limited in this configuration, because the programmer makes use only of the SPI and I2C interface. A popular device is the so-called "CH341A MiniProgrammer" that you can buy for 2 to 5 USD. And this is probably the cheapest device using CH341A.

If you got a "MiniProgrammer", you may want to use for more than memory chips programming. The device can actually be used as USB to I2C converter (not only I2C, but this article will focus only on I2C function). Let's see how to use the included library and header to communicate with I2C devices.
CH341A I2C Programming

CH341A Mini Programmer Schematic and Drivers

 Posted by:   Posted on:    78 comments

CH341A is an USB interface chip that can emulate UART communication, standard parallel port, memory parallel port and synchronous serial (I2C, SPI). The chip is manufactured by Chinese company Jiangsu QinHeng Ltd. CH341A is used by some cheap memory programmers. The IC is somehow limited in this configuration, because the programmer makes use only of the SPI and I2C interface and leaves a lot of pins unconnected. A popular device is the black CH341A MiniProgrammer that you can buy for 2 to 5 USD.

The problem with these devices is that you get them without any documentation or software. Drivers are available from manufacturer's website (but the site is written in Chinese). Also, some source codes are available from manufacturer. There are open source applications that support this programmer. But, first of all, let's have a look at the hardware.

Photo of the black CH341A Mini Programmer

Photo of the black CH341A Mini Programmer

Make a buffered JTAG adapter (Wiggler)

 Posted by:   Posted on:    No comments

JTAG is an in-circuit programming and debugging interface. It specifies the use of a dedicated debug port implementing a serial communications interface for low-overhead access without requiring direct external access to the system address and data buses. The interface connects to an on-chip test access port (TAP) that implements a stateful protocol to access a set of test registers that present chip logic levels and device capabilities of various parts.

JTAG interface is supported by many devices as a convenient way of rewriting firmware (specially boot loaders) when other methods fail. Using JTAG, the ROM memory can be directly written without desoldering it from PCB to program it using a specific programmer.

In most cases, you will need JTAG access to a device with a no longer working bootloader. Otherwise, if the bootloader runs, there should be easier ways of debricking the deice. Most of the times, a device with corrupt bootloader will not display any signs of working (i.e. no LEDs turned on in case of routers, no display on front panel of set-top-boxes). Nor any ports of the device will work (i.e. no serial port response, no network detected).

Buffered JTAG adapter (Wiggler)