2010年6月19日土曜日
SH-2A SDカード(SPIモード)を試す。
CQ出版 Interface誌 2010/7号でFATファイルシステムの実装記事があり、同誌Webサイトでソースコード等が公開されました。記事を斜読しながら、SDカードの読み込みを試しました。
(モノクロLCD表示 左半分は表示不全)
概要
[SDカード][SPIモード]==(SPI)==[付属SH-2A基板][モノクロLCD表示]
ソースファイル
(mmc.c/cc932.c)(ff.c)(main.c)
mmc.c SDカード制御(SPIモードコマンド送信、SPI設定)
cc932.c Unicode/SJIS変換
ff.c FATファイルシステム
main.c プログラムメイン
他
改造点
・SCIF(UART)による出力を液晶表示に(機能検証が出来る程度)
・SPIチャネルをCh0からCh1に(SPI1使用)
・MMC_CD/MMC_WPのポートアサインを変更 (PC6、PC7)使用
1.SDカード・ドータボードの作成
・シリアルフラッシュROM(M25P40)
ブート用 SPI0接続・・・このため、SDカードはSPI1接続に変更
・SDカードコネクタ
I誌 記事を参考に配線 付属SH-2A基板 CN3のピンアサインは以下の通り。
[SDカード] [付属SH-2A基板 CN3]
9 (100KΩ)--- 3.3V
1 CD/DAT3 22 SSL10(CS) PG18(GPOIOのHi/Low出力でCS信号を代替)
2 CMD 21 MOSI1(DI) ---(100KΩ)--- 3.3V
3 Vss GND
4 Vcc 3.3V ---(0.1uF)--- GND
5 CLK 23 RSPCK1(SCK)
6 Vss GND
7 DAT0 33 MISO1(DO) ---(100KΩ)--- 3.3V
8 DAT1 (100KΩ)--- 3.3V
CD 28 PC7 ---(100KΩ)--- 3.3V
WP 27 PC6 ---(100KΩ)--- 3.3V
※SDカード 1ピンのプルアップ(100KΩ---3.3V)は無し。
最初、SDカード 1ピン(CS)信号はSPIのSSL信号を使うものだと思っていました。ソースコードにCS_HIGH/CL_LOWの操作があるのを、SH7262のSPI機能で賄えないかと思い色々調べるのですが不明、結局、ソースコードどおりにGPIOのHi/Low出力で行いました。
2.ソースの改造
1)mmc.c
・使用する、SPIチャネル0をチャネル1に (RSPI0=>RSPI1)
・CS、CD、WP のポートアサインを変更
2)cc932.c そのまま使用
3)ff.c そのまま使用
4)main.c
main()のfor(;;)ループ内のSDカード操作機能を切り出し、ディレクトリのファイルリスト表示、選択ファイルのテキスト表示を行う。
・di ディスク初期化(SPI、GPIOの初期設定) ディスクのフォーマットは行わないようです。
disk_initialize()
・fi 論理ドライブ初期化 f_mount()
・fl ディレクトリ情報取得 f_opnedir(), f_readdir()
・fo ファイルOpen f_open()
・fr ファイルRead f_read()
・fc ファイルClose f_close()
※セクションの設定の試行錯誤に合せ #pragma section文の追加・削除を行っています。
※dhisk_initialize()の前にf_chdrive(0)を実行(メモ)
3.不具合対応(試行錯誤)
1)モノクロLCD表示不全
現象 モノクロLCD(SG12864)の左半分の表示が不能、プログラムの表示領域のデータも不全
対処 FATファイルシステム(SDカード関連含め)、LCD表示を 個別のセクションに配置
結果 プログラムの表示領域のデータは正常に設定されるようになるが、依然表示は不全
以前、V850 で SDカードの読み書きに挑戦したのですが、挫折、今回、ある程度の動作が確認できたことで、なんとか、SDカードの利用に目処がついたと思っています。後は、もう少し、公開されたソースを解析し、安定動作を実現したいと思います。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