Skip to the content
4 layers58 × 38 mmQspimux2-prog, the printed circuit board in 3D

Qspimux2-prog

felixheld/qspimux57

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

Size
58 × 38 mm
Copper layers
4
Thickness
1.6 mm
Parts
99
Nets
90
Pads
367
Tracks, vias
749, 136
Pours
3
Routed
Yes
KiCad
KiCad 5 (file 20190905)
Created
15 Jul 2018
Updated
22 Nov 2020

Overview

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.

Main components

7

README

README.md

qspimux - a quad SPI NOR flash multiplexer

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:

  • flash-adapter contains the SPI flash; there are currently adapters for flashes in SOIC8W and SOIC16W packages.
  • qspimux does the multiplexing of the SPI flash between the target board and the programmer and contains a connector to the programmer. This connector also contains the control signal that selects to which component the SPI flash is connected.
  • qspimux2 is a redesign of qspimux that only has components on one side which heavily improves manufacturability.
  • board-adapter on the embedded system's mainboard. Currently there are board adapters for DIP8, SOIC8W and SOIC16W footprints; the SOIC8W one should also fit on a WSON8 footprint. To improve solderability, the board adapter boards should be manufactured with either 0.6mm or 0.8mm thickness; using the usual 1.6mm might be cheaper, but makes it difficult to properly solder the adapter onto the mainboard.

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.

how to setup the hardware

  • If applicable, remove the flash from the mainboard; usually this works best when using a hot air rework station.
  • Solder the board adapter onto the footprint of the SPI flash on the board and then solder a 2x4 socket on the board.
  • Solder the flash to the flash adapter and a 2x4 pin header on the bottom of the flash adapter.
  • Plug the flash onto the qspimux board. For the 8 pin flash packages pin 1 of the flash must point to the top left, for the 16 pin packages pin 1 must point to the top right.
  • Connect the programmer to the programmer header; the upper 2x4 pins of the header have the same pinout as the flashes, one of the lower two pins selects if the flash gets connected to the programmer or the mainboard, the other one can be used to detect from the programmer if the board is powered.
  • Plug the qspimux PCB in the socket on the board adapter. Also make sure that you plug the board onto the mainboard in the right orientation; for the 8 pin footprints pin 1 needs to point to the top left, for the 16 pin one pin 1 needs to point to the top right.
  • fix the cable(s) to the programmer, so that you don't accidentally rip the qspimux from the mainboard it is connected to.
  • Use the qspimux setup :)

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.

design goals and decisions

no emulation:

  • since it uses the real flash chip, it doesn't behave differently than the real flash chip, so an unmodified firmware image can be used.
  • design not very complex and relatively inexpensive
  • downsides: flashing takes some time and flashes are only guaranteed to survive a certain number of erase cycles. Since the guaranteed number of erase cycles is typically 100000, this shouldn't be a real limitation.

minimal interference when the flash is connected to the mainboard:

  • analog mux has small propagation delay
  • no long cables to the mainboard or the flash chip
  • connection to the programmer not connected to flash when it is connected to the board. Monitoring of flash accesses by the mainboard isn't possible with this though

minimize chance of short circuits:

  • small board with castellated holes on two edges with a socket soldered on top instead of a pin header with long legs. SOIC8W adappter also works for WSON8
  • socket and not a pin header on the board adapter
  • only partially solved problem: the small connectors don't have mechanical keying. As a workaround there are flash adapters with added reverse polarity protection

Parts

