hi all,
使用Autochip官网提供的SDK,SPI作为从机DMA方式接收数据,主机端每隔250毫秒和300毫秒发送数据,但是从机接收几条数据就一直收不到数据了一直都是0. 但是用中断方式接收是完全OK的。代码如下:
memset(&rxMessage, 0, sizeof(stComMessage));
if(spiParms.spi_dma_enable != TRUE) {
//中断方式
SPI_ResetTransmitReceiveStatus(SPI0);
/*接收数据.*/
SPI_ReceiveInt(SPI0, (uint8_t*)&rxMessage, sizeof(stComMessage));
SPI_Slave_WaitFinish(0, COM_DIR_RX, 10);//等待接收完毕
SPI_ResetTransmitReceiveStatus(SPI0);
}
else { //DMA方式
/*接收数据.*/
s_dma_rx_finish = FALSE;
SPI_ReceiveDMA(SPI0, DMA0_CHANNEL0, (uint8_t*)&rxMessage, sizeof(stComMessage), DMA_RX_Callback);
SPI_Slave_WaitFinish(1, COM_DIR_RX, 10);//等待接收完毕
}
AUTOCHIP提供的SPI_ReceiveDMA和SPI_TransmitDMA接口有什么BUG吗?
|