找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

spi

[复制链接]
跳转到指定楼层
楼主
arm_nuedu 发表于 2017-10-25 15:18:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验如何关闭自动片选来进行双击通讯,发现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 */
    }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具 举报

沙发
 楼主| arm_nuedu 发表于 2017-10-26 14:25:53 | 只看该作者
我的问题,两个板子的电压不同
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU