關(guān)于CH582F的SPI多從機通訊的問題

幾個582F設(shè)置成SPI從機模式


調(diào)用這個函數(shù)發(fā)送數(shù)據(jù),

SPI0_SlaveDMATrans(spiBuffrev, 12);


請問從機的DMA發(fā)送是否有回調(diào)函數(shù)呢?

我擔心SPI主機端并沒有及時操作接收,

但是582F又想發(fā)新的數(shù)據(jù),怎么辦?



void SPI0_SlaveDMARecv(uint8_t *pbuf, uint16_t len)

{

? ? R8_SPI0_CTRL_MOD |= RB_SPI_FIFO_DIR;

? ? R16_SPI0_DMA_BEG = (uint32_t)pbuf;

? ? R16_SPI0_DMA_END = (uint32_t)(pbuf + len);

? ? R16_SPI0_TOTAL_CNT = len;

? ? R8_SPI0_INT_FLAG = RB_SPI_IF_CNT_END | RB_SPI_IF_DMA_END;

? ? R8_SPI0_CTRL_CFG |= RB_SPI_DMA_ENABLE;

? ? while(!(R8_SPI0_INT_FLAG & RB_SPI_IF_CNT_END));

? ? R8_SPI0_CTRL_CFG &= ~RB_SPI_DMA_ENABLE;

}


是不是調(diào)用SPI0_SlaveDMARecv就意味著一定會等待主機執(zhí)行完這次操作,

如果while(!(R8_SPI0_INT_FLAG & RB_SPI_IF_CNT_END)); 這個條件一定等不到會怎么樣呢?582F會在這等一萬年嗎?




你好,數(shù)據(jù)發(fā)送完成可以查詢寄存器標志位。需要判斷接收完成,可以自行配置主機端接收完成并返回一個ack信號。

傳輸完成標志位,在函數(shù)里面是有手動寫1清除標志的:

R8_SPI0_INT_FLAG = RB_SPI_IF_CNT_END | RB_SPI_IF_DMA_END;




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

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