99
QtyValueFootprintReferences
26100nCapacitor_SMD:C_0402_1005MetricC101, C102, C104, C105, C107, C108, C201, C202, C203, C204, C205, C206, C207, C208, C209, C210 +10
933RResistor_SMD:R_0402_1005MetricR203, R204, R205, R206, R207, R208, R209, R301, R302
9SN74LVC1T45DCKPackage_TO_SOT_SMD:SOT-363_SC-70-6U201, U202, U203, U204, U205, U206, U207, U301, U302
8330RResistor_SMD:R_0402_1005MetricR401, R402, R403, R404, R501, R502, R503, R504
510kResistor_SMD:R_0402_1005MetricR101, R201, R202, R601, R602
51uCapacitor_SMD:C_0603_1608MetricC106, C601, C602, C603, C605
4MountingHoleMountingHole:MountingHole_3.2mm_M3H101, H102, H103, H104
4TLP176AMPackage_SO:MFSOP6-4_4.4x3.6mm_P1.27mmU401, U402, U403, U404
31kResistor_SMD:R_0402_1005MetricR801, R802, R803
3LEDLED_SMD:LED_0603_1608MetricD801, D802, D803
24k7Resistor_SMD:R_0402_1005MetricR901, R902
2Conn_01x03_MountingPinConnector_Molex:Molex_PicoBlade_53398-0371_1x03-1MP_P1.25mm_VerticalJ301, J901
2Conn_01x08_MountingPinConnector_Molex:Molex_PicoBlade_53398-0871_1x08-1MP_P1.25mm_VerticalJ401, J501
1220pCapacitor_SMD:C_0402_1005MetricC604
124kResistor_SMD:R_0402_1005MetricR604
136kResistor_SMD:R_0402_1005MetricR605
14u7Capacitor_SMD:C_0603_1608MetricC103
175kResistor_SMD:R_0402_1005MetricR603
1AP2127K-ADJPackage_TO_SOT_SMD:SOT-23-5U602
1BSS138Package_TO_SOT_SMD:SOT-23Q601
1Conn_01x10_MountingPinqspimux_footprints:ZF5S-10-01-T-WTJ201
1Conn_02x03_Odd_EvenConnector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ101
1FDG6335NPackage_TO_SOT_SMD:SOT-363_SC-70-6Q901
1Jumper_NO_SmallConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP101
1L_SmallInductor_SMD:L_0603_1608MetricL701
1MIC5504-3.3YM5Package_TO_SOT_SMD:SOT-23-5U601
1NUP2202Package_TO_SOT_SMD:SOT-363_SC-70-6U701
1STM32F042C6TxPackage_QFP:LQFP-48_7x7mm_P0.5mmU101
1TLP290-4Package_SO:SOP-16_4.55x10.3mm_P1.27mmU501
1USB_B_MicroConnector_USB:USB_Micro-B_Amphenol_10103594-0001LF_HorizontalJ701

More from felixheld/qspimux

10
  • 2 layers24.8 × 13.8 mmQspimux, the printed circuit board in 3D

    Qspimux

    felixheld/qspimux

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

    16 parts57CC-BY-SA-4.0
  • 4 layers14 × 23.2 mmQspimux2, the printed circuit board in 3D

    Qspimux2

    felixheld/qspimux

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

    13 parts57CC-BY-SA-4.0
  • 2 layers8 × 6 mmBoard adapter SOIC8W, the printed circuit board in 3D

    Board adapter SOIC8W

    felixheld/qspimux

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

    9 parts57CC-BY-SA-4.0
  • 2 layers22.3 × 14 mmQspimux2-pinheader adapter, the printed circuit board in 3D

    Qspimux2-pinheader adapter

    felixheld/qspimux

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

    5 parts57CC-BY-SA-4.0
  • 2 layers14.8 × 11.3 mmBoard adapter DIP8, the printed circuit board in 3D

    Board adapter DIP8

    felixheld/qspimux

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

    3 parts57CC-BY-SA-4.0
  • 2 layers11.2 × 8.5 mmFlash adapter SOIC8W, the printed circuit board in 3D

    Flash adapter SOIC8W

    felixheld/qspimux

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

    3 parts57CC-BY-SA-4.0
  • 2 layers11.2 × 11.6 mmFlash adapter SOIC16, the printed circuit board in 3D

    Flash adapter SOIC16

    felixheld/qspimux

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

    3 parts57CC-BY-SA-4.0
  • 2 layers10.2 × 10.7 mmBoard adapter DIP8-rev2, the printed circuit board in 3D

    Board adapter DIP8-rev2

    felixheld/qspimux

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

    2 parts57CC-BY-SA-4.0

Similar boards

  • 2 layers43.8 × 31.1 mmOpAmp, the printed circuit board in 3D

    OpAmp

    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.

    23 parts1
  • 2 layers210.4 × 166.1 mmIR Board, the printed circuit board in 3D

    IR Board

    Pixeljoch/Robocup_PCB

    73 parts
  • 2 layers50 × 110.1 mmVoltageTap Bee, the printed circuit board in 3D

    VoltageTap Bee

    Gregification/BeeMS

    Battery Management System

    156 parts5MIT
  • 4 layers152 × 122.5 mmController board, the printed circuit board in 3D

    Controller board

    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.

    93 parts2CERN-OHL-S-2.0
  • 2 layers91 × 66 mmReform2-batterypack upstream, the printed circuit board in 3D

    Reform2-batterypack upstream

    jackhumbert/reform

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

    37 parts1
  • 2 layers38 × 20.7 mmJTAG HW, the printed circuit board in 3D

    JTAG HW

    vanbwodonk/ft2232hl-jtag-clone

    Digilent JTAG clone hardware + eeprom firmware (.bin)

    38 parts73
  • 2 layers26 × 21.7 mmOpenThermalCamera, the printed circuit board in 3D

    OpenThermalCamera

    openthermalcamera/HW-PCB

    PCB for Open Thermal Camera

    23 parts39GPL-3.0

Questions

How big is the Qspimux2-prog PCB?

It measures 58 × 38 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Qspimux2-prog use?

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.

Where can I download the Qspimux2-prog KiCad files?

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.

Can I use the Qspimux2-prog design in my own project?

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).