搜索
bottom↓
回复: 27

两个STM32F4实现高速数据采集并发送方案,各位看看可行性

[复制链接]

出0入16汤圆

发表于 2019-5-28 16:24:02 | 显示全部楼层 |阅读模式
本帖最后由 射天狼 于 2019-5-28 16:48 编辑

如图,高速AD   范围200k~1M采样率

ESP8266无线用于≤200K以下采样率传输  FT232H或DP83848以太网 用于200k-1M采样率传输
主控1:主控1采集数据 给AL422 满1024字节(也可以更多)  给主控2一个中断信号

主控2:收到主控1的中断信号 读取AL422 打包发送
串口用于之间命令传输  比如设置包大小 选择什么方式传输···等


之所以不用一个单片机 个人认为 一个完成不了  F7也一样
因为像以太网或者ESP8266 、USB也一样 都是以包形式发送包越大 速度越快 效率越高
而以太网发送一个包 是需要时间的  这个时间内 AD采集会停止  无法实时传输


FT232H这个应该是可以完成的 他的FT245模式很猛


其他都还好,就那个AL422用法心里没底

不知道AL422那个FIFO用的对不对 能不能这样用




本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2019-5-28 16:42:49 | 显示全部楼层
做复杂了吧,F4速度不够上F7,还不够上I.MX RT,你这个方案做起来就复杂了。

出90入0汤圆

发表于 2019-5-28 17:34:25 | 显示全部楼层
为什么以太网、USB发一包数据时AD采样会停?如果发数据时AD会停,只能说明设计有问题

出0入475汤圆

发表于 2019-5-28 18:32:46 来自手机 | 显示全部楼层
ad采用dma模式,两边缓冲区来回切,测试下网络打包需要的时间,说不定选择一定的ad采集数量后还刚好可以

出0入0汤圆

发表于 2019-5-28 21:53:18 | 显示全部楼层
见有人用F4的IO驱动80M的ADC

出0入0汤圆

发表于 2019-5-28 22:07:06 来自手机 | 显示全部楼层
合格的4楼,DMA双缓存或半中断,1M的采样率用1K缓存,网络带宽上M的,传2k字节很轻松

出0入0汤圆

发表于 2019-5-28 22:10:28 | 显示全部楼层
chishangpiao 发表于 2019-5-28 21:53
见有人用F4的IO驱动80M的ADC

你说是某宝上那个用IPOD外壳做的示波器吗?

出0入0汤圆

发表于 2019-5-28 22:30:30 | 显示全部楼层
rmdyj 发表于 2019-5-28 22:10
你说是某宝上那个用IPOD外壳做的示波器吗?

不是的,不方便透露,  确实是IO直接驱动的,应该是用来DMA对IO操作

出0入16汤圆

 楼主| 发表于 2019-5-29 10:48:00 | 显示全部楼层
zhucezhuanyong 发表于 2019-5-28 17:34
为什么以太网、USB发一包数据时AD采样会停?如果发数据时AD会停,只能说明设计有问题 ...

这是以前做的一个采集电路AD7175  用的以太网UDP传输 双缓冲方式 25k采样率稳稳的  40k和50k就乱套了 波形就失真了

测试了一下

以太网这段函数执行  这些需要的时间用串口传回  超过了25us  不知道这么测试对不对







本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2019-5-29 11:32:49 | 显示全部楼层
真浪费资源,1M采样率算不上高速,1个F4就OK,甚至一个F1都足够了

出0入85汤圆

发表于 2019-5-29 11:40:24 | 显示全部楼层
方案设计有问题~DMA双缓冲完全可以搞定

出0入4汤圆

发表于 2019-5-29 11:49:54 | 显示全部楼层
这个很明显是用ADC+DMA+乒乓缓冲的节奏。
我用AD7606做到了2路100Ksps,TCP传输。
用的103.

出0入4汤圆

发表于 2019-5-29 11:53:57 | 显示全部楼层
zqf441775525 发表于 2019-5-29 11:49
这个很明显是用ADC+DMA+乒乓缓冲的节奏。
我用AD7606做到了2路100Ksps,TCP传输。
用的103. ...

怎么缓冲?FIFO?

出0入4汤圆

发表于 2019-5-29 12:20:31 | 显示全部楼层

不用FIFO,直接乒乓操作。
AD7606是用的SPI接口,如果用FSMC,速度会更快。也可以使用更多通道。

出0入0汤圆

发表于 2019-5-29 13:17:48 | 显示全部楼层
串口16位采样  10m则160m  ad1m采样8位则直接能dma匹配

出0入20汤圆

发表于 2019-5-29 16:20:06 | 显示全部楼层
STM32MP157这样的处理器就是为你这样的应用准备的。可以配1GB 内存,做缓冲。
内置的协处理器来处理与ADC的接口,千兆以太网连上位机,而且EMMC与SD卡接口可以同时存储。

出130入0汤圆

