A small 16 device SPI-bus


First post on a rather fresh blog. (Well, second post actually).
Well, let’s get on with it. I’ve have been designing a 8-bit computer from scratch over a year one, most of the time I’ve spent researching and learning about the MCU and microprocessor I’ve chosen to use.
One of the feature that I want my 8-bit computer to have, is a rather expandable interface. And thus, I’ve chosen to go with the SPI-interface. And almost immediately ran into problems. I don’t want to spend all my I/O on Slave-Select (SS).
So I designed a 16-device SPI-bus, using two 8-bit shift-registers (74HC595). The only downside is that you can by mistake activate more than one device by shifting in more bits in the register. I can only assume that this will give you a crappy data-read/write.
But I will work in some restriction into the bootloader of the CPU.

16-device SPI-bus
16-device SPI-bus rev. 0.1

If you’re wondering what I did to the MISO-bus, I will leave this article here. I’ve only implemented step 2, for now. Implementing a pull-up resistor is rather easy, just add a 10K between SSx and VCC.

An important note is that SPI-devices are active when the slave-select is low. So if you want to read/write data from, say device 5. You will have to shift in | 1111 1111 | 1101 1111 | (if I understand these registers correctly).

Another fun thing with this, is that you can daisy-chain these. As long as you have the power to drive all the circuitry.

Feel free to comment and correct me on things, I’m sure that I’m wrong on at least one point in this post. Also, I know that power-supply is missing for the 74HC595’s, it’s eagle CAD faults.



A small 16 device SPI-bus

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s