前回までのあらすじ
FeliCa LinkとのI2C通信がうまくいかず、スレーブアドレス書き込み後にACKが返ってきていない。
待ち時間がどこか足りていないのではないかということで情報を集めていると「リトライするとよいのでは」ということで試し、書き込みができた。ただ、SDA="L"の時間を長くしてもうまくいかないことに対して納得がいっていない私であった。
チップを使う立場からすると、リトライするにせよ時間を長く取るにせよ、根拠がいる。
その根拠から外れた動作をする場合は「異常系」の処理を行うだけなのだが、その判断ができないのだ。
FeliCa Plugなんかは時間のことがきっちり書いてあったので使いやすかったのだけど、今回はうーん・・・。
まあ、そこは忘れよう。
今気にしているのは、チップがI2C通信を受け付けるようになるまでのやり方を、ドキュメント通りにやっているつもりなのにうまくいっていない、というところだ。
hiro99ma blog: [felica]なぜにFeliCa Linkのドキュメントには時間のことが書かれていないのだろう?
ここの仮説4で、SDA=Lにしてから~、と書いている箇所だ。
FeliCa Linkのチップが初期化完了した状態を「稼動状態」と呼ぶのだが、電源オフ状態からそこに至るまでには、
電源オフ→(VDD投入)→スタンバイ→(SDA=L)→初期化→(時間??)→稼動
となっていると私は仕様を読んだ。
(知りたかった時間というのは、初期化から稼動に至るまでの時間だ。)
SDA=Lを長くしてもダメで、リトライするとよかった。
そこだけ見ると、仕様書の記載が間違っているんじゃないか?と思ってしまうのだが、もう少し落ち着いてみよう。
本当に私はSDA=Lにできていたのだろうか?
ロジアナ上ではLに見えている。
見えているのだけれども、FeliCa Linkがその電圧をLと見ているかどうかは別の問題だ。
そこを調べるにはオシロスコープくらいしか思いつかない。
マルチメーター、特にうちにあるような安物だと無理そうな気がする(オシロもないけど)。
SDA=Lにできていないなら、リトライでうまくいくということの説明が付かないのだけど、スタートコンディションのためにLにしたのと、ストップなり異常検知などでLにするのは別なのかもしれない。
いきなりmbedベースの基板で試すには重たい内容だったか・・・。
まあ、嘆いても仕方ないので、どうやるとリトライせずにきれいにアクセスできるかを調べますかね。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。