本帖最后由 13400013591 于 2020-6-2 09:54 编辑
我看手册上明明说了(文末有截图),可以只用RX或者TX的DMA,但是这个库函数为什么用RX非要开启TX DMA呢?
从这个函数的名字看,就只有收的功能,为什么非要判断一下TX?
HAL_SPI_Receive_DMA
因为我想做成普通发,DMA收,但是如果用HAL库就必须被迫开启TX DMA,开了也没得用处。
看代码意思是,双线模式,主机模式,就必须有TX DMA,但是手册明明说了没用TX DMA就可以不开啊。
双线模式,我普通发,DMA收,这样也是双线模式啊,怎么就非要判断TX DMA存在
求大佬讲讲这里是什么意思?
HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef errorcode = HAL_OK;
/* Check rx dma handle */
assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx));
if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER))
{
hspi->State = HAL_SPI_STATE_BUSY_RX;
/* Check tx dma handle */
assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx));为什么这里非要TX DMA检查呢?
/* Call transmit-receive function to send Dummy data on Tx line and generate clock on CLK line */
return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size);
|