STM32G0を使ってみる2 -I2Cを使ってみるていうかそれぐらいしか思いつかない-

本年度も後半に入ってしまいましたが今年最初に紹介したSTM32G0
もうちょっと使って見ようと思います。



さて…本来はこのような構成でI2Cデバイスを使う予定でしたが…
残念ながらリマップの関係上かなり難しいことが判明…オプションバイトを弄らず
自由に使えるのはたったの3ポートのみ!


しかもSTM32G031-Discovery互換ではI2CのSDAで使うPA12(6Pin)が
LEDに取られてしまっているのでお辛い…


そんなわけで折半でこのような回路構成にしてみました。LEDとI2CのSDAを
干渉させないようにわざわざ高速バッファを挟む本末転倒…だがそれがいい
SWCLK,SWDIO,nResetはいつでも使えるようしておきました。先人の方々も
I2C専用で動かすことを前提でこれ使ってる感じですね。

それとあまったPC14(1Pin)は1wireでもぶら下げるとしますか…



ピンの選定については今回は下記の方の記事を参考にしました。
ありがとうございます。

Crescent様
http://meerstern.seesaa.net/article/477348927.html
システム関連ピンのGPIO化に際する注意を詳しく解説されています。

caa45040様
https://qiita.com/caa45040/items/a6ca28ae4b1dfa5c489c
オプションバイトをいじりリスクを負ってたくさん製作されておられます


ねむいさんもS-5851A持っているのでせっかくだからまねさせてもらいます
液晶はもちろんドットマトリクスな中華I2C液晶です!
ROMが32Kbyteあるのでfontx2でankフォントくらいは表示できますね!
液晶については過去記事のこちらをご参照ください。
一時期aitendoで売ってたので持ってる方はまだいるかも!?




特にリマップとかは行わず、パワーオンリセット後のGPIOポートをそのまま
使用するので5PinがI2C2のSCL,6PinがI2C2のSDAとします。


また、S-5851AのアドレスはAD1=1,AD0=0として
0x94(7ビットアドレスだと0x4A)に。



あとはSTM32F03のプロジェクトからI2Cライブラリをサクっと移植し動作完了☆
すごいやっけつ感ですがあっけなくできてしまいました。さすが私

STM32G0のI2C周りはSTM32F3やF0系とほぼ同じレジスタ構成なのでややこしい
タイミングレジスタの設定値もタイミング値計算機で算出可能です。



STM32のHSIは16MHz,そこからSysClockの64MHzにします。
この設定で100kHzのI2Cクロックを生成する数値を代入します。


オシロスコープで実際の波形をキャプチャしたところです。きっかり100kHzは
出ませんがまぁだいたい近いですね。画像はSTTS751との通信(I2Cアドレス0x72、
7ビットアドレスでは0x39)です。
こんな感じでI2Cの解析にPicoscope大活躍ですわ
そうだね宣伝だね。



そんなわけで重い腰を上げでSTM32G0の続きやってみましたがあとから来た人に
どんどん先を越されてしまいましたがいつもの感じでやっていこうと思います。

そして…小さな巨人STM32G0で次動かすデバイスは…


こいつだ!
つづく!


おっとーその前に久々の新規プロジェクトになりますがこちらにアップロードして
おりますので自己責任でどうぞ。

Comments

Post a Comment








Go to top of page