• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32的SPI读取和发送数据都是为什么用的是同一个函数

开发小流苏 2020-03-14 浏览量:1248
这样的话不会导致数据冲突吗
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 不会导致数据冲突的,以为你SPI本身就是移位寄存器,是通过SPI的发送数据,然后读取的数据都是放在同一个缓冲区中,类似于一个环形队列,所以可以直接通过一个函数来读取和发送
    • 发布于 2020-03-19
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:3
  • 看具体用的什么函数,有分开的,有读写一体

    void SPI_Ecah_Buffer_Send(u8* pBuffer u16 NumByteToRead)


    {


           for(int i = 0; i < NumByteToRead; i++)


           {


                  SPI_Conmunication_SendByte(*pBuffer);


                  pBuffer++;


           }


    }


     


    void SPI_Buffer_Receive(u8* pBuffer u16 NumByteToRead)


    {


           while (NumByteToRead--)


           {     


                  *pBuffer = SPI_Conmunication_SendByte (Dummy_Byte);


                  pBuffer++;


           }


    }


    读写一体的函数


     


    void SPI_Ecah_Buffer_Send(u8* str u8* pBuffer u16 NumByteToRead)


    {


           for(int i = 0; i < NumByteToRead; i++)


           {


                  *str = SPI_Conmunication_SendByte(*pBuffer);


                  pBuffer++;


                  str++;


           }


    }

    • 发布于2020-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 不会的,时钟发出来的时候mios和mosi都可以通讯,所以8个时钟下来数据也发送出去了,同时数据也接收进来了,如果知道发送那么就丢弃接收返回值,如果要接收那么就发送0xff就可以了,读取返回数据
    • 发布于2020-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为SPI本身就是全双工的,它发送的同时会读取到数据,去看一下SPI的时序就知道了 
    • 发布于2020-03-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32的SPI读取和发送数据都是为什么用的是同一个函数