打印
[STM32F0]

UART数据接受从常温到低温效率下降的问题(比较深入)

[复制链接]
961|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
飘落枫叶|  楼主 | 2015-10-20 16:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用030的USART提供modbus通信。内部8Mhz时钟,波特率9600,数据格式8N1,其余配置均使用默认模式。在发送和接受是打开并关闭TXEIE或RXNEIE。
问题:在温度-20到70度,100ms间隔通信100次,最大失败小于5次。低于-20度后,100ms间隔通信100次,失败高达80多次,结果令人困惑。
问题改善(没有完全解决,始终是一个隐患):修改配置,将OVER8置位,100ms间隔通信100次,失败次数降到10~20次。但是根据23.4.5节USART接受对时钟容忍度(误差)描述。
OVER8 = 0, ONEBIT = 0, 误差容忍度为3.33%, OVER8 = 1,误差容忍度为2%,明显降低了,但是结果效率却提高了,百思不得其解。
因此为了提高效率,OVER8 = 1,将 ONEBIT 置位,usart误差应该2%提高到3% .但是发现USART无法通信。啊,真是不明白,希望得到大家帮助。

主要问题:1、温度影响串口效率,这一点030的HSI提到了(25度是1%误差,低温下为5%),但是示波器看是接受时序对不上。
               2、关于23.4.5节USART接受对时钟容忍度,难以理解。
邮箱,daizhunsheng@163.com
沙发
gejigeji521| | 2015-10-20 21:32 | 只看该作者
温度太低真的会变,据说好多东西,都是25度最牛X,就像水一样,4度最牛X一样。

使用特权

评论回复
板凳
643757107| | 2015-10-20 22:41 | 只看该作者
太高温和太低温都不行,设计的最佳温度是室温。

使用特权

评论回复
地板
飘落枫叶|  楼主 | 2015-10-21 11:07 | 只看该作者
643757107 发表于 2015-10-20 22:41
太高温和太低温都不行,设计的最佳温度是室温。

不可能仅仅考虑常温下工作。比如高原地带昼夜温差大,赤道地带一直高温,黑龙江低温。同系列高六个不同温度工作范围,不可能啊。

就硬件和软件配置来说,这个问题就是一个缺陷。而030的ONEBIT和过采样率问题基本找不到资料和相关的讨论啊。

使用特权

评论回复
5
myxiaonia| | 2015-10-21 11:32 | 只看该作者
不如用自动波特率吧,波特率这东西只要两边都没意见就行了,那些约定波特率不过是通用而已

使用特权

评论回复
6
天灵灵地灵灵| | 2015-10-21 11:36 | 只看该作者
楼上的方法很高明,确实可以采用自动波特率,干嘛非要整数。

使用特权

评论回复
7
a20084666| | 2015-10-21 13:14 | 只看该作者
上代码,看看

使用特权

评论回复
8
643757107| | 2015-10-22 21:46 | 只看该作者
哈哈,那就要考虑哈尔滨的情况,和三大火炉的情况。

使用特权

评论回复
9
lefeng| | 2015-10-24 21:27 | 只看该作者
温度对串口效率影响有这么大吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

19

帖子

0

粉丝