Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 1 month ago.
Nucleo F303K8で外部クロック(MSO又はクリスタル)を使用したい
Nucleo F303K8で電子工作をしています。 CANを500kbpsで使用しているので内部発振では少々不安があります。 出来れば外部発振器を使いたいのですが使えていません。どなたか解決法をご存じないでしょうか?
「NucleoはPF0にオンボードのST-LinkからのMSOを入力すれば自動でクロック源をHSIからHSEに変えてくれる」という記述を見ましたので、Nucleoのマニュアルに沿ってSB4,SB8をONにし、SB5,6,7,17をOFFにしましたが、HSEになっていないようです。 Mbedライブラリは151を使用しています。
下の記事を参考にHSIかHSEかの判断をしました。
https://os.mbed.com/questions/77039/Use-external-clock-signal-HSE-in-Nucleo-/
次にSW4STM32へエクスポートしてtargets.jsonを見てみると、F303K8はクロックソースのvalue値が
"value": "USE_PLL_HSI" となっていたので、HSI以外を選択できない設定なのかと思い
"value": "USE_PLL_HSE_EXTC|USE_PLL_HSE_XTAL|USE_PLL_HSI" 又は
"value": "USE_PLL_HSE_EXTC"
としても結果は変わりませんでした(念のためデバッガでRCCレジスタを見てみましたがHSIが有効、HSEが無効になっていました)
"HSE"でmbedライブラリ内を検索するとHSEを有効にするような記述は見つかるのですが、私にはそれらをどう使うか理解が及びませんでした。
ご存知の方いらっしゃいましたらよろしくお願いします。
1 Answer
7 years, 1 month ago.
Koyamaさん
私も気になり確認しました。
ご指摘の通り、現在のMbed(Rev.151)では、いくらハードウェアでPF1ピンに8MHzの外部クロックを供給しても、パワーオンリセットを含めMbedの通常シーケンスでは、HSIベースの64MHzのクロックにしかなりません。
ハードウェア修正部分は、SB6のショートをオープンとし、SB4をショートしています。
ST供給のHALに起因する不具合と思われます。
確かなことは判りませんが、リファレンスマニュアルを読む限りPLLの設定は一度Disableとして再設定しなければならないところを強引に変えようとして失敗しているようでした。
そこで、起動後、HSI=8MHzのPLL無のクロックとし、PLLを停止後にHALのルーチンを呼び出したところ、72MHzのHSEベースで動作しました。
チェックプログラムを作成してみましたので、試してみてください。
STMシリーズは、ボードは廉価で機能も充実して好きですが、ソフトウェア(HAL)の完成度が低く、困る時があります。
Import programcheck_SysClk_for_F303K8
Check program for STM32F303K8 System Clock
オシロスコープや周波数カウンタがあれば、PA8にMCOを出力しましたので、周波数変更が行われていることが確認できます。
後程、notebookにも経緯をまとめて置きたいと思っています。
この設定で、CAN通信が使えるといいですね。