[STM32F1] 串口传输速率有限导致采样频率上不去该如何解决

[复制链接]
 楼主| 脏脏包 发表于 2025-7-31 10:25 | 显示全部楼层 |阅读模式
使用STM32F103RCT6的ADC进行正弦波的数据采集,通过串口将数据发送至上位机,由于串口传输速率有限导致采样频率上不去,该如何解决
LcwSwust 发表于 2025-7-31 10:34 | 显示全部楼层
采样率和位数是多少?串口波特率多少?
dffzh 发表于 2025-8-1 08:53 | 显示全部楼层
1、ADC采样率是多少?或者说采样周期是多少?串口波特率配置了多少? 这种操作不应该不行。
2、如果的确不行,串口数据加个队列缓存也可以解决。
dukedz 发表于 2025-8-1 09:02 | 显示全部楼层
本帖最后由 dukedz 于 2025-8-1 09:06 编辑

最高 50 Mbps 的串口(50000000 bps),硬件自动分包、打包、校验、多主仲裁……

看下够不够用: https://bbs.21ic.com/icview-3350404-1-1.html


电脑端可以用这个开源的 usb 转串口: https://bbs.21ic.com/icview-3426278-1-1.html

 楼主| 脏脏包 发表于 2025-8-4 09:20 | 显示全部楼层
LcwSwust 发表于 2025-7-31 10:34
采样率和位数是多少?串口波特率多少?

我设置100khz采样率,采样10khz正弦波,串口波特率是230400,这样是没问题的。但是我预期想要设置采样率为800khz然后尽可能采集频率高的正弦波,但是800khz的采样率,串口波特率230400根本带不动
 楼主| 脏脏包 发表于 2025-8-4 09:21 | 显示全部楼层
dffzh 发表于 2025-8-1 08:53
1、ADC采样率是多少?或者说采样周期是多少?串口波特率配置了多少? 这种操作不应该不行。
2、如果的确不 ...

我理想的采样率是800khz,串口波特率设置的是230400。
加个队列的情况下,因为采样率太快的问题,会导致数据发生丢失吧
LcwSwust 发表于 2025-8-4 09:49 | 显示全部楼层
脏脏包 发表于 2025-8-4 09:20
我设置100khz采样率,采样10khz正弦波,串口波特率是230400,这样是没问题的。但是我预期想要设置采样率 ...

串口波特率230400,每秒传输的字节数约为230400/10约等于23K,按理来说你100kHz的采样率也不行的,自己算算。
dffzh 发表于 2025-8-4 11:06 | 显示全部楼层
脏脏包 发表于 2025-8-4 09:21
我理想的采样率是800khz,串口波特率设置的是230400。
加个队列的情况下,因为采样率太快的问题,会导致 ...

你现在的问题是800khz采样率是可以正常采集数据的,只是来不及通过串口发送到上位机,是这样吧?
如果没有其他更好的办法,你加上队列,能尽量保证不丢数据,只是串口传输不会那么及时。
powerantone 发表于 2025-8-6 16:36 | 显示全部楼层
提高波特率,用DMA传输。
stormwind123 发表于 2025-8-6 19:36 | 显示全部楼层
用两个缓冲区交替存储ADC数据和发送数据,实现采样与传输并行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部