打印
[技术问答]

spi问题

[复制链接]
1006|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shen_hao|  楼主 | 2017-10-25 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验如何关闭自动片选来进行双击通讯,发现master tx工作正常,master rx 收到的数据全部为零。slave tx应该没有
问题,从slave写法来看一样,既然rx ok,tx应该也是没有问题。那么应该是M-tx的问题
主机发送函数,接收函数
void SPI_WriteByte(uint32_t TxData)
{
         
        SPI_SET_SS_LOW(SPI0);       
        while(SPI_GET_TX_FIFO_EMPTY_FLAG(SPI0)==0);
        SPI_WRITE_TX(SPI0,TxData);

        while(SPI_IS_BUSY(SPI0));
       
        SPI_READ_RX(SPI0);
        SPI_SET_SS_HIGH(SPI0);               
}
/**
  * @brief  从SPI总线读取1字节数据
  * @retval 读到的数据
  */
uint32_t SPI_ReadByte(void)
{       
        uint32_t ret;
        SPI_SET_SS_LOW(SPI0);       
//        while((SPI1->SR&SPI_I2S_FLAG_TXE)==0);        //等待发送区空               
        //while(SPI_GET_TX_FIFO_EMPTY_FLAG(SPI0)==0);
  //while((SPI_GET_TX_FIFO_FULL_FLAG(SPI0) == 1));       
        SPI_WRITE_TX(SPI0,0xff);
        //while((SPI1->SR&SPI_I2S_FLAG_RXNE)==0); //等待接收完一个byte《m4没有rx不为空这个标志/函数/宏?
        while(SPI_IS_BUSY(SPI0));
        ret= SPI_READ_RX(SPI0);
        SPI_SET_SS_HIGH(SPI0);

        return ret;                                                    
}

从机接收
  while(u32RxDataCount < 16)
    {
        /* Check TX FULL flag and TX data count */
        if((SPI_GET_TX_FIFO_FULL_FLAG(SPI0) == 0) && (u32TxDataCount < TEST_COUNT))
            SPI_WRITE_TX(SPI0, g_au32SourceData[u32TxDataCount++]); /* Write to TX FIFO */
        /* Check RX EMPTY flag */
        if(SPI_GET_RX_FIFO_EMPTY_FLAG(SPI0) == 0)
            g_au32DestinationData[u32RxDataCount++] = SPI_READ_RX(SPI0); /* Read RX FIFO */
    }


沙发
734774645| | 2017-10-25 15:36 | 只看该作者
这是用的官方的例子修改的?

使用特权

评论回复
板凳
yiy| | 2017-10-25 16:32 | 只看该作者
debug模式一步一步跟踪一下,看看是什么情况。

使用特权

评论回复
地板
shen_hao|  楼主 | 2017-10-25 18:11 | 只看该作者
734774645 发表于 2017-10-25 15:36
这是用的官方的例子修改的?

en

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

230

帖子

2

粉丝