XTW100 Mini Programmer Software and Tests

 Author:   Posted on:   Updated on:  2021-04-27T18:50:22Z

Get a partially translated programming software for the SPI/I2C XTW100 Mini Programmer. List of supported memory chips below

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

In the above photo you can see the good CH341A and the bigger XTW100. Lower is an "USB Blaster" JTAG programmer, based on the same STM32 MCU. After a similar attempt to read firmware from flash, it got completely erased. But there is another interesting fact about it. This one has real voltage switching achieved with the help of 74HC244 IC. And it has nearly the same price as XTW100. Both of these STM32 devices can be programmed from Arduino IDE with a ST-Link.

Although XTW100 uses STM32F103C8T6 MCU which should have 64 kB flash, it actually is the STM32F103CBT6 with 128 kB flash.

XTW100 MCU Info

XTW100 MCU Info

Supported chips

SPI Flash

AMIC: A25L05P, A25L05PT, A25L512, A25L10P, A25L010, A25L020, A25L20P, A25L40P, A25L040, A25L080, A25L80P, A25L16P, A25L016, A25L032.

ATMEL: AT25F512, AT25F512B, AT25F512A, AT25F1024, AT25FS010, AT25F1024A, AT25F2048, AT25DF021, AT25DF041A, AT25F4096, AT26F004, AT26DF041A, AT25FS040, AT26DF081A, AT26DF161A, AT25DF161, AT26DF161, AT26DF321, AT25DF321A, AT25DF321, AT25DF641.

EON: EN25B05, EN25F05, EN25B05T, EN25P05, EN25LF05, EN25F10, EN25P10, EN25D10, EN25LF10, EN25D20, EN25LF20, EN25F20, EN25F40, EN25D40, EN25LF40, EN25T80, EN25D80, EN25Q80, EN25F80, EN25P80, EN25Q16, EN25H16, EN25B16T, EN25F16, EN25D16, EN25T16, EN25B16, EN25F32, EN25P32, EN25B32, EN25Q32, EN25B32T, EN25B64T, EN25Q64, EN25F64, EN25B64, EN25F128, EN25Q128.

BOYA: BY25D05AS, BY25D10AS, BY25D20AS, BY25Q20AL-1.8V, BY25Q20AS, BY25Q40AS, BY25Q40AW, BY25D40AS, BY25D80AS, BY25D16AS, BY25Q32AL-1.8V, BY25Q32BS, BY25Q64AS, BY25Q128AS. Important: 1.8 V chips require voltage level converter!

ES: ES25P40, ES25P80, ES25P16.

ESMT: F25L04UA, F25L004A, F25L08PA, F25L008A, F25L016A, F25L16PA, F25L32PA, F25L32QA, F25L64QA.

GIGADEVICE: GD25Q512, GD25Q10, GD25Q20, GD25Q20, GD25D40, GD25Q41, GD25F40, GD25Q40, GD25D80, GD25F80, GD25Q80, GD25T80, GD25Q16, GD25Q32, GD25Q64, GD25Q128.

KH: KH25L4006E, KH25L8036D, KH25L8006E, KH25L1606E.


MXIC: MX25V512, MX25L512, MX25L1005, MX25L2005, MX25L2026, MX25U4035, MX25V4035, MX25L4005A, MX25V4005, MX25L8005, MX25V8006E, MX25V8005, MX25U8033E, MX25L8036E, MX25V8035, MX25L8035E, MX25U8035, MX25L8006E, MX25L1636E, MX25L1606E, MX25L1633E, MX25L1608D, MX25L1635E, MX25U1635E, MX25L1605D, MX25L1608E, MX25L1636D, MX25L3225D, MX25L3237D, MX25L3236D, MX25L3206E, MX25L3205D, MX25U3235E, MX25L3208D, MX25L3235D, MX25U3235F, MX25L3208E, MX25L6455E, MX25L6408D, MX25L6465E, MX25L6408E, MX25L6406E, MX25L6445E, MX25L6405D, MX25L6436E, MX25L6406, MX25L12865E, MX25L12835E, MX25L12836E, MX25U12835F, MX25L12835F, MX25L12855E, MX25L12845E, MX25L12805D, MX25L25635E/F, MX25L25639F, MX25L25735E/F, MX25U25635F, MX25L2573, MX66L51235F, MX66U5123F.

PMC: PM25LV512A, PM25LV010A, PM25LV020, PM25LV040, PM25LV080B.

SPANSION: S25FL001, S25FL040, S25FL002, S25FL004, S25FL008, S25FL160, S25FL016, S25FL032, S25FL064, S25FL128.

SST: SST25VF512A, SST25VF512, SST25VF010A, SST25VF010, SST25VF020, SST25VF020A, SST25VF040B, SST25VF040, SST25VF040A, SST25VF080B, SST25VF016B, SST25VF032B, SST25VF064C.

ST: M25P05A, M25P10A, M25P20, M25P40, M25PX80, M25PE80, M25P80, M25PE16, M25P16, M25PX16, M25PX32, M25P32, M25PE32, M25P64, M25PE64, M25PX64, M25P128.

