⑥ 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ドライバ関数