2019年12月19日

STM32の内部CR発振器について

ここ2〜3年ですが、STマイクロのマイコン採用率が非常に高い(1年前)のですが、前から気になることがあります。

基本的には内部のCRクロック回路で動くのですが、たまにクロックの発振周波数ズレが起きたりしてUARTでの通信の文字化けが・・・


51747.jpg

一年前にも「STM32F303」で115.2kで通信実験をしたところ、頻繁に文字化けがでたので、内部CR発振器の出力をピンにだしてみると明らかにズレていました。その時のズレは周波数補正レジスタを調整してバケの一番すくないセンターに合わせて無事やり過ごせました。
今回調査では「L542」で、HSIクロックを使用した場合、補正できる範囲を超えてデータバケは解消せず。
調べてみると、定格の発振周波数に16MHz対して観測されたのは13.7MHzととんでもない周波数でした。

こればチップのバグなのか、それとも設定ツールのバグなのか・・・、未だに原因はわかりませんが、MSIクロックがまぁまぁ精度良いので、それをベースにPLLで目的周波数にあげて使用したらUARTの文字化けは解消。


また、MSIはRTCの32KHzベースのクロックがあるときは、自動補正できるという優れもので±0.25%の精度になります。

ほかにも「F446」を調べてみたところ、このチップにおいてはHSIの発振周波数は定格の16.0MHzを確認、残りの「L053」と「F031」も時間のあるときに調べてみようと思います。


因みにATTINY13の内蔵CR発振回路の周波数補正はとんでもなく幅広く±30%位まで調整できましたが、STもその半分で良いからくらい幅取れると嬉しいのですけどね。


SYM32L452_HSIクロックがおかしい0(CubeMxのHSIのCALがダメ).jpg

HSIをPLLでにいれてシステムい供給した設定




SYM32L452_HSIクロックがおかしい1.jpg

MSIをPLLいいれてシステムに供給、MSIはRTCクロックで自動補正もできるので安心。



SYM32L452_HSIクロックがおかしい2.jpg

Cubemxによるクロック補正の設定


SYM32L452_HSIクロックがおかしい3.jpg

内部クロックはピンにだして測定できるのでありがたい。(ポートの設定はVeryHigh必須)


追記:その後STM32L053についてもHSIを引っ張り出して周波数をし食べたら16.1MHzと補正できる範囲内であった。

posted by Soki at 00:00| Comment(0) | デバイス調査