硬汉嵌入式论坛

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

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

[复制链接]

6

主题

26

回帖

44

积分

新手上路

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

使用道具 举报

6

主题

26

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 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万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

6

主题

26

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 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

主题

26

回帖

44

积分

新手上路

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

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

1

主题

15

回帖

18

积分

新手上路

积分
18
发表于 2024-10-10 13:55:11 | 显示全部楼层
我也遇到了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-10-11 08:58:21 | 显示全部楼层

按说没区别,唯一区别的地方是SPI1在ABP1总线上,SPI3在APB3总线上。
回复

使用道具 举报

5

主题

11

回帖

26

积分

新手上路

积分
26
发表于 2024-11-26 17:27:06 | 显示全部楼层
楼主有解决这个问题吗?我用SPI4也遇到这个问题了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-11-27 08:16:38 | 显示全部楼层
ANG 发表于 2024-11-26 17:27
楼主有解决这个问题吗?我用SPI4也遇到这个问题了

难道SPI3和SPI4的使用确实有什么bug,后面我也试试。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-1-15 09:02:08 | 显示全部楼层
eric2013 发表于 2024-11-27 08:16
难道SPI3和SPI4的使用确实有什么bug,后面我也试试。

这个问题有解决吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2025-1-16 07:01:00 | 显示全部楼层
Zigbee2012 发表于 2025-1-15 09:02
这个问题有解决吗

测试了SPI4,确定没问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 02:07 , Processed in 0.047801 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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