打印
[STM8]

关于STM8的内部RC精度问题

[复制链接]
23388|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lzymcu|  楼主 | 2012-12-6 18:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最近做的一批板子,客户反映有部分容易受干扰,拿回来分析发现这些问题机的晶振幅度都很小,自己200mV左右,正常是1V左右。由于产品已经出货到客户手中,很难排查那些是否有晶振问题,想通过刷软件改成内部RC,又担心会因为精度问题影响串口通信,如果误差超过2%串口通讯可能就会有问题了,STM8的内部RC精度到底有多高呢?温漂有多大呢?不知道有没有哪位大侠有类似研究。。。
查了下datasheet,Trimmed by the CLK_HSITRIMR register for given VDD and TA,这里给出的数据是通过对CLK_HSITRIMR 的校正精度可以达到1%,但是具体怎么校正就不清楚了,看了下函数库
void

貌似只有这个,但是CLK_HSITrimValue_TypeDef 只有7个值可选择,那是怎么来校正的呢?我的VDD是稳定的5V,如果算环境温度是5度--50度的话,不知道这个误差会有多少了

为此我拿了三块板来做实验测试内部RC精度,用CCO输出FCPU/64,Fcpu=Fmaster/2,也就是Fcco=Fmaster/128
将三块板子放进冰箱冰冻半个小时,拿出来IC内部温度应该接近0度了,测出CCO频率,再用热风枪把IC吹到很热,应该接近80度了,测出CCO频率,得出的数据如下:
第一块:0°=124.6K*128=15.948M,80°=124.5K*128=15.936M
第二块:0°=125.3K*128=16.038M,80°=125.2K*128=16.0256M
第三块:0°=125.6K*128=16.0768M,80°=125.7K*128=16.0896M
从这个数据来看,STM8的内部RC温漂已经小于1%了,而每一颗IC的误差也基本在1%以内,STM8真的有那么神奇吗?
由于条件有限,只能做一些简陋的测试,不知道这样测试是否正确,请高手指点!!我只想知道STM8的内部RC到底能达到一个什么样的精度

沙发
lzymcu|  楼主 | 2012-12-6 18:56 | 只看该作者
我晕啊,从库里面copy过去怎么跑出那么多表情来了

使用特权

评论回复
板凳
Regsen| | 2012-12-6 22:21 | 只看该作者
"内部晶体振荡器精度即使经过校准仍然比外部晶体振荡器或者陶瓷谐振器低"这个是原话。不知道在哪个资料上看到说内部时钟误差在10%,现在一时找不见了。呵呵

使用特权

评论回复
地板
明月小厨| | 2012-12-6 23:25 | 只看该作者
内部RC的精度一般都不行,
象AVR是下载程序时顺便测时钟频率,然后自动生成一个校正值,固化到芯片里去的;
NXP的LPC9XX的内部时钟就很离谱了,误差在10%;
STM8的内部时钟在了厂时已经校正过,精度(+/-)1%;
如果需要进一步校正,系统提供了一个寄存器,用户可以设置它,上下再浮动0.5%;

对时序有严格要求的地方,我一般不用内部RC时钟,烦人.

使用特权

评论回复
5
明月小厨| | 2012-12-6 23:27 | 只看该作者
和温度有关,和电压有关,和内部电源的功耗(IDD)有关;

使用特权

评论回复
6
明月小厨| | 2012-12-6 23:30 | 只看该作者
不是有一种自适应波特率的方法吗?把最大最小测出来,再折中一下;

使用特权

评论回复
7
lzymcu|  楼主 | 2012-12-7 09:39 | 只看该作者
但是用的方法测,内部RC温漂已经很小了,这点让我很惊讶,换成其他IC,热风枪一吹,输出波形马上就会有明显的变化

使用特权

评论回复
8
lzymcu|  楼主 | 2012-12-7 09:46 | 只看该作者
明月小厨 发表于 2012-12-6 23:25
内部RC的精度一般都不行,
象AVR是下载程序时顺便测时钟频率,然后自动生成一个校正值,固化到芯片里去的;
NXP ...

