There is a new serial programmer for I2C and SPI memory chips which is based on the much faster CH347T controller
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.
CH347T
Just as CH341A, the new CH347T is an USB interface chip which supports the same serial protocols UART, I2C, SPI and adds support for JTAG and SWD. But that is not all. CH347T comes with impressive speed upgrades for UART, I2C and SPI.
From the datasheet we can find that it is a 3.3V only device with 5V tolerant inputs. This sounds good and will solve the voltage levels issue (at least partially). The manufacturer came with two versions of this product, the “F” and the “T”. CH347F has more available pins and an interesting feature that could have been very useful for a programmer: I/O voltage levels can be set anywhere between 1.8 and 3.3 V by means of an external reference. Without this option, when using the CH347T based programmer, you will still have to employ a 1.8 V level converter for some memory chips.
Unlike CH341A which has two operating modes (serial UART or synchronous interface I2C/SPI), CH347 has two simultaneously usable interfaces: a serial UART and a configurable interface for an extra UART or I2C/SPI/JTAG/SWD. Therefore, when you connect CH347 to the USB port, you get an USB to serial converter by default and an additional interface which depends on selected mode.
How are modes selected? Well, in the case of CH347F by means of software. For the CH347T, some pins need to be pulled up or down at power-on to choose the desired mode.
Before getting to the programmer, let’s see some highlights of CH347T:
- UART baudrate up to 7.5 Mbps (in Mode 2 – used by the programmer) or up to 9 Mbps;
- I2C clock speed up to 1 MHz;
- SPI clock up to 60 MHz;
- 3.3 V device with 5 V tolerant input pins.
The programmer
Other than a purple PCB, the programmer looks similar to CH341A Mini Programmer and shares its form factor. CH347T requires minimum external components and we can see on the PCB an 8 MHz quartz oscillator, a linear 3.3 regulator and some capacitors and resistors. There are two status indicator LEDs, but they are wired in a rather strange way. There are also pinheaders on each side but keep in mind that pin mappings are different than those of CH341A Mini Programmer. In order to understand how this device works, I did what I usually do: trace the schematic.
CH347T V1.0 Programmer Schematic |
With DTR1 pulled high and RTS1 pulled low, CH347T is in operating mode 1 (high speed UART, I2C and SPI interfaces available).
Let's start with LEDs. RUN is wired to ACT pin, which according to datasheet is used to signal USB configuration completion. It turns on soon after you plug the programmer in an USB port and stays on. By the way, it is so bright that it hurts my eyes. The other LED, PWR is wired to CTS1 pin which is an auxiliary input pin for the serial port interface. Therefore PWR is always off since CTS1 is not exposed to serial port pinheader. I guess that with the proper software/driver, the pin function can be changed to GPIO6 and set as output to control LED.
Looking at the ZIF socket we can see another issue. The I2C EEPROMs are always powered at 5V and WP (write protect pin) is left floating... So, does it really work? The first issue is that you must not use this programmer with 3.3V I2C EEPROMs. The second issue is that as long as the memory is powered at 5V, its I/O port will also use this voltage levels. Although CH347T will not get damaged (SDA pin is 5V tolerant), the memory you are trying to program may not „understand” properly when the I/O lines are high. And the third issue... well, you can't write data unless you pull down WP pin to GND. I had no luck reading a 5V compatible I2C EEPROM with the official software, yet it did work with an unofficial tool. More about that on the software section.
With SPI memory chips there shouldn't be any issues. The voltage used for supply and I/O is 3.3 V. Just as with CH341A MiniProgrammer, HOLD pin is wired directly to VCC, but that should work.
Serial port works properly and you can even use a tool from the manufacturer of CH347T to control the port and get/set statuses of modem lines.
Overview
CH347 is the new USB to UART/I2C/SPI/JTAG/SWD interface and there is already a memory programmer which is based on this controller. CH347T is great for interfacing to SPI memory chips due to its high speed. I'm not happy with the way they implemented I2C in the programmer, where mixed voltage levels are still present.
In the second part, we'll install drivers and I'll walk you through the available software for this programmer (coming soon).
No comments :
Post a Comment
Please read the comments policy before publishing your comment.