Using the ADIS16210 controlled by an FPGA with the below pseudo code of VHDL driver:
Spi_clk frequency = 500KHz
Cs = 1
Clk = 1
Upon request from software to read data from a register (address 0x5600, rdn_wr bit is 0):
Cs = 0
Wait 1 us (Tcs)
Loop (16 times)
Wait for falling edge of clk
Send 1 bit of address (msb first)
Cs = 1
Wait gap time (50 us)
Cs = 0
Wait 2 us (Tcs)
Wait for rising edge of clk
read 1 bit of address (msb first)
Cs = 1
Signal the software that data is ready.
Reading the 0x5600 register in loop, (as figure 6 in data sheet) we get most of the time the expected result but from time to time we get a "000" read data.
Timing were verified and found fitting the spec.
Pls advise what are we missing?
Sorry about this, but it was stuck in our moderation filter, which helps prevent SPAM attacks, but sometimes filters out quality requests. I sincerely apologize. Would it be possible for us to see the pictures of the scope plots that they used to verify the timing? I suspect that this may relate to connection or signal integrity issue (noise?).
Look forward to seeing their scope plots, but also, I wonder if they can share a picture of their physical setup. Also, this reference has been useful to others, who have been looking for the source of similar behaviors in the past. Thanks!
Connecting to Smart Sensors, it Takes More Than Code
The problem (reading zeros) only happens when sclk frequency is 800KHz.
When I'm working with 500KHz, I did not catch the problem.
The datasheet states that maximum sclk frequency is 830KHz. Any advise here?
Screenshots from chipscope tool of a good transaction and a transaction that returns zeros can be found here.
You will find in the attached file the SCLOCK and Data In measured with an Oscilloscope (just to show that the signals are really clean and at the right levels.
Thanks for the additional input. I will likely need to look at this in detail in a few days, as I am out of the office until Friday and have numerous commitments that I have already made. I can say that the datasheet maximum was characterized over a wide variety of conditions, so these observations are unexpected. I am flagging this for follow-up activity, as soon as I return.