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對應(yīng)的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);? ? ? ? ? ? ? ? ? ?//關(guān)閉DMA

? ? ? ? DMA_ClearFlag(DMA1_FLAG_TC5);? ? ? ? ? ? ? ? ? ? ?//清除標志

? ? ? ? Delay_Ms(1000);

? ? }

}


結(jié)果顯示,第一次發(fā)送是發(fā)送出去了,但是從第二次發(fā)送就阻塞住了,停在這個循環(huán)里

while(DMA_GetFlagStatus(DMA1_FLAG_TC5) == RESET);//等待傳輸完成


請問spi host模式也能被阻塞嗎?從機又不會返回類似ACK那樣的信號它怎么判斷從機有沒有接收呢?

我這個實驗是沒有從機的,spi的各個引腳都是懸空的


另外一個問題,就是spi dma通訊,主從兩邊都用dma模式可以嗎?我看到的例子都是一邊用dma,另一邊不用的

spi.png


原來每次都要重新init


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频