Electronic – How to configure the FTDI FT220x for multiple SPI slaves

ftdispi

I'm using a UM220XB development module to breadboard the FT220X.

My design uses the FT220X to connect my microcontroller to a PC via SPI. My circuit design has 2 SPI slaves and 1 SPI master on the bus.

This is my problem: The FT220X, by default, drives MISO and MOSI even when #CS is not active. This causes bus contention if there are multiple SPI slaves on the bus.

These FTDI chips have onboard EEPROM that can be used to configure them. You can use a utility called FT_PROG.

The datasheet claims that FT220X supports multi-slave SPI bus. It claims I can reconfigure the EEPROM to change the behaviour of MISO and MOSI. Supposedly, you can use FT_PROG to make these lines IDLE for use with another slave on SPI bus.

Here is the quote from the datasheet (page 14):

Additionally, the FT1248 slave block supports multiple slave devices where a master can communicate with multiple SPI slave devices. When the slave is sharing buses with other SPI slave devices, the write and read buffer status cannot be reflected on the MIOSIO[0] and MISO wires during CS# inactivity as this would cause bus contention. Therefore, it is possible for the user to select whether they wish to have the buffer status switched on or off during inactivity.
(This setting may be applied in the internal MTP memory with FT_PROG at the same time as selecting FT1248 mode).

I am able to successfully read and program the device EEPROM with FT_PROG.
The PC detects the module and assigns a VCP. I have been through the FT_PROG menus, the FT_PROG user manual, the UM220XB manual, and the FT220X manual. But I cannot figure out how to change this setting. Nowhere in FT_PROG can I find a setting like this. Help please!

Best Answer

Not sure I fully understand your question but the bus on the FT220 is activated from your master (i.e. microcontroller) via the CS (chip select) pin.

You shouldn't have to reconfigure anything to communicate with another shave.

Edit Right, I see the issue now. It looks like (as you say) the option to set this isn't in FT prog. Sorry but I haven't used one of these devices before so not sure. I think you may have to look up where the setting is in the EEPROM and try changing it manually (which I think you can do in FT prog).

Have you ensured you've got the most upto date version and also that the correct device is selected?