2
\$\begingroup\$

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!

\$\endgroup\$
  • \$\begingroup\$ Can't you make use of the slave select pin ? In multiple slave connection ,The SS (Slave Select) pin is used to select a slave at a time. whatever you send though the MOSI will be received at the selected slave . slave select is usually an active low signal but you can reconfigure it in some Microcontollers . \$\endgroup\$ – Arun Joe Oct 28 '16 at 21:30
  • \$\begingroup\$ edited the question to explain more clearly. The problem is that the FT220X, by default, drives the MOSI and MISO lines until you activate SS. \$\endgroup\$ – Kane Anderson Oct 28 '16 at 21:53
1
\$\begingroup\$

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?

\$\endgroup\$
  • \$\begingroup\$ Thanks for the suggestion. I have the most recent version of FT_PROG (downloaded yesterday). The device selection was automatic, and appears correct. It reads FT X Series. I have been trying to figure out which bit or byte controls this setting to change it manually as you suggest. Do you know where I can find the spec for which bytes do what? It isn't in their datasheet, and I didn't find it with google or on their website. \$\endgroup\$ – Kane Anderson Oct 31 '16 at 22:26
  • \$\begingroup\$ @Kane Anderson check out application note AN_201 page 13. \$\endgroup\$ – SpaceCadet Oct 31 '16 at 22:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.