硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2769|回复: 4
收起左侧

[SPI/QSPI] 官方例程STM32H7 SPI_DMA FLASH问题?

[复制链接]

61

主题

62

回帖

245

积分

高级会员

积分
245
发表于 2020-7-15 17:15:25 | 显示全部楼层 |阅读模式
怎么一直卡在红色字体部分呢?
DMA传输完中断除了配置NVIC,还需要配置SPI和DMA的中断寄存器吧?代码中好像没找着相关的。

void bsp_spiTransfer(void)
{
        if (g_spiLen > SPI_BUFFER_SIZE)
        {
                return;
        }
       
        /* DMA·?ê?′?ê? */
#ifdef USE_SPI_DMA
        wTransferState = TRANSFER_WAIT;
       
if(HAL_SPI_TransmitReceive_DMA(&hspi, (uint8_t*)g_spiTxBuf, (uint8_t *)g_spiRxBuf, g_spiLen) != HAL_OK)       
{
        //Error_Handler(__FILE__, __LINE__);
}
       
        while (wTransferState == TRANSFER_WAIT)
        {
                ;
        }
#endif

        /* ?D??·?ê?′?ê? */       
#ifdef USE_SPI_INT
        wTransferState = TRANSFER_WAIT;

if(HAL_SPI_TransmitReceive_IT(&hspi, (uint8_t*)g_spiTxBuf, (uint8_t *)g_spiRxBuf, g_spiLen) != HAL_OK)       
{
        //Error_Handler(__FILE__, __LINE__);
}
       
        while (wTransferState == TRANSFER_WAIT)
        {
                ;
        }
#endif

        /* 2é?ˉ·?ê?′?ê? */       
#ifdef USE_SPI_POLL
        if(HAL_SPI_TransmitReceive(&hspi, (uint8_t*)g_spiTxBuf, (uint8_t *)g_spiRxBuf, g_spiLen, 1000000) != HAL_OK)       
        {
                //Error_Handler(__FILE__, __LINE__);
        }       
#endif
}

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-7-15 17:29:45 | 显示全部楼层
看我们教程这个章节,先熟悉下流程:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980&extra=page%3D1

QQ截图20200715173054.jpg
回复

使用道具 举报

61

主题

62

回帖

245

积分

高级会员

积分
245
 楼主| 发表于 2020-7-21 09:17:07 | 显示全部楼层
eric2013 发表于 2020-7-15 17:29
看我们教程这个章节,先熟悉下流程:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980&extra= ...

我发现SPI+DMA驱动FLASH,DMA使用地址放在0x24000000或者0x30000000都有问题,部分数据读不到或不完整,只有放在0x38000000才完全正确???
回复

使用道具 举报

61

主题

62

回帖

245

积分

高级会员

积分
245
 楼主| 发表于 2020-7-21 09:23:35 | 显示全部楼层
eric2013 发表于 2020-7-15 17:29
看我们教程这个章节,先熟悉下流程:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980&extra= ...

缓存不一致导致的,谢谢

解决了,谢谢

解决了,谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-7-21 09:28:45 | 显示全部楼层
vzhaodan 发表于 2020-7-21 09:17
我发现SPI+DMA驱动FLASH,DMA使用地址放在0x24000000或者0x30000000都有问题,部分数据读不到或不完整, ...

参考我的即可。

楼上回复。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-17 15:39 , Processed in 0.218731 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表