STM32F0版Nucleo(Nucleo F030R8)を使ってドットマトリクスI2C液晶を動かすその2

かなり間が開いてしまいましたがねむいさんが膝の治療をしてるうちに
世間はまた大きく変わり、秋月さんからついにF4版Nucleoが発売される
運びになりました
。ねむいさんの狙いはF073系のボードなので手元の
ボードを消化しつつ様子見です。

さて、今回の記事は前回の続きです。以前はF0版Nucleoを使って
GPIOによるソフトウエアI2C制御にて某I2C液晶を動かし茶を濁していました。
が、今回はSTM32F0のハードウエアI2C機能を使用して同じことを行います。

しかしながら前回述べたとおりF0,F3系の物はI2Cモジュールの世代が進んでいて
以前と同じソフトウエアは利用できなくなっています。大きな違いはスタート/
ストップコンディションが自動で発行できるようになったこと、SDA,SCLに
アナログ+デジタルフィルタが追加されたことそしてSCLの周波数が直感的に
設定できなくなったことです。
SCLのクロック設定はSTのサイトから落とせるI2C_Timing_Configuration
なる物を使用して得られた謎の16進数をtimingsレジスタに書き込まないと
いけなくなりました。余計なことするなー!

とはいえ一度設定すると後から変えるような場所ではないですから…まあ
許容できる範囲だと私は思います。どうせ潰しが効く100kHzでしか
使わないですし!

20230905追:

STM32F0~H5まで使える汎用のI2C計算作りました!
20230905追:



F1/F4系のソフトとあわせるために結構苦労しましたが最終的にうまく動く
組み合わせを見つけて無事F0系でもハードウエアI2Cをしようできるように
なりました♥(写真ではハード/ソフトの見分けはつきませんが・・・)

おきぱのI2Cドットマトリクス液晶動作サンプルはすでに
差し替えてあります。実は4月頭にすでにハードウエアI2C版を作りこんでました。
もちろん液晶だけではなく前回動作させたI2C温度計もばっちり動きます♥


ちなみに私のサンプルを見て変なことやってるのに気づいた人も居ると思います。
わざとドットマトリクス液晶とI2C温度計ほかI2CデバイスのHALの部分を分けて
います。こんなことやった理由は今回使用したI2C接続の液晶以外にSPI接続の
ドットマトリクス液晶を接続せしめることを見据えているためです。TFT-LCDでは
すでに実践している手法ですがこちらも次回以降に紹介して行く予定です。



ついでの話ですがOpenOCDもついにV0.8.0が正式にリリースとなりました!
公式のページには新たに追加された主な機能の紹介があります。その中で私も
フラッシュドライバ周りでいくつか貢献しました。下の画像で黄色で
強調している箇所が私が手がけた部分になります♥

特にKinetis系のサポートは今後のFreeScale公式のツールにもとりこまれる
程の影響力でねむいさんも顔のパーツを真ん中に寄せて地獄のミサワみたいに
得意げになりたい・・・ところ で す が !上の画像に赤で注釈書いて
あるように、以前ねむいさんが実装したNuvotonのCortex-M0向けのフラッシュ
ドライバがtfreakリンサンの勘違いにより無関係のNUC910系のサポートと記されて
しまい、V0.9.0リリースに向けて早くも釈明と大変更のプランを練っている
次第でございますorz
これ以前からずっと言及してきましたがマジでどうしましょうね・・・
幸いにもOpenOCDのNuvotonドライバ自身が全世界探しても私しか使ってない
状態なのでまだ被害が一切出てないのが救いですが(呑気)



あ、すみません最後までブログ書いてて気づきましたがNucleoの話に戻りますが
同ボード上に搭載されているST-Link/V2-1用のファームウェアが
更新されています
。デバッガとVCP同時使用やそのほかの安定性がかなり
改善されていますので必ず更新してください。以前のSTLink/V2系の
ファームアップも同じアップデータで可能です。

Go to top of page