微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > S16_FPGA开发板中MICROBLAZE学习中SPI部分的疑问?

S16_FPGA开发板中MICROBLAZE学习中SPI部分的疑问?

时间:10-02 整理:3721RD 点击:

给出的SPI文档中有一个函数:SF_write_status_register (XPAR_SPI_0_BASEADDR, 0x1c);
这个函数的实现中的spi_transfer 函数没看懂,发送完数据后读数据,并判断发送的数据数与读的数据数,不一样或者发送数据为0
都显示错误信息!
不一样或者发送数据为0   都显示错误信息!什么意思没明白
(Xuint32 BaseAddress, Xuint8 *send, Xuint8 *recv, Xuint8 num_bytes)
{
  Xuint8 NumBytesRcvd = 0;
  Xuint8 NumBytesSent = 0;
  while(num_bytes--)
    {
        XSpi_WriteReg(BaseAddress, XSP_DTR_OFFSET, *send++);
        NumBytesSent++;
    }
    XSpi_Clear_Inhibit(BaseAddress);
    while (!(XSpi_ReadReg(BaseAddress, XSP_SR_OFFSET) & XSP_SR_TX_EMPTY_MASK));
    while ((XSpi_ReadReg(BaseAddress, XSP_SR_OFFSET) & XSP_SR_RX_EMPTY_MASK) == 0)
     {
        *recv++ = XSpi_ReadReg(BaseAddress,XSP_DRR_OFFSET);
        NumBytesRcvd++;
    }
    if ((NumBytesSent != NumBytesRcvd) || (NumBytesSent == 0))
    {
      print("SPI XFER ERROR\r\n");
    }
}

不明白

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top