當(dāng)前位置:首頁 > 公眾號精選 > 21ic電子網(wǎng)
[導(dǎo)讀]近在學(xué)習(xí)華大的HC32F460這個(gè)芯片,今天想說說我對QSPI的理解。

談?wù)剬C32F460芯片的QSPI理解


出品 21ic論壇  binoo7

網(wǎng)站:bbs.21ic.com
近在學(xué)習(xí)華大的HC32F460這個(gè)芯片,今天想說說我對QSPI的理解
一、定義
QSPI是Queued SPI的簡寫,是Motorola公司推出的SPI接口的擴(kuò)展,比SPI應(yīng)用更加廣泛。
在SPI協(xié)議的基礎(chǔ)上,Motorola公司對其功能進(jìn)行了增強(qiáng),增加了隊(duì)列傳輸機(jī)制,推出了隊(duì)列串
行外圍接口協(xié)議(即QSPI協(xié)議)。 QSPI 是一種專用的通信接口,連接單、雙或四(條數(shù)據(jù)線)SPI Flash 存儲(chǔ)介質(zhì)。
二. 六種讀指令的方式

1. 標(biāo)準(zhǔn)讀指令

1.1串行總線周期開始

1.2串行閃存選擇信號被置為有效狀態(tài)

1.3從QSIO0管腳輸出該指令的指令代碼(03h/13h)*

1 1.4輸出目標(biāo)地址,該地址的寬度可以通過 QSFCR 寄存器中的AWSL[1:0]位來設(shè)置

1.5接收數(shù)據(jù),QSPI 的初始狀態(tài)選擇的指令就是標(biāo)準(zhǔn)讀指令。


談?wù)剬C32F460芯片的QSPI理解

2. 快速讀指令
2.1 串行總線周期開始

2.2 串行閃存選擇信號被置為有效狀態(tài)

2.3 從QSIO0管腳輸出該指令的指令代碼(0Bh/0Ch)

2.4 輸出目標(biāo)地址,地址寬度可以通過 QSFCR 寄存器中的 AWSL[1:0]位來設(shè)置

2.5 地址輸出后是一定數(shù)量的虛擬周期,其具體數(shù)量由 QSFCR 寄存器中的 DMCYCN[3:0]決定。

2.6 數(shù)據(jù)接收

談?wù)剬C32F460芯片的QSPI理解

3. 二線式輸出快速讀指令 二線式輸出快速讀是一種使用兩根信號線進(jìn)行數(shù)據(jù)接收的讀指令。
3.1 總線周期開始

3.2 串行閃存選擇信號被置為有效狀態(tài)

3.3 從QSIO0管腳輸出該指令的指令代碼(3Bh/3Ch)和目標(biāo)地址,地址寬度可以通過 QSFCR 寄存器中的AWSL[1:0]位來設(shè)置。

3.4 一定數(shù)量的虛擬周期,其具體數(shù)量由 QSFCR 寄存器中的 DMCYCN[3:0]決定

3.5 通過 QSIO0 和 QSIO1 兩根管腳進(jìn)行數(shù)據(jù)接收。偶位數(shù)據(jù)在 QSIO0 接收,奇位在 QSIO1。


談?wù)剬C32F460芯片的QSPI理解

4. 二線式輸入輸出快速讀指令 二線式輸入輸出快速讀是一種使用兩根信號線進(jìn)行地址發(fā)送和數(shù)據(jù)接收的讀指令。
4.1 串行總線周期開始

4.2 串行閃存選擇信號被置為有效狀態(tài)

4.3 QSIO0 管腳輸出該指令的指令代碼(BBh/BCh)。

4.4 從 QSIO0 和 QSIO1兩個(gè)管腳輸出目標(biāo)地址,地址寬度可以通過 QSFCR 寄存器中的 AWSL[1:0]位來設(shè)置。

4.5 一定數(shù)量的虛擬周期,其具體數(shù)量由 QSFCR 寄存器中的 DMCYCN[3:0]決定。

4.6 通過 QSIO0 和 QSIO1 兩根管腳進(jìn)行數(shù)據(jù)接收。偶數(shù)位的地址和虛擬周期(包括 XIP 模式選擇信息)的傳輸及數(shù)據(jù)接收使用 QSIO0 管腳,奇數(shù)位使用 QSIO1管腳。

