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でしか使わないですし!



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