OpenEdv-开源电子网

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

关于STM32串口空闲中断的问题?这是芯片的bug吗?求解

[复制链接]

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-5-26
在线时间
10 小时
发表于 2017-12-18 16:30:44 | 显示全部楼层 |阅读模式
10金钱
用台式电脑COM口(9针公头)连接F429传输文件(1M以上的文件)会不间断触发串口空闲中断,而采用USB转串口线传输文件却是等文件发完才触发一次串口空闲中断。程序很简单,有需要的可以下载进行验证。
程序是根据原子哥的串口例程改的,串口1作为调试串口,串口2作为接收空闲中断测试口。
用台式电脑COM口(9针公头)连接F429传输文件会不间断触发串口空闲中断:现象是当往串口2发文件时,串口1不间断打印串口2空闲中断的UsartReceive_IDLE !!
采用USB转串口线传输文件却是等文件发完才触发一次串口空闲中断:重复上面的操作,当串口2文件传输完成,等文件发送完毕,串口1才打印一句UsartReceive_IDLE !!
用的串口工具“XCOM”;
其中用到的线是
QQ图片20171218162326.png


DB9九针串口线(公对母) QQ截图20171218162354.jpg
串口转232串口
测试串口空闲中断_F4平台.rar (7.05 MB, 下载次数: 191)

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

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-5-26
在线时间
10 小时
 楼主| 发表于 2017-12-18 16:36:17 | 显示全部楼层
@正点原子 求原子的哥团队关注下这个问题,我用示波器观察了在接收文件数据的时候(rx-gnd)两种线的输出波形,9帧的串口线峰值要高于USB串口线峰值,但好像是在RS232电平范围内。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-18 17:46:34 | 显示全部楼层
空闲中断适合按贞来传输. 文件传输如果没有走协议如XMODE等协议.可能会出现 触发空闲中断吧.这个时候要判断一下接收长度..长度不对时.应该还没有接收完成.
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-5-26
在线时间
10 小时
 楼主| 发表于 2017-12-18 17:51:40 | 显示全部楼层
操作系统 发表于 2017-12-18 17:46
空闲中断适合按贞来传输. 文件传输如果没有走协议如XMODE等协议.可能会出现 触发空闲中断吧.这个时候要判断 ...

那为什么用同样的测试方式,用电脑的COM口传文件和USB转串口线,现象是不一样的呢?
感觉跟协议没多大关系。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-18 17:53:14 | 显示全部楼层
本帖最后由 操作系统 于 2017-12-18 17:55 编辑

USB速度比较快的原因吧,缓冲区大小..看有没有关系.
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-5-26
在线时间
10 小时
 楼主| 发表于 2017-12-18 18:09:08 | 显示全部楼层
操作系统 发表于 2017-12-18 17:53
USB速度比较快的原因吧,缓冲区大小..看有没有关系.

我还做了同样一个实验,再找一个单片机进行发送数据,同样类同于发文件的原理,用9针串口线(母头——母头)接入上面说提到的另外一台测试的设备(接收),现象是跟USB转串口线的现象一样。所以排除USB原因,而且你所说的USB的速度,最终还是要取决于波特率。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-18 18:21:05 | 显示全部楼层
USB速度和波特率 没有关系了.也就是说,USB转TTL串口的,波特率可以任意设置. 台式电脑本身带的串口只是能9600,或者其倍数.
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-5-26
在线时间
10 小时
 楼主| 发表于 2017-12-18 20:48:55 | 显示全部楼层
操作系统 发表于 2017-12-18 18:21
USB速度和波特率 没有关系了.也就是说,USB转TTL串口的,波特率可以任意设置. 台式电脑本身带的串口只是能960 ...

重新测试了一下,台式电脑传文件采用波特率9600,57600,115200,发现9600波特率现象跟USB转串口现象一样,不过57600和115200会有不间断触发串口空闲中断现象。
还有USB转串口波特率为57600和115200传文件都不会出现像电脑串口出来的现象。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-12-18 23:57:09 | 显示全部楼层
不玩恒心 发表于 2017-12-18 20:48
重新测试了一下,台式电脑传文件采用波特率9600,57600,115200,发现9600波特率现象跟USB转串口现象一 ...

ST的串口空闲中断设计的比较死,也就是只有一个字符的空隙,就认为是空闲了,这种在RS232传输的时候,可能信号延迟,就导致了这个问题。

你可以试试,115200,传输数据,不用空闲中断,看看是否有丢失,如果没有丢失,说明不是串口本身的问题,而是传输的延时问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-19 08:41:12 | 显示全部楼层
不玩恒心 发表于 2017-12-18 20:48
重新测试了一下,台式电脑传文件采用波特率9600,57600,115200,发现9600波特率现象跟USB转串口现象一 ...

楼主自己做一个2毫秒空闲中断出来(模拟出来)就可以完成这个任务了.
不使用原厂本身的空闲中断.另外,使用空闲中断,最好使用贞传输模式.
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-5-26
在线时间
10 小时
 楼主| 发表于 2017-12-19 09:21:18 | 显示全部楼层
正点原子 发表于 2017-12-18 23:57
ST的串口空闲中断设计的比较死,也就是只有一个字符的空隙,就认为是空闲了,这种在RS232传输的时候,可 ...

原子大大说得比较有道理,信号延迟具体的原因是什么导致的,就想分析是硬件原因还是串口线的原因还是台式电脑自带COM自身的原因,很想分析出是什么原因。
115200传输数据用空闲中断也是没问题的,就是传输文件会有问题,传输文件不是一开始传输就有问题的,而是传着传着,就会频繁触发空闲中断。
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-5-26
在线时间
10 小时
 楼主| 发表于 2017-12-19 09:24:29 | 显示全部楼层
操作系统 发表于 2017-12-19 08:41
楼主自己做一个2毫秒空闲中断出来(模拟出来)就可以完成这个任务了.
不使用原厂本身的空闲中断.另外,使用 ...

已经想过用定时器的方式替代空闲中断了,但是这个定时时间不好定,因为这个值跟波特率有关,如果定时的时间过短,那效果是跟空闲中断的效果一样,如果定时过长,传输数据就会出现延时很大。所以定时器这种方式只能说是备选方案,但还是想解决上面提到的问题
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-19 13:22:48 | 显示全部楼层
加油,希望你能从正面解决.到时候,发个贴,告诉大家一下.
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-1-8
在线时间
8 小时
发表于 2019-3-7 16:43:32 | 显示全部楼层
楼主解决没有,我用HAL库使用空闲中断,也出现了一模一样的问题,波特在115200的时候,没有出现收不完的情况,在波特为9600的时候,只能收前面一部分,始终收不完。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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