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

使用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 回答时间:6 天前

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

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

DMA有个发送完成的中断,该回调函数里判断完成,这样的逻辑结构比较常用。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版