At what point will I start having trouble with noise and parasitic capacitance/inductance when using standard 0.1in header pins? If I'm using an MCU capable of driving a 20MHz SPI bus, would it be reasonable to run a breakout board or Arduino shield at that speed? I will be using either the ST NUCLEO-F446RE or the NUCLEO-F303K8 development board.
There is no such thing as a "maximum frequency" for the header itself, unless the wavelength becomes comparable to the total pin length and you need to treat it as a transmission line. This can be a serious issue at 100MHz with a 2-meter long coax cable, but with a sub-10mm connector, you must be talking obscene speeds. You will probably have much more than 10mm of traces on the main board and the breakout board.
I have used breakout boards for prototyping a few times, with an expensive chip on the breakout which I cannot desolder easily. Here is what you can do:
- Use twice as many pins as you have signals. Connect odd pins to signals, and even pins to the ground plane. (this is for a 1xN header, you can probably do the same for 2xN but I have not tried)
- Leave space for a 1206 ferrite bead on the breakout board. Place a 0 ohm resistor there. If the scope shows nasties, replace resistor with SMD ferrite. This may sound counterintuitive - as the bead will flatten your nice perfect signal fronts - but it will also greatly dampen the VFH harmonics.
- Buffer the signals. I have done this on one occasion with great results where the breakout board was "broken out" with a maybe 20cm cable. 74AC14 will do wonders! Mind the level inversion, and also note this won't work for I2C as it requires a pullup resistor and has no 'direction' - the data signal goes both ways.
- Whatever you do, at 20MHz or more, not only your main board but also your breakout board MUST have a ground plane. If you are designing your own PCB, and dont want to manufacture with more than 2 layers, just leave the bottom layer as a ground plane and do some creative jumper bridging on the top layer.
The header should not be a problem at 20 MHz but the wires or cables attached to the header may cause problems if they are too long.