/*********************************************************************
?* @fn? ? ? SPI0_MasterDMATrans
?*
?* @brief? ?DMA方式連續(xù)發(fā)送數(shù)據(jù)
?*
?* @param? ?pbuf? ? - 待發(fā)送數(shù)據(jù)起始地址,需要四字節(jié)對其
?* @param? ?len? ? ?- 待發(fā)送數(shù)據(jù)長度
?*
?* @return? none
?*/
void SPI0_MasterDMATrans(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;
}
有沒有不用在這里死等的方式DMA傳輸?
? ? while(!(R8_SPI0_INT_FLAG & RB_SPI_IF_CNT_END));
? ? R8_SPI0_CTRL_CFG &= ~RB_SPI_DMA_ENABLE;