6. 応用例
6.2 シリアルフラッシュメモリを変更しない場合のサンプルコード変更方法
6.2.1 シリアルフラッシュメモリを2個接続(8ビット幅アクセス)に変更する方法
SPIマルチI/Oバス空間に接続するシリアルフラッシュメモリを2個使用することで、8ビット幅でシリア ルフラッシュメモリにアクセスすることが可能になります。
図6.2にシリアルフラッシュメモリを2個(8ビット幅)接続する場合の接続例を示します。
RZ/A1H
P9_2/SPBCLK_0 P9_3/SPBSSL_0 P9_4/SPBMO0_0/SPBIO00_0 P9_5/SPBMI0_0/SPBIO10_0
Serial flash memory S25FL512S SCLK
SI/IO0 CS#
SO/IO1
Boot mode 3
MD_BOOT0 MD_BOOT1
P9_6/SPBIO20_0 P9_7/SPBIO30_0
WP#/IO2 HOLD/IO3
Serial flash memory S25FL512S SCLK
SI/IO0 CS#
SO/IO1 WP#/IO2 HOLD/IO3 P2_12/SPBMO1_0/SPBIO01_0
P2_13/SPBMI1_0/SPBIO11_0 P2_14/SPBIO21_0 P2_15/SPBIO31_0 MD_BOOT2
【注】 RZ/A1Hでは、シリアルフラッシュメモリを 2 個接続する場合、P2_12~P2_15 端子を使用します。
これらの端子は、アドドレスバス(A14~A11)と共用端子になっています。Renesas Starter Kit+ for RZ/A1Hでは、CS3空間にSDRAM(Samsung社製K4S561632D)が配置されていますが、シリアル フラッシュメモリを2個接続して使用する場合は、SDRAM制御信号との共用端子を使用するため、
SDRAMを使用することはできません。
図6.2 シリアルフラッシュメモリを2個(8ビット幅)接続する場合の接続例
フラッシュメモリを2個接続して使用するために、P2_12~P2_15端子を、それぞれ、SPBMO1_0/SPBIO01_0、 SPBMI1_0/SPBIO11_0、SPBIO21_0、SPBIO31_0の端子機能に設定する必要があります。サンプルコードでは、
io_spibsc_port_setting関数で兼用端子機能の設定を行っています。
SPIマルチI/Oバス空間に接続するシリアルフラッシュメモリを2個接続に変更するには、サンプルコード の初期状態から表6.7に示すマクロ定義を変更してください。
表6.7 サンプルコードカスタマイズ用マクロ一覧(2個接続時)
マクロ名 定義する値 設定内容
DEF_SPIBSC_DUAL_MODE SPIBSC_CMNCR_BSZ_DUAL:2個 CMNCR.BSZ[1:0] = B'01
シリアルフラッシュメモリを1個接続する場合と2個接続する場合では、シリアルフラッシュメモリのSPI マルチI/Oバス空間に配置されるアドレスが異なります。ただし、ブート起動用内蔵ROMプログラム実行後
のSPIBSCは、アドレスバイト数が3バイト(最大16MBの領域)でシリアルフラッシュメモリを1個接続
する設定で、H'1800_0000番地(シリアルフラッシュメモリのH'0000_0000番地)に分岐します。ローダプロ グラムは、SPBMO0_0/SPBIO00_0、SPBMI0_0/SPBIO10_0に接続されたシリアルフラッシュメモリの
H'0000_0000番地を先頭に16MBの領域の範囲内に配置する必要があります。サンプルコードでは、シリア
ルフラッシュメモリのセクタ0~7(H'0000_0000~H'0000_7FFF番地)に配置しています。
アプリケーションプログラムは、ローダプログラムによってアドレスバイト数が4バイトでシリアルフラッ シュメモリが2個接続されている設定に変更した後に実行しますので、シリアルフラッシュメモリが2個接 続されている場合のシリアルフラッシュメモリのアドレスに配置することができます。
図6.3に、シリアルフラッシュメモリを2個接続する場合のプログラム配置の例を示します。
ローダプログラムの実行 ローダプログラム
未使用 アプリケーション
プログラム (ユーザプログラム)
未使用 RZ/A1Hグループ
アドレス空間
シリアルフラッシュメモリ 物理アドレス空間
H'0000_0000 H'0000_8000 H'0001_0000 H'0400_0000
H'1800_0000 H'1800_8000
H'1C00_0000 チップ0 チップ1
アクセス 不可 ブート
起動用 内蔵ROM プログラム
実行直後
セクタ0セクタ1 セクタ6セクタ7 アクセス
不可
H'0100_0000
セクタ8~
4095 アクセス
禁止 16MBの領域
...
ローダプログラム
セクタ0~7 アクセス
禁止 未使用
アプリケーション プログラム (ユーザプログラム)
未使用 RZ/A1Hグループ
アドレス空間
シリアルフラッシュメモリ 物理アドレス空間
H'0000_0000 H'0000_8000 H'0200_0000
H'1800_0000 H'1800_8000 H'1808_0000 H'1C00_0000
チップ0 チップ1
ローダ プログラム
実行後
セクタ0~7 アクセス
禁止 セクタ8~n セクタ8~n
セクタn+1
~8191
セクタn+1
~8191 セクタ8192
~16383 アクセス
不可
セクタ8192
~16383 アクセス 不可
64MBの領域 H'1808_0000