How to use Audio Shield SPI and off board SPI

Status
Not open for further replies.

bicycleguy

Well-known member
FYI
The SPI for the SD-card on the audio board running at 24MHz is intolerant of long signal lines on its bus. On a project using the Teensy 3.2, audio board and an I/O expander MCP23S08 a breadboard project (and subsequent PWBs) worked great.

However, when the I/O expander was moved to its proper location about 8 ft away all kinds of ringing, noise and fun ensued. The SD-card and MCP23S08 libraries allow the bus speed to be changed between devices but that wasn't enough. Solutions that would help one device hurt the other. Note, a good oscilloscope with SPI decoding was essential in diagnosing.

A 74LVC126 tristate output buffer solved the problems. No software changes were required. When the CS line for the audio is pulled down it disconnects the bus from the slower SPI devices and their cable reflections ect.

Screen Shot 2018-12-29 at 12.46.15 PM.png

I know this isn't the greatest way to handle remote stuff but it seems to work reliably.
 
@Bicycleguy You did the right thing to isolate the long bus from the short bus. However, I don't think it is necessary to tri-state the SCK and MOSI lines to the remote electronics. Only the MISO line should be tri-stated when remote is not in use to eliminate bus contention issues. Buffering the CS lines to the remote electronics can't hurt either.
 
@grease_lighting Thanks for the input.
For some reason the clock was the most sensitive, perhaps the pairs I chose for the ethernet cable used for this and power or other signals. The CS lines are all separate so I didn't try to isolate them, but did look at them with the scope and they seemed ok. But I tried all combinations of the MISO, CLK and MOSI and they all had issues with the audio board no matter if terminated on one side or the other or both. Any 24MHz clock or data would cause all kinds of noise if not isolated from the long bus.
 
for long SPI cabling forget about 24MHz but to help prevent ringing you’d need to put small resisters in series near the source driven lines. You could go further distances as well by decreasing the SPI speed. I’ve driven MCP23S17’s at 5 feet and run them at 2 MHz
 
Status
Not open for further replies.
Back
Top