SPIフラッシュへの書き込み手段が用意できたので、さっそく日本語フォントを用意して書き込み。それを使ってのLCD表示をできるようにしました。使用したフォントは東雲フォントの14ドットと12ドットです。
東雲フォントには16ドットも用意されていますが、横128ドットしかないこのLCDでは、ちょっと大きすぎると感じられたので使用しないことに。ANKと漢字フォントを14ドットと12ドットの2種類の大きさで用意しても360Kバイト程度でしたので、64Mビットのフラッシュ容量のうちの3Mビット分しか使っていないことになります。もったいないから、基板作り直すときにはフラッシュ容量を減らすことにしましょう。
NANDフラッシュではページ単位でのリードが必要でしたが、SPIフラッシュでは任意のバイト位置からの任意バイト数での読み出しが可能なので、アクセスはとっても簡単でした。AT25DF641では普通のSPIで利用できる Read Arraryコマンドと、SOだけでなくSI端子も出力に切り替えて2ビットを同時に出力に使うDual-Output Read Arrayコマンドの2種類の読み出し方法が用意されていますが、AT91SAM7SのSPIでは後者へは対応できないので、Read Arrayコマンドの方を使用。Read Arraryコマンドは対応クロック速度に応じてさらに3種類に分かれていましたが、一番簡単だけど低速な 03hを使用。低速とはいえクロック速度45MHzまで対応しているので、もともと48MHzで走らせているAT91SAM7Sには充分に高速です。48MHzだとスペックオーバになってしまうので、半分の24MHzで使うことにしました。現在の表示ルーチンでは一文字毎にフラッシュから読み出してはLCDに表示しています。フラッシュアクセスよりもLCD表示の方に時間がかかってしまうので、フラッシュのクロックをこれ以上速くしても、全体の性能はそれほど向上しないはずです。
東雲フォントには16ドットも用意されていますが、横128ドットしかないこのLCDでは、ちょっと大きすぎると感じられたので使用しないことに。ANKと漢字フォントを14ドットと12ドットの2種類の大きさで用意しても360Kバイト程度でしたので、64Mビットのフラッシュ容量のうちの3Mビット分しか使っていないことになります。もったいないから、基板作り直すときにはフラッシュ容量を減らすことにしましょう。
NANDフラッシュではページ単位でのリードが必要でしたが、SPIフラッシュでは任意のバイト位置からの任意バイト数での読み出しが可能なので、アクセスはとっても簡単でした。AT25DF641では普通のSPIで利用できる Read Arraryコマンドと、SOだけでなくSI端子も出力に切り替えて2ビットを同時に出力に使うDual-Output Read Arrayコマンドの2種類の読み出し方法が用意されていますが、AT91SAM7SのSPIでは後者へは対応できないので、Read Arrayコマンドの方を使用。Read Arraryコマンドは対応クロック速度に応じてさらに3種類に分かれていましたが、一番簡単だけど低速な 03hを使用。低速とはいえクロック速度45MHzまで対応しているので、もともと48MHzで走らせているAT91SAM7Sには充分に高速です。48MHzだとスペックオーバになってしまうので、半分の24MHzで使うことにしました。現在の表示ルーチンでは一文字毎にフラッシュから読み出してはLCDに表示しています。フラッシュアクセスよりもLCD表示の方に時間がかかってしまうので、フラッシュのクロックをこれ以上速くしても、全体の性能はそれほど向上しないはずです。