硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2231|回复: 9
收起左侧

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

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2022-3-11 20:31:15 | 显示全部楼层 |阅读模式
项目中需要用到两片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进行传输了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2022-3-12 11:18:03 | 显示全部楼层
感觉可以试试FMC的32bit数据地址线,高16bit接一组,低16bit接一组。
回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2022-3-12 19:26:16 | 显示全部楼层
eric2013 发表于 2022-3-12 11:18
感觉可以试试FMC的32bit数据地址线,高16bit接一组,低16bit接一组。

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2022-3-12 21:59:13 | 显示全部楼层
jkl28831532 发表于 2022-3-12 19:26
谢谢 可是这样要改硬件设计吧 有没有不改变硬件设计的方法来实现呢

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

使用道具 举报

1

主题

18

回帖

21

积分

新手上路

积分
21
发表于 2022-3-15 09:23:41 | 显示全部楼层
用同一个定时器的两个PWM TIMUP通道触发2个DMA通道进行采集,只有第一个通道ADC去触发启动两AD7606进行转换,我项目中实际用了3片AD7606同步采集,同时还采集16个DI通道,完全没有压力。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2022-3-15 09:45:53 | 显示全部楼层
missyou213 发表于 2022-3-15 09:23
用同一个定时器的两个PWM TIMUP通道触发2个DMA通道进行采集,只有第一个通道ADC去触发启动两AD7606进行转换 ...

这个会玩
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-8-12 11:28:25 | 显示全部楼层
missyou213 发表于 2022-3-15 09:23
用同一个定时器的两个PWM TIMUP通道触发2个DMA通道进行采集,只有第一个通道ADC去触发启动两AD7606进行转换 ...

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2023-8-13 08:53:24 | 显示全部楼层
gui986665794 发表于 2023-8-12 11:28
您好,能详细说一下 原理吗,我这要挂4片,不知道咋进行那,,,,,谢谢谢谢

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

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2023-10-11 21:22:25 | 显示全部楼层
eric2013 发表于 2023-8-13 08:53
可以,核心就是同一个定时器的4个通道,其它和我们分享的FMC DMA玩法一样。

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

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-3-7 21:09:47 | 显示全部楼层
另外用4个IO口分别选中某一个7606不就完了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 03:26 , Processed in 0.193461 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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