Hello flashrom community,
I think I found quite a simple and convenient method of using FTDI UM232H-B module to program 3.3 V flash chips (in short, yet another FTDI-based programmer).
As mentioned on the IRC, I thought it might be useful to add some mention about it to the FT2232SPI wiki page. As I cannot make edits to the wiki, I put together some info about the module and how to modify it for 3.3V supply output in this email:
---
UM232H-B is quite a cheap and easily obtainable module based on the FTDI FT232H chip. Its disadvantage is that it only has a pin for 5V voltage output supplied from USB +5V through a fuse. Nevertheless, by making a simple modification, it can be converted to output 3.3 V instead.
The modification: 1. Remove (desolder) the 5V SMD fuse (F1), 2. connect the +3.3V pad (right) of capacitor C10 to the right pad (closer to the "5V" pin) that remained after the desoldered fuse.
Photo of the modified module: https://i.imgur.com/akrlskc.jpeg (note the green bodge wire).
Connection with the SPI chip:
UM232H-B | Chip pin # --------------------- 5V* | 8 (VCC) GND | 4 (GND) D0 | 6 (CLK) D1 | 5 (MOSI) D2 | 2 (MISO) D3 | 1 (/CS) D4 | 3 (/WP) D5 | 7 (/HOLD)
(* 3.3 V after the modification but the pin name remains)
Photo of the module connected to a Pomona clip, using female-to-male jumper wires: https://i.imgur.com/bDDAsLn.jpeg
flashrom programmer parameters:
$ flashrom -p ft2232_spi:type=232H,gpiol0=H,gpiol1=H
The pins D4 and D5 which are mapped to gpiol0 and gpiol1, respectively, are used to control the write protection (/WP) and reset/hold (/HOLD) pins and should be driven to high level during the programming. For older versions of flashrom that don't support the gpiolX= parameters, it is possible to connect them directly to +3.3V instead.
Warning: The internal 3.3V regulator of the FTDI chip is not able to handle large currents - it's recommended to use an external 3.3V supply (in that case the modification is not necessary) or to add a dedicated 3.3V regulator to the module when using it for in-circuit programming on boards that draw a lot of current from the programmer due to other devices connected to their SPI chip's power rails.
UM232H-B product page: https://ftdichip.com/products/um232h-b/
UM232H-B datasheet: https://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_UM232H-B.pd...
FT232H datasheet: http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232H.pdf
---
For now I tested it with unsocketed W25Q128JV SPI chips and it seems to work fine for read/write/erase/verify as the chip draws only about 7 mA when erase is in progress (the datasheet speaks about 25 mA).
Using it on a W25Q128JV socketed in an Asrock Z170M resulted in about 70 mA current (due to other devices sitting on the SPI chip power rails) and a failed chip detection but the module's still working fine after that - this seems to be the board's problem (it couldn't be detected even with another SPI programmer). Unfortunately I have no other boards to try right now.
I think I will add a 3.3V regulator in the future to give it some greater output current capacity as for now the FTDI chip has overtaken the role of the desoldered fuse.
Suggestions welcome. Thanks!
Regards, Jan