Flexible Static Memory Controller (FSMC) support(fsmc.h)
フレキシブルスタティックメモリコントローラ(FSMC)のサポート
概要
本APIは、フレキシブルスタティックメモリコントローラ(FSMC)のサポートします。
データ型
■ struct fsmc_reg_map
FSMCレジスタ・マップ・タイプ
__IO uint32 BCR1 SRAM/NOR 型フラッシュチップセレクト制御レジスタ 1(FSMC_BCR1)
__IO uint32 BTR1 SRAM/NOR 型フラッシュチップセレクトタイミングレジスタ 1(FSMC_BTR1)
__IO uint32 BCR2 SRAM/NOR 型フラッシュチップセレクト制御レジスタ 2(FSMC_BCR2)
__IO uint32 BTR2 SRAM/NOR 型フラッシュチップセレクトタイミングレジスタ 2(FSMC_BTR2)
__IO uint32 BCR3 SRAM/NOR 型フラッシュチップセレクト制御レジスタ 3(FSMC_BCR3)
__IO uint32 BTR3 SRAM/NOR 型フラッシュチップセレクトタイミングレジスタ 3(FSMC_BTR3)
__IO uint32 BCR4 SRAM/NOR 型フラッシュチップセレクト制御レジスタ 4(FSMC_BCR4)
__IO uint32 BTR4 SRAM/NOR 型フラッシュチップセレクトタイミングレジスタ 4(FSMC_BTR4)
const uint8 RESERVED1[64] リザーブ
__IO uint32 PCR2 PC カード/NAND 型フラッシュ制御レジスタ 2
__IO uint32 SR2 FIFO ステータスおよび割り込みレジスタ 2
__IO uint32 PMEM2 共通メモリ空間タイミングレジスタ 2
__IO uint32 PATT2 属性メモリ空間タイミングレジスタ 2
const uint8 RESERVED2[4] リザーブ
__IO uint32 ECCR2 ECC リザルトレジスタ 2(FSMC_ECCR2)
const uint8 RESERVED3[2] リザーブ
__IO uint32 PCR3 PC カード/NAND 型フラッシュ制御レジスタ 3
__IO uint32 SR3 FIFO ステータスおよび割り込みレジスタ 3
__IO uint32 PMEM3 共通メモリ空間タイミングレジスタ 3
__IO uint32 PATT3 属性メモリ空間タイミングレジスタ 3
const uint32 RESERVED4 リザーブ
__IO uint32 ECCR3 ECC リザルトレジスタ 3(FSMC_ECCR3)
const uint8 RESERVED5[8] リザーブ
__IO uint32 PCR4 PC カード/NAND 型フラッシュ制御レジスタ 4
__IO uint32 SR4 FIFO ステータスおよび割り込みレジスタ 4
__IO uint32 PMEM4 共通メモリ空間タイミングレジスタ 4
__IO uint32 PATT4 属性メモリ空間タイミングレジスタ 4
__IO uint32 PIO4 I/O 空間タイミングレジスタ 4(FSMC_PIO4)
const uint8 RESERVED6[80] リザーブ
__IO uint32 BWTR1 SRAM/NOR 型フラッシュ書き込みタイミングレジスタ 1(FSMC_BWTR1)
const uint32 RESERVED7 リザーブ
__IO uint32 BWTR2 SRAM/NOR 型フラッシュ書き込みタイミングレジスタ 2(FSMC_BWTR2)
const uint32 RESERVED8 リザーブ
__IO uint32 BWTR3 SRAM/NOR 型フラッシュ書き込みタイミングレジスタ 3(FSMC_BWTR3)
const uint32 RESERVED9 リザーブ
__IO uint32 BWTR4 SRAM/NOR 型フラッシュ書き込みタイミングレジスタ 4(FSMC_BWTR4)
■ struct fsmc_nor_psram_reg_map
FSMC NOR / PSRAMレジスタマップタイプ
__IO uint32 BCR SRAM/NOR 型フラッシュチップセレクト制御レジスタ
__IO uint32 BTR SRAM/NOR 型フラッシュチップセレクトタイミングレジスタ
const uint8 RESERVED[252] リザーブ
__IO uint32 BWTR SRAM/NOR 型フラッシュ書き込みタイミングレジスタ
デバイス
なし
API関数
■ void fsmc_sram_init_gpios(void)
SRAMで使用するためにFSMC GPIOを設定します。
■ void fsmc_nor_psram_set_datast(fsmc_nor_psram_reg_map *regs, uint8 datast)
与えられたNOR / PSRAMレジスタマップのチップ選択タイミングレジスタ(FSMC_BTR)のDATASTビットを設定します。
引数
regs :チップセレクトタイミングレジスタを設定するNOR Flash / PSRAMレジスタマップ
datast :DATASTビットに使用する値
■ void fsmc_nor_psram_set_addset(fsmc_nor_psram_reg_map *regs, uint8 addset)
与えられたNOR / PSRAMレジスタマップのチップ選択タイミングレジスタ(FSMC_BTRx)のADDHLDビットを設定します。
引数
regs :チップセレクトタイミングレジスタを設定するNOR Flash / PSRAMレジスタマップ
datast :ADDSETビットに使用する値
メモリバンク境界アドレス
■ FSMC_BANK1 ((void*)0x60000000)
FSMCメモリバンク1(NOR / PSRAM)のベースアドレスへのポインタ
このバンクは4つの地域に分かれています。 各領域は、1 NORフラッシュ、SRAM、またはPSRAMチップとのインタフェースをサポートしています。 これらの領域のベースアドレスはFSMC_NOR_PSRAM_REGIONxです(x = 1、2、3、4の場合)。
■ FSMC_NOR_PSRAM_REGION1 FSMC_BANK1
FSMCメモリバンク1、領域1のベースアドレスへのポインタ(NOR / PSRAM)
■ FSMC_NOR_PSRAM_REGION2 ((void*)0x64000000)
FSMCメモリバンク1、領域2のベースアドレスへのポインタ(NOR / PSRAM)
■ FSMC_NOR_PSRAM_REGION3 ((void*)0x68000000)
FSMCメモリバンク1、領域3のベースアドレスへのポインタ(NOR / PSRAM)
■ FSMC_NOR_PSRAM_REGION4 ((void*)0x6C000000)
FSMCメモリバンク1、領域4のベースアドレスへのポインタ(NOR / PSRAM)
■ FSMC_BANK2 ((void*)0x70000000)
FSMCメモリバンク2(NAND Flash)のベースアドレスへのポインタ
■ FSMC_BANK3 ((void*)0x80000000)
FSMCメモリバンク3(NAND Flash)のベースアドレスへのポインタ
■ FSMC_BANK4 ((void*)0x90000000)
FSMCメモリバンク4(PC card devices)のベースアドレスへのポインタ
レジスタマップベースポインタ
FSMC_NOR_PSRAM1_BASE ((struct fsmc_nor_psram_reg_map*)__FSMCB) FSMC NOR/PSRAMベースポインタ 1
FSMC_NOR_PSRAM2_BASE ((struct fsmc_nor_psram_reg_map*)(__FSMCB + 0x8)) FSMC NOR/PSRAM ベースポインタ 2
FSMC_NOR_PSRAM3_BASE ((struct fsmc_nor_psram_reg_map*)(__FSMCB + 0x10)) FSMC NOR/PSRAM ベースポインタ 3
FSMC_NOR_PSRAM4_BASE ((struct fsmc_nor_psram_reg_map*)(__FSMCB + 0x18)) FSMC NOR/PSRAM ベースポインタ 4
レジスタのビット定義
SRAM/NOR-Flash チップセレクト制御レジスタ1..4 (FSMC_BCR1..4)
ビットの定義
FSMC_BCR_CBURSTRW_BIT 19 CBURSTRW: 書込みバースト・イネーブル
FSMC_BCR_ASYNCWAIT_BIT 15 ASYNCWAIT: 非同期転送時のウェイト信号
FSMC_BCR_EXTMOD_BIT 14 EXTMOD: 拡張モード・イネーブル
FSMC_BCR_WAITEN_BIT 13 WAITEN: ウェイト・イネーブル・ビット
FSMC_BCR_WREN_BIT 12 WREN: 書込みイネーブル・ビット
FSMC_BCR_WAITCFG_BIT 11 WAITCFG: ウェイト・タイミング構成
FSMC_BCR_WRAPMOD_BIT 10 WRAPMOD: ラップト・バースト・モード・サポート
FSMC_BCR_WAITPOL_BIT 9 WAITPOL: ウェイト信号極性ビット
FSMC_BCR_BURSTEN_BIT 8 BURSTEN: バースト・イネーブル・ビット
FSMC_BCR_FACCEN_BIT 6 FACCEN: Flash アクセス・イネーブル
FSMC_BCR_MUXEN_BIT 1 MUXEN: アドレス/ データ・マルチプレクシング・イネーブル・ビット
FSMC_BCR_MBKEN_BIT 0 MBKEN: メモリ・バンク・イネーブル・ビット
ビットマスクの定義
FSMC_BCR_CBURSTRW (1U << FSMC_BCR_CBURSTRW_BIT) CBURSTRW: 書込みバースト・イネーブル
FSMC_BCR_ASYNCWAIT (1U << FSMC_BCR_ASYNCWAIT_BIT) ASYNCWAIT: 非同期転送時のウェイト信号
FSMC_BCR_EXTMOD (1U << FSMC_BCR_EXTMOD_BIT) EXTMOD: 拡張モード・イネーブル
FSMC_BCR_WAITEN (1U << FSMC_BCR_WAITEN_BIT) WAITEN: ウェイト・イネーブル・ビット
FSMC_BCR_WREN (1U << FSMC_BCR_WREN_BIT) WREN: 書込みイネーブル・ビット
FSMC_BCR_WAITCFG (1U << FSMC_BCR_WAITCFG_BIT) WAITCFG: ウェイト・タイミング構成
FSMC_BCR_WRAPMOD (1U << FSMC_BCR_WRAPMOD_BIT) WRAPMOD: ラップト・バースト・モード・サポート
FSMC_BCR_WAITPOL (1U << FSMC_BCR_WAITPOL_BIT) WAITPOL: ウェイト信号極性ビット
FSMC_BCR_BURSTEN (1U << FSMC_BCR_BURSTEN_BIT) BURSTEN: バースト・イネーブル・ビット
FSMC_BCR_FACCEN (1U << FSMC_BCR_FACCEN_BIT) FACCEN: Flash アクセス・イネーブル
FSMC_BCR_MWID (0x3 << 4) MWID: メモリ・データ・バス幅
FSMC_BCR_MWID_8BITS (0x0 << 4) MWID: メモリ・データ・バス幅 00: 8bit
FSMC_BCR_MWID_16BITS (0x1 << 4) MWID: メモリ・データ・バス幅 01: 16bit
FSMC_BCR_MTYP (0x3 << 2) MTYP: メモリ・タイプ 00: SRAM, ROM
FSMC_BCR_MTYP_SRAM (0x0 << 2) MTYP: メモリ・タイプ 01: Cellular RAM
FSMC_BCR_MTYP_PSRAM (0x1 << 2) MTYP: メモリ・タイプ 10: NOR Flash
FSMC_BCR_MTYP_NOR_FLASH (0x2 << 2) MTYP: メモリ・タイプ 11: COSMO RAM
FSMC_BCR_MUXEN (1U << FSMC_BCR_MUXEN_BIT) MUXEN: アドレス/ データ・マルチプレクシング・イネーブル・ビット
FSMC_BCR_MBKEN (1U << FSMC_BCR_MBKEN_BIT) MBKEN: メモリ・バンク・イネーブル・ビット
SRAM/NOR-Flash チップセレクト・タイミング・レジスタ1..4 (FSMC_BTR1..4)
ビットマスクの定義
FSMC_BTR_ACCMOD (0x3 << 28) ACCMOD: アクセス・モード
FSMC_BTR_ACCMOD_A (0x0 << 28) ACCMOD: アクセス・モード 00: アクセス・モードA
FSMC_BTR_ACCMOD_B (0x1 << 28) ACCMOD: アクセス・モード 01: アクセス・モードB
FSMC_BTR_ACCMOD_C (0x2 << 28) ACCMOD: アクセス・モード 10: アクセス・モードC
FSMC_BTR_ACCMOD_D (0x3 << 28) ACCMOD: アクセス・モード 11: アクセス・モードD
FSMC_BTR_DATLAT (0xF << 24) DATLAT : データ遅延(NOR 型Flash の同期バースト用)
FSMC_BTR_CLKDIV (0xF << 20) CLKDIV: クロック分周比(CLK 信号に関して)
FSMC_BTR_BUSTURN (0xF << 16) BUSTURN: バス・ターンアラウンド・フェーズ期間
FSMC_BTR_DATAST (0xFF << 8) DATAST: データ・フェーズ期間
FSMC_BTR_ADDHLD (0xF << 4) ADDHLD: アドレス・ホールド期間
FSMC_BTR_ADDSET 0xF ADDSET: アドレス・セットアップ・フェーズ期間
SRAM/NOR-Flash チップセレクト・タイミング・レジスタ1..4 (FSMC_BWTR1..4)
ビットマスクの定義
FSMC_BWTR_ACCMOD (0x3 << 28) ACCMOD: アクセス・モード
FSMC_BWTR_ACCMOD_A (0x0 << 28) ACCMOD: アクセス・モード 00: アクセス・モードA
FSMC_BWTR_ACCMOD_B (0x1 << 28) ACCMOD: アクセス・モード 01: アクセス・モードB
FSMC_BWTR_ACCMOD_C (0x2 << 28) ACCMOD: アクセス・モード 10: アクセス・モードC
FSMC_BWTR_ACCMOD_D (0x3 << 28) ACCMOD: アクセス・モード 11: アクセス・モードD
FSMC_BWTR_DATLAT (0xF << 24) DATLAT: データ遅延(同期バーストNOR 型Flash 用)
FSMC_BWTR_CLKDIV (0xF << 20) CLKDIV: クロック分周比(CLK 信号に関して)
FSMC_BWTR_DATAST (0xFF << 8) DATAST: データ・フェーズ期間
FSMC_BWTR_ADDHLD (0xF << 4) ADDHLD: アドレス・ホールド期間
FSMC_BWTR_ADDSET 0xF ADDSET: アドレス・セットアップ・フェーズ期間
PC Card/NAND 型Flash 制御レジスタ2..4 (FSMC_PCR2..4)
ビットの定義
FSMC_PCR_ECCEN_BIT 6 ECCEN: ECC 処理ロジック・イネーブル・ビット
FSMC_PCR_PTYP_BIT 3 PTYP: メモリ・タイプ
FSMC_PCR_PBKEN_BIT 2 PBKEN: PC カード/NAND 型Flash メモリ・バンク・イネーブル・ビット
FSMC_PCR_PWAITEN_BIT 1 PWAITEN: ウェイト機能イネーブル・ビット
ビットマスクの定義
FSMC_PCR_ECCPS (0x7 << 17) ECCPS: ECC ページサイズ
FSMC_PCR_ECCPS_256B (0x0 << 17) ECCPS: ECC ページサイズ 000: 256 bytes
FSMC_PCR_ECCPS_512B (0x1 << 17) ECCPS: ECC ページサイズ 001: 512 bytes
FSMC_PCR_ECCPS_1024B (0x2 << 17) ECCPS: ECC ページサイズ 010: 1024 bytes
FSMC_PCR_ECCPS_2048B (0x3 << 17) ECCPS: ECC ページサイズ 011: 2048 bytes
FSMC_PCR_ECCPS_4096B (0x4 << 17) ECCPS: ECC ページサイズ 100: 4096 bytes
FSMC_PCR_ECCPS_8192B (0x5 << 17) ECCPS: ECC ページサイズ 101: 8192 bytes
FSMC_PCR_TAR (0xF << 13) TAR: ALE からRE 間の遅延
FSMC_PCR_TCLR (0xF << 9) TCLR: CLE からRE 間の遅延
FSMC_PCR_ECCEN (1U << FSMC_PCR_ECCEN_BIT) ECCEN: ECC 処理ロジック・イネーブル・ビット
FSMC_PCR_PWID (0x3 << 4) PWID: NAND 型Flash データ・バス幅
FSMC_PCR_PWID_8BITS (0x0 << 4) PWID: NAND 型Flash データ・バス幅 00: 8bit
FSMC_PCR_PWID_16BITS (0x1 << 4) PWID: NAND 型Flash データ・バス幅 01: 16bit
FSMC_PCR_PTYP (1U << FSMC_PCR_PTYP_BIT) PTYP: メモリ・タイプ
FSMC_PCR_PTYP_PC_CF_PCMCIA (0x0 << FSMC_PCR_PTYP_BIT) PTYP: メモリ・タイプ 0: PC カード、CF、CF+、PCMCIA
FSMC_PCR_PTYP_NAND (0x1 << FSMC_PCR_PTYP_BIT) PTYP: メモリ・タイプ 1: NAND 型Flash
FSMC_PCR_PBKEN (1U << FSMC_PCR_PBKEN_BIT) PBKEN: PC カード/NAND 型Flash メモリ・バンク・イネーブル・ビット
FSMC_PCR_PWAITEN (1U << FSMC_PCR_PWAITEN_BIT) PWAITEN: ウェイト機能イネーブル・ビット
FIFO ステータス及び割込みレジスタ2..4 (FSMC_SR2..4)
ビットの定義
FSMC_SR_FEMPT_BIT 6 FEMPT: FIFO が空の状態
FSMC_SR_IFEN_BIT 5 IFEN: 割込み立下りエッジ検出イネーブル・ビット
FSMC_SR_ILEN_BIT 4 ILEN: 割込みレベル検出イネーブル・ビット
FSMC_SR_IREN_BIT 3 IREN: 割込み立上りエッジ検出イネーブル・ビット
FSMC_SR_IFS_BIT 2 IFS: 割込み立下りエッジステータス
FSMC_SR_ILS_BIT 1 ILS: 割込みレベルステータス
FSMC_SR_IRS_BIT 0 IRS: 割込み立上りエッジステータス
ビットマスクの定義
FSMC_SR_FEMPT (1U << FSMC_SR_FEMPT_BIT) FEMPT: FIFO が空の状態
FSMC_SR_IFEN (1U << FSMC_SR_IFEN_BIT) IFEN: 割込み立下りエッジ検出イネーブル・ビット
FSMC_SR_ILEN (1U << FSMC_SR_ILEN_BIT) ILEN: 割込みレベル検出イネーブル・ビット
FSMC_SR_IREN (1U << FSMC_SR_IREN_BIT) IREN: 割込み立上りエッジ検出イネーブル・ビット
FSMC_SR_IFS (1U << FSMC_SR_IFS_BIT) IFS: 割込み立下りエッジステータス
FSMC_SR_ILS (1U << FSMC_SR_ILS_BIT) ILS: 割込みレベルステータス
FSMC_SR_IRS (1U << FSMC_SR_IRS_BIT) IRS: 割込み立上りエッジステータス
コモン・メモリ・スペース・タイミング・レジスタ2..4 (FSMC_PMEM2..4)
ビットマスクの定義
FSMC_PMEM_MEMHIZ (0xFF << 24) MEMHIZx: コモン・メモリx データ・バス・ハイ・インピーダンス時間
FSMC_PMEM_MEMHOLD (0xFF << 16) MEMHOLDx: コモン・メモリx ホールド時間
FSMC_PMEM_MEMWAIT (0xFF << 8) MEMWAITx: コモン・メモリx ウェイト時間
FSMC_PMEM_MEMSET 0xFF MEMSETx: コモン・メモリx セットアップ時間
アトリビュート・メモリ・スペース・タイミング・レジスタ2..4 (FSMC_PATT2..4)
ビットマスクの定義
FSMC_PATT_ATTHIZ (0xFF << 24) ATTHIZx: アトリビュート・メモリx データ・バス・ハイ・インピーダンス時間
FSMC_PATT_ATTHOLD (0xFF << 16) ATTHOLDx: アトリビュート・メモリx ホールド時間
FSMC_PATT_ATTWAIT (0xFF << 8) ATTWAITx: アトリビュート・メモリx ウェイト時間
FSMC_PATT_ATTSET 0xFF ATTSETx: アトリビュート・メモリx セットアップ時間
I/O スペースタイミング・レジスタ4 (FSMC_PIO4)
ビットマスクの定義
FSMC_PIO_IOHIZ (0xFF << 24) IOHIZx: I/O データ・バス・ハイ・インピーダンス時間
FSMC_PIO_IOHOLD (0xFF << 16) IOHOLDx: I/Ox ホールド時間
FSMC_PIO_IOWAIT (0xFF << 8) IOWAITx: I/Ox ウェイト時間
FSMC_PIO_IOSET 0xFF IOSETx: I/Ox セットアップ時間
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。
NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。