2014年10月28日(火) 21:07
調べまくったおかげで、I2Cに関する知識がかなり増えた。
STM32F4の初期化も調査。
結果的に、ソフト側はもう改善しようがなさそうだと判明。I2C初期化から割り込み関連を削除してシンプルにし、各所のコードも再度チェック。しかし、実機で走らせると症状は全く同じ。
危惧した通り、マスターデバイス側には問題がない。あくまで、スレーブデバイスが無反応なのが問題なのだ。
こうなるともう、配線ミスしか考えられない。だとすれば、dsPIC に接続されていた際は問題なかったのだから、相当な凡ミスやってることになる。
そうなると、I2CやSTM32の信号レベルなどもっと立ち入った情報が欲しくなる。単純にSCLとSDAを逆接続してました、というレベルならまだいいのだが。
STM32のI/Oピンは、アナログ入力を除いた大半のピンに5V耐性がある。通常は3V動作のデバイスに5Vが入力されると、壊れる。しかし、STM32の場合は5Vが入っても大丈夫で、Hレベルとして認識される。これは便利だし、オープンドレイン出力で5V信号を送り出す場合など5V耐性がないと困る。ここをうっかりしていて、サーボパルス出力に割り当てた4本のピンのうち3本には5V耐性が無いと判明。PWM出力を利用しているため、好き勝手なピンに割り当てる訳にも行かず、I2C以外のところで問題点が発覚してしまった。
だが、更に確認すると、5V耐性とはいえそれに最初から頼るのはマズいと気付く。STM32は、電源電圧より高い電圧の入力に耐えられるような特殊な半導体として製造されているのではなさそう。つまり、電流に5ミリアンペア以内という制限があり、その範囲内で壊れないよう内部に保護回路が入っているだけっぽい。状況次第では壊れるし、定格以内で使用してもアナログ部分の精度に悪影響があると書いてある。
I/Oピンの割り当て問題もあるので、大人しくレベル変換IC使った方が良いと思われる。
こんな場合に真っ先に調べるのは秋月電子。案の定250円で基板が売られている。レベル変換ICを20ピンのDIPに変換したもので、電子工作で扱い易く、小型軽量。重量が気になる空モノにも採用する気になれる。8信号対応なので、受信器パルス入力4本とモーター制御サーボパルス出力の4本をまかなえる。これで、完全にレベル変換の後腐れを無くすのがベストだろう。
こういった頼り甲斐を重ねて来た実績があるから、秋月電子は人気なのだ。
東急ハンスもそうだが、「欲しいものが売っている」から成功している。ニーズを的確に掴んだ売り手は、こんな時代でも栄える。とても単純な話だ。
written by higashino [マルチローター] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4