stm32CubeMX で FSMCによるFPGAアクセスでトラブル

stm32f407IGT6を搭載したモーターコントロールボードでSTM32F4xx_StdPeriph_Driverライブラリを使って作っていたプログラムをバージョンアップしてSTM32Cube FW_F4 V1.16.0に対応した時にFPGAへのインターフェースで悩んだ件。

ボードはFSMCのSRAM較正でFPGAにアクセスしています。
以前のライブラリを使ったプログラムではサンプルプログラムを参考にした初期化で簡単に動いたのでSTM32CubeMXを使えばもっと簡単に出来ると思っていました。

しかしFPGAからの読み出しは動作するものの書き込みが出来ない不具合が発生し原因がどうしてもわからず、レジスタの内容をダンプして比較してみたり色々悩んで3日間ほど回り道をしてしまいました。

FSMCの設定のせいだと思い込んでいたのですが、結局判ったのはstm32f407のMCO出力端子からクロックが供給されていないことがトラブルの原因でした。

勿論端子からMCOを出力する設定は出来ていましたがGPIOの設定で出力端子の出力速度がLowになっていたため50MHzのクロックを出力すると殆どHiレベルのままになっていました。

STM32F4xx_StdPeriph_Driverライブラリを使ったプログラムでは初期化コードを自分で書いていくスタイルなのでこのような見落としは少なかったのですが、STM32CubeMXのように初期化コードが自動的に生成されてしまうとこのようなトラブルが時々発生します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)