最近做的一批板子,客户反映有部分容易受干扰,拿回来分析发现这些问题机的晶振幅度都很小,自己200mV左右,正常是1V左右。由于产品已经出货到客户手中,很难排查那些是否有晶振问题,想通过刷软件改成内部RC,又担心会因为精度问题影响串口通信,如果误差超过2%串口通讯可能就会有问题了,STM8的内部RC精度到底有多高呢?温漂有多大呢?不知道有没有哪位大侠有类似研究。。。
查了下datasheet,Trimmed by the CLK_HSITRIMR register for given VDD and TA,这里给出的数据是通过对CLK_HSITRIMR 的校正精度可以达到1%,但是具体怎么校正就不清楚了,看了下函数库
貌似只有这个,但是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到底能达到一个什么样的精度
|