STM32
直播中

李英

7年用户 1424经验值
私信 关注
[问答]

STM32H743VIT6使用SPI+DMA无法驱动2.4寸怎么解决?

我使用另外一个MCU STM32F407VET6使用Cubemx生成代码,只需要在
MX_SPI2_Init()函数最后加上HAL_SPI_DMAResume( hspi2);SPI DMA发送就正常了,但是使用STM32H743同样使用Cubemx生成代码,同样在初始化后加入HAL_SPI_DMAResume( hspi2);但是实测SPI+DMA发送无法驱动屏幕,如果使用HAL_SPI_Transmit替代DMA发送HAL_SPI_Transmit_DMA那么屏幕又能正常驱动

回帖(1)

李鸿

2024-7-2 17:16:06
可以尝试以下几个步骤来解决:

1. **检查硬件连接**:确保SPI和屏幕之间的硬件连接正确无误,包括数据线、时钟线、片选线等。

2. **检查SPI配置**:在CubeMX中配置SPI时,确保选择了正确的SPI模式、数据大小、时钟极性、相位等参数。这些参数应与屏幕的数据手册中的要求一致。

3. **检查DMA配置**:在CubeMX中配置DMA时,确保选择了正确的通道、数据宽度、内存增量模式等。同时,确保DMA的触发源设置正确,以便在SPI传输时能够正确触发DMA。

4. **检查中断配置**:如果使用了中断来管理SPI传输,确保中断优先级设置正确,并且中断服务函数中正确处理了SPI和DMA的相关操作。

5. **检查初始化代码**:在CubeMX生成的初始化代码中,确保SPI和DMA的初始化顺序正确。通常,应该先初始化SPI,然后初始化DMA,最后再将DMA与SPI关联起来。

6. **检查HAL_SPI_DMAResume的使用**:在STM32F407VET6上使用HAL_SPI_DMAResume( hspi2);能够正常工作,但在STM32H743上可能需要不同的处理。尝试在SPI初始化完成后,不要立即调用HAL_SPI_DMAResume,而是在需要开始DMA传输时再调用。

7. **检查HAL库版本**:确保使用的HAL库版本与STM32H743兼容。不同版本的HAL库可能在某些功能上有所不同。

8. **调试和日志**:在代码中添加调试信息,以便跟踪SPI和DMA的状态。这可以帮助确定问题出在哪个环节。

9. **参考例程**:查找STM32H743的官方例程或社区分享的示例,看看是否有使用SPI+DMA驱动屏幕的案例,从中学习其配置和代码实现。

10. **硬件问题**:如果以上步骤都无法解决问题,可能需要考虑是否存在硬件问题,比如SPI或DMA通道的硬件故障。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分