maomao190190 发表于 2023-2-21 19:04:08

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

现在用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始终没有输出{:dizzy:}
求教不知道哪里出了问题。
下面分别是SPI、DMA和timer3的配置:请帮忙看一下,谢谢!

maomao190190 发表于 2023-2-21 19:05:05



zchong 发表于 2023-2-21 20:01:04

看不明白,但可以分解,比如spi的控制信号产生是否正常,dma是否启动,找到具体的点才好具体看代码存在什么问题。

maomao190190 发表于 2023-2-21 20:19:02

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

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

maomao190190 发表于 2023-2-21 21:14:21

简单点说就是想实现定时器触发DMA,向 SPI-DR 寄存器写数据, 同时定时器输出PWM波形,用作外部芯片的同步信号

maomao190190 发表于 2023-2-21 21:26:29

已经发了悬赏了,这个帖子不知道怎么删除,可以在悬赏的帖子回复,谢谢!
页: [1]
查看完整版本: 求教STM32H743通过timer触发DMA方式SPI传输不成功