打印
[STM32H7]

关于ADC采集LWIP UDP发送数据处理问题

[复制链接]
3227|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
怪诞新|  楼主 | 2024-6-14 09:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ip, dc, ADC, AD, udp
做ADC数据采集,1秒钟采集到的数据有至少3MB的数据量,用LWIP的UDP发送,实时传输,但是UDP超过1472字节后,发送不了,上位机不显示,所以我的想法是在大数据量的情况下:
1:采集到的数据存在内部sram中,开辟一个500KB的缓冲区,边采集边把数据存到缓冲区,边做数据分割成1472字节的小数据块,分块好后UDP直接发送出去,整个过程就是一个动态循环的过程。比如:采集到的数据存进缓冲区,缓冲区检测到存到1472个数据后,把这1472个数据组成一个新的数组块,然后UDP拿走发送到上位机,在处理1-1472这第一个数据块的时候,同时后面的采集数据依然在实时进行,当第2个1472数据块检测存满后也打包成新的数组给UDP发送,一直存到500k后又重头开始循环缓冲1s内还没缓冲完的数据。原理就是用一个小的缓冲区来循环缓冲大数据量的数据,给出多余的时间来做数据分块给UDP传输,当然缓冲区不能太小,不然还没发走就被覆盖了。不知道这样的思路可否行
2.采集到的数据放在外部SDRAM中,在H7系列外挂SDRAM,直接一片就32MB的存储空间,一次性采集完1s的数据全部存到SDRAM中,采集完了在慢慢把数据分快处理给UDP发送。
3:当然这种情况在1和2的基础中,采集到的数据存到外部SDRAM,存储空间足够大,但是我也是边存边做数据分快处理,也不用担心被覆盖,因为空间足够大,一次性可以存够,只是存储和分块处理,发送同时进行。

以上就是我想出来的3种思路,不知道有没有大神看看如何,因为UDP发送数据上位机接收不到,超过1472字节的数据包,边采集边分块的话时间来不及处理,实时性就降低了

使用特权

评论回复
沙发
SophiaOP| | 2024-6-17 14:34 | 只看该作者
一直是这么大数据量吗?

使用特权

评论回复
板凳
cr315| | 2024-6-17 16:59 | 只看该作者
解决问题的思路还是非常清晰

使用特权

评论回复
地板
jcky001| | 2024-6-17 17:46 | 只看该作者
建议使用内部SRAM进行动态循环缓冲,使用外部SDRAM进行存储

使用特权

评论回复
5
怪诞新|  楼主 | 2024-6-19 10:44 | 只看该作者
SophiaOP 发表于 2024-6-17 14:34
一直是这么大数据量吗?

对。一直都是

使用特权

评论回复
6
怪诞新|  楼主 | 2024-6-19 10:47 | 只看该作者
jcky001 发表于 2024-6-17 17:46
建议使用内部SRAM进行动态循环缓冲,使用外部SDRAM进行存储
...

要求实时性,用一个就好,没必要先内部在外部,浪费资源把哈哈哈哈

使用特权

评论回复
7
小小蚂蚁举千斤| | 2024-6-23 17:37 | 只看该作者
要求实时性建议通信方式选择Ethercat

使用特权

评论回复
8
AdaMaYun| | 2024-6-24 22:57 | 只看该作者
空间足够大,一次性可以存够,只是存储和分块处理,发送同时进行

使用特权

评论回复
9
怪诞新|  楼主 | 2024-6-25 08:22 | 只看该作者
AdaMaYun 发表于 2024-6-24 22:57
空间足够大,一次性可以存够,只是存储和分块处理,发送同时进行

外挂的SDRAM,足够是大空间,一次性是能够存够,怎么个同时进行呢,佬,教教

使用特权

评论回复
10
LOVEEVER| | 2024-6-25 19:19 | 只看该作者
做ADC数据采集,1秒钟采集到的数据有至少3MB的数据量,用LWIP的UDP发送,实时传输

使用特权

评论回复
11
suncat0504| | 2024-6-29 19:56 | 只看该作者
话说有必要这么密集的采集ADC数据吗?实际应用,采集大量的ADC,是出于什么目的呢?

使用特权

评论回复
12
szt1993| | 2024-6-30 08:49 | 只看该作者
密集ADC采集有时候需要频率跟上

使用特权

评论回复
13
wang6623| | 2024-6-30 14:59 | 只看该作者
将采集到的数据存储在内部SRAM中,并设置一个固定大小的缓冲区(例如500KB)。
当缓冲区中数据达到1472字节时,将数据打包成UDP数据包发送给上位机。
在发送数据的同时,后续的采集数据继续存储在缓冲区中,实现动态循环的数据处理和发送过程。

使用特权

评论回复
14
怪诞新|  楼主 | 2024-7-3 17:27 | 只看该作者
suncat0504 发表于 2024-6-29 19:56
话说有必要这么密集的采集ADC数据吗?实际应用,采集大量的ADC,是出于什么目的呢? ...

这个嘛,保密,佬把采集的数据写入外挂的SRAM或者SDRAM才慢慢分包分送,怎么写啊

使用特权

评论回复
15
怪诞新|  楼主 | 2024-7-3 17:28 | 只看该作者
szt1993 发表于 2024-6-30 08:49
密集ADC采集有时候需要频率跟上

外挂的SRAM或者SDRAM跟得上,网口发送打包只能1472字节,需要分包,分包实时操作会占用很多时间

使用特权

评论回复
16
怪诞新|  楼主 | 2024-7-3 17:31 | 只看该作者
wang6623 发表于 2024-6-30 14:59
将采集到的数据存储在内部SRAM中,并设置一个固定大小的缓冲区(例如500KB)。
当缓冲区中数据达到1472字节 ...

佬,教教我,真的不会啊,固定大小的缓冲区也可以不那么大,然后缓冲区满了重头覆盖也行嘛

使用特权

评论回复
17
ex7s4| | 2024-7-15 12:56 | 只看该作者
在使用ADC(模数转换器)采集数据并通过LWIP(轻量级IP协议栈)以UDP(用户数据报协议)发送数据时,需要考虑ADC数据采集方面的

使用特权

评论回复
18
su1yirg| | 2024-7-15 14:01 | 只看该作者
设置ADC的采样率、分辨率和通道等参数。为ADC数据分配一个缓冲区,用于存储采集的数据。如果可能,使用DMA(直接内存访问)来传输ADC数据,以减轻CPU负担

使用特权

评论回复
19
g0d5xs| | 2024-7-15 15:15 | 只看该作者
将ADC采集的原始数据转换为适合通过网络传输的格式。添加校验和或其他数据完整性检查,以确保数据在传输过程中不被损坏

使用特权

评论回复
20
b5z1giu| | 2024-7-15 16:21 | 只看该作者
在系统启动时初始化LWIP协议栈,包括网络接口、IP地址、子网掩码等配置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

32

帖子

0

粉丝