t3486784401 发表于 2016-11-15 23:32:49

【吐槽】Arduino_m2560_r3 的陶振精度真心差

【背景】
最近把玩 CH375 模块,希望能用硬件访问 USB 底层稳定些,结果发现低速小容量的 AVR 很吃力。
随即换了块 m2560 的板子(Arduino_m2560_r3,CH340G改版),准备带一带看效果如何。


【发现】
资源分配的时候看了看原理图,发现 M2560 使用了形状略微诡异的晶振,如下所示。

#1. Arduino_m2560_r3 主板:


#2. 晶振特写,左侧黄圈为 CH340G 用 12M 晶振,右侧红圈为 M2560 用 16M 晶振:


#3. 原理图


#4. 走线图



好奇害死猫,我就这么很好奇为什么都是抄,还非要用两个版本的晶振?莫非这小晶振有很高精度?
按着原理图百度 CSTCE16M0V53-R0 了,结果是个 ceramic oscillator(陶振),而且只有 0.5% 精度!
×了狗了,这么好的主板(M2560不算低配),居然用 0.5% 的陶振!随便市场上买买的晶振都是 ppm 级别吧。

这么说还真得谢谢那些给 CH340 留了假贴片晶振的,至少精度不至于这么差。


【测试】
怀着忐忑的心情上了示波器,啥都别说了,AVR将死,Arduino补了几刀。
以下测试AVR使用外部晶振,Full-Swing-Crystal-Oscillator 熔丝配置。

#5. M2560 串口 200kbps,8n1 发送一字节:0x1E. 帧长度从 50us 拉伸至 50.44us:


#6. M2560 晶振位置直接测量,手动划了两个周期. 测频从 8M 掉到了 7.89M:


#7. CH340G 晶振位置直接测量,手动划了两个周期 6M 较为准确:


#8. M2560 晶振位置自动测频,平均值不说啥了(标称16M):


#9. CH340G 晶振位置自动测频,平均值真对得起 12.000:



【结论】
还能说啥,Arduino 从意呆利原版的,到国产山寨的,几乎清一色的用了陶振。
不光是 m2560 这个板子,用的最多的 Arduino_UNO 貌似也是这个陶振。
计时 0.5% 理论最好精度。实际上 1% 都是抬举。

从这个角度,所有用 Arduino 做时间基准的都是扯淡(频率计、软万年历、放音机)。
真心佩服做出来 3D 打印机的弟兄们,想来定位用了光栅,才不至于把基准放在这个陶振上。

感觉就是个态度,从设计到山寨,都只是一味的重复,连对产品最基本的务实情怀都没有。
可能意呆利设计师家亲戚是卖陶振的,然后就用这个了,然后就满世界抄,其实真心不咋地.....
如果说为啥有了 STM32 还在玩 AVR,无非就是情怀,就像电子管版本的HIFI。
这次 Arduino 补刀真是实在,想用 m2560 调试都不敢了,还是乖乖拿 f103 玩吧。

或者陶振有什么更好的作用,不知哪位大神能给科普下,晚生先谢过了.....

------------------------------------------------

我没有 Arduino 社区的账号,就在这里发发吐槽吧,也算是给大家提个醒。

wxws_wxws 发表于 2016-11-16 04:14:45

哈,楼主认真,因为生态圈里全是。玩软件。硬件基本靠抄呀。

apple_eat 发表于 2016-11-16 09:25:56

arduino重在开源分享
另外平台的一致性也做的挺好的,一句代码不改,程序就可以跑在N个板上也是不容易的.

donglaile 发表于 2016-11-16 13:39:49

stm32也可以做成arduino用啊

StephenCui 发表于 2016-11-16 14:23:41

这个晶振也用过,精度较差。

slotg 发表于 2016-11-16 17:02:40

楼主分析的很好,我这几天才买了 2560 板子。{:sweat:}

fsclub 发表于 2016-11-16 17:12:15

关Arduino毛线事啊,都是抄板人搞的。原版也是这?
另外测频率还是要频率计好点吧?

HZKJ 发表于 2016-11-16 21:57:42

我喜欢陶瓷振荡器,抗冲击比石英晶体强好多倍。我一直想找精度稍好些8m频率的