WINBOND: W25P10, W25X10A, W25X10AL, W25X10L, W25X10, W25X20A, W25X20L, W25X20, W25X20AL, W25P20, W25Q40BV, W25X40, W25X40AL, W25X40L, W25X40A, W25P40, W25P80, W25Q80BV, W25X80L, W25X80A, W25X80AL, W25Q80V, W25X80, W25X16, W25Q16BV, W25Q16V, W25P16, W25P32, W25Q32V, W25X32, W25Q32BV, W25Q64BV, W25X64, W25P64, W25Q128FV, W25Q128BV, W25Q256FV.


Common chips: 24C01 3V, 24C01 5V, 24C02 3V, 24C02 5V, 24C04 3V, 24C04 5V, 24C08 3V, 24C08 5V, 24C16 5V, 24C16 3V, 24C32 5V, 24C32 3V, 24C64 5V, 24C64 3V, 24C128 5V, 24C128 3V, 24C256 5V, 24C256 3V, 24C512 5V, 24C512 3V, 24C1024 3V, 24C1024 5V, 24C2048 5V, 24C2048 3V, 24C4096 5V, 24C4096 3V. Note: Read and write protocols are the same for all 24 series EEPROM chips.

ATMEL: AT24C01B, AT24C01, AT24C01A, AT24C02, AT24C02A, AT24C02B, AT24C04B, AT24C04, AT24C04A, AT24C08A, AT24C08B, AT24C08, AT24C16, AT24C16A, AT24C16B, AT24C32B, AT24C32A, AT24C32, AT24C64, AT24C64A, AT24C64B, AT24C128, AT24C128A, AT24C128B, AT24C256A, AT24C256, AT24C256B, AT24C512B, AT24C512A, AT24C512, AT24C1024, AT24C1024A, AT24C1024B.

CATALYST: CAT24C01, CAT24WC01, CAT24C02, CAT24WC02, CAT24C04, CAT24WC04, CAT24WC08, CAT24C08, CAT24WC16, CAT24C16, CAT24WC32, CAT24C32, CAT24WC64, CAT24C64, CAT24C128, CAT24WC128, CAT24C256, CAT24WC256, CAT24C512, CAT24WC512, CAT24C1024, CAT24WC1024.

FAIRCHILD: FM24C01L, FM24C02L, FM24C03L, FM24C05L, FM24C04L, FM24C08L, FM24C09L, FM24C17L, FM24C16L, FM24C32L, FM24C64L, FM24C128L, FM24C256L, FM24C512L, FM24C1.

HOLTEK: HT24C01, HT24LC01, HT24LC02, HT24C02, HT24C04, HT24LC04, HT24C08, HT24LC08, HT24C16, HT24LC16, HT24LC32, HT24C32, HT24LC64, HT24C64, HT24C128, HT24LC128, HT24LC256, HT24C256, HT24LC512, HT24C512, HT24C1024, HT24LC1024.

ISSI: IS24C01, IS24C02, IS24C04, IS24C08, IS24C16, IS24C32, IS24C64, IS24C128, IS24C256, IS24C512, IS24C1024.

MICROCHIP: MIC24LC014, MIC24AA01, MIC24AA014, MIC24LC01B, MIC24LC02B, MIC24AA02, MIC24C02C, MIC24AA024, MIC24LC025, MIC24LC024, MIC24LC04B, MIC24AA04, MIC24AA025, MIC24LC08B, MIC24AA08, MIC24LC16B, MIC24AA16, MIC24LC32, MIC24AA32, MIC24LC64, MIC24AA64, MIC24FC64, MIC24FC128, MIC24AA128, MIC24LC128, MIC24AA256, MIC24LC256, MIC24FC256, MIC24AA512, MIC24LC512, MIC24FC512, MIC24AA1024.

NSC: NSC24C02L, NSC24C02, NSC24C64.

RAMTRON: FM24CL04, FM24C04A, FM24CL16, FM24C16A, FM24CL64, FM24C64, FM24C256, FM24CL256, FM24C512.

ROHM: BR24L01, BR24C01, BR24L02, BR24C02, BR24L04, BR24C04, BR24L08, BR24C08, BR24L16, BR24C16, BR24L32, BR24C32, BR24C64, BR24L64.

ST: ST24C01, ST24C02, ST24C04, ST24C08, ST24C16, ST24C32, ST24C64.

XICOR: X24C01, X24C02, X24C04, X24C08, X24C16.


Official software can be downloaded from the manufacturer website (after download edit file extension to exe). The application interface is in Chinese.

Using Resource Hacker, a free tool to change static resources in executable programs, I was able to translate the interface of the programming utility. Unfortunately, message boxes and logs are generated at runtime and cannot be edited.

XTW100 programming software

XTW100 programming software

There is also a PDF user manual written in Chinese. Basically, to read a memory chip, you launch the software and press Auto detect button for SPI flash placed in the closer to USB port half of the socket, with pin 1 aligned to socket handle. For I2C EEPROM, select the correct device in the combobox and place the chip in the other half of the socket, the one next to the handle, with pin 1 aligned to it. Then press Read chip button and wait for the buffer (right hexadecimal display pane) to fill with data. Use the Save button to save binary data.

To write a chip, you first have to Load binary data, then select I2C memory or auto detect SPI flash and click Write chip button. If the size of the data to write does not match chip capacity, additional data will be discarded.

There are some check boxes next to some of the buttons. Check them and then use Auto burn to perform all checked actions. Note that the interface does not respond during longer operations. Wait for it.


No comments :

Post a Comment

Please read the comments policy before publishing your comment.