SDmicroカード

stm32モジュールにつないだTFTに色々表示させようと思ったのだが、表示させるデータが無い。データはSDmicroカードかXBee経由で持ってくるつもりだったので、とりあえずSDmicroカードを読めるようにする。
SDカードの読み出しはstm32f1xxの基板でchanさんのFatFSを動かしたことがある。stm32f4xxでも同じようなものだろうと、とりあえずソースをコピーし適当に修正してコンパイル&リンクして書き込む。

もう1個製作

SDカードの読み出しを行うと初期化時点でエラー多発。データが不安定な感じ。ハードウェアを疑い、stm32f4xxモジュールを追加で1個製作。ファームを書き込み試すが現象は変わらない。ハンダ付け不良とかではなさそうだ。

どうにも原因がわからないので、ネットで情報を収集。ねむいさんのぶろぐでSTM32F4シリーズでSDIOドライバを実装していて、コードも公開されているのを発見。早速ダウンロードし、読ませてもらう。

で、まず気がついたのが、SDIOの端子(PC8~PC12,PD2)はGPIOx_AFRHとかを設定しSDIO用にするわけだけど、GPIOx_OSPEEDRで100MHzとかの設定もされている。SDIO用の設定がされれば、ドライブ能力は必要に応じて自動で設定されると思っていたのだが、違う?試しに同じように設定を行なってみると、SDカード読み出し時のエラーが無くなった。設定が必要だったのか。

実験しようとしたらSDmicroカードが見つからなかったので、Amazonから4Gbyteクラス10のカードを購入

でもまだFatFSが動かない。SDカードから1ブロック(512バイト)読み込もうとしても最後の6バイトぐらいが読み込まれていない。理由がわからないので、再度ねむいさんのプログラムを読むと、DMAのFIFOの設定が足りないことが判明。追加するとFatFSが無事動作、SDカードの内容を読み込むことができた。

ねむいさんのブログを読むと、chanさん御謹製のファイラーを動かしているとある。chanさんのおまけのソフトウェアには見当たらないので、どこにあるのかと思っていたのだが、FatFSサンプルプロジェクトの中にあることに気がついた。これも参考になる部分が多いので読ませてもらっている。

Leave a Reply

メールアドレスが公開されることはありません。