jkl28831532 发表于 2022-3-11 20:31:15

STM32F4 双AD7606 FMC+DMA采集思路求助

项目中需要用到两片AD7606进行同步采集,因此两片7606需要用到同一个CONVST引脚来启动ADC转化目前单个7606的FMC+DMA驱动正常,程序参考的【STM32F429开发板用户手册】第36章 STM32F429的FMC总线应用之DMA双缓冲驱动AD7606(8通道同步采样, 16bit, 正负10V) - 安富莱电子 - 博客园 (cnblogs.com)

由于启动DMA传输使用HAL库的HAL_DMA_Start_IT(&TIMDMA, (uint32_t)AD7606_BASE_1, (uint32_t)g_sAd7606Buf_1, 8)函数
一次TIM_UP中断只能传输一个固定地址的数据,两块7606的话 分别采用两个不同的片选信号
总线地址分别是:
#define AD7606_BASE_1            0x60000000
#define AD7606_BASE_2            0x6C000000


求助有没有办法在一次TIM_UP中断中 触发两次DMA传输:'(:'(
考虑到可能需要修改HAL库的底层代码,在清除TIM_UP中断标志前,再进行一次DMA传输,不知道有没有可能实现
或者使用BUSY信号线来触发外部中断,在外部中断中触发两次DMA传输?有没有可能实现呢
如果实在不行就不用DMA进行传输了:'(

eric2013 发表于 2022-3-12 11:18:03

感觉可以试试FMC的32bit数据地址线,高16bit接一组,低16bit接一组。

jkl28831532 发表于 2022-3-12 19:26:16

eric2013 发表于 2022-3-12 11:18
感觉可以试试FMC的32bit数据地址线,高16bit接一组,低16bit接一组。

谢谢 可是这样要改硬件设计吧 有没有不改变硬件设计的方法来实现呢

eric2013 发表于 2022-3-12 21:59:13

jkl28831532 发表于 2022-3-12 19:26
谢谢 可是这样要改硬件设计吧 有没有不改变硬件设计的方法来实现呢

你现在的PCB布线已经定了吗

missyou213 发表于 2022-3-15 09:23:41

用同一个定时器的两个PWM TIMUP通道触发2个DMA通道进行采集,只有第一个通道ADC去触发启动两AD7606进行转换,我项目中实际用了3片AD7606同步采集,同时还采集16个DI通道,完全没有压力。

eric2013 发表于 2022-3-15 09:45:53

missyou213 发表于 2022-3-15 09:23
用同一个定时器的两个PWM TIMUP通道触发2个DMA通道进行采集,只有第一个通道ADC去触发启动两AD7606进行转换 ...

这个会玩{:8:}

gui986665794 发表于 2023-8-12 11:28:25

missyou213 发表于 2022-3-15 09:23
用同一个定时器的两个PWM TIMUP通道触发2个DMA通道进行采集,只有第一个通道ADC去触发启动两AD7606进行转换 ...

您好,能详细说一下 原理吗,我这要挂4片,不知道咋进行那,,,,,谢谢谢谢

eric2013 发表于 2023-8-13 08:53:24

gui986665794 发表于 2023-8-12 11:28
您好,能详细说一下 原理吗,我这要挂4片,不知道咋进行那,,,,,谢谢谢谢

可以,核心就是同一个定时器的4个通道,其它和我们分享的FMC DMA玩法一样。

SuperSpy 发表于 2023-10-11 21:22:25

eric2013 发表于 2023-8-13 08:53
可以,核心就是同一个定时器的4个通道,其它和我们分享的FMC DMA玩法一样。

请问一下,如果一个fmc模块接4片ad7606的话,是需要设置四个不同片选型(设置四个不同的基地址)嘛,有没有办法能在只用一个片选(只是用一个基地址)的情况下同时读4片ad7606呢。因为我是用的是stm32f407,只有一个基地址能用~真心求教

spring_32 发表于 2024-3-7 21:09:47

另外用4个IO口分别选中某一个7606不就完了。
页: [1]
查看完整版本: STM32F4 双AD7606 FMC+DMA采集思路求助