Sahara's WebLog

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

PIC24FJ64GB002 + Generic FatFs も試してみる。

以前に試したのは、同梱のソースを良く見たら2007~2009年のものだった。
最新のものは2015年の9月5日なので、やっぱり最新版で試してみたくなる。

結論から言えば、問題なく動く。
回路は全く同じ、サンプルでは外付けのクロックなので、これを内蔵のクロックに対応させるが、そのための変更点も全く同じだ。
くどいようだが以下に書いておく。

main.cのConfigurationの変更
//_CONFIG2(IESO_OFF & FNOSC_PRIPLL & FCKSM_CSDCMD & OSCIOFNC_OFF & IOL1WAY_OFF & I2C1SEL_PRI & POSCMOD_HS)
_CONFIG2(IESO_OFF & FNOSC_FRCPLL & FCKSM_CSDCMD & OSCIOFNC_OFF & IOL1WAY_OFF & I2C1SEL_PRI & POSCMOD_NONE)

pic24f.hのFCYの値の変更
//#define FCY 14745600UL
#define FCY 16000000UL

uart.cのBPSの値の変更
//#define BPS 115200UL
#define BPS 19200UL

main.cのIoInit()の中あたりに以下を追加
CLKDIVbits.RCDIV = 0b000;//FRC Postscaler 1:1 as 8MHz
CLKDIVbits.DOZEN = 0;//CPU peripheral clock ratio is set to 1:1

前提は、PLLを使って8MHz × 4 = 32MHzで駆動ということだ。

あっさり動いてしまってつまらないので、PIC24FJ64GA002のクロックの設定とUSARTのボーレートの設定のおさらい。

まず、内蔵オシレータを使う最速の設定はPLLを使用する場合なので、以下の赤枠内の設定にする。
pic24j64ga002_osci_01
これによる、Configuration Bitの設定は、
#pragma config FNOSC = FRCPLL // Oscillator Select (Fast RC Oscillator with PLL module (FRCPLL))
#pragma config POSCMOD = NONE // Primary Oscillator Select (Primary oscillator disabled)
とする。
pic24j64ga002_osci_02
さらに、このブロック図から、2つのポストスケーラを通るのがわかるので、これを両方とも1:1にする。
これが以下の設定だ。
CLKDIVbits.RCDIV = 0b000;//FRC Postscaler 1:1 as 8MHz
CLKDIVbits.DOZEN = 0;//CPU peripheral clock ratio is set to 1:1

以上でクロックが32MHzとなる。
ボーレートは下の式で求められる。
pic24j64ga002_osci_03
ここにもあるが、FCY = FOSC / 2 なので、FCY = 32000000 / 2 = 16000000 となる。
そこで、以下のように設定する。
pic24f.hのFCYの値の変更
#define FCY 16000000UL
また、使いたいボーレートは以下で設定する。
uart.cのBPSの値の変更
#define BPS 19200UL
あとはプログラムの中で計算された値がU1BRGに設定され、UARTが予定したとおりに働くというわけだ。
ボーレートをいくつにするかは環境と相談することになるだろう。
ブレッドボードに手製のカード・ソケットという私の環境の場合は57600が上限だった。
pic24j64ga002_osci_04
あ、それに加えて、安い中華製のFT232RLモジュール使用という条件もある。

追記(2015/11/04)
話が前後するが、サンプルそのままだとコンパイル時にエラーが出たので、その対処方法の覚書き。
一番の対処法はドキュメントにちゃんと目を通すこと。

※長いファイル名に対応しなくていい場合
ffconf.h 内で #define _USE_LFN 0 とする。

※長いファイル名に対応させたい場合
#define _USE_LFN 1 とする。
コード・ソースの中に含まれるoptionフォルダをプロジェクト・フォルダにコピーし、その中の unicode.c をプロジェクトに追加する。

初期設定では長いファイル名に対応した設定になっているので、unicode.cの登録無しではコンパイル時にエラーになる。

PIC24FJ64GB002 + Generic FatFs コマンドのリストを表示させてみる。」へ

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

Posted under: PIC24FJ64GB002, SD Card


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.