my master-spi(tiny6410 ) connect with slave-spi(stm32)
stm32 spi interrupt code like this:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
u8 g_val=0;
void SPI2_IRQHandler(void)
{
if(SPI2->SR & SPI_I2S_FLAG_RXNE)
{
SPI2->DR;
}
if(SPI2->SR & SPI_I2S_FLAG_TXE)
{
SPI2->DR = g_val++;
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tiny6410 spi codes:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int test_ioctl_spi(int spi_fd, unsigned char buf[],int buflen)
{
char tx[100];
struct spi_ioc_transfer tr ={
.tx_buf = (unsigned long)tx,
.rx_buf = (unsigned long)buf,
.len = buflen,
.delay_usecs = 0,
.speed_hz = 2000000,
.bits_per_word = 8,
.cs_change = 1,
};
int ret = ioctl(spi_fd, SPI_IOC_MESSAGE(1), &tr);
if(ret<0)
{
printf("spi read error ret=%d \n",ret);
perror("");
return -1;
}
return ret;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I only want to read spi data from stm32. But may be lost bytes
occasionally:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@FriendlyARM code]# ./spi
main start
read err. oldval=0x00,newval=0x20,read_cnt=1
read err. oldval=0x50,newval=0x52,read_cnt=13244978
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
oldval=0x50,newval=0x52 meanings lost 0x51
if change tr.cs_change to .cs_change=0, also lost bytes
if call read() to read spi data, also lost bytes.
how to correct this problem.
thanks.


