硬汉嵌入式论坛

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

[SPI/QSPI] STM32H743 SPI3 DMA收发数据

[复制链接]

6

主题

21

回帖

39

积分

新手上路

积分
39
发表于 2023-1-4 15:01:38 | 显示全部楼层 |阅读模式
STM32H743  SPI3  DMA收发数据时只能进行一次传输,第二次发送数据时就报 Error_Handler(__FILE__, __LINE__);程序从V7-070_SPI DMA双机通信(主机)改过来程序修改 定义如下
define SPIx
回复

使用道具 举报

6

主题

21

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2023-1-4 15:01:54 | 显示全部楼层
define SPIx                                                        SPI3
#define SPIx_CLK_ENABLE()                                __HAL_RCC_SPI3_CLK_ENABLE()
#define DMAx_CLK_ENABLE()                                __HAL_RCC_DMA2_CLK_ENABLE()

#define SPIx_FORCE_RESET()                                __HAL_RCC_SPI3_FORCE_RESET()
#define SPIx_RELEASE_RESET()                        __HAL_RCC_SPI3_RELEASE_RESET()

#define SPIx_SCK_CLK_ENABLE()                        __HAL_RCC_GPIOB_CLK_ENABLE()
#define SPIx_SCK_GPIO                                        GPIOB
#define SPIx_SCK_PIN                                        GPIO_PIN_3
#define SPIx_SCK_AF                                                GPIO_AF5_SPI3

#define SPIx_MISO_CLK_ENABLE()                        __HAL_RCC_GPIOB_CLK_ENABLE()
#define SPIx_MISO_GPIO                                        GPIOB
#define SPIx_MISO_PIN                                         GPIO_PIN_4
#define SPIx_MISO_AF                                        GPIO_AF5_SPI3

#define SPIx_MOSI_CLK_ENABLE()                        __HAL_RCC_GPIOB_CLK_ENABLE()
#define SPIx_MOSI_GPIO                                        GPIOB
#define SPIx_MOSI_PIN                                         GPIO_PIN_5
#define SPIx_MOSI_AF                                        GPIO_AF5_SPI3

/* CS片选 */       
#define SPIx_NSS_CLK_ENABLE()                         __HAL_RCC_GPIOG_CLK_ENABLE()
#define SPIx_NSS_GPIO                                        GPIOG
#define SPIx_NSS_PIN                                        GPIO_PIN_10
#define SPIx_NSS_AF                                                GPIO_AF5_SPI3

#define SPIx_TX_DMA_STREAM               DMA2_Stream3
#define SPIx_RX_DMA_STREAM               DMA2_Stream2

#define SPIx_TX_DMA_REQUEST              DMA_REQUEST_SPI3_TX
#define SPIx_RX_DMA_REQUEST              DMA_REQUEST_SPI3_RX

#define SPIx_DMA_TX_IRQn                 DMA2_Stream3_IRQn
#define SPIx_DMA_RX_IRQn                 DMA2_Stream2_IRQn

#define SPIx_DMA_TX_IRQHandler           DMA2_Stream3_IRQHandler
#define SPIx_DMA_RX_IRQHandler           DMA2_Stream2_IRQHandler

#define SPIx_IRQn                        SPI3_IRQn
#define SPIx_IRQHandler                  SPI3_IRQHandler
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107138
QQ
发表于 2023-1-4 15:05:50 | 显示全部楼层
进入这个函数Error_Handler(__FILE__, __LINE__)是函数初始化出错了,也就是参数成员配置出问题了

可以将错误的文件FILE打印出来,错误行LINE也可以打印出来。
回复

使用道具 举报

6

主题

21

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2023-1-4 15:59:12 | 显示全部楼层
错误地方找到了在这
if(HAL_SPI_TransmitReceive_DMA(&hspi, (uint8_t*)g_spiTxBuf, (uint8_t *)g_spiRxBuf, g_spiLen) != HAL_OK)       
    {
        Error_Handler(__FILE__, __LINE__);
    }
也就是第一次发送可以进中断,但进不了HAL_SPI_TxRxCpltCallback,第二次发送时就是Error_Handler(__FILE__, __LINE__);
回复

使用道具 举报

6

主题

21

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2023-1-4 15:59:57 | 显示全部楼层
试了下SPI1\SP2多没问题,SP3\SPI4就有问题
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107138
QQ
发表于 2023-1-5 13:01:56 | 显示全部楼层
xad74 发表于 2023-1-4 15:59
试了下SPI1\SP2多没问题,SP3\SPI4就有问题

SPI3看着没什么特别的地方
image.png
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 08:51 , Processed in 0.237664 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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