OpenEdv-开源电子网

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

这是我编写的实现AD转换,通过串口发送到调试助手的程序,结果发现串口调试助手一秒只接收了2000个数据,数据太少了,什么问...

[复制链接]

13

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-5-23
在线时间
13 小时
发表于 2016-6-1 11:17:33 | 显示全部楼层 |阅读模式
3金钱

AQ6%JX}6LINBF9R~}GR[G@M.png

最佳答案

查看完整内容[请看2#楼]

8个数据位,起始位,停止位,估计没有校验位。不过因为不可能是连续发送不停,除以11是大体的留有余地估算。10000个可以说是满打满算连续通讯传送的极限了,\r\n2个字节,如果你的数据是2位数也要2个字节,也就是一次要4个字节,4*2000就是8000多了,加上不可能一直通讯,要留有时间相互处理数据,2000多个数据是正常的吧。 printf,传送数据不是直接的二进制而是转换成ANSI码,0xff一个字节的数据,用printf就要传“255”3 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-1 11:17:34 | 显示全部楼层
本帖最后由 憨厚诚实大叔 于 2016-6-1 17:23 编辑
梅小小 发表于 2016-6-1 14:19
115200,采样时钟12M,周期14个

8个数据位,起始位,停止位,估计没有校验位。不过因为不可能是连续发送不停,除以11是大体的留有余地估算。10000个可以说是满打满算连续通讯传送的极限了,\r\n2个字节,如果你的数据是2位数也要2个字节,也就是一次要4个字节,4*2000就是8000多了,加上不可能一直通讯,要留有时间相互处理数据,2000多个数据是正常的吧。

printf,传送数据不是直接的二进制而是转换成ANSI码,0xff一个字节的数据,用printf就要传“255”3个字节的ANSI码,我以前调试定时器的时候,就因为这个弄了半天
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-1 11:23:18 | 显示全部楼层
比特率多少?ADC采样时钟多少?采样周期多少?
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-6-1 13:47:43 | 显示全部楼层
比特率问题   本来速度就不快
回复

使用道具 举报

13

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-5-23
在线时间
13 小时
 楼主| 发表于 2016-6-1 14:19:20 | 显示全部楼层
憨厚诚实大叔 发表于 2016-6-1 11:23
比特率多少?ADC采样时钟多少?采样周期多少?

115200,采样时钟12M,周期14个
回复

使用道具 举报

13

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-5-23
在线时间
13 小时
 楼主| 发表于 2016-6-1 14:20:28 | 显示全部楼层
止天 发表于 2016-6-1 13:47
比特率问题   本来速度就不快

115200,速度还不够快么?如果不够快,那么STM32最快的比特率是多少?
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-6-1 14:26:03 | 显示全部楼层
自己算一下就好了
115200/11=10000字节

用满了10000字节   但是那是不可能的

stm32 103 串口1  4m是没有问题   串口2之后的2m多点

还有你可以用中断发送  可以节省时间

回复

使用道具 举报

13

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-5-23
在线时间
13 小时
 楼主| 发表于 2016-6-1 14:35:25 | 显示全部楼层
止天 发表于 2016-6-1 14:26
自己算一下就好了
115200/11=10000字节

为什么是除以11?你说的中断发送是什么意思?是把数据写到相应寄存器后用串口中断发送么?
回复

使用道具 举报

0

主题

183

帖子

0

精华

高级会员

Rank: 4

积分
684
金钱
684
注册时间
2016-1-27
在线时间
184 小时
发表于 2016-6-1 14:36:41 | 显示全部楼层
printf本身就很耗时
回复

使用道具 举报

10

主题

254

帖子

0

精华

高级会员

Rank: 4

积分
594
金钱
594
注册时间
2015-10-17
在线时间
145 小时
发表于 2016-6-1 14:57:17 | 显示全部楼层
不行的话就开启串口的DMA,这样还可以快一点
开着单片机翱翔在天空
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-6-1 16:30:35 | 显示全部楼层
梅小小 发表于 2016-6-1 14:35
为什么是除以11?你说的中断发送是什么意思?是把数据写到相应寄存器后用串口中断发送么?

一个字节八位  加上起始位、终止、校验等我记不清了,反正有。

反正都是大概值,一般都除11

中断发送可以节省 你写的 while((usart1->sr&0x40)==0)的时间。

你要是想改成printf 用串口中断的话,呵呵了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 02:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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