牛卧堂MCU技术交流

标题: spi [打印本页]

作者: arm_nuedu    时间: 2017-10-25 15:18
标题: spi
实验如何关闭自动片选来进行双击通讯,发现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 */
    }

作者: arm_nuedu    时间: 2017-10-26 14:25
我的问题,两个板子的电压不同




欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2