搜索
bottom↓
回复: 5

求教STM32H743通过timer触发DMA方式SPI传输不成功

[复制链接]

出0入0汤圆

发表于 2023-2-21 19:04:08 | 显示全部楼层 |阅读模式
现在用STM32H743通过SPI发送数据到外挂的DAC芯片,只有发送没有接收数据,以前用timer中断,在中断函数中配置DMA或者直接发送,现在由于更新频率增加,想改用Timer直接触发SPI DMA传输,在中断里面只更新DAC数据就行,另外这个DAC芯片还需要一个同步控制信号线,发送数据区拉低,发送数据后拉高,所以我的想法是用timer3定时器,做一个溢出中断一个比较中断,用比较中断触发SPI DMA发送数据,在溢出中断里面拉低同步信号线,在SPI DMA发送完成里面更新数据和拉高同步信号线,发送函数用的是:
HAL_DMAEx_MultiBufferStart_IT(&DMA_Handle, (uint32_t)SPI1TxBuf, (uint32_t)&hspi1.Instance->TXDR,(uint32_t)SPI1TxBuf, 1);
开启后中断函数void DMA1_Stream1_IRQHandler(void)可以进,也拉高了同步信号线,但DAC始终没有输出
求教不知道哪里出了问题。
下面分别是SPI、DMA和timer3的配置:请帮忙看一下,谢谢!

出0入0汤圆

 楼主| 发表于 2023-2-21 19:05:05 | 显示全部楼层


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入31汤圆

发表于 2023-2-21 20:01:04 | 显示全部楼层
看不明白,但可以分解,比如spi的控制信号产生是否正常,dma是否启动,找到具体的点才好具体看代码存在什么问题。

出0入0汤圆

 楼主| 发表于 2023-2-21 20:19:02 | 显示全部楼层
zchong 发表于 2023-2-21 20:01
看不明白,但可以分解,比如spi的控制信号产生是否正常,dma是否启动,找到具体的点才好具体看代码存在什么 ...
(引用自3楼)

嗯嗯,主要是中断都进入了,按说DMA应该通了,但是SPI还是发不出数据来
请教一下,Timer3的OC比较可以触发DMA是吧?发送到SPI 的TXDR寄存器了,但是没数据输出,程序直接调用DMA是可以正常发送数据的

出0入0汤圆

 楼主| 发表于 2023-2-21 21:14:21 | 显示全部楼层
简单点说就是想实现定时器触发DMA,向 SPI-DR 寄存器写数据, 同时定时器输出PWM波形,用作外部芯片的同步信号

出0入0汤圆

 楼主| 发表于 2023-2-21 21:26:29 | 显示全部楼层
已经发了悬赏了,这个帖子不知道怎么删除,可以在悬赏的帖子回复,谢谢!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 13:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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