wajlh 发表于 2016-11-16 23:27:39

陶震便宜啊,村田搞出来的吧.

t3486784401 发表于 2016-11-17 00:15:20

wxws_wxws 发表于 2016-11-16 04:14
哈,楼主认真,因为生态圈里全是。玩软件。硬件基本靠抄呀。

硬件的确不好搞,自主的晶片还是少

t3486784401 发表于 2016-11-17 00:19:06

apple_eat 发表于 2016-11-16 09:25
arduino重在开源分享
另外平台的一致性也做的挺好的,一句代码不改,程序就可以跑在N个板上也是不容易的. ...

的确,C++封装了以后,可以很快上手,

底层就交给编译器和 BSP 包搞定

t3486784401 发表于 2016-11-17 00:20:47

donglaile 发表于 2016-11-16 13:39
stm32也可以做成arduino用啊

的确见过 stm32 版本的 arduino,不过不知道后续的官方支持如何了。

本来买 avr 版本的 arduino 就是当系统板玩玩,长久还是慢慢 arm

t3486784401 发表于 2016-11-17 00:29:10

StephenCui 发表于 2016-11-16 14:23
这个晶振也用过,精度较差。

首次遇见,不过既然有这么的东西,就有存在的道理,比如便宜、抗造之类。

只是这里实在看不出有何道理:

1. Arduino_m2560_r3 原版当中,MEGA16U2 就用了晶体版本的 16M 晶振,没道理因为成本、抗冲击在一块板上用两种晶振(连主频都一样)

2. m2560 的板子明显有很大的空间,理应也不存在放不下节省空间的问题

3. 比起 m2560 和 m16u2,这个晶振的成本不见得高到哪里去

分析来分析去,想不通除了“多试试不同晶振,看效果如何”之类的尝试

t3486784401 发表于 2016-11-17 00:30:33

slotg 发表于 2016-11-16 17:02
楼主分析的很好,我这几天才买了 2560 板子。

用用吧,记得 1% 的精度就好,串口 10bit 还是不会丢数的,我200kbps连续传大包(>100KB)也没啥事

只是不能搞时间基准了

panjun10 发表于 2016-11-17 00:37:37

只想问下有没有相同封装的晶振可以自己换上

t3486784401 发表于 2016-11-17 00:37:56

fsclub 发表于 2016-11-16 17:12
关Arduino毛线事啊,都是抄板人搞的。原版也是这?
另外测频率还是要频率计好点吧? ...

感谢大家来捧场啊!

的确我看了原版的设计,两个16M的晶振(一个给 m16u2,一个给 m2560)居然真的是两个版本,一个是陶振。
m16u2 的那个是标准的晶振,m2560 的是陶振,真心感觉有些不妥。

抄板的的确也是瞎整,要是能统一下晶振该多好,结果都是用了原版的陶振。
我在满 TB 就看着一家店的 Arduino_m2560 用了晶振版本的振荡器,不过 USB-B 口被改成 micro 了

频率计啊,手头就暂时摆着台示波器,就拿我板子上 12M 的晶振作基准了,和示波器互相比照下基准。
只是结果实在是有些惊讶,陶振居然在 10bit 的异步包中,就看到了明显的误差。

t3486784401 发表于 2016-11-17 00:42:21

HZKJ 发表于 2016-11-16 21:57
我喜欢陶瓷振荡器,抗冲击比石英晶体强好多倍。我一直想找精度稍好些8m频率的 ...

都是各有牺牲吧。

时间基准的话还是晶体的吧,之前做一个脉冲时序测试,板载时间基准就是带温度补偿的有源晶振,约 10ppm 的样子;

陶振之前没咋用过,应该是介于晶振和 RC 之间的折中方案,即有精度又有强度;

RC 就是最没 <节操> 的,专用于没啥要求只要会动......

t3486784401 发表于 2016-11-17 00:44:58

wajlh 发表于 2016-11-16 23:27
陶震便宜啊,村田搞出来的吧.

好像还真是的,这个 16M 陶振我搜了下,貌似源头都是日本的

t3486784401 发表于 2016-11-17 00:46:22

panjun10 发表于 2016-11-17 00:37
只想问下有没有相同封装的晶振可以自己换上

