你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用STM32H743VIT6 使用SPI+DMA无法驱动2.4寸TFT屏幕,使用查询发送函数正常

[复制链接]
dajunlao 提问时间:2024-6-5 17:35 / 未解决

我使用另外一个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那么屏幕又能正常驱动

收藏 评论6 发布时间:2024-6-5 17:35

举报

6个回答
butterflyspring 回答时间:2024-6-6 10:00:37
可以量测一下,用DMA的方式是否发送出了数据。


如果没发送出去,那么多半是软件驱动方式。

SPI+DMA的发送比较常见,可以参考官方HAL库中的例程代码。
dajunlao 回答时间:2024-6-6 14:16:52

butterflyspring 发表于 2024-6-6 10:00
可以量测一下,用DMA的方式是否发送出了数据。</p>
<p>

数据是有发送的,SCK,MOSI波形都有

dajunlao 回答时间:2024-6-7 08:50:21

解决了,最后经过别人提醒是DMA为非阻塞发送,所以导致我把数据填入DMA后还没发送出去就又把CS拉高了程序修改为


HAL_SPI_Transmit_DMA(&hspi2,ColorTable+150000,3600);
    while (HAL_SPI_GetState(&hspi2) != HAL_SPI_STATE_READY);

这样加入判断SPI是否为空闲状态即可保证数据发送完成

Simon.Tao 回答时间:2024-6-12 09:35:06

内存不够需要外扩 LY的SPI PSRAM,联系陶13764140309

butterflyspring 回答时间:2024-6-13 17:13:20
dajunlao 发表于 2024-6-7 08:50
[md]解决了,最后经过别人提醒是DMA为非阻塞发送,所以导致我把数据填入DMA后还没发送出去就又把CS拉高了程 ...

DMA有个发送完成的中断,该回调函数里判断完成,这样的逻辑结构比较常用。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版