Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
Need Forum Guidance? Click here

Search our FPGA Knowledge Articles here.
19225 Discussions

Arria10 HPS SPI, chip select issue

Honored Contributor II



I am interfacing a SPI slave, which requires chip select to be held low, for the entire duration of transfer. But, looks like chip select is toggled after every byte transfer. Tried workaround of changing the clock phase. It works fine a single register read and register write. But the SPI slave needs to be written a bulk data of 6000 odd bytes in a single stretch(with chip select held low, for the entire duration). What I observe is, the clock phase change is affecting the transfer. When I read back, I am seeing last two LSbs to be 00 in case of 01. I also tried configuring chip select as GPIO and held low, from userspace, but looks like it did not help. 


Any suggestion to address this issue ? I am using Arria10 based SoC.
0 Kudos
1 Reply
Honored Contributor II

Two observation to add to it, 

1. Along with configuring CS as GPIO, even I had to enable the corresponding CS bit in the SPI HPS register. 

2. With CS as GPIO, MOSI, CS and CLK lines are having voltage levels, 0v to 3.3v. But for some reason MISO is having a voltage range of 3.3v to 1.6v. MISO is clamped to 1.6v. So ARM HPS SPI reads back 0xffff 


When tried with workaround suggestion of changing the Clock phase, MISO is toggling properly between 0v to 3.3v as expeccted. But as mentioned above, with clock phase change, I am having issue with bulk write and bulk read.  


Anybody has observed similar issue ? Any suggestion ?