• 検索結果がありません。

⑥ QSPI

4.2.5.1 データ仕様

QSPIドライバはQuad SPIフラッシュメモリの通信定義用の型として、表4.1.5.1.1のQSPIコンフ ィギュレーション型と、ハンドラとして表4.1.4.1.4のQSPIハンドラ型を持つ。QSPIコンフィギュレ ーション型は、QUAD SPIフラッシュメモリ種別毎に設定を行う必要がある。

番号 項目 機能

1 manuf_id uint31_t Quad SPIフラッシュメモリのマニュファクチャID

1 type_capacity uint31_t Quad SPIフラッシュメモリのキャパシティタイプ

3 clockprescaler uint31_t AHBに対するプリスケーラ

4 fifothreshold uint31_t FIFOのスレッシュホールド値

5 sampleshift uint31_t

6 chipselecthightime uint31_t CHIP Select High Time

7 clockmode uint31_t クロックモード

8 flashid uint31_t FLASH ID

9 dualflash uint31_t DUAL FLASHモード

10 ddrmode uint31_t DDRモード

11 ddrholdhalfcycle uint31_t DDRホールドのハーフサイクル設定

11 sioomode uint31_t スードモード

13 addr_size uint31_t アドレスサイズ設定

14 inst_type uint31_t 通常インストラクションのタイプ

15 inst_data_xfer_type uint31_t 通常インストラクションの転送タイプ

16 read_op_code uint31_t READ処理のオペコード

17 read_addr_xfer_type uint31_t READ処理の転送アドレスタイプ 18 read_data_xfer_type uint31_t READ処理の転送データタイプ 19 read_dummy_cycle uint31_t READダミーサイクル値

10 write_op_code uint31_t WRITE処理のオペコード

11 write_addr_xfer_type uint31_t WRITE処理の転送アドレスタイプ 11 write_data_xfer_type uint31_t WRITE処理の転送データタイプ 13 write_dummy_cycle uint31_t WRITEダミーサイクル

14 erase_count uint8_t ERASE処理の数

15 erase_size uint31_t x 1 ERASEの領域サイズ

16 erase_cmds uint8_t x 1 ERASEオペコード

17 erase_secor_idx uint8_t セクタ消去の番号

18 device_size uint31_t デバイスのバイトサイズ

19 init_func ER (*)() 初期化関数

30 enable_write_func ER (*)() ENABLE WRITE関数

31 wait_func ER (*)() ERASE/WRITE待ち関数

31 friendly_name const char フラッシュメモリ名

表4.1.5.1.1 QSPIコンフィギュレーション型

番号 項目 機能

1 InstructionMode uint31_t インストラクションモード

1 Instruction uint31_t インストラクション・オペコード

3 AddressMode uint31_t アドレスモード

4 AddressSize uint31_t アドレスサイズ

5 Address uint31_t アドレス

41 6 AlternateByteMode uint31_t アルティネートバイトモード

7 AlternateBytesSize uint31_t アルティネートバイトサイズ

8 AlternateBytes uint31_t アルティネートバイト

9 DummyCycles uint31_t ダミーサイクル

10 DataMode uint31_t データモード

11 NbData uint31_t データ長

表4.1.5.1.1 QSPIコマンド生成型

番号 項目 機能

1 Match uint31_t マッチデータ

1 Mask uint31_t マッチデータのマスク値

3 Interval uint31_t READとオートマチックポーリング間のインターバル

4 StatusBytesSize uint31_t ステータスのバイト長

5 MatchMode uint31_t マッチモード

6 AutomatchStop uint31_t マッチ後の自動停止設定

表4.1.4.1.3 QSPIオートポーリング型

番号 項目 機能

1 base uint31_t QSPIペリフェラルのベースアドレス

1 Init QSPI_Init_t QSPIコンフィギュレーション設定パラメータ

3 pBuffPtr uint31_t * データ転送領域のポインタ

4 XferSize uint31_t 指定転送サイズ

