圏9研究所 工作室

圏9研究所の開発情報資料など

STM32F4 SDIO FATFS SDカード実装(7)評価とまとめ

動作状況とまとめ

1.動作状況
1)SDカード初期化コード
 初期化CLK 400kHz
 Raw bits 欄のエラーメッセージは Viewer表示のバグ 

STM32F4

SD card

CMD0  →

No Reply

CMD8  →

Reply : R7

↙︎

CMD55 ↘︎

Reply : R1

←

to SD 4bit

2.書込み速度
1)書込み速度一覧
 安定して書込めたSDIO_CK周波数と書込み速度

(1)測定条件
 SDカード : Transcend Premium 400x 32GB Class10
 データ:15360byte x 125回書込み各回の平均値

(2)測定結果 SDIO_CK 24MHz

3.解説
1)初期化コード
 ・ネットで調べると CMD0 – CMD8 – CMD55 の後に ACMD41があるようですがそこまで追えていません
 ・初期化時のクロックは自動的に400kHzになるようでその後に hsd.Init.ClockDiv で設定した周波数に遷移する

2)書込み速度
 時々平均値の半分以下の速度まで落ちるため非同期データを取り扱う場合は対策しないとデータを取りこぼす
 書込み速度はコンパイラ最適化でアップするのでコードに依存する部分も多い
 ・SDIO hardware flow control : disable のままでは SD 4bitモードでは 6MHzまでしか安定しない
 ・SD 1bitモードは disableでも24MHzまで動く
 ・SD 4bitモードはFIFO underrun (TX mode) エラーとなるのでソフトが追いついていないと思われる
 ・(3)でも貼り付けた下記参考資料(1)によるとSD 4bitモードでは転送タイミングに問題があるように思われる
 SDカードソケット外付けのBlackPill ボードではI2C(OLED)実装でクロックを上げられなかった
 STM32F4_64Pボードでは24MHzでも正常に動作する

3)参考
(1)STM32F2xx / STM32F4xx SDIO Interface Part 2

blog.frankvh.com

(2)SDカードの読み出し速度向上とオーバークロック

power-of-tech.hatenablog.com

 

4.まとめ
 今回気がついた不具合現象と対策一覧

原因

対策

不具合現象

f_mount

エラー

書込めない

場合がある

書込めない

PCで

読めない

SDカード

カード不具合

FAT32フォーマット実施

クイックフォーマットチェック外す

â—¯

â—¯

â—¯

â—¯

SDカード

モジュール

供給電流不足

電源回路内蔵モジュールにする

â—¯

â—¯

â—¯

ー

別電源にする

レベル変換

バッファあり

バッファなしモジュールにする

â—¯

ー

ー

ー

信号線

プルアップなし

プルアップする

â—¯

ー

ー

ー

1 CDピン

Lレベル

Hレベルにする

â—¯

ー

ー

ー

カード検出入力

Hレベル

プルアップする

â—¯

ー

ー

ー

Platform Setting 割当しない

STM32

CubeMX

・SDIO_CK

 速すぎる

・割込処理時間

 長い

・FIFO

 underrun

SDIO_CK 遅くする

â—¯

â—¯

â—¯

ー

コンパイラ最適化

ー

â—¯

â—¯

ー

SDIO hardware flow control :

enable

STM32F411xC/xE 使用禁止

ー

â—¯

â—¯

ー

コード

FATFS関数処理中割込禁止

ー

â—¯

â—¯

ー

割込処理中 SDIO_CK停止

Debug

ST LINKから

供給電流不足

外部電源で駆動

â—¯

â—¯

â—¯

ー

SD 4bit

Middleware

Middleware

バグ

SD 1bitで起動し初期設定の後

SD 4bitに切替える

â—¯

ー

ー

ー

再マウント

unmount, UnLink後に

再Link、再マウントする

â—¯

ー

ー

ー

 

おしまい