Sorry, you need to enable JavaScript to visit this website.

Problem in reading RxFIFO of SPI controller in custom board

Zedboard forums is currently read-only while it under goes maintenance.

Unsolved
4 posts / 0 new
naveentejapv
Junior(0)
Problem in reading RxFIFO of SPI controller in custom board

Hi,
I am trying to establish a SPI interface between Zynq(Master)and RTC chipset(Slave).We are running in SPI Mode-1. When we probe the SPI interface signals(SCLK,MOSI,MISO,CS)on our custom board using Oscilloscope; we find that signals are seen as expected. But when we try to read Received Data using Rx_data_reg0; we are not getting the same data which we had seen on the scope(MISO).We always get 0x00 or 0xFF when reading from Rx_data_reg0 register. Kindly note that RTC SPI instruction width is 16-bit.
We also want to check whether its possible to configure the Zynq SPI peripheral TX and RX registers to send a 16-bit valid Data/Instruction. As of now we are initiating 2 byte transfer from Zynq SPI peripheral to communicate with RTC device.

TroutChaser
Moderator(18)
Perhaps use an AXI SPI controller

A quick look at UG585, the Zynq TRM http://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-... , suggests that the embedded Zynq SPI transmit and receive length is fixed at 8 bits. 
 
You might consider implementing an AXI SPI controller in the Zynq PL section. It looks like the AXI SPI controller can be set for 16 bit transfers:
 
http://www.xilinx.com/support/documentation/ip_documentation/axi_spi/v1_...
 
-Gary

naveentejapv
Junior(0)
Hi Gary,

Hi Gary,
Thanks for your valuable inputs on 16 bits transfer using PS_SPI controller.
It would be great if you can throw some light on the first part of the question.

"I am trying to establish a SPI interface between Zynq(Master)and RTC chipset(Slave).We are running in SPI Mode-1. When we probe the SPI interface signals(SCLK,MOSI,MISO,CS)on our custom board using Oscilloscope; we find that signals are seen as expected. But when we try to read Received Data using Rx_data_reg0; we are not getting the same data which we had seen on the scope(MISO).We always get 0x00 or 0xFF when reading from Rx_data_reg0 register. Kindly note that RTC SPI instruction width is 16-bit."

TroutChaser
Moderator(18)
Not enough information

There is not really enough information on your application here to know if the RTC device 16 bit width is an issue or not. Without knowing how you have configured the Zynq SPI controller, or knowing what the SPI interface specifications of your RTC device are, or even having the SPI data from your scope, it is difficult to speculate on the cause of the problem.
 
You might want to take a look at the example code for the SPI controller listed in the system.mss file in the SDK next to the SPI peripheral drivers section to see if you have configured the SPI controller correctly. There is even some low level code examples that loop the SPI controller back around.
 
-Gary