[STM32F1] stm32f101通用定时器做计时出现较大误差

[复制链接]
1666|10
 楼主| llisong 发表于 2019-11-2 12:11 | 显示全部楼层 |阅读模式
不知不觉用stm32也十多年时间了,最近发现一个比较头疼的问题,看看各位同行有没有碰到过的,指点一二不胜感激:TIM1时钟频率36MHz,TIM1->PSC = 3;TIM1->ARR = 9000-1;产生中断时间1ms,36M / (4×9000)=1KHz,在中断程序进行毫秒累加,加到1000ms,进行时间加一秒,得到标准时间,最近测试人员反映,没有进行标准同步的时候,大约过了24小时,就会产生9-10秒的计时误差,慢了9-10秒钟,理论上定时器的分频以及产生中断,应该不会产生累积误差,24小时大约8万多秒,考虑到晶振误差以及pll的温漂,应该不会达到这么大的误差,这都超过100ppm了,测试了好几台,时间都是9秒左右,但是都不一样,希望不吝赐教
yklstudent 发表于 2019-11-2 12:59 | 显示全部楼层
真是大佬啊,ST都用了十多年了
香水城 发表于 2019-11-4 15:00 | 显示全部楼层
你现在是每1ms进一次中断。

系统里有没有别的中断?别的中断有无可能堵塞定时器计时中断?
ayb_ice 发表于 2019-11-5 14:26 | 显示全部楼层
本帖最后由 ayb_ice 于 2019-11-5 14:28 编辑

这个是正常的误差,
普通晶振就这水平
电子表一天几秒的误差都正常,
liaotian001 发表于 2019-11-5 19:09 | 显示全部楼层
TIM1->PSC = 3;TIM1->ARR = 9000-1;产生中断时间1ms
虽然不熟悉ST的Timer,但从逻辑上来看,出错的误差是慢110ppm, ~ 1/9000, 是不是count计算有误差导致的? TIM1->ARR = 8998。
9.5s/24/3600 = 1.099537E-4
1/9000 = 1.11111E-4
两者的误差非常接近,值得推敲一下。
1ms的中断,基本不会被其他中断打断,中断能跑1ms,基本不可能。所以不会被其他中断打断减少1ms的中断响应。恭喜你中奖了。


但是我觉得ST不会犯这么低级的错误, 好好检查一下晶振的Cload,晶振的谐振电容+PCB寄生电容,如果匹配不好的话,相差100ppm也是有可能的。
我怀疑---晶振的谐振电容+PCB寄生电容 与晶振的理想谐振电容不匹配引起的误差。
643757107 发表于 2019-11-6 15:36 | 显示全部楼层
有道理,是不是其他中断阻塞了这个定时器
643757107 发表于 2019-11-6 15:37 | 显示全部楼层
你现在测试的这些误差,是全部快了几秒,还是全部慢了几秒,还是有快几秒的有慢几秒的,这个问题要讲清楚。
643757107 发表于 2019-11-6 15:37 | 显示全部楼层
如果说,都是一致性的快了几秒,或者一致性的慢了几秒,好找问题。如果有快有慢那种就难搞了。
crystal1987 发表于 2019-11-6 16:16 | 显示全部楼层
stm32的RTC或TIM精准计时不准是周所众知的,所以想用STM32的时钟精准计时还是建议你放弃吧。实现RTC 校准的核心之一是库文件Stm321f0x_bkp.c中的void BKP_SetRTCCalibrationValue (uint8_t CalibrationValue) 函数。谈到RTC校准的相关参考文档包括AN2604.pdf,AN2821.pdf和AN2821.zip。这三个文档都可以从STM32官方网站下载。
按照AN2604.pdf描述的原理,RTC 的校准值应在0-127之间。可实现的校准误差对应为0-121ppm。相当于每30天跑快的秒数为0-314s。如果你觉得这个误差可以接受你继续往下做,确实可以提高计时精度,但是误差还是存在。我当时也做过;后来误差还是不能接受;然后换的DS1337和DS3231专门的计时芯片,DS3231时间误差很小,当时记录了30天吧,误差不超过2S(记不是很清,和这个数据差不多);有兴趣的话可以试试。
磨砂 发表于 2019-12-4 12:03 | 显示全部楼层
误差好大啊
香水城 发表于 2019-12-4 12:23 | 显示全部楼层
本帖最后由 香水城 于 2019-12-4 12:24 编辑
liaotian001 发表于 2019-11-5 19:09
TIM1->PSC = 3;TIM1->ARR = 9000-1;产生中断时间1ms
虽然不熟悉ST的Timer,但从逻辑上来看,出错的误差是 ...

因为优先级的问题被打断或被阻塞,不需要中大奖的。

当然,晶振及附件参数也值得注意。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

37

帖子

1

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