※公式にSDカードという呼称を使うこと、及びSD書き込みプログラムをライセンス無しで提供することはSDライセンスで禁止されています。
マイコンカーラリーのプログラムが使っている書き込み方法はMMC方式でありSDライセンスの範囲外で問題ありませんし、MMC方式でもほとんどのマイクロSDカードが使えます。
以下の説明でMMCという表現が出てくるのはライセンス上の制限を明確にするためだけであり、SDカードと別規格のカードを意味するものではありません。
JMCR実行委員会が提供しているマイコンカーラリーのプログラムにはMMC(SD)カードへのデータ書き込み用ライブラリが用意されていて走行中のデータをSDカードに保存することが出来るようになっています。
ただ、CPU性能の制限により書き込み出来るのは10mSに一度であり、1mS毎の制御ループからすれば物足りません。
そこで最大1.25Mbpsでデータを送出可能なR8C/38上のコネクタを使って1mS毎の走行データを記録できるようにするのがこの試みの目的です。
R8C/38ボードが1.25Mbpsで通信できることは「マイコンカーラリー printfデバッグ (3) printf文を埋め込む」で確認しました。
STM32CubeMXのHALライブラリにあるFatFsを使ってMMC(SD)カードに書き込みできることも「stm32F765VGT6+STM32CubeMXでfatfsを動かしてみる」で確認出来ました。
ただ、あの記事に載せたボードはプログラム書き込み用のUSBシリアルを追加した新バージョンの基板CADによる3Dモデルで、実際はこのようなボードでテストしました。
一番上のボードがデータロガーボードでその下がR8C/38ボード、一番下はマイコンカーラリーをやっている先生のご要望に沿って作ってみたモータードライブボードです。
モータードライブボードにLCDを接続すると次のような状態になります。
後はデータロガーに書き込むコマンドを決めて、メインループや割り込み関数の中でprintf()を実行すればデータを保存できるようにする予定です。
コマンド例
“OPEN test.txt\n” ファイルを開く
“CLOSE \n” ファイルを閉じる
” WR 0123,3412,1333,13334,134134\n”
データを書き込む : WR 以降のデータ(”WR “は除く)が保存される、データは数値も文字も関係なく保存される。
基本的にはこれだけのコマンドで十分だと思います、考慮すべきはファイル名が重複したときに追記にするか新たな名前でファイルを作るかくらいでしょう。
UART2MMCの新バージョン
R8C/38ボードを触っていて色々気づいたことがあったので改良することにしました。
1.デバッグのためにR8C/38ボードを使っていて感じたのが書き込み用とデータロガー用のコネクタが兼用のためコネクタの抜き差しが煩雑になるのでプログラム書き込み用にUSBコネクタを追加しました。
つまりこのボードはプログラム書き込み用USBシリアル変換基板としても使えます。
プログラム書き込みとデータロガー機能はボード上のロータリーディップSWで切り替えます。
2.標準のUSBシリアル書き込みツールでは書き込みモードにするとき、プログラムを走らせる時にUSBコネクタを抜いてボードの電源を切る必要があります。
また、USBコネクタを一度抜くとUSB接続が不安定になり複数回USBコネクタを抜き差しする必要があったのでUSBコネクタを挿したままボードの電源を切ることが出来るようにTARGET OFFスイッチを追加しました。
3.一般的にこのツールを提供する場合を考えてライセンス規約に則り
UART2SD → USRT2MMC に名称を変更しました。