TOP
> 記事閲覧
I2C で使用したい
| 件名 | : Re: I2C で使用したい |
| 投稿日 | : 2019/07/16 10:13 |
| 投稿者 | : 管理人 |
| 参照先 | : |
そうですね。
I2Cのアドレス指定はミスしやすい部分です。
アドレスを8bit中の"上位"7bitに指定することを、ついつい忘れてしまいます。
I2Cのアドレス指定はミスしやすい部分です。
アドレスを8bit中の"上位"7bitに指定することを、ついつい忘れてしまいます。
| 件名 | : Re: I2C で使用したい |
| 投稿日 | : 2019/07/03 15:20 |
| 投稿者 | : お気楽スケーター |
| 参照先 | : |
すみません、誤報報告です。
データシートはすべて「正しい」です。
コード上のアドレス定義が (0x2E >> 1) になっていました。
「<<」ですよね...
HAL ライブラリのアドレス指定が 1ビット左シフトしたものを必要としていたため。
紛らわしい...
大騒ぎを始めるとなぜか解決してしまう。
マーフィーの法則の典型でしたねw
前のスレッドとともに、削除で構いません。
お騒がせしました。
データシートはすべて「正しい」です。
コード上のアドレス定義が (0x2E >> 1) になっていました。
「<<」ですよね...
HAL ライブラリのアドレス指定が 1ビット左シフトしたものを必要としていたため。
紛らわしい...
大騒ぎを始めるとなぜか解決してしまう。
マーフィーの法則の典型でしたねw
前のスレッドとともに、削除で構いません。
お騒がせしました。

I2C で制御したいと考えております。
なお、UART 通信では、うまく発声できました。
--
オシロで見たところ、ATP3012 が I2C の ACK を返してくれません。
●アドレス
アドレスは 0x2E でデフォルトから変えていないつもりです。
オシロの波形を見ても、アドレスや R/W ビットの解析結果は正しいため、マイコンの出力は正しいようです。
MCU は STM32F0 シリーズ 3.3V 駆動です。
●SMOD 端子
データシートでは、
SMOD0=LOW、SMOD1=HIGH で I2C に切り替わるようなので、
SMOD0 を GND に直結し、SMOD1 をオープンにしてみましたが、ACK は返りません。
また、ネット上で見つけた情報では、SMOD0 と SMOD1 が入れ替わっているようです。
→https://sanuki-tech.net/micro-bit/make/talking-microbit/
「表3-5-8-3.通信モード」
SMOD1 を GND へ直結し、SMOD0をオープンにしても、ACK は返りませんでした。
●配線
プルアップ抵抗に少し大きめの 10k を使用しておりますが、波形を見る限り通信は通るはずです。
RESET 端子は、オープンのままです。
●タイミング
電源投入から I2C 通信開始までの時間が短すぎることも考えましたが、
main 関数の先頭からステップトレースの手順を含んでいるので、
実質、数秒の時間を挟んでいますが、ダメなようです。
なお UART の場合は、デバッガを使用せずコールドスタートでも発声できています。
--
他に何か、思い当たる間違いはありますか?
よろしくお願いいたします。