spi host模式也能被阻塞吗?

使用的是spi dma host模式,代码如下

void TestDmaMaster()

{

    u8 TxData[32];

    for(u8 i = 0;i < 32;i++)

        TxData[i] = 0xA0 + i;

    Spi2_InitMaster();

    SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx, ENABLE); //使能SPI的DMA功能

    DMA_Tx_Init(DMA1_Channel5, (u32)&SPI2->DATAR, (u32)(TxData), 32); //配置SPI对应的DMA

    while (1)

    {

        printf("Send\r\n");

        DMA_Cmd(DMA1_Channel5,ENABLE);                    //开启DMA传输

        while(DMA_GetFlagStatus(DMA1_FLAG_TC5) == RESET);//等待传输完成

        DMA_Cmd(DMA1_Channel5,DISABLE);                   //关闭DMA

        DMA_ClearFlag(DMA1_FLAG_TC5);                     //清除标志

        Delay_Ms(1000);

    }

}


结果显示,第一次发送是发送出去了,但是从第二次发送就阻塞住了,停在这个循环里

while(DMA_GetFlagStatus(DMA1_FLAG_TC5) == RESET);//等待传输完成


请问spi host模式也能被阻塞吗?从机又不会返回类似ACK那样的信号它怎么判断从机有没有接收呢?

我这个实验是没有从机的,spi的各个引脚都是悬空的


另外一个问题,就是spi dma通讯,主从两边都用dma模式可以吗?我看到的例子都是一边用dma,另一边不用的

spi.png


原来每次都要重新init


只有登录才能回复,可以选择微信账号登录