談?wù)剬C32F460芯片的QSPI理解

5. 四線式輸出快速讀指令 四線式輸出快速讀是一種使用四根信號線進(jìn)行數(shù)據(jù)接收的讀指令。
5.1 當(dāng)一個(gè)串行總線周期開始的時(shí)候

5.2 串行閃存選擇信號被置為有效狀態(tài)

5.3 QSIO0 管腳輸出該指令的指令代碼(6Bh/6Ch)和目標(biāo)地址,地址寬度通過 QSFCR 寄存器中的AWSL[1:0]位來設(shè)置

5.4 在這之后是一定數(shù)量的虛擬周期,其具體數(shù)量由 QSFCR 寄存器中的 DMCYCN[3:0]決定

5.5 通過 QSIO0,QSIO1,QSIO2 和 QSIO3 四根管腳進(jìn)行數(shù)據(jù)接收。


談?wù)剬C32F460芯片的QSPI理解

6. 四線式輸入輸出快速讀指令 四線式輸入輸出快速讀是一種使用四根信號線進(jìn)行地址發(fā)送和數(shù)據(jù)接收的讀指令。
6.1 串行總線周期開始

6.2 串行閃存選擇信號被置為有效狀態(tài)

6.3 從QSIO0 管腳輸出該指令的指令代碼(EBh/ECh)

6.4 從 QSIO0,QSIO1,QSIO2 和 QSIO3 四個(gè)管腳輸出目標(biāo)地址,地址寬度可以通過 QSFCR 寄存器中的AWSL[1:0]位來設(shè)置。

6.5 一定數(shù)量的虛擬周期,具體數(shù)量由 QSFCR 寄存器中的 DMCYCN[3:0]決定

6.6 通過 QSIO0,QSIO1,QSIO2 和 QSIO3 四根管腳進(jìn)行數(shù)據(jù)接收。


談?wù)剬C32F460芯片的QSPI理解

通過以上的介紹,大家應(yīng)該能看的很清楚各種的數(shù)據(jù)讀取方式的共同點(diǎn)和不同點(diǎn)是什么 共同點(diǎn)都是需要同步時(shí)鐘和片選信號
不同點(diǎn)就是發(fā)送數(shù)據(jù)的時(shí)用的是幾個(gè)引腳發(fā)送的,接收數(shù)據(jù)的時(shí)候是用的幾個(gè)引腳
三 .示例解析
數(shù)據(jù)讀取方式大家都清楚了,下面貼一個(gè)4線輸入輸出快速讀取的初始化函數(shù)配置過程,首先代碼如下

/* QSPCK Port/Pin definition */#define QSPCK_PORT (PortC)#define QSPCK_PIN (Pin06) /* QSNSS Port/Pin definition */#define QSNSS_PORT (PortC)#define QSNSS_PIN (Pin07) /* QSIO0 Port/Pin definition */#define QSIO0_PORT (PortD)#define QSIO0_PIN (Pin08) /* QSIO1 Port/Pin definition */#define QSIO1_PORT (PortD)#define QSIO1_PIN (Pin09) /* QSIO2 Port/Pin definition */#define QSIO2_PORT (PortD)#define QSIO2_PIN (Pin10) /* QSIO3 Port/Pin definition */#define QSIO3_PORT (PortD)#define QSIO3_PIN (Pin11)

