你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
onev 发表于 2017-5-27 10:35 多谢!如你所言,加上HAL_SPI_DMAStop()可以,不过加HAL_SPI_DMAPause()不行。
chayishuang 发表于 2017-11-20 16:29 我在SPI回调函数中,添加HAL_SPI_DMAStop(),和HAL_SPI_Receive_DMA(),实际使能中断一次,请问楼主有碰到这 ...
chayishuang 发表于 2017-11-23 19:09 SPI接收回调代码: void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) {
黑皮男 发表于 2018-1-24 17:44 楼主是不是用的从模式,我现在正在调试,遇到了这样的问题
解决了就好
没太听懂你的意思
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
{
HAL_SPI_DMAStop(hspi);
if(HAL_SPI_Receive_DMA(hspi, REV_FPGA_DATA, 6)!= HAL_OK)
{
/* Transfer error in transmission process */
Error_Handler();
}
}
DMA初始化中的部分代码:
/* SPI1 DMA Init */
/* SPI1_RX Init */
hdma_spi1_rx.Instance = DMA2_Stream0;
hdma_spi1_rx.Init.Channel = DMA_CHANNEL_3;
hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;
hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_spi1_rx.Init.Mode = DMA_NORMAL;
hdma_spi1_rx.Init.Priority = DMA_PRIORITY_MEDIUM;
hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
if (HAL_DMA_Init(&hdma_spi1_rx) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
主函数中,初始化后,执行了一次 :
if(HAL_SPI_Receive_DMA(hspi, REV_FPGA_DATA, 6)!= HAL_OK)
{
/* Transfer error in transmission process */
Error_Handler();
}
结果是:只执行了一次dma
你这岂不是一个无限循环不出来了?! 话说你的片选一直拉低的吗?
主