Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC24FJ64GA002 + FatFs 再び

SDカードからデータを読み込むためにFatFsを見直している。
FatFs 汎用FATファイルシステム モジュールをのぞいたら、サンプルの日付が2016.11.15となっていたので、せっかくだからもらってきて試してみる。
実のところ、PIC用のサンプルに変更は無いようだった。
とにかく、ffsample.zipをもらってきて、PIC24フォルダ内のファイルをプロジェクトに追加する。
環境は、
MPLABX IDE v3.45
XC16 v1.26

使ったものは、
PIC24FJ64GA002
SDカード
SDカードコネクタ
ブレッドボード
ジャンパー線
MCLR用のプルアップ抵抗
動作確認用のLEDと抵抗は適宜
USBシリアル変換モジュール

だ。

configuration bitsはwarningが出るので書き直した。

変更点は、FNOSC_FRCPLL と POSCMOD_NONE の2つ。
外付けでなく内蔵のクロックを使うための変更だ。

さらに pic24f.h の FCY の値を変更する。
//#define FCY 14745600UL
#define FCY 16000000UL

また、main.c の中の IoInit() 内の以下を変更した。
//uart_init(115200); /* Initialize UART driver */
uart_init(57600); /* Initialize UART driver */
これは、115200baudでは通信できなかったからだ。
速度を下げたら、問題なくコマンドのやり取りができるようになった。
さらに、main.c の中に以下の2行を追加する。
CLKDIVbits.RCDIV = 0b000;//FRC Postscaler 1:1 as 8MHz
CLKDIVbits.DOZEN = 0;//CPU peripheral clock ratio is set to 1:1

コンパイルしたらLFNまわりの部分でエラーが出たので、LFNを使わない設定にしたら出なくなった。
//#define _USE_LFN 1
#define _USE_LFN 0
LFNは必要ないので、エラーの原因は調べてない。

回路図は以下の通り。
pic24fj64ga002_fatfs_simple_schema
もう、プルアップもインダクタも何にもなく、ただつないだだけだ。
これでも動くので、もしトラブルが出たら考えることにした。
pic24fj64ga002_fatfs_simple_01
pic24fj64ga002_fatfs_simple_02

なお、Petit FAT File System Moduleのサンプルも、同様の変更で同じ回路で動く。
ただし、ボーレートの設定だけは、main.c の中でなくuart.c のBPSの値を以下のように変更する。
//#define BPS 115200UL
#define BPS 57600UL

PetitFatFsの方が機能が少ない分だけ、他のプログラムに組み込みやすいかもしれない。

このエントリーをはてなブックマークに追加

Posted under: PIC24FJ64GA002


コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.