07-10-2013 07:57 AM
I cant find AXI SPI core in Vivado "Block Design" tool. There is IIC, Quad SPI and many other cores but there is no SPI.
Am I missing something or should I create my own SPI implementation?
Thanks for help
07-17-2013 05:12 AM
This is a known issue. The workaround at the moment is to use AXI QSPI core in Standard Mode.
You can refer to page 86 of the following document to include legacy EDK IPs in Vivado:
07-18-2013 12:28 AM
thanks for your help. Using QSPI seems to be a good idea. There is only a problem with Xilinx SW libraries - the loop test as well as sending bytes isnt working correctly.
I was able to find a workaround by using my own SW library - there seems to be a problem with receiving the last byte in the message.
09-18-2013 09:45 PM
I am also trying to get this to work using the quad spi, but it seems to be losing data. When transferring a message of 100 bytes in loopback mode, I am losing 8 bytes with a 16 byte fifo. With a 256 byte fifo, only the last byte is lost.
It seems like it is losing 1 byte each time the fifo becomes empty.
When using smaller messages (I tried transferring 5 bytes), the last byte is not received.
I am using the driver's XSpi_Transfer() function to transfer the data
I find that if I step through the code line by line in debug mode, the transfer completes correctly.
09-24-2013 01:48 AM
My trick to receive all bytes is:
1.) Fill TX FIFO with data
2.) Enable SPI
3.) Wait to TX empty flag
4.) Wait to SPI Receive FIFO Occupancy Register == bytes send
This way you can send only a few bytes (bytes count must be less than FIFO size), but it is OK for my application. The library from Xilinx seems to have bug with receiving last byte - you can experiment with "loopback function" to see this error.