This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

uboot下am335x spi与MCU通信读数据全0



在uboot下采用SPI与MCU通信,在MCU侧通过cw调试,发现uboot下通过spi写数据到MCU正常,而通过SPI读数据,则发现读到的数据全为0。

spi写代码如下:

 dev =(0X1 << 1) | 0X0;
    val = 0x12345678;
    memset(&senddata,0,sizeof(senddata));
    memcpy(&senddata[0],&dev,2);
    memcpy(&senddata[2],&val,4);
    bitlen = sizeof(senddata)*8;
    dout = &senddata;
    din = NULL;
   
    if(spi_xfer(spi1, bitlen, dout, din,SPI_XFER_BEGIN | SPI_XFER_END) != 0)
    {
        printf("1 Error during SPI transaction\n");
        return;
    }  

 

但是,读spi数据就会出现全0,读代码如下所示:

dev =0x55aa;
    val = 0x12345678;
    memset(&senddata,0,sizeof(senddata));
    memcpy(&senddata[0],&dev,2);
    memcpy(&senddata[2],&val,4);
        memset(&recdata,1,sizeof(senddata));
    bitlen = sizeof(senddata)*8;
    dout = NULL;
    din = &recdata;
    udelay(30000);
         printf("test 3\n");

         #if 1
    if(spi_xfer(spi1, bitlen, dout, din,SPI_XFER_BEGIN | SPI_XFER_END) != 0)
    {
        printf("3 Error during SPI transaction\n");
        return;
    }

 

可以确定的是mcu侧的spi配置和通信没有问题。因为我通过内核的spi接口,读写mcu数据都正常。

读数据还尝试过将din和dou全部赋值,让spi_xfer调用底层的omap3_trxr接口,也存在同样的问题。

通过示波器抓波形,发现传输的数据也是错误的,但是不是为0,并且调用trtx接口传输数据的时候,发送

6个字节的数据,只接收到8个时钟,丢了其中的5个时钟。

 

还望各位大神能够指点一二,在此先谢过了。。。。。。。