STM32F446RE NUCLEOボードを使ってArduino開発環境でグラフ作成プログラムを開発中ですが、グラフデータなどを保存するためにSDカードを接続しました。
使えるSDカードはいろいろありますがSeeedのSDカードシールドを使いました。
※ これを使うとマイコンボードにシールドを挿入するだけでSDカードに読み書きできます。(ただし、マイコンボードのリセットボタンが押しにくくなります)
その際に注意することが2つありました。
【注意点1】 SDカードシールドの裏面にあるランドで3つ(CLK,DI,DO)の信号の配線を変更します。
<説明> STM32F446RE NUCLEOボードはICSPソケットが搭載されていないためシールドの配線を変更する必要があります。SDカードシールド裏面にあるランドのディフォルトの配線をナイフなどで3個所切断してからハンダでブリッジして配線し直します。(切断するときにランド間にある配線も切断しないように注意してください)
【注意点2】 付加されていたSDライブラリを削除したのち、新たに正しいSDライブラリを付け足します。
<説明> このプログラムはAdafruit_GFX.hとAdafruit_HX8357.hライブラリを使用しており、それらのライブラリをプログラムに付加したときにSDライブラリも一緒に付加されていたようです。しかしこの一緒に付加されていたSDライブラリはArduino開発環境用のものではなかったようでコンパイル時にエラーとなりました。(Mbed用?)
対処方法は下のとおりです。
<方法> PlatformIOのこのプログラムのフォルダーにある".pio>libdeps\nucleo f446re>SD"ディレクトリにある"src>utility"ディレクトリ内のSd2Card.cppファイルがエラーになりました。
そこでSDディレクトリ以下を削除した後で新たにPlatformIOのホームからLibrariesボタンを押してArduino標準の(Arduinoから提供されている)SDライブラリを付加します。
正しいSDライブラリをプロジェクトに付加します。
上記の対処により、正常にコンパイルが終了してSDカードの読み書きができることを確認しました。