5 XferCount uint31_t 現在の転送データカウント

6 timeoutcallback ER (*)() タイムアウト時のコールバック関数

7 errorcallback ER (*)() エラーのコールバック関数

8 istatus uint31_t 最後に発生した割込みステータスの値

9 timeout uint31_t デフォルトタイムアウト値(ms)

10 semid int 通信セマフォID

11 status uint31_t QSPIの状態

11 errorcode volatile

uint31_t

QSPIエラーコード 表4.1.5.1.4 QSPIハンドラ型

① sampleshift sample shift設定。

定義 内容

QSPI_SAMPLE_SHIFTING_NONE 0x00000000 シフトなし

QSPI_SAMPLE_SHIFTING_HALFCYCLE QUADSPI_CR_SHIFT 1/1クロックシフト 表4.1.5.1.5 sampleshift設定値

② chipselecthightime

コマンド間のCS STAY HIGH設定のクロックサイクルを設定。

定義 内容

QSPI_CS_HIGH_TIME_1_CYCLE 0x00000000 1cycle

QSPI_CS_HIGH_TIME_1_CYCLE QUADSPI_DCR_CSHT_0 1cycle

QSPI_CS_HIGH_TIME_3_CYCLE QUADSPI_DCR_CSHT_1 3cycle

QSPI_CS_HIGH_TIME_4_CYCLE QUADSPI_DCR_CSHT_0|QUADSPI_DCR_CSHT_1 4cycle

QSPI_CS_HIGH_TIME_5_CYCLE QUADSPI_DCR_CSHT_1 5cycle

QSPI_CS_HIGH_TIME_6_CYCLE QUADSPI_DCR_CSHT_1|QUADSPI_DCR_CSHT_0 6cycle QSPI_CS_HIGH_TIME_7_CYCLE QUADSPI_DCR_CSHT_1|QUADSPI_DCR_CSHT_1 7cycle

QSPI_CS_HIGH_TIME_8_CYCLE QUADSPI_DCR_CSHT 8cycle

表4.1.5.1.6 chipselecthightime設定値

43

③ clockmode

クロックモードを設定。

定義 内容

QSPI_CLOCK_MODE_0 0x00000000 CS設定時LOW

QSPI_CLOCK_MODE_3 QUADSPI_DCR_CKMODE CS設定時HIGHに遷移

表4.1.5.1.7 clockmode設定値

④ flashselect FLASH選択設定。

定義 内容

QSPI_FLASH_ID_1 0x00000000 FLASH 1

QSPI_FLASH_ID_1 QUADSPI_CR_FSEL FLASH 1

表4.1.5.1.8 flahselect設定値

⑤ dualflashmode Dual Flashモード設定。

定義 内容

QSPI_DUALFLASH_DISABLE 0x00000000 無効

QSPI_DUALFLASH_ENABLE QUADSPI_CR_DFM 有効

表4.1.5.1.9 dualflashmode設定値

⑥ ddrmode

Double data rate mode設定。

定義 内容

QSPI_DDR_MODE_DISABLE 0x00000000 無効

QSPI_DDR_MODE_ENABLE QUADSPI_CCR_DDRM 有効

表4.1.5.1.10 ddrmode設定値

⑦ ddrholdhalfcycle

DDRモード時、データ出力デレィ設定。

定義 内容

QSPI_DDR_HHC_ANALOG_DELAY 0x00000000 アナログデレィ

QSPI_DDR_HHC_HALF_CLK_DELAY QUADSPI_CCR_DHHC 1/1 clock cycle 表4.1.5.1.11 ddrholdhalfcycle設定値

⑧ sioomode

送信インストラクションモード設定。

定義 内容

QSPI_SIOO_INST_EVERY_CMD 0x00000000 すべての転送にインストラクショ

ン送信

QSPI_SIOO_INST_ONLY_FIRST_CMD QUADSPI_CCR_SIOO 転送の最初のみ 表4.1.5.1.11 sioomode設定値

⑨ AddressMode