当然我换成内部RC主要是这一批板子的晶振出了问题,有些晶振振荡幅度太小,机器是好非好,遇点干扰就重启了,这种问题很难检测出来啊,我想刷成内部RC是个比较好的解决方法,注意是担心串口,其他的就算误差大一点也没关系

使用特权

评论回复
9
金融小数| | 2012-12-7 12:12 | 只看该作者
楼主,这已经很不错了,你去看看STM8L,对外号称内部的RC是16MHz,如果你相信了,就悲催了!
认真阅读过STM8L的数据手册,就会发现所谓的16MHz是Vcc为3.0V的时候,如果工作电压变成了3.3V,RC就不是16Mhz了,误差会达到3%以上了。

悲催的选择啊!
:@

使用特权

评论回复
10
IJK| | 2012-12-7 12:21 | 只看该作者
LZ的测量说明ST出厂前校准过内部RC,同时说明校准到1%以内是真的。

使用特权

评论回复
11
lzymcu|  楼主 | 2012-12-7 14:07 | 只看该作者
金融小数 发表于 2012-12-7 12:12
楼主,这已经很不错了,你去看看STM8L,对外号称内部的RC是16MHz,如果你相信了,就悲催了!
认真阅读过STM ...

我的是稳定的5V,所以电压误差可以不考虑

使用特权

评论回复
12
lzymcu|  楼主 | 2012-12-7 14:09 | 只看该作者
IJK 发表于 2012-12-7 12:21
LZ的测量说明ST出厂前校准过内部RC,同时说明校准到1%以内是真的。

我就是想确认下STM8的内部RC是不是真的有这么稳定,温漂很小啊,这点很赞:victory:

使用特权

评论回复
评论
handlike 2013-12-9 13:52 回复TA
我也正在研究内部RC震荡,楼主能不能做一下-10度和-20度的情况呀。 低温应该是个考验。 
13
lzymcu|  楼主 | 2012-12-7 14:16 | 只看该作者
金融小数 发表于 2012-12-7 12:12
楼主,这已经很不错了,你去看看STM8L,对外号称内部的RC是16MHz,如果你相信了,就悲催了!
认真阅读过STM ...

对于内部RC你不能对他抱太大的期望,精度要求不高的话可以用他,3%也不错了,你用飞凌的试一下,温漂都有30%了,那不是更悲催了:lol

使用特权

评论回复
14
明月小厨| | 2012-12-7 15:45 | 只看该作者
我用AVR时感觉内部时钟尚可,后用LPC9XX时也用内部RC,事后发现时钟不准,偏差10%以上;再查手册核对,竟然没有此方面的数据,估计是太次了,不好意思说的原因;

使用特权

评论回复
15
hawksabre| | 2012-12-7 18:18 | 只看该作者
建议使用外部晶振   这种方法成本并没有上升多少   但是可靠性提高了很多   建议使用外部晶振   呵呵      单片机内部的RC电路   一般情况下   我是不用的   真的不靠谱   呵呵

使用特权

评论回复
16
sun1238898| | 2013-2-22 09:53 | 只看该作者
明月小厨 发表于 2012-12-6 23:25
内部RC的精度一般都不行,
象AVR是下载程序时顺便测时钟频率,然后自动生成一个校正值,固化到芯片里去的;
NXP ...

内部校准寄存器,在哪了呢。请问如何设置的呢?

使用特权

评论回复
17
smartmcu| | 2013-2-22 11:09 | 只看该作者
找不同的渠道(万能的淘宝)订购各种批次的同型号片片,最好大于30片,然后来做类似的试验,收集相应数据,用统计工具算算,就很科学了。

使用特权

评论回复
18
奔牛滚滚| | 2013-2-22 11:51 | 只看该作者
外部晶振的缺点就是太费pcb空间了.头疼中.以前我是用内部RC的

使用特权

评论回复
19
sun1238898| | 2013-6-7 16:54 | 只看该作者
校准看来研究的人不多呀,就是因为有点难呀!

使用特权

评论回复
20
trumpxp| | 2013-6-7 18:58 | 只看该作者
主要还是看个人的需求吧  这个  是个人的感觉  顶一个

使用特权

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

本版积分规则

个人签名:移动电源DIY   DIY移动电源  http://nongminkeji.taobao.com/

1

主题

96

帖子

1

粉丝