AquesTalk BBS
TOP > 記事閲覧
fld_nor.gif I2C で使用したい
投稿日 : 2019/07/03 14:46
投稿者 お気楽スケーター
参照先
秋月電子で購入した ATP3012R5-PU を使用して、
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 の場合は、デバッガを使用せずコールドスタートでも発声できています。

--

他に何か、思い当たる間違いはありますか?
よろしくお願いいたします。
編集 編集
件名 Re: I2C で使用したい
投稿日 : 2019/07/16 10:13
投稿者 管理人
参照先
そうですね。
I2Cのアドレス指定はミスしやすい部分です。
アドレスを8bit中の"上位"7bitに指定することを、ついつい忘れてしまいます。
編集 編集
件名 Re: I2C で使用したい
投稿日 : 2019/07/03 15:20
投稿者 お気楽スケーター
参照先
すみません、誤報報告です。

データシートはすべて「正しい」です。

コード上のアドレス定義が (0x2E >> 1) になっていました。
「<<」ですよね...
HAL ライブラリのアドレス指定が 1ビット左シフトしたものを必要としていたため。
紛らわしい...

大騒ぎを始めるとなぜか解決してしまう。
マーフィーの法則の典型でしたねw
前のスレッドとともに、削除で構いません。
お騒がせしました。
編集 編集
件名 Re: I2C で使用したい
投稿日 : 2019/07/03 15:00
投稿者 お気楽スケーター
参照先
お騒がせしました。
自己解決です。

アドレスが間違っていたようです。

0x2E(7bit) ... 0x5C(W), 0x5D(R)

ではなく、

0x17(7bit) ... 0x2E(W), 0x2F(R)

が正しいようですね。

0x2E の LSB がゼロだったので、もしやと思いきや、ビンゴでした。
SMODピンに関しては、データシートが正しく、ネット情報が間違っていることが確認できました。

お騒がせしました。
編集 編集
件名 スレッドをトップへソート
名前
URL
パスワード (自分の記事を再編集時に使用)
画像認証 (右画像の数字を入力) 投稿キー
コメント sml_cool.gifsml_sml.gifsml_yawn.gifsml_q.gifsml_big.gifsml_shm.gifsml_wink.gifsml_cry.gifsml_roll.gifsml_bonk.gif

- WEB PATIO -