0
\$\begingroup\$

I have a board where a backup MCU is connected to all the same IOs as the main board. An error checking mechanism will select which MCU to power up. The other one will have all of it's IO ports in Hi-Z state to avoid shorts or other such problems.

Because of this requirement, ~90 signals are shared between the two MCUs, making routing quite complicated. The board must not be larger than 3.5" by 3.5" with a max height of .5" and space is lacking, even using vias and such. I'm trying to find the best way out.

The ideas I've come up with are:

  • Use a 4 layers PCB. Since we are a students team, the ~60$ increase is significant and we'd like to avoid it if possible. That said, I'd be ok with hearing this is the best course of action.
  • Use ribbon cables to link the various pins together. Pros: cheap, Cons: mechanically flimsy and more susceptible to electromagnetic interference.
  • Solder the two MCU on top of each other. Pros: Less space taken and less soldering, Cons: Really not sturdy. Not an option unless there is a way to make this more solid.
  • Add a PCB on top of the first using sockets/headers. Pros: Simple, sturdy. Cons: This adds a cost for the second PCB, and at that point I'm not sure this is more interesting than the 4-layers PCB. This also means the stacked board will need to be super close to the primary. While the MCUs should not make more than 1W each, the restricted air-flow could be bad for thermals (?).

The signals are not high-speed and/or high power, so the impedance and capacitance of the various options are not important.

What should I choose? Do you have other ideas? Am I missing some trade offs?

\$\endgroup\$
9
  • 3
    \$\begingroup\$ So would the 90 pins be shared with both powered MCU and unpowered MCU? Wouldn't that power up the unpowered MCU via IO pin protection diodes, when the powered up MCU sets the IO pins as output high? Which MCUs are they? \$\endgroup\$
    – Justme
    Commented Dec 22, 2020 at 17:43
  • \$\begingroup\$ The MCUs are STM32H742. Is that something that can really happen? \$\endgroup\$
    – AdminXVII
    Commented Dec 22, 2020 at 17:45
  • 2
    \$\begingroup\$ Yes. That is the default working of all CMOS chips, and IO pin voltages must be within supply voltage, even if supply voltage is 0V, so unpowered chips should not have any voltage on IO pins. CMOS pins have input protection diodes and maximum IO pin voltage is VDD+0.3V. If VDD is 0V, current flows into IO pin and out to VDD via input protection diodes, powering up the MCU. Just check the MCU datasheet, or almost any CMOS chip datasheet. It will also load down the output ot the chip that tries to power the other chip via input. \$\endgroup\$
    – Justme
    Commented Dec 22, 2020 at 17:59
  • 1
    \$\begingroup\$ Absolutely. If the power supply pins of chip B are low but you drive any of the pins (input, output, hi-Z, it doesn't matter) to the power supply voltage then the ESD protection diodes will conduct current and provide power to chip B. \$\endgroup\$ Commented Dec 22, 2020 at 18:00
  • 2
    \$\begingroup\$ But the "bad" MCU could be bad in a number of ways, e.g., latch-up, that strongly affect all of the pins connected to it and would make it impossible to set into high-Z. I think you need externally controlled relays/switches for each shared signal. (Or controlled by a 3rd microprocessor). Overall, much too complicated -- you'll do better with just a single MCU and keeping software simple, plus plenty of testing. \$\endgroup\$
    – Justin
    Commented Dec 22, 2020 at 18:25

3 Answers 3

4
\$\begingroup\$

Two-layer PCBs are really cheap. If cost is the primary facto I would use 2 X 2-layer boards connected by headers.

  • A preliminary quote from PCBWAY shows you can get you 10 pieces of 3.5" x 3.5" boards for $5.
  • Keeping all else equal and changing to 4 layers makes the price $49.

https://www.pcbway.com/orderonline.aspx

  • You could either put one MCU on each board. In this case you may be able to make both boards identical in layout. This could save cost.

  • Or you could just use the second board for routing.

\$\endgroup\$
1
  • \$\begingroup\$ Thanks for the idea of sharing the layout, this seems really interesting. Since I get 5 boards, I could use two and put up a pair, one with the on-board peripherals unconnected. \$\endgroup\$
    – AdminXVII
    Commented Dec 22, 2020 at 17:53
1
\$\begingroup\$

Im guessing you use the LQFP 100 package of the STM32H742. The easiest way is indeed to stack another board ontop. In terms of price this shouldnt add much since you can have diffrent board designs in one gerber file. As of stacking them Pin headers (as some suggested) is out of question since this would make the design taller than 0.5". Therefore use board to board connectors like mezzanine connectors. As for designing I suggest putting a connector on each of the four sides of the MCU with the same ammount of pins on one side of the connector as on one side of the MCU. On the other side of the connector you can mirror the signals to have a direct path out of the MCU. This slightly decreases your physical board space but significantly increases your routing space. Do the same for the top side. The last thing to consider is to choose the right height of the mezzanine connector in order to clear the height of the MCU.

\$\endgroup\$
0
\$\begingroup\$

The best way would be to get a 4 layered PCB. If the cost makes it difficult, the next best portion would be to have stacked boards. You can use rows of male and female headers to connect the boards and screws, nuts and spacers in the corners to keep them secure together.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.