焊盘小到要用吹的,完全没有外露的裸铜,无限伤心中.....

nongxiaoming 发表于 2016-11-17 01:47:37

原版的晶振是村田原装的吧,这个本身陶瓷晶振的精度就不如石英晶振,加上你买的是仿照的版本,差点是理所当然的

ljy99731 发表于 2016-11-17 08:21:58

这个陶瓷晶振比普通的石英晶振还贵的,使用这个晶振导致精度差跟avr没有半毛钱关系,淘宝上很多用了石英晶振的

gzhuli 发表于 2016-11-17 08:48:12

陶振相比晶振还有一个很大的区别:启动时间。
做低功耗经常要启停外部时钟的,用陶振可以大大减少唤醒时间,估计原版设计看重的是这个。

t3486784401 发表于 2016-11-17 09:09:36

nongxiaoming 发表于 2016-11-17 01:47
原版的晶振是村田原装的吧,这个本身陶瓷晶振的精度就不如石英晶振,加上你买的是仿照的版本,差点是理所当 ...

总之一抄就彻底变味了

t3486784401 发表于 2016-11-17 09:11:11

ljy99731 发表于 2016-11-17 08:21
这个陶瓷晶振比普通的石英晶振还贵的,使用这个晶振导致精度差跟avr没有半毛钱关系,淘宝上很多用了石英晶 ...

m8、m328版的arduino倒还能找到石英晶振版本的,m2560就清一色全是陶振了,想换都没有

andy 发表于 2016-11-17 09:14:24

t3486784401 发表于 2016-11-17 09:09
总之一抄就彻底变味了

超简单,用DS3231RTC模块就OK了,做频率计超好。

t3486784401 发表于 2016-11-17 09:15:07

gzhuli 发表于 2016-11-17 08:48
陶振相比晶振还有一个很大的区别:启动时间。
做低功耗经常要启停外部时钟的,用陶振可以大大减少唤醒时间 ...

原来如此,受教了。

不过这板子强行给使用有些牵强,毕竟运放、m16u2都有使用,而且后者还是石英版的,只能说象征性的评估了陶振的作用

ljy99731 发表于 2016-11-17 09:15:38

t3486784401 发表于 2016-11-17 09:11
m8、m328版的arduino倒还能找到石英晶振版本的,m2560就清一色全是陶振了,想换都没有 ...

https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-767892258.9.Bqs95P&id=17972104174

t3486784401 发表于 2016-11-18 00:55:04

ljy99731 发表于 2016-11-17 09:15
https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-767892258.9.Bqs95P&id=17972104174

这个好,看来还要细找找

有没ch340版本双石英的呢?win8玩着不容易

t3486784401 发表于 2016-11-18 00:58:29

andy 发表于 2016-11-17 09:14
超简单,用DS3231RTC模块就OK了,做频率计超好。

真的要外挂时间基准的话,估计有源晶振也不错。只是板子本可以避免这么多一步的

gzhuli 发表于 2016-11-18 11:20:34

t3486784401 发表于 2016-11-17 09:15
原来如此,受教了。

不过这板子强行给使用有些牵强,毕竟运放、m16u2都有使用,而且后者还是石英版的, ...

因为USB的时钟精度要求陶振满足不了。
Arduino本来就是电子积木和快速评估用的,真要做产品都会重新画原理图做PCB,有啥牵不牵强的。

web110 发表于 2016-11-18 23:23:44

陶振早在汽车上用了,抗环境的能力强,精度不咋地

t3486784401 发表于 2016-11-21 18:31:15

gzhuli 发表于 2016-11-18 11:20
因为USB的时钟精度要求陶振满足不了。
Arduino本来就是电子积木和快速评估用的,真要做产品都会重新画原 ...

总之存在就有道理,想定制就得自己动手咯

t3486784401 发表于 2016-11-21 18:31:37

本帖最后由 t3486784401 于 2016-11-21 18:32 编辑

web110 发表于 2016-11-18 23:23
陶振早在汽车上用了,抗环境的能力强,精度不咋地

原来如此,看样子还是有它的好处的

我记得红外遥控器大多用 455K 的陶振,不过这个可能更多是考虑成本
页: [1]
查看完整版本: 【吐槽】Arduino_m2560_r3 的陶振精度真心差