OpenEdv-开源电子网

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

小菜求个思路,想将32单片机的大量数据发到电脑上位机

[复制链接]

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2023-4-12
在线时间
10 小时
发表于 2023-12-3 22:53:03 | 显示全部楼层 |阅读模式
3金钱
需要每0.1ms就发一个浮点数到电脑上,现在用的是f103然后串口转USB,然后printf,波特率提高到2M都不能达到目标,查了很久资料都没有好思路,求大佬们给点意见

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

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4588
金钱
4588
注册时间
2015-1-10
在线时间
574 小时
发表于 2023-12-4 10:08:58 | 显示全部楼层
本质上还是串口发而已,直接用USB吧
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8205
金钱
8205
注册时间
2020-5-11
在线时间
3700 小时
发表于 2023-12-4 10:09:31 | 显示全部楼层
假如你的浮点数是64位,0.1ms发一个,那么串口波特率大约需要64*10K*10/8=800K,粗略估计1M也就够了。
至于printf,不建议采用。
比如一个8位二进制数0xff,原始数据只有1字节,但printf发送字符串“255”就有3字节了,数据量大增。
专治疑难杂症
回复

使用道具 举报

8

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
789
金钱
789
注册时间
2019-8-15
在线时间
423 小时
发表于 2023-12-4 10:19:59 | 显示全部楼层
我怀疑是你的usb总线速率跟不上了,假设你的 usb转串口 设备是高速usb设备,100us也达到了usb协议速度的上限,主机应该没有这么高的速度来轮询你的设备
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2023-4-12
在线时间
10 小时
 楼主| 发表于 2023-12-4 13:46:55 | 显示全部楼层
阿侑kevin 发表于 2023-12-4 10:08
本质上还是串口发而已,直接用USB吧

感谢回复,请问大佬可否展开说说,我了解到的只有USB虚拟串口,感觉也突破不了串口的速度限制
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2023-4-12
在线时间
10 小时
 楼主| 发表于 2023-12-4 13:48:15 | 显示全部楼层
LcwSwust 发表于 2023-12-4 10:09
假如你的浮点数是64位,0.1ms发一个,那么串口波特率大约需要64*10K*10/8=800K,粗略估计1M也就够了。
至 ...

感谢回复,请问使用串口不使用printf是直接发送16进制的数据吗还是说串口有其他使用方法
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2023-4-12
在线时间
10 小时
 楼主| 发表于 2023-12-4 13:52:14 | 显示全部楼层
鲸鱼niko 发表于 2023-12-4 10:19
我怀疑是你的usb总线速率跟不上了,假设你的 usb转串口 设备是高速usb设备,100us也达到了usb协议速度的上 ...

感谢回复,我觉得现在是应该是串口速度最为局限,我用的是ch340,每次跑到printf就耗时数毫秒以上
回复

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4417
金钱
4417
注册时间
2018-5-11
在线时间
922 小时
发表于 2023-12-4 13:55:54 | 显示全部楼层
GalinLai 发表于 2023-12-4 13:48
感谢回复,请问使用串口不使用printf是直接发送16进制的数据吗还是说串口有其他使用方法

串口当然是可以直接发送16进制数据啊,
这是最基本的功能哦。
printf主要是给人看的,
不是机器间交互用的。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2023-4-12
在线时间
10 小时
 楼主| 发表于 2023-12-4 13:57:40 | 显示全部楼层
warship 发表于 2023-12-4 13:55
串口当然是可以直接发送16进制数据啊,
这是最基本的功能哦。
printf主要是给人看的,

感谢感谢  我再仔细琢磨琢磨
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8205
金钱
8205
注册时间
2020-5-11
在线时间
3700 小时
发表于 2023-12-4 14:00:31 | 显示全部楼层
GalinLai 发表于 2023-12-4 13:48
感谢回复,请问使用串口不使用printf是直接发送16进制的数据吗还是说串口有其他使用方法

例如:
  1. for(t=0;t<len;t++)
  2. {
  3.        USART_SendData(USART1, USART_TX_BUF[t]);         //向串口1发送数据
  4.        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
  5. }
复制代码


专治疑难杂症
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2023-4-12
在线时间
10 小时
 楼主| 发表于 2023-12-4 15:17:23 | 显示全部楼层

感谢感谢
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2023-12-4 19:22:53 | 显示全部楼层
本帖最后由 xuande 于 2023-12-4 19:25 编辑
GalinLai 发表于 2023-12-4 13:46
感谢回复,请问大佬可否展开说说,我了解到的只有USB虚拟串口,感觉也突破不了串口的速度限制

这个概念是错的 。
虚拟串口,它的数据流是 USB 的速度,是 12Mbit/S。
它可不受串口速度的限制。
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2023-4-12
在线时间
10 小时
 楼主| 发表于 2023-12-4 20:10:59 | 显示全部楼层
xuande 发表于 2023-12-4 19:22
这个概念是错的 。
虚拟串口,它的数据流是 USB 的速度,是 12Mbit/S。
它可不受串口速度的限制。

原来如此,感谢
回复

使用道具 举报

13

主题

166

帖子

0

精华

高级会员

Rank: 4

积分
791
金钱
791
注册时间
2018-12-19
在线时间
163 小时
发表于 2023-12-5 09:21:33 | 显示全部楼层
可以用winusb
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2023-4-12
在线时间
10 小时
 楼主| 发表于 2023-12-5 19:25:01 | 显示全部楼层

感谢大佬支招,俺也去了解了解
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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