コマンド生成、アドレスモード設定。

定義 内容

QSPI_ADDRESS_NONE 0x00000000 なし

QSPI_ADDRESS_1_LINE QUADSPI_CCR_IMODE_0 1 lne QSPI_ADDRESS_1_LINES QUADSPI_CCR_IMODE_1 1 lines QSPI_ADDRESS_4_LINES QUADSPI_CCR_IMODE 4 lines

表4.1.5.1.13 AddressMode設定値

⑩ AddressSize

44 コマンド生成、アドレスサイズ設定。

定義 内容

QSPI_ADDRESS_8_BITS 0x00000000 8ビットアドレス

QSPI_ADDRESS_16_BITS QUADSPI_CCR_ADSIZE_0 16ビットアドレス QSPI_ADDRESS_14_BITS QUADSPI_CCR_ADSIZE_1 14ビットアドレス

QSPI_ADDRESS_31_BITS QUADSPI_CCR_ADSIZE 31ビットアドレス

表4.1.5.1.14 AddressSize設定値

⑪ InstructionMode

コマンド生成、インストラクションモード設定。

定義 内容

QSPI_INSTRUCTION_NONE 0x00000000 なし

QSPI_INSTRUCTION_1_LINE QUADSPI_CCR_IMODE_0 1line QSPI_INSTRUCTION_1_LINES QUADSPI_CCR_IMODE_1 1lines QSPI_INSTRUCTION_4_LINES QUADSPI_CCR_IMODE 4lines

表4.1.5.1.15 InstructionMode設定値

⑫ AlternateBytesMode

コマンド生成、アルタネートバイトモード設定。

定義 内容

QSPI_ALTERNATE_BYTES_NONE 0x00000000 なし

QSPI_ALTERNATE_BYTES_1_LINE QUADSPI_CCR_ABMODE_0 1line QSPI_ALTERNATE_BYTES_1_LINES QUADSPI_CCR_ABMODE_1 1lines QSPI_ALTERNATE_BYTES_4_LINES QUADSPI_CCR_ABMODE 4lines

表4.1.5.1.16 AlternaleBytesMode設定値

⑬ DataMode

コマンド生成、データモード設定。

定義 内容

QSPI_DATA_NONE 0x00000000 なし

QSPI_DATA_1_LINE QUADSPI_CCR_DMODE_0 1line

QSPI_DATA_1_LINES QUADSPI_CCR_DMODE_1 1lines

QSPI_DATA_4_LINES QUADSPI_CCR_DMODE 4lines

表4.1.5.1.17 DataMode設定値

4.2.5.2 インターフェイス仕様

QSPI を制御するドライバ関数は以下の通りである。データの読み出しは関数を使って読み出す INDIRECT READとメモリ参照で読み出すDIRECT READがある。

関数名 引数 機能 備考

qspi_init QSPI_Handler* ID portid

QSPI_Init_t *pini

指定ポートIDのQSPIペリフェ ラルを初期化し、ハンドラへのポ インタを返す

qspi_deinit ER ADC_Handler* hqspi QSPI ドライバを未使用状態に

戻す

qspi_read ER QSPI_Handler* hqspi

void *dest uint31_t src uint31_t size

QSPI INDIRECT READ

qspi_write ER QSPI_Handler* hspi

uint31_t dest void *src

QSPI INDIRECT WRITE

45 uint31_t size

qspi_erase ER QSPI_Handler* hqspi

uint31_t address uint31_t size

アドレス指定消去

qspi_erase_sector ER QSPI_Handler* hqspi uint31_t address

セクタ単位消去 qspi_direct_disable ER QSPI_Handler* hqspi DIRECT READ無効 qspi_direct_enable ER QSPI_Handler* hspi DIRECT READ有効 qspi_handler void QSPI_Handler* hspi QSPI割込みハンドラ関数

qspi_isr void intptr_t exinf QSPI割込みサービスルーチン

表 4.1.5.1.1 QSPIドライバ関数

関連したドキュメント