Over the years I have worked with SPI devices from a number of "Major" manufacturers (TI/Dallas Semi, Maxim, Philips/NXP, etc.) and I have never encountered problems using production parts in SPI port implementations on a number of embedded processor projects, using processors with built-in SPI hardware: Renesas, Intel, Atmel, Microchip, etc., etc., etc.
Maybe I'm just lucky? Note that I just about never try operating at absolutely maximum speed, so there may have been some subtle (or not-so-subtle) timing problems that other people encountered, but that I never saw.
The only one that I have seen with problems is the Wiznet '5100 used on the Arduino Ethernet Shields (not my design, and obviously the bug was not known by the designers before releasing the first Ethernet Shield) . The Wiznet SPI problem (the chip pollutes the MISO line when the chip is not selected) is documented in an application note that you can get from the Wiznet web site, but I couldn't find anything marked "Errata."
Well, there is an Errata sheet, but it is not about the SPI bug. Shame on Wiznet! (Unless I'm missing something, which is entirely possible.) It's a BUG, folks. Worthy of listing as Errata, not just in an Application Note!
The workaround is implemented on the New Ethernet Shield referenced on the Arduino site. (I performed non-surgical mods on my old-model Ethernet shields by hot-gluing an inverter chip on the Shield and sky-wiring input to Arduino SS signal and output to Wiznet "SEN" signal line, as shown in the Application note.) Now my Ethernet Shield "plays nice" with my separate SPI-port interface SD card.
Bottom line: There may be other devices with defective SPI interfaces. It would be "nice" if anyone considering a new design had access to a manufacturer's or manufacturer rep's or distributor's FAE to tell the truth about problems. It would be nicer if the manufacturer had an actual list of Errata (instead of some application note or some "specifications update" as Intel used to call them). Regardless of how forthcoming the manufacturer/rep/distributor is, a designer should probably search the web for any reported problems.
Regards,
Dave
Footnote:
There is another, undocumented, Wiznet bug that I discovered when I got my first Ethernet Shield a few weeks ago.
There have been endless reports that the power-on reset (as well as the Arduino auto-reset) doesn't work with the old Ethernet Shields. Some "fixes" work for some people; some work for others. Hanging capacitors across reset lines (or any other lines) trying to fix things just rubs me the wrong way. Really. Also the effectiveness is very erratic according to many reports. (And the extra capacitance tends to interfere withe Arduino auto-reset function on the ATmega chip.)
Well: I think that this the real bug: The he chip is operating on +3.3V .
Although the inputs are specified to be 5 Volt tolerant (and they apparently are: the chip is not destroyed by +5Volt input signals), if the reset is pulled up to +5 volts the power-on reset is erratic and/or non-functional.
So, here's what I did:
I bent the "Reset" pin away from the shield so that it does not make contact with the motherboard when the Shield is plugged in.
I soldered a 10K resistor from the Ethernet chip "Reset" pin to +3.3Volts (This is important: tie it to +3.3V, NOT +5V) and a 10 nF capacitor from the Ethernet chip "Reset" pin to GND. I have never had to manually reset the Shield again. Ever.
Note that neither of my workarounds require surgery (I don't like trace cutting if it's avoidable). They also don't require any software changes or any extra ATmega I/O pins for control.
If they don't work the way that you want, they are easily removed so that the board can be restored to its original (buggy) condition. Maybe you can sell it (with full disclosure, of course) and buy one of the New Ethernet Shields. (I haven't had a chance to get a new one yet. I hope it works, but maybe I will wait to see if others find them acceptable.)