Tool/software: Linux
Hi,
I am trying to read 188 bytes of data with bits_per_word=32 from FPGA board. But i am getting first 32 bits repeatedly upto 188 bytes. Moreover my chip select is getting high after reading first 32 bits. Actually my chip select should remain low until we read all 188 bytes of data. Please suggest a solution to remain my chip select as low & to read all 188 bytes of data.
My SPI burst read function is below,
cs = 0x08
addr = 0x01
len=188 bytes
data_buf = buffer to which data is to be read.
ics_int32_t ics_mars_wvs_spi_burst_read(ics_int8_t cs, ics_uint32_t addr , ics_uint32_t len , ics_uint32_t *data_buf)
{
ics_uint32_t header,i,read_dat[len];
ics_uint8_t ret,ret1;
struct spi_device *spi;
/*Spi Header*/
spi = (struct spi_device *)ptr;
/*Spi Header*/
header = (1 << 31)/*R/W*/ | (1 << 30)/*B/N*/ | (5 << 26)/*WF ID*/ | (cs << 21) /*CS*/ | (addr << 11) /* address*/ |((len & 0x3FF)<<1);
printk(KERN_ALERT "SPI READ LEN : %d\n",len);
ret = spi_write(spi,&header, 4);
if(ret)
{
printk(KERN_ALERT "SPI write error\n");
}
ret1 = spi_read(spi,(void *)read_dat, sizeof(read_dat));
for(i=0; i < len ; i++)
{
printk(KERN_ALERT "SPI READ rx_buff DATA : %X\n",read_dat[i]);
*(data_buf+i) = read_dat[i];
printk(KERN_ALERT "SPI data to umac: %X\n",*(data_buf+i));
}
if(ret1)
{
printk(KERN_ALERT "SPI read error\n");
}
return 1;
}
Thanks,
Swapna G