OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 421|回复: 15

串口接收大量数据,通过网口发送至PC端

[复制链接]

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2022-1-1
在线时间
31 小时
发表于 2024-8-15 19:06:48 | 显示全部楼层 |阅读模式
1金钱
现在外部向我的串口发送大量数据,基本上应该是550000个字节,然后需要通过网线发送至PC端,现在波特率设置115200,网线传输速率100M,现在效果只能传输5000左右字节,加20ms延时,可能会多些,有无大佬指点一下

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2024-8-16 10:17:28 | 显示全部楼层
本帖最后由 LcwSwust 于 2024-8-16 10:18 编辑

你觉得是哪里丢了数据?串口接收来不及处理?网线发送太慢?上位机接收数据没处理好?
专治疑难杂症
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2022-1-1
在线时间
31 小时
 楼主| 发表于 2024-8-16 13:43:17 | 显示全部楼层
LcwSwust 发表于 2024-8-16 10:17
你觉得是哪里丢了数据?串口接收来不及处理?网线发送太慢?上位机接收数据没处理好?

目前怀疑是网口发送的过程中,下一帧串口数据就已经送过来
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2024-8-16 13:47:29 | 显示全部楼层
马骏楠 发表于 2024-8-16 13:43
目前怀疑是网口发送的过程中,下一帧串口数据就已经送过来

哦,主循环来不及处理串口数据是吧,那就在串口中断里把数据存起来呀,然后主循环再慢慢处理。
专治疑难杂症
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2022-1-1
在线时间
31 小时
 楼主| 发表于 2024-8-16 14:04:40 | 显示全部楼层
LcwSwust 发表于 2024-8-16 13:47
哦,主循环来不及处理串口数据是吧,那就在串口中断里把数据存起来呀,然后主循环再慢慢处理。

我用的STM32 的串口中断,中断里面已经用数组进行存储了,目前可能问题在于网口芯片可能发送的时候,下一帧已经来了
回复

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2015-1-4
在线时间
68 小时
发表于 2024-8-16 14:07:31 | 显示全部楼层
马骏楠 发表于 2024-8-16 14:04
我用的STM32 的串口中断,中断里面已经用数组进行存储了,目前可能问题在于网口芯片可能发送的时候,下一 ...

双缓存试试看
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2022-1-1
在线时间
31 小时
 楼主| 发表于 2024-8-16 14:10:41 | 显示全部楼层

请教一下,双缓存方式是什么样子的呢,没有接触过这个名词
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2024-8-16 14:19:24 | 显示全部楼层
马骏楠 发表于 2024-8-16 14:04
我用的STM32 的串口中断,中断里面已经用数组进行存储了,目前可能问题在于网口芯片可能发送的时候,下一 ...

串口中断不能打断网口发送吗?莫非网口发送也在中断里进行?
那就把串口中断优的占先优先级提高些。
专治疑难杂症
回复

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2015-1-4
在线时间
68 小时
发表于 2024-8-16 14:41:46 | 显示全部楼层
马骏楠 发表于 2024-8-16 14:10
请教一下,双缓存方式是什么样子的呢,没有接触过这个名词

定义两个缓存单元,当第一个缓存接收满了,往第二个缓存存数据,第一个缓存网络数据发送出去,第二个满了再发第二个,缓存换时间。
回复

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2015-1-4
在线时间
68 小时
发表于 2024-8-16 14:46:33 | 显示全部楼层
马骏楠 发表于 2024-8-16 14:10
请教一下,双缓存方式是什么样子的呢,没有接触过这个名词

LWIPOPTS_H头文件里面缓存定义够不
//MEM_SIZE:heap内存的大小,如果在应用中有大量数据发送的话这个值最好设置大一点
#define MEM_SIZE                (5*1024) //内存堆大小

//MEMP_NUM_PBUF:memp结构的pbuf数量,如果应用从ROM或者静态存储区发送大量数据时,这个值应该设置大一点
#define MEMP_NUM_PBUF           20
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2022-1-1
在线时间
31 小时
 楼主| 发表于 2024-8-16 14:59:20 | 显示全部楼层
马超飞燕 发表于 2024-8-16 14:46
LWIPOPTS_H头文件里面缓存定义够不
//MEM_SIZE:heap内存的大小,如果在应用中有大量数据发送的话这个值最 ...

非常感谢,我的总数据长度大概在375000~550000个字节,请问可以吗?
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2022-1-1
在线时间
31 小时
 楼主| 发表于 2024-8-16 15:00:56 | 显示全部楼层
LcwSwust 发表于 2024-8-16 14:19
串口中断不能打断网口发送吗?莫非网口发送也在中断里进行?
那就把串口中断优的占先优先级提高些。

串口接收在中断接收,网口接收也是通过中断判断
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2024-8-16 15:19:12 | 显示全部楼层
马骏楠 发表于 2024-8-16 15:00
串口接收在中断接收,网口接收也是通过中断判断

哦,考虑下优先级。
或贴出相关代码,或上传工程。
专治疑难杂症
回复

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2015-1-4
在线时间
68 小时
发表于 2024-8-16 15:20:22 | 显示全部楼层
马骏楠 发表于 2024-8-16 15:00
串口接收在中断接收,网口接收也是通过中断判断

建议还是双缓存,分包发送。LWIP好像是通过DMA发送的单次最多发送65536个字节数据
回复

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2015-1-4
在线时间
68 小时
发表于 2024-8-16 15:29:58 | 显示全部楼层
马骏楠 发表于 2024-8-16 15:00
串口接收在中断接收,网口接收也是通过中断判断

双缓存,串口采用DMA接收方式,默认接收第一个缓存,开启DMA接收中断,第一次进入中断后配置到第二个缓存,网口发送第一个缓存数据,第二次进入中断配置到第一个缓存,网口发送第一个缓存。
回复

使用道具 举报

6

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2020-5-18
在线时间
58 小时
发表于 2024-8-17 08:21:24 来自手机 | 显示全部楼层
只要串口不丢数,网口上发送应该很快的。串口用DMA,缓存够1000字节,就丢到网口发送。1000个字节对于115200的波特率差不多100ms,也就是100ms发送1次网络数据包,不会丢数据的
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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