Top | 戻る
2014年12月25日(木) 21:43
プログラムが怪しいということで確認すると、I/Oピンの初期化でヘマやってるのを発見。SPI2で使用されるのはポートBの12〜15番だが、初期化を行う際に誤ってポートAを指定していた。ポートAの12〜15番ピンには、内部でデバッグに使用されるものが含まれており、それを設定してしまったためにマイコンの状態がおかしくなっていたのだった。
ポートBを初期化するよう修正したプログラムを、ST−LINKで書き込む。すると、思った通りUSBの勝手な切断は発生しない。
CoIDE からも再び認識されるようになった。 結論として、Discovery の基板は別に壊れていなかった。かくして予備基板が在庫され、液晶ディスプレイも別電源不要で使えるようになった。数日を無駄にしたが、完全な無駄ではなかった。
だが、肝心のSPI2は使えないままである。クロック信号すら発生していないようだ。 SPIは非常に単純で、ソフト的に信号を上げ下げしている分には非常にトラブルが起きにくい。PICでもSTM32でも、すんなり動作している。それなのに、内蔵ペリフェラルでハード的に動作させようとしたとたん、動かない。というか、全部ソフトでやれば遅いだけで想定どおりに簡単に使えるものが、いざハードとなるとどうして複雑怪奇な設定をあれこれ行わねばならなくなるのだ? SPIぐらい、関数2つか3つ並べれば使えるようにしておけよ!
written by higashino [マルチローター] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4