AD2 / RTS | DTR制御 > IO0 | RESET の信号の測定


http://qiita.com/hotchpotch/items/8a6fe6b8b0026ac6218e
のAnalog Discoveryでの確認

動作確認
Analog Discovery 2 (以下AD2) : 電圧測定, 3.3V電圧出力(プルアップ用)
Raspberry Pi2 (以下Pi2) : RTS, DTR制御

Pi2側コード
http://qiita.com/7of9/items/55ea4bffc924f98aad27

RTS, DTR オープン

下図はRTS, DTRをGPIO制御しない状態での各電圧

  • 黄色: IO0
  • 水色: RESET

10kでプルアップしているので両方3.3Vになるのは問題ない。

RTS, DTR電圧

# RTS = either CH_PD or nRESET (both active low = chip in reset)
            # DTR = GPIO0 (active low = boot to flasher)
            self._port.setDTR(False)
            self._port.setRTS(True)
            time.sleep(0.05)
            self._port.setDTR(True)
            self._port.setRTS(False)
            time.sleep(0.05)
            self._port.setDTR(False)

上記に相当するpythonコードで制御したRTS,DTRの電圧。

  • 黄色: RTS
  • 水色: DTR

意図している通りの電圧変化になっている。

RTS, IO0電圧

  • 黄色: RTS
  • 水色: IO0

このあたりで予想とは違っている。IO0は通常Hでなく0.7V程度の電圧になっていて、そこから2.8V程度になる。

RTS, RESET電圧

  • 黄色: RTS
  • 水色: RESET

これも予想と違う。RESETが通常は0.7V程度になっていて、2.8Vになる。

IO0, RESET電圧

最終的にIO0, RESET電圧は以下の変化となった。

  • 黄色: IO0
  • 水色: RESET

動きとしては

  • RTS, DTRのGPIO制御開始時点?: IO0, RESETはLに落ちる (0.7V程度)
  • RTS=True,DTR=False: RESETがHになる
  • RTS=False,DTR=True: IO0がHになる
  • DTR=False: IO0がLになる

ブレッドボードの実装などまだどこか間違っているかもしれない。