MSP430F2013のDCO周波数を測定してみました。
MSP430はDCOという内部のオシレータを持っています。このマイコンは高速処理のときはDCOで作ったクロックで動作させます。もちろん外部に高速な水晶振動子を接続する方法もありますが、外部には1秒を作る32.768KHzの水晶をつけて、高速なクロックはDCOで作るのがMSP430らしい使い方だと思います。
MSP30の第二世代であるMSP430F2013には正確な周波数を発生するために16MHz,12MHz,8MHz,1MHzのそれぞれのDCOの設定値が情報メモリセグメントAの特定のアドレスに書き込まれていて、これをレジスタに入れるだけでOKです。
【例】
BCSCTL1 = CALBC1_16MHZ;
DCOCTL = CALDCO_16MHZ;
何個かMSP430があったのでどの程度の精度か見てみました。ただし、オシロスコープの測定機能を使って周波数を見たので、あまり正確ではないかもしれません。
カッコ内は基準周波数からのずれ
| 周波数/パッケージ | TSSOP | TSSOP | DIP |
| 16MHz | 15.73MHz(-1.6%) | 15.68MHz(-2.0%) | 15.88MHz(-0.8%) |
| 12MHz | 11.86MHz(-1.1%) | 11.86MHz(-1.1%) | 12.09MHz(+0.8%) |
| 8MHz | 7.757MHz(-3.0%) | 7.830MHz(-2.1%) | 7.886MHz(-1.4%) |
| 1MHz | 0.998MHz(-0.2%) | 0.999MHz(-0.1%) | 1.003MHz(+0.3%) |
3つしか測定していないので断定はできませんが、 16MHzと8MHzに関しては、少し遅い周波数で発振するような校正値となっているのではないかと推測されます。
MSP430F20xxは最大動作周波数が16MHzなので、万が一にもこれを超えるのは良くないという判断かと思います。また、TSSOPは三年ほど前に入手、DIPは最近入手なので校正方針が変わったかもしれない。
DCOは温度によって発振周波数が変化します。これも第一世代のMSP430と比べて大幅に改善されたようですが、熱くなると発振周波数が遅くなる傾向があります。
正確な周波数を得たい場合には水晶振動子をつけなくてはなりませんが、32.768Khzの水晶とタイマを使ってDCOを常時調整するという手もあります。これについてはいつか書くかもしれません。
- http://kkbecon.blog8.fc2.com/tb.php/12-59d1f439
トラックバック
コメントの投稿