AnsweredAssumed Answered

How to use the adi_spi_ driver to operate dual and quad SPI modes?

Question asked by WillMoore on Aug 28, 2015
Latest reply on Sep 23, 2015 by WillMoore

I am working on the BF609 EZ BOARD and can successfully talk to the W25Q32BV SPI FLASH device in single SPI mode using the adi_spi_ driver working in blocking mode.  However if I try altering the adi_spi_SetTransceiverMode() to ADI_SPI_RX_DIOM_MODE and set the adi_spi_StartOnMosi() false (which I believe is correct for the W25Q32BV) and attempt to e.g. get the manufacturers ID and device ID in dual SPI mode (command 0x92) then I get 0xaa and 0xaa back from the adi_spi_ driver when I expect 0xef and 0x15.  I get the expect values in single SPI mode (command 0x90) and have adjusted the commands for dual SPI mode including the 24 bit address and 8 bit continuous read mode bytes after the 0x92 command.


Do the dual and quad modes work in the adi_spi_ driver?


The documentation is a little thin on the ground, do I need to do more than just adi_spi_SetTransceiverMode() and adi_spi_StartOnMosi() before the dual mode command?


The BF609 examples for SPI readback and for the CLDP driver don't make calls to either adi_spi_SetTransceiverMode() or adi_spi_StartOnMosi() so I assume these just default to single SPI mode.  While dual/quad SPI mode is probably pointless for just getting the manufacturer ID and device ID they would be nice for reading back FLASH images quickly!


Any suggestions gratefully received.  Any experience with using the adi_spi_ drivers for dual and/or quad SPI mode shared even more gratefully received.