SDmicroカード
stm32モジュールにつないだTFTに色々表示させようと思ったのだが、表示させるデータが無い。データはSDmicroカードかXBee経由で持ってくるつもりだったので、とりあえずSDmicroカードを読めるようにする。
SDカードの読み出しはstm32f1xxの基板でchanさんのFatFSを動かしたことがある。stm32f4xxでも同じようなものだろうと、とりあえずソースをコピーし適当に修正してコンパイル&リンクして書き込む。
どうにも原因がわからないので、ネットで情報を収集。ねむいさんのぶろぐでSTM32F4シリーズでSDIOドライバを実装していて、コードも公開されているのを発見。早速ダウンロードし、読ませてもらう。
で、まず気がついたのが、SDIOの端子(PC8~PC12,PD2)はGPIOx_AFRHとかを設定しSDIO用にするわけだけど、GPIOx_OSPEEDRで100MHzとかの設定もされている。SDIO用の設定がされれば、ドライブ能力は必要に応じて自動で設定されると思っていたのだが、違う?試しに同じように設定を行なってみると、SDカード読み出し時のエラーが無くなった。設定が必要だったのか。
でもまだFatFSが動かない。SDカードから1ブロック(512バイト)読み込もうとしても最後の6バイトぐらいが読み込まれていない。理由がわからないので、再度ねむいさんのプログラムを読むと、DMAのFIFOの設定が足りないことが判明。追加するとFatFSが無事動作、SDカードの内容を読み込むことができた。ねむいさんのブログを読むと、chanさん御謹製のファイラーを動かしているとある。chanさんのおまけのソフトウェアには見当たらないので、どこにあるのかと思っていたのだが、FatFSのサンプルプロジェクトの中にあることに気がついた。これも参考になる部分が多いので読ませてもらっている。
最近のコメント