LoginSignup
0
1

More than 5 years have passed since last update.

I2C > 中途半端な電圧(intermediate level)になる症状 > SDAの方向設定の問題かもしれない

Last updated at Posted at 2017-03-08
動作環境
MSP430
Tektronix TDS 2024C (200 MHz, 2GS/s)
とあるI2Cセンサ

とあるI2Cセンサからデータを読み出すコードを実装中。
I2Cの処理はソフトウェアで実装する。

プロトコルは以下。

  • start conditionを生成する
  • 7bitのslave addressを送信
  • ACKを受信
  • 8bitのデータを受信
  • ACKを送信 (続きのデータ読取があるという意味)
  • 8bitのデータを受信
  • NAKを送信 (続きのデータ読取がないという意味)
  • stop conditionを生成する

本来、Low/Highが0または3.3Vとなるはずであるが、中途半端な電圧(2Vなど)が出る状況が続いた。

Raspberry Piで同じI2Cセンサを扱ってSCK, SDAの波形を確認し、それを再現するMSP430での動作を実装し、ほぼ動くようになった。

そこで分かったことは、SDAの入出力方向の切替タイミングをあやまると、中途半端な電圧になるということ

intermediate levelで検索して以下を見つけた。

It's a familiar problem when the master drives pins hi and lo instead of Hiz and lo.

センサとマスター(MSP430)とで電圧のhigh,lowの引っ張り合いになり、中途半端なレベルになっていたという感じがする。
それは、適切なタイミングで入出力方向を切り替えることで、回避することができた。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1