发表于 2019-5-30 10:33:41 来自手机 | 显示全部楼层
1a2b3c 发表于 2019-5-28 18:32
ad采用dma模式,两边缓冲区来回切,测试下网络打包需要的时间,说不定选择一定的ad采集数量后还刚好可以 ...

您说的是乒乓操作吗?乒乓操作可以看做2级fifo吧,个人感觉弄一个二维数组当循环fifo是不是也可以啊?

出130入0汤圆

发表于 2019-5-30 10:37:13 来自手机 | 显示全部楼层
wenming 发表于 2019-5-29 16:20
STM32MP157这样的处理器就是为你这样的应用准备的。可以配1GB 内存,做缓冲。
内置的协处理器来处理与ADC的 ...

您说的√,之前STM32MP157也想做类似的事情。不过内部的M4核不知道可以接并行ADC不,用SPI总感觉不太好

出0入475汤圆

发表于 2019-5-30 19:14:21 | 显示全部楼层
主楼一区401 发表于 2019-5-30 10:33
您说的是乒乓操作吗?乒乓操作可以看做2级fifo吧,个人感觉弄一个二维数组当循环fifo是不是也可以啊? ...

看芯片手册,DMA部分有自动乒乓操作,手工去整数组咋行,切换的时候你能保证你的切换操作可以在adc采集一次前完成?

出0入0汤圆

发表于 2019-5-30 20:11:38 | 显示全部楼层
方案太复杂了

出130入0汤圆

发表于 2019-5-30 22:22:58 来自手机 | 显示全部楼层
1a2b3c 发表于 2019-5-30 19:14
看芯片手册,DMA部分有自动乒乓操作,手工去整数组咋行,切换的时候你能保证你的切换操作可以在adc采集一 ...

今天看手册了,谢谢提示

出0入0汤圆

发表于 2019-5-31 14:11:35 | 显示全部楼层
这个太复杂了 这个你标的问题都是程序设计的问题
应该把采集 数据处理 数据输出三个部分分开
采集用 DMA双缓冲 或者 半中断
dma中断来触发数据处理
处理完丢到输出缓冲 等待通讯带走数据
要是不触发cpu数据处理瓶颈的话 这个F1足以应对

出0入0汤圆

发表于 2019-5-31 14:29:02 | 显示全部楼层
主楼一区401 发表于 2019-5-30 10:33
您说的是乒乓操作吗?乒乓操作可以看做2级fifo吧,个人感觉弄一个二维数组当循环fifo是不是也可以啊? ...

STM32的DMA有传输过半中断,这个配合DMA循环模式可以实现类似双缓冲

出110入8汤圆

发表于 2019-5-31 15:29:21 | 显示全部楼层
上F4和FPGA吧

出0入17汤圆

发表于 2019-5-31 16:22:29 | 显示全部楼层
射天狼 发表于 2019-5-29 10:48
这是以前做的一个采集电路AD7175  用的以太网UDP传输 双缓冲方式 25k采样率稳稳的  40k和50k就乱套了 波 ...

1. ADC 采用DMA 双缓冲,中断优先级高。无论以太网端干什么,都能实时采集。
2. 你说的波形失真?哪里的波形?上位机显示么?以太网给上位机不需要实时的,可以缓冲再发送
3. 不需要2片F4那么复杂

出0入16汤圆

 楼主| 发表于 2019-5-31 16:43:45 | 显示全部楼层
think_a_second 发表于 2019-5-31 16:22
1. ADC 采用DMA 双缓冲,中断优先级高。无论以太网端干什么,都能实时采集。
2. 你说的波形失真?哪里的 ...

嗯  因为这个没用SPI+DMA+TIMPWM那个方式  所以不太行
按照这个帖子大神方法试了试200k采样 超级好用 速度到1M应该没问题  不过局限性就是必须16位或以下  我需要的精度高点  都是18位或者24位ADC
https://www.amobbs.com/thread-5630455-1-1.html?_dsign=c067ad21

出0入17汤圆

发表于 2019-5-31 19:13:20 | 显示全部楼层
射天狼 发表于 2019-5-31 16:43
嗯  因为这个没用SPI+DMA+TIMPWM那个方式  所以不太行
按照这个帖子大神方法试了试200k采样 超级好用 速 ...

STM32的SPI 最大16位位宽。大于16位位宽是实现不了。可以尝试STM32 F4的串行音频接口SAI, SAI是比SPI多了一个帧同步信号,原理大致一样。它可以设置8位、10位、16位、20位、24位、32位。使用2个子模块同步,FS脚不用,只用主模块的时钟脚和2个模块数据脚。

出0入0汤圆

发表于 2023-11-1 09:41:19 | 显示全部楼层
zqf441775525 发表于 2019-5-29 12:20
不用FIFO,直接乒乓操作。
AD7606是用的SPI接口,如果用FSMC,速度会更快。也可以使用更多通道。 ...
(引用自14楼)

哥,怎么样才可以联系你呀,最近在做AD7606的,想数据通过udp上传,可是不太会想请教一下。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-29 10:50

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

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