
Qspimux
felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests
Qspimux2-prog is an open-source printed circuit board by felixheld, from the felixheld/qspimux repository on GitHub, published under the CC-BY-SA-4.0 licence. It is a 4-layer board of 58 × 38 mm with 99 parts on 90 nets, routed with 749 tracks and 136 vias.
It is built around the SN74LVC1T45DCK, TLP176AM(E and MIC5504-3.3YM5, with the NUP2202W1, TLP290-4(E and BSS138 among its other parts. Its parts include 33 capacitors, 30 resistors, 18 ICs, 7 connectors and 3 diodes. It belongs with the interfaces and adapters boards and the STM32 boards of this library.
For both continious integration systems and initial development of bootloaders and firmware images while being off-site, it is necessary to either replace the commonly used (quad) SPI NOR flash of the system with an expensive SPI flash emulator or attach a programmer to the flash chip and hope the programmer and the device won't interfere. The latter is usually a bad idea as it might cause damage to both the target and the programmer and at the time of writing this getting a SPI NOR flash emulator is rather expensive; especially if you want to run tests on multiple targets and need one emulator per target for that.
This project takes a different approach and is loosely based on the idea behind lynxis' spisolator2 that is based on urjaman's spisolator. Here the flash doesn't get emulated, but the access to a real SPI NOR flash chip gets multiplexed between the target and a programmer that also controls the multiplexer. Since today's NOR flashes are quite robust and the programmer should verify the flash contents after writing a new image, I don't expect flash-wearout-related problems to become a major issue. It might however be good idea to count the number of rewrites to be able to replace the flash chip before reaching the number of writes the manufacturer assures the flash to be still good after.
The full hardware design consists of three boards that are stacked on top of each other:
The flash-adapter can be plugged directly onto the board-adapter when the qspimux isn't needed.
The DIP8 board-adapter can be used to plug a SPI flash on a flash-adapter board into a programmer with ZIF socket.
qspimux2-prog is a programmer designed to work together with qspimux2. It supports both 1.8V and 3.3V signal levels and quad SPI mode, can control the qspimux2, provides a low voltage serial and I2C port, 4 potential-free outputs and 4 optocoupler inputs. It is connected to the host via USB. TODO: add link to firmware repository when the firmware is written.
If the setup doesn't work as expected, please try to plug the flash adapter directly onto the board adapter and see if that works. Since the boards adapters in the first batch (v1.0) should have been a bit less wide and the diameter of the castellated holes in rather small, soldering the board adapter onto the board might be a bit difficult and the cause of a not correctly working setup.
The two pin footprint on the flash adapter boards are for an optional capacitor near the flash chip. This capacitor is usually not needed, but in the case of a badly designed flash chip power supply on the target mainboard it might help to get the flash chip working reliable.
If you wonder about the weird pin numbering in the schematics: KiCad didn't have symbols/footprints with the right numbering and I just connected everything in the way that the footprints match to the flash pinout.
no emulation:
minimal interference when the flash is connected to the mainboard:
minimize chance of short circuits:
| Qty | Value | Footprint | References |
|---|---|---|---|
| 26 | 100n | Capacitor_SMD:C_0402_1005Metric | C101, C102, C104, C105, C107, C108, C201, C202, C203, C204, C205, C206, C207, C208, C209, C210 +10 |
| 9 | 33R | Resistor_SMD:R_0402_1005Metric | R203, R204, R205, R206, R207, R208, R209, R301, R302 |
| 9 | SN74LVC1T45DCK | Package_TO_SOT_SMD:SOT-363_SC-70-6 | U201, U202, U203, U204, U205, U206, U207, U301, U302 |
| 8 | 330R | Resistor_SMD:R_0402_1005Metric | R401, R402, R403, R404, R501, R502, R503, R504 |
| 5 | 10k | Resistor_SMD:R_0402_1005Metric | R101, R201, R202, R601, R602 |
| 5 | 1u | Capacitor_SMD:C_0603_1608Metric | C106, C601, C602, C603, C605 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H101, H102, H103, H104 |
| 4 | TLP176AM | Package_SO:MFSOP6-4_4.4x3.6mm_P1.27mm | U401, U402, U403, U404 |
| 3 | 1k | Resistor_SMD:R_0402_1005Metric | R801, R802, R803 |
| 3 | LED | LED_SMD:LED_0603_1608Metric | D801, D802, D803 |
| 2 | 4k7 | Resistor_SMD:R_0402_1005Metric | R901, R902 |
| 2 | Conn_01x03_MountingPin | Connector_Molex:Molex_PicoBlade_53398-0371_1x03-1MP_P1.25mm_Vertical | J301, J901 |
| 2 | Conn_01x08_MountingPin | Connector_Molex:Molex_PicoBlade_53398-0871_1x08-1MP_P1.25mm_Vertical | J401, J501 |
| 1 | 220p | Capacitor_SMD:C_0402_1005Metric | C604 |
| 1 | 24k | Resistor_SMD:R_0402_1005Metric | R604 |
| 1 | 36k | Resistor_SMD:R_0402_1005Metric | R605 |
| 1 | 4u7 | Capacitor_SMD:C_0603_1608Metric | C103 |
| 1 | 75k | Resistor_SMD:R_0402_1005Metric | R603 |
| 1 | AP2127K-ADJ | Package_TO_SOT_SMD:SOT-23-5 | U602 |
| 1 | BSS138 | Package_TO_SOT_SMD:SOT-23 | Q601 |
| 1 | Conn_01x10_MountingPin | qspimux_footprints:ZF5S-10-01-T-WT | J201 |
| 1 | Conn_02x03_Odd_Even | Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_Vertical | J101 |
| 1 | FDG6335N | Package_TO_SOT_SMD:SOT-363_SC-70-6 | Q901 |
| 1 | Jumper_NO_Small | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | JP101 |
| 1 | L_Small | Inductor_SMD:L_0603_1608Metric | L701 |
| 1 | MIC5504-3.3YM5 | Package_TO_SOT_SMD:SOT-23-5 | U601 |
| 1 | NUP2202 | Package_TO_SOT_SMD:SOT-363_SC-70-6 | U701 |
| 1 | STM32F042C6Tx | Package_QFP:LQFP-48_7x7mm_P0.5mm | U101 |
| 1 | TLP290-4 | Package_SO:SOP-16_4.55x10.3mm_P1.27mm | U501 |
| 1 | USB_B_Micro | Connector_USB:USB_Micro-B_Amphenol_10103594-0001LF_Horizontal | J701 |

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

felixheld/qspimux
QSPI flash multiplexer - connect a SPI NOR flash to either an embedded system or a programmer for remote firmware tests

AleDedor/Discrete_OpAmp
A Single Ended Operational Amplifier mainly made with bipolar technology and a NMOS differential pair, two amplification stages and a Class AB output stage.



PE1RGU/hf-antenna-switch
Remote HF antenna switch: 3 radios x 4 antennas (path to 8), outdoor relay unit with a hardware safety chain, controlled over Cat6 from a shack interface. KiCad 10, open hardware, designed together with an AI.

jackhumbert/reform
This is the main repository for the MNT Reform open source laptop.

vanbwodonk/ft2232hl-jtag-clone
Digilent JTAG clone hardware + eeprom firmware (.bin)

It measures 58 × 38 mm and has 4 copper layers, 1.6 mm thick.
99 parts, built around the SN74LVC1T45DCK, TLP176AM(E, MIC5504-3.3YM5 and NUP2202W1. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the felixheld/qspimux repository on GitHub, at the commit this page was made from: the board is qspimux2-prog/qspimux2-prog.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the CC-BY-SA-4.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).