PIC32MX470F512LのSDカードサンプルコードがない件について

PIC32

PIC32MX470F512L-I/PFを買いました。

プロジェクトを作る際にC32は選べなかったのでXC32を使うことになりました。

SDカードのプログラムサンプルは 「Microchip Libraries for Applications」がそれなのですが、PIC32はTCP-IPしかサポートしていません。過去のMLAを使えと書いてあります。C32用のコードであって、XC32では使えません。

要するに、サンプルコードが無いので、SDカードのプログラムは自作しかありません。(前に書いた通りHarmonyバグ祭りなので使い物になりません)

と、言うのは無理なので、最新MLAの16ビットPIC用のを転用しました。基本的にレジスタ名が違うだけなので、名前を書き換えるだけでおっけーでした。さらにちょっとだけXC32も考えて作られていいました。__XC32__や__PIC32のコンパイルオプションがたまに書かれています。

おまけで符号なしの関数でマイナス値を返すバグあり関数を見つけましたが、読み込みまでは出来ました。

#defineで書き込みコードを有効にするかという設定があるのですが、有効にするとReadでファイルを開くとファイルサイズが0byteになってしまうので無効にして使っています。Createが勝手に実行されているのでしょうか。

あと、過去のMLAではRead関数の読み出しbyte数に制限はなかったかと思いますが、このプログラムにはセクターだクラスターだと、512byte単位しか読めないので、return値で読みだした個数を読み出したい数から引いてまたリードをかけなければなりません。

ファイル名は2byteUTF-8で開く必要があります。uint16_tの変数に1bye Asciiコードを代入するだけでおkです。

そしてはまったのがロングファットネーム。fileio_lfn.hがそれなんですが、困ったことに8.3文字列は開けません。それ以上のファイル名にわざわざファイル名を長くする必要があります。


PAGE TOP
Top