談?wù)剬C32F460芯片的QSPI理解 引腳的功能如上圖所示
如果是SPI通訊的話是4根線,一個(gè)時(shí)鐘線,一個(gè)片選線,兩個(gè)數(shù)據(jù)線MISO和MOSI
引腳既然比SPI多那么傳輸?shù)乃俣瓤隙ㄒ惨萐PI速度快,所以在應(yīng)用上可以來與片外的ROM RAM FLASH等進(jìn)行通訊
宏定義大家都看到了對吧,下面是配置部分代碼如下
static void QspiFlash_Init(void){ stc_qspi_init_t stcQspiInit;  /* configuration structure initialization */ MEM_ZERO_STRUCT(stcQspiInit);  /* Configuration peripheral clock */ PWC_Fcg1PeriphClockCmd(PWC_FCG1_PERIPH_QSPI, Enable);  /* Configuration QSPI pin */ PORT_SetFunc(QSPCK_PORT, QSPCK_PIN, Func_Qspi, Disable); PORT_SetFunc(QSNSS_PORT, QSNSS_PIN, Func_Qspi, Disable); PORT_SetFunc(QSIO0_PORT, QSIO0_PIN, Func_Qspi, Disable); PORT_SetFunc(QSIO1_PORT, QSIO1_PIN, Func_Qspi, Disable); PORT_SetFunc(QSIO2_PORT, QSIO2_PIN, Func_Qspi, Disable); PORT_SetFunc(QSIO3_PORT, QSIO3_PIN, Func_Qspi, Disable);  /* Configuration QSPI structure */ stcQspiInit.enClkDiv = QspiHclkDiv3; stcQspiInit.enSpiMode = QspiSpiMode3; stcQspiInit.enBusCommMode = QspiBusModeRomAccess; stcQspiInit.enPrefetchMode = QspiPrefetchStopComplete; stcQspiInit.enPrefetchFuncEn = Disable; stcQspiInit.enQssnValidExtendTime = QspiQssnValidExtendSck32; stcQspiInit.enQssnIntervalTime = QspiQssnIntervalQsck8; stcQspiInit.enQsckDutyCorr = QspiQsckDutyCorrHalfHclk; stcQspiInit.enVirtualPeriod = QspiVirtualPeriodQsck8; stcQspiInit.enWpPinLevel = QspiWpPinOutputHigh; stcQspiInit.enQssnSetupDelayTime = QspiQssnSetupDelay1Dot5Qsck; stcQspiInit.enQssnHoldDelayTime = QspiQssnHoldDelay1Dot5Qsck; stcQspiInit.enFourByteAddrReadEn = Disable; stcQspiInit.enAddrWidth = QspiAddressByteThree; stcQspiInit.stcCommProtocol.enReadMode = QspiReadModeFourWiresOutput; stcQspiInit.stcCommProtocol.enTransInstrProtocol = QspiProtocolExtendSpi; stcQspiInit.stcCommProtocol.enTransAddrProtocol = QspiProtocolExtendSpi; stcQspiInit.stcCommProtocol.enReceProtocol = QspiProtocolExtendSpi; stcQspiInit.u8RomAccessInstr = QSPI_3BINSTR_FOUR_WIRES_OUTPUT_READ; QSPI_Init(&stcQspiInit);} 其實(shí)這部分配置代碼特別好理解咱們分開來看 stc_qspi_init_t stcQspiInit;//首先是定義了一個(gè)stc_qspi_init_t 類型的局部變量stcQspiInit MEM_ZERO_STRUCT(stcQspiInit);//對stcQspiInit初始化清零操作 PWC_Fcg1PeriphClockCmd(PWC_FCG1_PERIPH_QSPI, Enable);//開啟QSPI電源,也就是要用到這個(gè)功能了 //功能定義引腳名稱功能  PORT_SetFunc(QSPCK_PORT, QSPCK_PIN, Func_Qspi, Disable); PORT_SetFunc(QSNSS_PORT, QSNSS_PIN, Func_Qspi, Disable); PORT_SetFunc(QSIO0_PORT, QSIO0_PIN, Func_Qspi, Disable); PORT_SetFunc(QSIO1_PORT, QSIO1_PIN, Func_Qspi, Disable); PORT_SetFunc(QSIO2_PORT, QSIO2_PIN, Func_Qspi, Disable); PORT_SetFunc(QSIO3_PORT, QSIO3_PIN, Func_Qspi, Disable); //下面是重點(diǎn)了,對參數(shù)進(jìn)行配置,我們來看看都配置了哪些寄存器 stcQspiInit.enClkDiv = QspiHclkDiv3; //QspiHclkDiv3  = 2u,  //Clock source: HCLK/3 //串行接口基準(zhǔn)時(shí)鐘選擇 //  b5  b4  b3  b2  b1  b0 //    0    0    0    0    0    0:2個(gè)HCLK周期 //   0     0    0    0    0   1:2個(gè)HCLK周期* //    0    0     0     0   1   0:3個(gè)HCLK周期 //    0     0     0    0    1   1:4個(gè)HCLK周期* stcQspiInit.enSpiMode = QspiSpiMode3;//QspiSpiMode3 = 1u,  PI模式選擇 0:SPI模式0 1:SPI模式3 stcQspiInit.enBusCommMode = QspiBusModeRomAccess; //訪問模式QspiBusModeRomAccess    = 0u, Rom access mode //QSPI總線通信模式選擇 //0:ROM訪問模式 //1:直接通信模式 stcQspiInit.enPrefetchMode = QspiPrefetchStopComplete; //QspiPrefetchStopComplete    = 0u,  //Stop after prefetch data complete //選擇重置預(yù)讀取動(dòng)作的位置 //0:當(dāng)前的預(yù)讀取動(dòng)作在字節(jié)邊界中止 //1:當(dāng)前的預(yù)讀取動(dòng)作即時(shí)中止 stcQspiInit.enPrefetchFuncEn = Disable; //預(yù)讀取功能有效/無效選擇 //0:預(yù)讀取功能無效 //1:預(yù)讀取功能有效 stcQspiInit.enQssnValidExtendTime = QspiQssnValidExtendSck32; // QspiQssnValidExtendSck32   = 1u, // QSSN valid time extend 32 QSCK cycles // QSPI總線訪問后QSSN有效時(shí)間延長功能選擇 //  b5 b4 //  0 0:不延長QSSN有效時(shí)間0 //  0 1:將QSSN有效時(shí)間延長32個(gè)QSCK 周期1  //  1 0:將QSSN有效時(shí)間延長128個(gè)QSCK 周期2 //  1 1:將QSSN有效時(shí)間無限延長3 stcQspiInit.enQssnIntervalTime = QspiQssnIntervalQsck8; //QspiQssnIntervalQsck8  = 7u, //QSSN signal min interval time 8 QSCK //QSSN信號最小無效時(shí)間選擇 // b3 b2 b1 b0 //0 0 0 0:1個(gè)QSCK周期 //0 0 0 1:2個(gè)QSCK周期 stcQspiInit.enQsckDutyCorr = QspiQsckDutyCorrHalfHclk; //QspiQsckDutyCorrHalfHclk = 1u, //QSCK's rising edge delay 0.5 HCLK cycle when Qsck select HCLK is odd //QSCK輸出波形占空比補(bǔ)正 //0:不進(jìn)行占空比補(bǔ)正 //1:將QSCK的上升沿滯后0.5個(gè)HCLK周期 //(當(dāng)QSCK選擇的頻率是HCLK的奇數(shù)倍時(shí)有效) stcQspiInit.enVirtualPeriod = QspiVirtualPeriodQsck8; QspiVirtualPeriodQsck8  = 7u,Virtual period select 8 QSCK //使用快速讀指令時(shí)虛擬周期數(shù)量選擇 //b3 b2 b1 b0 //0 0 0 0:3個(gè)QSCK周期*1 //0 0 0 1:4個(gè)QSCK周期 //0 0 1 0:5個(gè)QSCK周期 stcQspiInit.enWpPinLevel = QspiWpPinOutputHigh; //QspiWpPinOutputHigh = 1u, //WP pin(QIO2) output high level //WP管腳(QIO2)電平設(shè)置 //0:低電平 //1:高電平 stcQspiInit.enQssnSetupDelayTime = QspiQssnSetupDelay1Dot5Qsck; //QspiQssnSetupDelay1Dot5Qsck = 1u, //QSSN setup delay 1.5 QSCK output than QSCK first rising edge //QSSN信號輸出時(shí)序選擇 //0:比QSCK第一個(gè)上升沿提前0.5個(gè)QSCK輸出QSSN //1:比QSCK第一個(gè)上升沿提前1.5個(gè)QSCK輸出QSSN  stcQspiInit.enQssnHoldDelayTime = QspiQssnHoldDelay1Dot5Qsck; //QspiQssnHoldDelay1Dot5Qsck = 1u, //QSSN hold delay 1.5 QSCK release than QSCK last rising edge  //QSSN信號釋放時(shí)序選擇 //0:比QSCK最后一個(gè)上升沿滯后0.5個(gè)QSCK釋放QSSN //1:比QSCK最后一個(gè)上升沿滯后1.5個(gè)QSCK釋放QSSN stcQspiInit.enFourByteAddrReadEn = Disable; // 當(dāng)?shù)刂穼挾葹?字節(jié)時(shí)的讀指令代碼選擇 //0:不使用4字節(jié)地址讀指令代碼 //1:使用4字節(jié)地址讀指令代碼 stcQspiInit.enAddrWidth = QspiAddressByteThree; //QspiAddressByteThree = 2u,  Three byte address //串行接口地址寬度選擇 //b1 b0 //0 0:1字節(jié) //0 1:2字節(jié) //1 0:3字節(jié) //1 1:4字節(jié) stcQspiInit.stcCommProtocol.enReadMode = QspiReadModeFourWiresOutput; // QspiReadModeFourWiresIO = 5u, // Four wires input/output fast read //串行接口讀取模式選擇 //b2 b1 b0 //0 0 0:標(biāo)準(zhǔn)讀0 //0 0 1:快速讀1 //0 1 0:二線式輸出快速讀2 //0 1 1:二線式輸入輸出快速讀3 //1 0 0:四線式輸出快速讀4 //1 0 1:四線式輸入輸出快速讀5 //1 1 0:自定義標(biāo)準(zhǔn)讀6 //1 1 1:自定義快速讀7 stcQspiInit.stcCommProtocol.enTransInstrProtocol = QspiProtocolExtendSpi; stcQspiInit.stcCommProtocol.enTransAddrProtocol = QspiProtocolExtendSpi; stcQspiInit.stcCommProtocol.enReceProtocol = QspiProtocolExtendSpi; QspiProtocolExtendSpi    = 0u, Extend spi protocol 指令發(fā)送階段SPI協(xié)議選擇。 地址發(fā)送階段SPI協(xié)議選擇 數(shù)據(jù)接收階段SPI協(xié)議選擇 b1 b0 0 0:擴(kuò)展式SPI協(xié)議 0 1:二線式SPI協(xié)議 1 0:四線式SPI協(xié)議 1 1:設(shè)定禁止 stcQspiInit.u8RomAccessInstr = QSPI_3BINSTR_FOUR_WIRES_OUTPUT_READ; //0xEBu //替換指令代碼  用于替代默認(rèn)指令的串行閃存指令代碼 QSPI_Init(&stcQspiInit); 以上就是我總結(jié)的QSPI的初始化部分 因?yàn)镠C32F460有自己QSPI庫函數(shù),在應(yīng)用的時(shí)候大家可以根據(jù)需要來調(diào)用庫函數(shù)進(jìn)行通訊 四. 庫函數(shù) 
/*********************************************************************************** \brief De-Initialize QSPI unit**** \param [in] None**** \retval Ok Process successfully done********************************************************************************/en_result_t QSPI_DeInit(void)
/*********************************************************************************** \brief Initialize QSPI unit**** \param [in] pstcQspiInitCfg Pointer to qspi configuration** \arg See the struct #stc_qspi_init_t**** \retval Ok Process successfully done** \retval Error Parameter error********************************************************************************/en_result_t QSPI_Init(const stc_qspi_init_t *pstcQspiInitCfg)
/*********************************************************************************** \brief Config communication protocol structure**** \param [in] pstcCommProtocol Pointer to qspi communication protocol configuration** \arg See the struct #stc_qspi_comm_protocol_t**** \retval Ok Process successfully done** \retval Error Parameter error********************************************************************************/en_result_t QSPI_CommProtocolConfig(const stc_qspi_comm_protocol_t *pstcCommProtocol)
/*********************************************************************************** \brief Enable or disable prefetch function**** \param [in] enNewSta The function new state** \arg Disable Disable prefetch function** \arg Enable Enable prefetch function**** \retval Ok Process successfully done********************************************************************************/en_result_t QSPI_PrefetchCmd(en_functional_state_t enNewSta)
/*********************************************************************************** \brief Set clock division**** \param [in] enClkDiv Clock division** \arg QspiHclkDiv2 Clock source: HCLK/2** \arg QspiHclkDiv3 Clock source: HCLK/3** \arg QspiHclkDiv4 Clock source: HCLK/4** \arg QspiHclkDiv5 Clock source: HCLK/5** \arg QspiHclkDiv6 Clock source: HCLK/6** \arg QspiHclkDiv7 Clock source: HCLK/7** \arg QspiHclkDiv8 Clock source: HCLK/8** \arg QspiHclkDiv9 Clock source: HCLK/9** \arg QspiHclkDiv10 Clock source: HCLK/10** \arg QspiHclkDiv11 Clock source: HCLK/11** \arg QspiHclkDiv12 Clock source: HCLK/12** \arg QspiHclkDiv13 Clock source: HCLK/13** \arg QspiHclkDiv14 Clock source: HCLK/14** \arg QspiHclkDiv15 Clock source: HCLK/15** \arg QspiHclkDiv16 Clock source: HCLK/16** \arg QspiHclkDiv17 Clock source: HCLK/17** \arg QspiHclkDiv18 Clock source: HCLK/18** \arg QspiHclkDiv19 Clock source: HCLK/19** \arg QspiHclkDiv20 Clock source: HCLK/20** \arg QspiHclkDiv21 Clock source: HCLK/21** \arg QspiHclkDiv22 Clock source: HCLK/22** \arg QspiHclkDiv23 Clock source: HCLK/23** \arg QspiHclkDiv24 Clock source: HCLK/24** \arg QspiHclkDiv25 Clock source: HCLK/25** \arg QspiHclkDiv26 Clock source: HCLK/26** \arg QspiHclkDiv27 Clock source: HCLK/27** \arg QspiHclkDiv28 Clock source: HCLK/28** \arg QspiHclkDiv29 Clock source: HCLK/29** \arg QspiHclkDiv30 Clock source: HCLK/30** \arg QspiHclkDiv31 Clock source: HCLK/31** \arg QspiHclkDiv32 Clock source: HCLK/32** \arg QspiHclkDiv33 Clock source: HCLK/33** \arg QspiHclkDiv34 Clock source: HCLK/34** \arg QspiHclkDiv35 Clock source: HCLK/35** \arg QspiHclkDiv36 Clock source: HCLK/36** \arg QspiHclkDiv37 Clock source: HCLK/37** \arg QspiHclkDiv38 Clock source: HCLK/38** \arg QspiHclkDiv39 Clock source: HCLK/39** \arg QspiHclkDiv40 Clock source: HCLK/40** \arg QspiHclkDiv41 Clock source: HCLK/41** \arg QspiHclkDiv42 Clock source: HCLK/42** \arg QspiHclkDiv43 Clock source: HCLK/43** \arg QspiHclkDiv44 Clock source: HCLK/44** \arg QspiHclkDiv45 Clock source: HCLK/45** \arg QspiHclkDiv46 Clock source: HCLK/46** \arg QspiHclkDiv47 Clock source: HCLK/47** \arg QspiHclkDiv48 Clock source: HCLK/48** \arg QspiHclkDiv49 Clock source: HCLK/49** \arg QspiHclkDiv50 Clock source: HCLK/50** \arg QspiHclkDiv51 Clock source: HCLK/51** \arg QspiHclkDiv52 Clock source: HCLK/52** \arg QspiHclkDiv53 Clock source: HCLK/53** \arg QspiHclkDiv54 Clock source: HCLK/54** \arg QspiHclkDiv55 Clock source: HCLK/55** \arg QspiHclkDiv56 Clock source: HCLK/56** \arg QspiHclkDiv57 Clock source: HCLK/57** \arg QspiHclkDiv58 Clock source: HCLK/58** \arg QspiHclkDiv59 Clock source: HCLK/59** \arg QspiHclkDiv60 Clock source: HCLK/60** \arg QspiHclkDiv61 Clock source: HCLK/61** \arg QspiHclkDiv62 Clock source: HCLK/62** \arg QspiHclkDiv63 Clock source: HCLK/63** \arg QspiHclkDiv64 Clock source: HCLK/64**** \retval Ok Process successfully done********************************************************************************/en_result_t QSPI_SetClockDiv(en_qspi_clk_div_t enClkDiv)
/*********************************************************************************** \brief Set WP Pin level**** \param [in] enWpLevel WP pin level** \arg QspiWpPinOutputLow WP pin(QIO2) output low level** \arg QspiWpPinOutputHigh WP pin(QIO2) output high level**** \retval Ok Process successfully done********************************************************************************/en_result_t QSPI_SetWPPinLevel(en_qspi_wp_pin_level_t enWpLevel)
/*********************************************************************************** \brief Set communication address width**** \param [in] enAddrWidth Communication address width** \arg QspiAddressByteOne One byte address** \arg QspiAddressByteTwo Two byte address** \arg QspiAddressByteThree Three byte address** \arg QspiAddressByteFour Four byte address**** \retval Ok Process successfully done********************************************************************************/en_result_t QSPI_SetAddrWidth(en_qspi_addr_width_t enAddrWidth)
/*********************************************************************************** \brief Set extend address value**** \param [in] u8Addr Extend address value** \arg 0~0x3F**** \retval Ok Process successfully done********************************************************************************/en_result_t QSPI_SetExtendAddress(uint8_t u8Addr)
/*********************************************************************************** \brief Set rom access instruction**** \param [in] u8Instr Rom access instruction** \arg 0~0xFF**** \retval Ok Process successfully done********************************************************************************/en_result_t QSPI_SetRomAccessInstruct(uint8_t u8Instr)
/*********************************************************************************** \brief Read direct communication value**** \param [in] None**** \retval uint8_t Direct communication read value********************************************************************************/uint8_t QSPI_ReadDirectCommValue(void)
/*********************************************************************************** \brief Enable or disable xip mode**** \param [in] u8Instr Enable or disable xip mode instruction** \arg 0~0xFF**** \param [in] enNewSta The function new state** \arg Disable Disable xip mode** \arg Enable Enable xip mode**** \retval Ok Process successfully done********************************************************************************/en_result_t QSPI_XipModeCmd(uint8_t u8Instr, en_functional_state_t enNewSta)
/*********************************************************************************** \brief Enter direct communication mode**** \param [in] None**** \retval Ok Process successfully done**** \note If you are in XIP mode, you need to exit XIP mode and then start direct communication mode.********************************************************************************/en_result_t QSPI_EnterDirectCommMode(void)
/*********************************************************************************** \brief Exit direct communication mode**** \param [in] None**** \retval Ok Process successfully done********************************************************************************/en_result_t QSPI_ExitDirectCommMode(void)
/*********************************************************************************** \brief Get prefetch buffer current byte number**** \param [in] None**** \retval uint8_t Current buffer byte number********************************************************************************/uint8_t QSPI_GetPrefetchBufferNum(void)
/*********************************************************************************** \brief Get flag status**** \param [in] enFlag Choose need get status's flag** \arg QspiFlagBusBusy QSPI bus work status flag in direct communication mode** \arg QspiFlagXipMode XIP mode status signal** \arg QspiFlagRomAccessError Trigger rom access error flag in direct communication mode** \arg QspiFlagPrefetchBufferFull Prefetch buffer area status signal** \arg QspiFlagPrefetchStop Prefetch action status signal**** \retval Set Flag is set** \retval Reset Flag is reset********************************************************************************/en_flag_status_t QSPI_GetFlag(en_qspi_flag_type_t enFlag)
/*********************************************************************************** \brief Clear flag status**** \param [in] enFlag Choose need get status's flag** \arg QspiFlagRomAccessError Trigger rom access error flag in direct communication mode**** \retval Ok Process successfully done** \retval ErrorInvalidParameter Parameter error********************************************************************************/en_result_t QSPI_ClearFlag(en_qspi_flag_type_t enFlag) 以上就是庫函數(shù)部分,大家可以來調(diào)用庫函數(shù)進(jìn)行編程,如果技術(shù)好的可以直接調(diào)用寄存器來寫 ^_^ 
本文系21ic論壇網(wǎng)友 binoo7原創(chuàng)

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

21ic電子網(wǎng)

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