日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32F7xx —— QSPI

發布時間:2023/12/20 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F7xx —— QSPI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?STM32F7xx —— QSPI

?

目錄

STM32F7xx —— QSPI

一、QSPI

二、幾個重要的函數

三、幾個重要的結構

四、QSPI接口設計(僅供參考)

五、QSPI驅動W25Q256


?

?

一、QSPI

? ? ? ? SPI 是 Queued SPI 的簡寫,是 Motorola公司推出的 SPI 接口的擴展,比 SPI 應用更加廣泛。在 SPI 協議的基礎上,Motorola 公司對其功能進行了增強,增加了隊列傳輸機制,推出了隊列串行外圍接口協議(即 QSPI 協議),使用該接口,用戶可以一次性傳輸包含多達16個8位或16位數據的傳輸隊列。一旦傳輸啟動,直到傳輸結束,都不需要CPU干預,極大的提高了傳輸效率。該協議在ColdFire系列MCU得到廣泛應用。與SPI相比,QSPI的最大結構特點是以80字節的RAM代替了SPI的發送和接收寄存器。QSPI 是一種專用的通信接口,連接單、雙或四(條數據線) SPI Flash 存儲介質。

?該接口可以在以下三種模式下工作:
① 間接模式:使用 QSPI 寄存器執行全部操作
② 狀態輪詢模式:周期性讀取外部 Flash 狀態寄存器,而且標志位置 1 時會產生中斷(如擦除或燒寫完成,會產生中斷)
③ 內存映射模式:外部 Flash 映射到微控制器地址空間,從而系統將其視作內部存儲器。

QSPI通過6根線與SPI芯片通信,下圖是內部框圖:

QSPI每條命令,必須包含一個或多個階段:指令、地址、交替字節、空指令和數據。

QSPI發送命令:等待QSPI空閑;設置命令參數。

QSPI讀數據:設置數據傳輸長度;設置QSPI工作模式并設置地址;讀取數據。

QSPI寫數據:設置數據傳輸長度;設置QSPI工作模式并設置地址;寫數據。

?

二、幾個重要的函數

HAL_StatusTypeDef HAL_QSPI_Init (QSPI_HandleTypeDef *hqspi); // 初始化HAL_StatusTypeDef HAL_QSPI_Command(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t Timeout); // 發送命令HAL_StatusTypeDef HAL_QSPI_Transmit (QSPI_HandleTypeDef *hqspi, uint8_t *pData, uint32_t Timeout); // 發送數據HAL_StatusTypeDef HAL_QSPI_Receive (QSPI_HandleTypeDef *hqspi, uint8_t *pData, uint32_t Timeout); // 接收數據

三、幾個重要的結構

// QSPI操作句柄 typedef struct {QUADSPI_TypeDef *Instance; /* QSPI registers base address */QSPI_InitTypeDef Init; /* QSPI communication parameters */uint8_t *pTxBuffPtr; /* Pointer to QSPI Tx transfer Buffer */__IO uint16_t TxXferSize; /* QSPI Tx Transfer size */__IO uint16_t TxXferCount; /* QSPI Tx Transfer Counter */uint8_t *pRxBuffPtr; /* Pointer to QSPI Rx transfer Buffer */__IO uint16_t RxXferSize; /* QSPI Rx Transfer size */__IO uint16_t RxXferCount; /* QSPI Rx Transfer Counter */DMA_HandleTypeDef *hdma; /* QSPI Rx/Tx DMA Handle parameters */__IO HAL_LockTypeDef Lock; /* Locking object */__IO HAL_QSPI_StateTypeDef State; /* QSPI communication state */__IO uint32_t ErrorCode; /* QSPI Error code */uint32_t Timeout; /* Timeout for the QSPI memory access */ }QSPI_HandleTypeDef;// Instance:QSPI基地址 --- QUADSPI // Init:設置QSPI參數 // pTxBuffPtr,TxXferSize,TxXferCount:發送緩存指針 發送數據量 剩余數據量 // pRxBuffPtr,RxXferSize,RxXferCount:接收緩存指針 發送數據量 剩余數據量 // hdma與DMA相關, 其他為過程變量不需要關心 // 參數配置 時鐘分頻系數 FIFO閾值 采樣移位 FLASH大小 片選高電平時間 時鐘模式 閃存ID 雙閃存模式設置 typedef struct {uint32_t ClockPrescaler; /* Specifies the prescaler factor for generating clock based on the AHB clock.This parameter can be a number between 0 and 255 */ uint32_t FifoThreshold; /* Specifies the threshold number of bytes in the FIFO (used only in indirect mode)This parameter can be a value between 1 and 32 */uint32_t SampleShifting; /* Specifies the Sample Shift. The data is sampled 1/2 clock cycle delay later to take in account external signal delays. (It should be QSPI_SAMPLE_SHIFTING_NONE in DDR mode)This parameter can be a value of @ref QSPI_SampleShifting */uint32_t FlashSize; /* Specifies the Flash Size. FlashSize+1 is effectively the number of address bits required to address the flash memory. The flash capacity can be up to 4GB (addressed using 32 bits) in indirect mode, but the addressable space in memory-mapped mode is limited to 256MBThis parameter can be a number between 0 and 31 */uint32_t ChipSelectHighTime; /* Specifies the Chip Select High Time. ChipSelectHighTime+1 defines the minimum number of clock cycles which the chip select must remain high between commands.This parameter can be a value of @ref QSPI_ChipSelectHighTime */ uint32_t ClockMode; /* Specifies the Clock Mode. It indicates the level that clock takes between commands.This parameter can be a value of @ref QSPI_ClockMode */uint32_t FlashID; /* Specifies the Flash which will be used,This parameter can be a value of @ref QSPI_Flash_Select */uint32_t DualFlash; /* Specifies the Dual Flash Mode StateThis parameter can be a value of @ref QSPI_DualFlash_Mode */ }QSPI_InitTypeDef; // 采樣移位 #define QSPI_SAMPLE_SHIFTING_NONE ((uint32_t)0x00000000U) /*!<No clock cycle shift to sample data*/ #define QSPI_SAMPLE_SHIFTING_HALFCYCLE ((uint32_t)QUADSPI_CR_SSHIFT) /*!<1/2 clock cycle shift to sample data*/

四、QSPI接口設計(僅供參考)

#define QSPI_CLK_ENABLE() __HAL_RCC_QSPI_CLK_ENABLE();#define QSPI_BK1_NCS_PORT GPIOB #define QSPI_BK1_NCS_PIN GPIO_PIN_6 #define QSPI_BK1_NCS_AF GPIO_AF10_QUADSPI #define QSPI_BK1_NCS_CONFIG() GPIOConfigExt(QSPI_BK1_NCS_PORT, QSPI_BK1_NCS_PIN, GPIO_MODE_AF_PP, GPIO_PULLUP, QSPI_BK1_NCS_AF)#define QSPI_BK1_CLK_PORT GPIOB #define QSPI_BK1_CLK_PIN GPIO_PIN_2 #define QSPI_BK1_CLK_AF GPIO_AF9_QUADSPI #define QSPI_BK1_CLK_CONFIG() GPIOConfigExt(QSPI_BK1_CLK_PORT, QSPI_BK1_CLK_PIN, GPIO_MODE_AF_PP, GPIO_NOPULL, QSPI_BK1_CLK_AF)#define QSPI_BK1_IO0_PORT GPIOF #define QSPI_BK1_IO0_PIN GPIO_PIN_8 #define QSPI_BK1_IO0_AF GPIO_AF10_QUADSPI #define QSPI_BK1_IO0_CONFIG() GPIOConfigExt(QSPI_BK1_IO0_PORT, QSPI_BK1_IO0_PIN, GPIO_MODE_AF_PP, GPIO_NOPULL, QSPI_BK1_IO0_AF)#define QSPI_BK1_IO1_PORT GPIOF #define QSPI_BK1_IO1_PIN GPIO_PIN_9 #define QSPI_BK1_IO1_AF GPIO_AF10_QUADSPI #define QSPI_BK1_IO1_CONFIG() GPIOConfigExt(QSPI_BK1_IO1_PORT, QSPI_BK1_IO1_PIN, GPIO_MODE_AF_PP, GPIO_NOPULL, QSPI_BK1_IO1_AF)#define QSPI_BK1_IO2_PORT GPIOF #define QSPI_BK1_IO2_PIN GPIO_PIN_7 #define QSPI_BK1_IO2_AF GPIO_AF9_QUADSPI #define QSPI_BK1_IO2_CONFIG() GPIOConfigExt(QSPI_BK1_IO2_PORT, QSPI_BK1_IO2_PIN, GPIO_MODE_AF_PP, GPIO_NOPULL, QSPI_BK1_IO2_AF)#define QSPI_BK1_IO3_PORT GPIOF #define QSPI_BK1_IO3_PIN GPIO_PIN_6 #define QSPI_BK1_IO3_AF GPIO_AF9_QUADSPI #define QSPI_BK1_IO3_CONFIG() GPIOConfigExt(QSPI_BK1_IO3_PORT, QSPI_BK1_IO3_PIN, GPIO_MODE_AF_PP, GPIO_NOPULL, QSPI_BK1_IO3_AF) // 封裝幾個必要的接口 static QSPI_HandleTypeDef qspi_handle;static void qspi_gpio_init(void) {QSPI_CLK_ENABLE();QSPI_BK1_NCS_CONFIG();QSPI_BK1_CLK_CONFIG();QSPI_BK1_IO0_CONFIG();QSPI_BK1_IO1_CONFIG();QSPI_BK1_IO2_CONFIG();QSPI_BK1_IO3_CONFIG(); }static void qspi_mode_init(void) {qspi_handle.Instance = QUADSPI; // QSPIqspi_handle.Init.ClockPrescaler = 2; // QPSI分頻比,W25Q256最大頻率為104M 所以此處應該為2,QSPI頻率就為216/(2+1)=72MHZqspi_handle.Init.FifoThreshold = 4; // FIFO閾值為4個字節qspi_handle.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE; // 采樣移位半個周期(DDR模式下,必須設置為0)qspi_handle.Init.FlashSize = POSITION_VAL(0X2000000) - 1; // SPI FLASH大小,W25Q256大小為32M字節qspi_handle.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_4_CYCLE; // 片選高電平時間為4個時鐘(13.8*4=55.2ns),即手冊里面的tSHSL參數qspi_handle.Init.ClockMode = QSPI_CLOCK_MODE_0; // 模式0qspi_handle.Init.FlashID = QSPI_FLASH_ID_1; // 第一片flashqspi_handle.Init.DualFlash = QSPI_DUALFLASH_DISABLE; // 禁止雙閃存模式HAL_QSPI_Init(&qspi_handle); //QSPI初始化 }void QSPIInit(void) {qspi_gpio_init();qspi_mode_init(); }// QSPI發送命令 // instruction:要發送的指令 // address:發送到的目的地址 // dummyCycles:空指令周期數 // instructionMode:指令模式;QSPI_INSTRUCTION_NONE,QSPI_INSTRUCTION_1_LINE,QSPI_INSTRUCTION_2_LINE,QSPI_INSTRUCTION_4_LINE // addressMode:地址模式; QSPI_ADDRESS_NONE,QSPI_ADDRESS_1_LINE,QSPI_ADDRESS_2_LINE,QSPI_ADDRESS_4_LINE // addressSize:地址長度;QSPI_ADDRESS_8_BITS,QSPI_ADDRESS_16_BITS,QSPI_ADDRESS_24_BITS,QSPI_ADDRESS_32_BITS // dataMode:數據模式; QSPI_DATA_NONE,QSPI_DATA_1_LINE,QSPI_DATA_2_LINE,QSPI_DATA_4_LINE void QSPISendCMD(uint32_t instruction, uint32_t address, uint32_t dummyCycles, uint32_t instructionMode, uint32_t addressMode, uint32_t addressSize, uint32_t dataMode) {QSPI_CommandTypeDef Cmdhandler;Cmdhandler.Instruction = instruction; // 指令Cmdhandler.Address = address; // 地址Cmdhandler.DummyCycles = dummyCycles; // 設置空指令周期數Cmdhandler.InstructionMode = instructionMode; // 指令模式Cmdhandler.AddressMode = addressMode; // 地址模式Cmdhandler.AddressSize = addressSize; // 地址長度Cmdhandler.DataMode = dataMode; // 數據模式Cmdhandler.SIOOMode = QSPI_SIOO_INST_EVERY_CMD; // 每次都發送指令Cmdhandler.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; // 無交替字節Cmdhandler.DdrMode = QSPI_DDR_MODE_DISABLE; // 關閉DDR模式Cmdhandler.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;HAL_QSPI_Command(&qspi_handle, &Cmdhandler, 5000); }// 接收指定長度數據 uint8_t QSPIReceive(uint8_t *buffer, uint32_t length) {qspi_handle.Instance->DLR = length - 1;if(HAL_QSPI_Receive(&qspi_handle, buffer, 5000) == HAL_OK){return 0; //接收數據}else{return 1;} }// 發送指定長度數據 uint8_t QSPITransmit(uint8_t *buffer, uint32_t length) {qspi_handle.Instance->DLR = length - 1;if(HAL_QSPI_Transmit(&qspi_handle, buffer, 5000) == HAL_OK){return 0; //發送數據}else{return 1;} }

五、QSPI驅動W25Q256

W25Q256:32M? 512塊,每塊16個扇區,每個扇區4K。具體指令看手冊。封裝了如下接口(初始化讀寫擦除等接口是以后移植文件系統的基礎):

#define W25QXX_WRITE_ENABLE 0x06 #define W25QXX_WRITE_DISABLE 0x04 #define W25QXX_READ_STATUS_REG1 0x05 #define W25QXX_READ_STATUS_REG2 0x35 #define W25QXX_READ_STATUS_REG3 0x15 #define W25QXX_WRITE_STATUS_REG1 0x01 #define W25QXX_WRITE_STATUS_REG2 0x31 #define W25QXX_WRITE_STATUS_REG3 0x11 #define W25QXX_READ_DATA 0x03 #define W25QXX_FAST_READ_DATA 0x0B #define W25QXX_FAST_READ_DUAL 0x3B #define W25QXX_PAGE_PROGRAM 0x02 #define W25QXX_BLOCK_ERASE 0xD8 #define W25QXX_SECTOR_ERASE 0x20 #define W25QXX_CHIP_ERASE 0xC7 #define W25QXX_DEVICEID 0xAB #define W25QXX_MANUFACT_DEVICEID 0x90 #define W25QXX_JEDEC_DEVICEID 0x9F #define W25QXX_EABLE_4BYTE_ADDR 0xB7 #define W25QXX_EXIT_4BYTE_ADDR 0xE9 #define W25QXX_SET_READ_PARAM 0xC0 #define W25QXX_ENTER_QPIMODE 0x38 #define W25QXX_EXIT_QPIMODE 0xFFuint8_t w25qxx_qpi_mode = 0; // QSPI模式標志:0,SPI模式;1,QPI模式.// 讀取W25QXX的狀態寄存器,W25QXX一共有3個狀態寄存器 // 狀態寄存器1: // BIT7 6 5 4 3 2 1 0 // SPR RV TB BP2 BP1 BP0 WEL BUSY // SPR:默認0,狀態寄存器保護位,配合WP使用 // TB,BP2,BP1,BP0:FLASH區域寫保護設置 // WEL:寫使能鎖定 // BUSY:忙標記位(1,忙;0,空閑) // 默認:0x00 // 狀態寄存器2: // BIT7 6 5 4 3 2 1 0 // SUS CMP LB3 LB2 LB1 (R) QE SRP1 // 狀態寄存器3: // BIT7 6 5 4 3 2 1 0 // HOLD/RST DRV1 DRV0 (R) (R) WPS ADP ADS // reg:狀態寄存器號,范:1~3 // 返回值:狀態寄存器值 static uint8_t w25qxx_read_status(uint8_t reg) {uint8_t value = 0, command = 0;switch(reg){case 1:command = W25QXX_READ_STATUS_REG1; // 讀狀態寄存器1指令break;case 2:command = W25QXX_READ_STATUS_REG2; // 讀狀態寄存器2指令break;case 3:command = W25QXX_READ_STATUS_REG3; // 讀狀態寄存器3指令break;default:command = W25QXX_READ_STATUS_REG1;break;}if(w25qxx_qpi_mode){QSPISendCMD(command, 0, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_4_LINES); //QPI,寫command指令,地址為0,4線傳數據_8位地址_無地址_4線傳輸指令,無空周期,1個字節數據}else{QSPISendCMD(command, 0, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_1_LINE); //SPI,寫command指令,地址為0,單線傳數據_8位地址_無地址_單線傳輸指令,無空周期,1個字節數據}QSPIReceive(&value, 1);return value; }// 寫狀態寄存器 static void w25qxx_write_status(uint8_t reg, uint8_t status) {uint8_t command = 0;switch(reg){case 1:command = W25QXX_WRITE_STATUS_REG1; //寫狀態寄存器1指令break;case 2:command = W25QXX_WRITE_STATUS_REG2; //寫狀態寄存器2指令break;case 3:command = W25QXX_WRITE_STATUS_REG3; //寫狀態寄存器3指令break;default:command = W25QXX_WRITE_STATUS_REG1;break;}if(w25qxx_qpi_mode){QSPISendCMD(command, 0, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_4_LINES); // QPI,寫command指令,地址為0,4線傳數據_8位地址_無地址_4線傳輸指令,無空周期,1個字節數據}else{QSPISendCMD(command, 0, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_1_LINE); // SPI,寫command指令,地址為0,單線傳數據_8位地址_無地址_單線傳輸指令,無空周期,1個字節數據}QSPITransmit(&status, sizeof(status)); }// 寫使能 將S1寄存器的WEL置位 static void w25qxx_write_enable(void) {if(w25qxx_qpi_mode){QSPISendCMD(W25QXX_WRITE_ENABLE, 0, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_NONE); // QPI,寫使能指令,地址為0,無數據_8位地址_無地址_4線傳輸指令,無空周期,0個字節數據}else{QSPISendCMD(W25QXX_WRITE_ENABLE, 0, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_NONE); // SPI,寫使能指令,地址為0,無數據_8位地址_無地址_單線傳輸指令,無空周期,0個字節數據} }// 寫失能 將WEL清零 void W25QXX_Write_Disable(void) {if(w25qxx_qpi_mode){QSPISendCMD(W25QXX_WRITE_DISABLE, 0, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_NONE); // QPI,寫禁止指令,地址為0,無數據_8位地址_無地址_4線傳輸指令,無空周期,0個字節數據}else{QSPISendCMD(W25QXX_WRITE_DISABLE, 0, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_NONE); // SPI,寫禁止指令,地址為0,無數據_8位地址_無地址_單線傳輸指令,無空周期,0個字節數據} }// 等待空閑 void w25qxx_wait_busy(void) {while((w25qxx_read_status(1) & 0x01) == 0x01); // 等待BUSY位清空 }// W25QXX進入QSPI模式 static void w25qxx_qspi_init(void) {uint8_t reg2;reg2 = w25qxx_read_status(2); // 先讀出狀態寄存器2的原始值if((reg2 & 0X02) == 0) // QE位未使能{w25qxx_write_enable(); // 寫使能reg2 |= 1 << 1; // 使能QE位w25qxx_write_status(2, reg2); // 寫狀態寄存器2}QSPISendCMD(W25QXX_ENTER_QPIMODE, 0, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_NONE); // 寫command指令,地址為0,無數據_8位地址_無地址_單線傳輸指令,無空周期,0個字節數據w25qxx_qpi_mode = 1; // 標記QSPI模式 }// 0XEF13,表示芯片型號為W25Q80 // 0XEF14,表示芯片型號為W25Q16 // 0XEF15,表示芯片型號為W25Q32 // 0XEF16,表示芯片型號為W25Q64 // 0XEF17,表示芯片型號為W25Q128 // 0XEF18,表示芯片型號為W25Q256 static void w25qxx_id_get(void) {uint8_t temp[2];uint16_t device_id;if(w25qxx_qpi_mode){QSPISendCMD(W25QXX_MANUFACT_DEVICEID, 0, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_4_LINES, QSPI_ADDRESS_24_BITS, QSPI_DATA_4_LINES); // QPI,讀id,地址為0,4線傳輸數據_24位地址_4線傳輸地址_4線傳輸指令,無空周期,2個字節數據}else{QSPISendCMD(W25QXX_MANUFACT_DEVICEID, 0, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_1_LINE, QSPI_ADDRESS_24_BITS, QSPI_DATA_1_LINE); // SPI,讀id,地址為0,單線傳輸數據_24位地址_單線傳輸地址_單線傳輸指令,無空周期,2個字節數據}QSPIReceive(temp, 2);device_id = (temp[0] << 8) | temp[1];printf("QSPI Flash Device ID: %X\r\n", device_id); }void W25QXXInit(void) {uint8_t temp;QSPIInit();w25qxx_qspi_init(); // 使能QSPI模式w25qxx_id_get(); // 讀取FLASH ID.temp = w25qxx_read_status(3); // 讀取狀態寄存器3,判斷地址模式if((temp & 0X01) == 0) // 如果不是4字節地址模式,則進入4字節地址模式{w25qxx_write_enable(); // 寫使能QSPISendCMD(W25QXX_EABLE_4BYTE_ADDR, 0, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_NONE); // QPI,使能4字節地址指令,地址為0,無數據_8位地址_無地址_4線傳輸指令,無空周期,0個字節數據}w25qxx_write_enable(); // 寫使能QSPISendCMD(W25QXX_SET_READ_PARAM, 0, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_4_LINES); // QPI,設置讀參數指令,地址為0,4線傳數據_8位地址_無地址_4線傳輸指令,無空周期,1個字節數據temp = 3 << 4; // 設置P4&P5=11,8個dummy clocks,104MQSPITransmit(&temp, 1); }// 擦除一塊4096字節 最少需要150ms void W25QXXSectorErase(uint32_t addr) {//addr /= 4096;addr *= 4096;w25qxx_write_enable();w25qxx_wait_busy();QSPISendCMD(W25QXX_SECTOR_ERASE, addr, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_4_LINES, QSPI_ADDRESS_32_BITS, QSPI_DATA_NONE); // QPI,寫扇區擦除指令,地址為0,無數據_32位地址_4線傳輸地址_4線傳輸指令,無空周期,0個字節數據w25qxx_wait_busy(); }// 擦除整個芯片 void W25QXXChipErase(void) {w25qxx_write_enable(); //SET WELw25qxx_wait_busy();QSPISendCMD(W25QXX_CHIP_ERASE, 0, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_NONE); // QPI,寫全片擦除指令,地址為0,無數據_8位地址_無地址_4線傳輸指令,無空周期,0個字節數據w25qxx_wait_busy(); //等待芯片擦除結束 }// 寫最多256字節 void W25QXXWritePage(uint32_t addr, uint8_t *buffer, uint16_t length) {w25qxx_write_enable(); //寫使能QSPISendCMD(W25QXX_PAGE_PROGRAM, addr, 0, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_4_LINES, QSPI_ADDRESS_32_BITS, QSPI_DATA_4_LINES); // QPI,頁寫指令,地址為WriteAddr,4線傳輸數據_32位地址_4線傳輸地址_4線傳輸指令,無空周期,NumByteToWrite個數據QSPITransmit(buffer, length);w25qxx_wait_busy(); //等待寫入結束 }// 寫最多65536字節 無擦除動作 void W25QXXWriteExt(uint32_t addr, uint8_t *buffer, uint16_t length) {uint16_t pageremain = 256 - addr % 256; // 單頁剩余的字節數if(addr + length - 1 > (32 * 1024 * 1024)){return;}if(length <= pageremain){pageremain = length; // 不大于256個字節}while(1){// 分頁寫入W25QXXWritePage(addr, buffer, pageremain);if(length == pageremain){break; //寫入結束了}else{buffer += pageremain;addr += pageremain;length -= pageremain; // 減去已經寫入了的字節數if(length > 256){pageremain = 256; // 一次可以寫入256個字節}else{pageremain = length; // 不夠256個字節了}}} }// 寫最多65536字節 帶擦除動作 static uint8_t W25QXX_BUFFER[4096]; void W25QXXWrite(uint32_t addr, uint8_t* buffer, uint16_t length) {uint32_t secpos;uint16_t secoff, secremain, i;uint8_t * w25q_buf;w25q_buf = W25QXX_BUFFER;secpos = addr / 4096; // 扇區地址secoff = addr % 4096; // 在扇區內的偏移secremain = 4096 - secoff; // 扇區剩余空間大小if(length <= secremain){secremain = length; // 不大于4096個字節}while(1){WatchdogFeed();W25QXXRead(secpos * 4096, w25q_buf, 4096); // 讀出整個扇區的內容for(i = 0; i < secremain; ++i){if(w25q_buf[secoff + i] != 0XFF){break; // 需要擦除}}if(i < secremain) // 需要擦除{W25QXXSectorErase(secpos); // 擦除這個扇區for(i = 0; i < secremain; ++i){w25q_buf[i + secoff] = buffer[i];}W25QXXWriteExt(secpos * 4096, w25q_buf, 4096); // 寫入整個扇區}else{W25QXXWriteExt(addr, buffer, secremain); // 寫已經擦除了的,直接寫入扇區剩余區間.}if(length == secremain){break;}else{secpos++;secoff = 0;buffer += secremain;addr += secremain;length -= secremain;if(length > 4096){secremain = 4096;}else{secremain = length;}}}; }// 讀取SPI FLASH,僅支持QPI模式 在指定地址開始讀取指定長度的數據 65536 void W25QXXRead(uint32_t addr, uint8_t *buffer, uint16_t length) {QSPISendCMD(W25QXX_FAST_READ_DATA, addr, 8, QSPI_INSTRUCTION_4_LINES, QSPI_ADDRESS_4_LINES, QSPI_ADDRESS_32_BITS, QSPI_DATA_4_LINES); // QPI,快速讀數據,地址為ReadAddr,4線傳輸數據_32位地址_4線傳輸地址_4線傳輸指令,8空周期,length個數據QSPIReceive(buffer, length); }

也可以使用SPI操作W25QXX。

?

?

?

?

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的STM32F7xx —— QSPI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

精品v亚洲v欧美v高清v | 久久99国产精品久久99 | 91av视频| 国产日韩视频在线 | 在线观看视频在线 | 久久专区| 亚洲一区二区三区miaa149 | 日日干精品 | 国产麻豆果冻传媒在线观看 | 天天插日日插 | 一区久久久 | 麻豆成人精品视频 | 日本爱爱免费 | 麻豆国产在线视频 | 91成年视频| 久久五月天色综合 | 中文国产成人精品久久一 | 日韩在观看线 | 日日射av| 久久成人国产精品免费软件 | 在线观看精品 | 天天操操操操操操 | 奇米四色影狠狠爱7777 | 91在线观看高清 | 国产精品视频永久免费播放 | 久久婷婷网 | 免费在线观看av网址 | 日韩精品免费在线 | 国产亚洲精品久久久久久无几年桃 | 97视频人人| 成人av片免费观看app下载 | 久久手机视频 | 免费在线观看av不卡 | 成年人视频免费在线播放 | 久久久久综合精品福利啪啪 | 一级黄色片在线免费观看 | 国产精品毛片一区二区在线看 | 国产精品久久久久久婷婷天堂 | 97色视频在线| 免费一级片视频 | 中文字幕日本在线 | 欧美一区二区精品在线 | 久久久久久久久久网 | 在线a视频免费观看 | 亚洲欧洲在线视频 | 成人av电影在线观看 | 亚洲国产精品久久 | 中文字幕亚洲国产 | 中文字幕精品一区久久久久 | 久久国产成人午夜av影院宅 | 国产精品21区 | 日本精品一二区 | 911香蕉视频 | 婷婷丁香七月 | 91污在线| 色网av| 超碰在线人人爱 | 四虎最新入口 | 国产午夜在线观看视频 | 91成人免费视频 | 久久久精品高清 | www黄在线 | 国产美腿白丝袜足在线av | 天天射成人| 日韩夜夜爽 | 二区在线播放 | 在线视频观看国产 | 国内精品久久久久久久久久久 | 国产一二区在线观看 | 中文字幕日本在线 | 亚洲精品9 | 久久国产精品久久精品国产演员表 | 五月开心六月伊人色婷婷 | 在线播放精品一区二区三区 | 国产亚洲精品日韩在线tv黄 | 国产在线中文字幕 | 人人干在线观看 | 免费三级网 | 激情在线免费视频 | 又黄又爽的免费高潮视频 | 亚洲综合激情 | 激情综合亚洲 | 日本中文字幕一二区观 | 国产免费又爽又刺激在线观看 | 91精品国产入口 | 久久丁香 | 在线观看中文字幕视频 | 最新国产中文字幕 | 天天爽夜夜爽精品视频婷婷 | 免费一级片在线 | 伊人黄色网 | 五月婷网站 | 国产精品福利视频 | 青草视频在线免费 | 国产一区91 | 亚洲视频一区二区三区在线观看 | 亚洲热久久 | www.狠狠色.com | 一级黄色片在线免费看 | 午夜在线资源 | 国产 一区二区三区 在线 | 国产麻豆视频在线观看 | 中文字幕在线视频免费播放 | 缴情综合网五月天 | 久久国产精品第一页 | 久久久久国产精品一区二区 | 日韩有码中文字幕在线 | 97av在线| 久久久久久久网 | 正在播放 久久 | 在线视频a | 在线视频18在线视频4k | 国产精品一区专区欧美日韩 | 四虎成人精品永久免费av九九 | 中文字幕999 | 99久久99热这里只有精品 | 国产精品99久久久精品 | 欧美一区视频 | 免费看一级特黄a大片 | 亚洲综合五月 | 亚洲精品乱码白浆高清久久久久久 | 日韩大片在线免费观看 | 视频福利在线 | 98精品国产自产在线观看 | 看黄色.com| 一区二区三区四区五区在线 | 久久久久福利视频 | 天天操天天干天天操天天干 | 日韩va在线观看 | 久久免费成人精品视频 | av福利网址导航 | 三上悠亚在线免费 | 97在线看| 久久久2o19精品 | 欧美性生活久久 | 丁香资源影视免费观看 | 91在线视频一区 | 国产精品区免费视频 | 国产精品久久久久久五月尺 | 在线视频 你懂得 | 精品国产一区二区三区久久久久久 | 日本美女xx | 久久久久久久久久亚洲精品 | 国产一卡二卡在线 | 国产日韩中文字幕在线 | 亚洲精品字幕 | 一级理论片在线观看 | 四虎伊人| 国产精品久久久久一区 | 草久久久久 | 欧美最猛性xxxxx免费 | 四虎成人免费观看 | 欧美做受高潮1 | 午夜久久 | 国产99久久久国产精品免费二区 | 国产精品久久久久久久久蜜臀 | 久久免费视频5 | 免费观看午夜视频 | 久久综合九九 | 91精品在线麻豆 | 不卡国产在线 | 成人免费观看视频网站 | 欧美黄色免费 | 中文在线字幕观看电影 | 碰超在线观看 | 欧美激情视频一二区 | 国内精品久久久久久久影视麻豆 | av高清影院 | www.五月天色| 精品黄色在线观看 | 一区二区电影网 | 深夜国产福利 | 午夜精品久久久久 | 日韩在线精品视频 | 色婷婷亚洲 | 日韩精品视频在线观看免费 | 99久免费精品视频在线观看 | 久久精品国产精品亚洲 | 久久草在线免费 | 四虎影视欧美 | 午夜免费视频网站 | 亚洲在线看 | 国产一区电影在线观看 | 亚洲精品午夜视频 | 国产精品久久片 | 黄色日批网站 | 五月亚洲 | 99热这里有 | 午夜精品成人一区二区三区 | 免费观看成年人视频 | 97av免费视频 | 中文字幕资源在线观看 | 国产裸体视频网站 | 黄色小网站在线观看 | 色婷婷一| 日韩黄色免费电影 | 国产精品剧情 | 亚洲国产精品va在线看黑人 | 免费在线电影网址大全 | 国产精品乱码一区二三区 | 在线视频免费观看 | 天天干天天拍天天操天天拍 | 亚洲va韩国va欧美va精四季 | 五月婷婷丁香六月 | 精品国产免费一区二区三区五区 | 天堂av免费 | 天天插天天狠 | 亚洲涩涩色 | 日韩影片在线观看 | 欧洲亚洲女同hd | 国产精品久久嫩一区二区免费 | 欧美日产在线观看 | 天天操比 | 色噜噜狠狠色综合中国 | 日韩一区二区三区高清在线观看 | 超碰公开在线观看 | 欧美日韩精品二区第二页 | 三级视频片| 亚洲一区二区视频在线 | av在线a| 国产91免费看 | 一区二区三区 亚洲 | 天天干人人干 | 免费国产黄线在线观看视频 | 三级动图 | 国产高清不卡一区二区三区 | 黄色影院在线免费观看 | 婷婷激情五月 | 91成人精品一区在线播放69 | 久久99久久久久久 | 国产精品人人做人人爽人人添 | 精品网站999www | 黄色大片入口 | 精品国产欧美一区二区三区不卡 | 一级α片 | 欧美日本在线视频 | 午夜三级影院 | 正在播放亚洲精品 | 成年人免费在线观看 | 狠狠色噜噜狠狠狠合久 | 亚洲天堂网站视频 | 国产 日韩 欧美 自拍 | 婷婷激情在线 | 国产亚洲精品久久19p | 国产看片网站 | 激情影院在线观看 | 国产一级片视频 | 在线韩国电影免费观影完整版 | 婷婷色综合色 | 欧美不卡视频在线 | 91麻豆看国产在线紧急地址 | 免费视频成人 | 91精品电影 | 日韩高清一二区 | 久久精品一区八戒影视 | 韩国av一区 | av黄色影院 | 8x成人免费视频 | 亚洲精品www久久久久久 | 日韩精品一区二区三区三炮视频 | 成人中文字幕+乱码+中文字幕 | 五月婷在线观看 | 国产不卡免费av | 国产成人精品女人久久久 | 免费av免费观看 | 性色视频在线 | 日韩高清dvd | 久久久久久久久影视 | www久久国产 | 日韩免费视频一区二区 | 成人三级av | 国产99久久精品 | 国产精品粉嫩 | 麻豆传媒视频在线免费观看 | 日本久久精| 人人澡超碰碰97碰碰碰软件 | 手机在线看片日韩 | 国产伦精品一区二区三区高清 | 久艹在线观看视频 | 天天天综合| 成人免费在线视频观看 | 久久久久国产一区二区三区 | 天天爽天天爽 | 91精品国产乱码 | 射射射av | 日本中文不卡 | 国产国语在线 | 国产99一区 | 免费视频 你懂的 | 一区二区三区日韩视频在线观看 | 亚洲另类视频在线观看 | 欧美日韩国产一区二区三区 | 久草在在线视频 | 中文区中文字幕免费看 | 久久国产精品99精国产 | 91免费高清观看 | 日韩三级.com | 国产高清在线免费视频 | 狠狠干五月天 | 久国产在线播放 | 最近中文字幕mv免费高清在线 | 婷婷5月色| 久久精品看片 | 99自拍视频在线观看 | 最近中文字幕免费大全 | 国产黄在线 | 国产精品视频不卡 | 久久99热国产 | 国产精品久久久久久久99 | 成人一级影视 | 国产精品美女久久久久久网站 | 国产精品视频专区 | 99免费国产 | 九九热免费在线视频 | 婷婷中文在线 | 国产一级片观看 | 日韩av中文 | 四虎成人av | 成人久久18免费 | 精品日韩av| 国产精品久久久久久久久久ktv | 99精品久久久久久久久久综合 | 一区二区日韩av | www色片| 精品毛片久久久久久 | 精品国产福利在线 | 国产精品影音先锋 | 免费一级片在线观看 | 九九热视频在线免费观看 | 人人爱人人射 | 日本视频高清 | 欧美一区二视频在线免费观看 | 成人动漫一区二区 | 久久一级电影 | 黄色三几片 | 欧美日韩在线视频一区 | 欧美九九九 | 91av蜜桃| 午夜色性片 | 国产亚洲片| 亚洲男男gaygay无套同网址 | 97视频在线免费播放 | 免费网站在线观看人 | 成人午夜电影在线观看 | 99精品久久久久 | 亚洲va在线va天堂va偷拍 | 丁香综合av | 精品一区二区电影 | 人人干狠狠操 | 精品国产伦一区二区三区观看说明 | 久久久久久福利 | 色婷婷导航 | 激情大尺度视频 | 久久久亚洲国产精品麻豆综合天堂 | 亚洲精品永久免费视频 | 国产日韩亚洲 | 在线观看视频99 | 免费人人干 | 国产精品videossex国产高清 | 九九色网| 久久电影国产免费久久电影 | 国产精品国产三级在线专区 | 国产在线一线 | 国产麻豆电影 | 日本在线中文在线 | 在线小视频| 国产一区二区高清视频 | 天天天天综合 | 亚洲黄色av网址 | 激情五月婷婷 | 久久在草 | 99精品欧美一区二区蜜桃免费 | 香蕉久久久久久av成人 | 91高清完整版在线观看 | www.超碰97.com| 久久国产精品网站 | 天天插天天爱 | 国产91粉嫩白浆在线观看 | 区一区二区三在线观看 | 国产尤物在线视频 | 九九综合在线 | 国产精品久久精品国产 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久草免费在线视频 | 国产精品对白一区二区三区 | 久久久久久久久久免费视频 | 中文字幕一区二区三区四区 | 成人91av| 欧美日韩在线免费观看视频 | 日韩视频在线播放 | 色视频国产直接看 | 毛片一区二区 | 日韩欧美高清一区二区 | 97超碰国产精品女人人人爽 | 99久久精品免费视频 | 麻豆免费精品视频 | 九九久久婷婷 | 在线看国产精品 | 狠狠操91 | 国产专区欧美专区 | 天天夜夜亚洲 | 国产专区欧美专区 | 国产在线精品视频 | 久久国产精品免费 | 精品一区二区在线看 | 日本xxxx裸体xxxx17 | 日本中文字幕网址 | 久草9视频| 在线国产激情视频 | 日韩视频中文字幕 | 99综合影院在线 | 麻豆视频国产精品 | 久久精品伊人 | 亚洲视频h | 综合色中色 | 97av色| 日韩免费观看高清 | 免费视频久久久 | 色网站免费在线观看 | 国产麻豆剧传媒免费观看 | 99在线观看精品 | 五月综合婷| 天天插天天色 | 亚洲欧洲国产精品 | 日韩精品视频免费专区在线播放 | 精品国产成人在线影院 | 亚洲日本在线一区 | 天天射综合网视频 | 狠狠色狠狠色 | 中文字幕在线观看视频一区二区三区 | 五月天综合激情网 | 国产免费人成xvideos视频 | 日韩在线视频一区 | 国产精品99久久久久 | 成人小视频免费在线观看 | 成人av一级片 | 国产小视频在线看 | 亚洲无人区小视频 | 亚洲最大av在线播放 | 97热在线观看 | 成人综合婷婷国产精品久久免费 | 91精品久久久久久粉嫩 | 天天干天天摸 | 91精品视频观看 | 日韩成人一级大片 | 国产精品免费一区二区三区 | 91香蕉久久| 日本午夜在线亚洲.国产 | 国产拍在线 | 久爱精品在线 | 国产精品区二区三区日本 | 777视频在线观看 | 亚洲一区二区视频在线播放 | 国产精品亚洲视频 | 亚洲精品一区二区精华 | 国产精品入口麻豆 | 日韩精品首页 | 色偷偷人人澡久久超碰69 | 五月天婷婷在线视频 | 国产美女视频免费观看的网站 | 亚洲成人午夜av | 欧美日韩破处 | 在线观看的a站 | 国产成人av网址 | 99国内精品 | a天堂中文在线 | 黄色片视频在线观看 | 国产精品二区在线 | 婷久久 | 伊香蕉大综综综合久久啪 | 国产视频一级 | 2023av| 午夜国产一区二区三区四区 | h文在线观看免费 | 中文字幕黄网 | 欧美精品资源 | 亚洲国产经典视频 | 91人人射 | 色欲综合视频天天天 | 91色在线观看 | 91日韩精品| 久久精品成人欧美大片古装 | 日韩在观看线 | 国产日韩精品欧美 | 国产精品久久网站 | 99精品国产aⅴ | 欧洲高潮三级做爰 | 狠狠色2019综合网 | 九月婷婷人人澡人人添人人爽 | 嫩草av在线 | 色妞色视频一区二区三区四区 | 日韩在线观看视频一区二区三区 | 国产在线p | 日本久久精品 | 久久精品系列 | 日韩精品免费在线观看视频 | 亚洲成人网在线 | 久久人人干 | 国产精品国产三级国产专区53 | 91在线入口 | 成人黄色免费在线观看 | 99免费在线视频 | 亚洲精品乱码久久久久久写真 | 免费看的黄色小视频 | 亚洲天天综合网 | 国产精品免费视频一区二区 | 亚洲精品免费视频 | 久久久精品成人 | 国产精品91一区 | 色永久免费视频 | 182午夜在线观看 | 精品国产伦一区二区三区观看体验 | 在线观看爱爱视频 | 国产不卡在线 | 在线观看日本高清mv视频 | 亚洲天堂网在线视频观看 | 国产a精品| 免费不卡中文字幕视频 | 精品欧美小视频在线观看 | 91av视频播放 | 激情电影在线观看 | 成人久久免费 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 免费在线观看日韩欧美 | 亚洲成人第一区 | 国产91精品在线观看 | 日本性高潮视频 | 国产精品久久久久久久婷婷 | 99久久久久免费精品国产 | 国产中文字幕免费 | 国产亚洲精品久久久久久久久久久久 | 成年一级片 | 超碰97在线看 | 一本—道久久a久久精品蜜桃 | 人人看人人爱 | www.亚洲视频 | 国产亚洲va综合人人澡精品 | 最新99热 | 国产不卡在线 | 亚洲人成免费 | 久久久久久久av麻豆果冻 | 在线色网站| 97超碰.com| 成年人在线观看免费视频 | 亚洲精品在线观看视频 | 中文字幕在线免费观看 | 黄污污网站 | 国产午夜亚洲精品 | 日韩视频在线观看免费 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 久章草在线| 青青河边草观看完整版高清 | 日本黄色免费在线观看 | 国产在线视频导航 | 日韩精品大片 | 一区二区伦理电影 | 亚洲精品网站在线 | 日本黄色免费观看 | 日韩av有码在线 | 黄色av电影在线观看 | 成人免费毛片aaaaaa片 | 黄色高清视频在线观看 | 狠狠操夜夜操 | 西西人体4444www高清视频 | 日韩精品欧美专区 | 伊人狠狠操 | 黄免费网站 | 国产黄色片免费在线观看 | 黄色成人av网址 | 中文字幕国产一区二区 | 久久九九影视网 | 成人毛片一区二区三区 | 国产婷婷一区二区 | 久久1区 | 五月天激情综合网 | 91九色在线视频 | 欧美日韩免费一区 | 亚洲综合激情小说 | 亚洲极色 | 精品91久久久久 | 久久综合狠狠综合 | 99精品热视频只有精品10 | 国产91成人在在线播放 | 丁香六月国产 | 亚洲精品国产精品国 | 人人澡视频 | 国产精品成人一区二区三区 | 超碰人人射 | 国产精品久久久久四虎 | 国产精品对白一区二区三区 | 狠狠色丁香婷婷综合基地 | 久久久久国产一区二区三区 | 成人性生爱a∨ | 日韩高清成人在线 | 国产在线免费观看 | 免费情缘| 国产精品都在这里 | 中文字幕亚洲精品在线观看 | 日韩高清在线一区 | 日韩精品一区二区免费视频 | 欧美日韩国产色综合一二三四 | 成人va天堂 | 国产在线观看,日本 | 激情久久久久久久久久久久久久久久 | 成人免费在线看片 | 天天色综合1 | 久久麻豆精品 | 91网址在线看 | 超碰国产在线播放 | 911亚洲精品第一 | 国产韩国日本高清视频 | 日韩一级片网址 | 国产精品久久久久久欧美 | 国产91影院 | 色的网站在线观看 | 最新久久久 | 久久优| 欧美色精品天天在线观看视频 | 17videosex性欧美 | 最新极品jizzhd欧美 | 免费观看国产精品 | 欧美日韩破处 | 天天综合区 | 国产 中文 日韩 欧美 | 91探花系列在线播放 | 国产 成人 久久 | www.天天操.com | www天天操| 日日夜夜中文字幕 | 69亚洲精品 | 久久免费a | 中文字幕在线一区观看 | 免费在线观看av片 | 不卡的av电影在线观看 | 在线播放国产精品 | 日韩在线观看免费 | 五月婷网站 | 中文字幕av在线播放 | 久久国语露脸国产精品电影 | 天天鲁天天干天天射 | 99久久精品国产亚洲 | 最新色站 | 国产v在线观看 | 激情av在线播放 | 天天射天天舔天天干 | 色资源网免费观看视频 | 最近中文字幕第一页 | 99精品热视频只有精品10 | 91手机电影 | 欧美日韩中字 | 天天色天天上天天操 | 黄色免费av | 99精品视频在线看 | 免费十分钟 | 日韩艹| 欧美做受xxx| 久久久www成人免费毛片 | 97精品国产aⅴ | 免费污片 | 亚洲免费高清视频 | 狠狠狠狠狠狠狠 | 九色最新网址 | 免费观看性生活大片3 | 亚洲视频大全 | 久久社区视频 | 成人在线播放av | 精品福利国产 | 亚洲午夜精品久久久 | 特级毛片在线免费观看 | 免费久久片 | 日韩精品一区二区三区丰满 | 天天操天天插 | 亚洲日日射 | 特黄一级毛片 | av888.com| 亚洲欧美经典 | 久久99亚洲精品久久 | www.777奇米| 欧美a在线看 | 色网站中文字幕 | 精品国产日本 | 亚洲国产精品激情在线观看 | 国产一级高清 | 国产精品久久久久永久免费观看 | 亚洲国产片色 | 在线精品视频在线观看高清 | 国产高清专区 | 精品伊人久久久 | 欧美精品亚州精品 | 91精品久久久久久久久 | 超碰人人射| 久久亚洲成人网 | 激情开心网站 | 欧美日韩有码 | 国产福利在线不卡 | 日韩色视频在线观看 | 亚洲欧美激情精品一区二区 | 久久亚洲专区 | 人人爽人人干 | 91成人精品国产刺激国语对白 | 久久久久久久久毛片 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 日韩一级理论片 | 波多野结依在线观看 | 国产高清视频色在线www | 在线电影日韩 | 69国产精品视频免费观看 | 久久久亚洲精品 | 国产成人一区二区三区电影 | 8x成人在线 | 中文字幕在线日 | 欧美91视频| 久久av网| 99麻豆视频 | 免费h视频 | 婷婷九九 | 午夜精品福利一区二区三区蜜桃 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 国产精品自产拍在线观看桃花 | 91干干干 | 91精品久久久久久久99蜜桃 | 欧美日韩一区二区三区视频 | 日韩毛片一区 | 韩国三级在线一区 | 九草视频在线观看 | 久久久激情网 | 中文在线a天堂 | 久久久久97国产 | 欧美激情在线网站 | 探花国产在线 | 色婷婷九月 | 国产黄色精品在线 | 久久久久久久久网站 | 欧美少妇影院 | 成人一级视频在线观看 | 亚洲成a人片在线观看网站口工 | 日本中文字幕电影在线免费观看 | 91精品久久久久久综合五月天 | 免费看片成人 | 亚洲无毛专区 | 国产黄色精品在线 | 天天射天天拍 | 婷婷久草 | 91九色综合 | 中文字幕av播放 | 人人爱人人做人人爽 | 日韩有码中文字幕在线 | 色综合久久久久网 | 日韩网站免费观看 | 亚洲精品国产成人 | 国产精品久久久久久久久免费看 | 美女网站久久 | 久久久福利视频 | 午夜精品久久久久久久99婷婷 | 四虎国产精品成人免费4hu | 日韩精品在线观看视频 | 9999精品视频 | 亚洲成av人片在线观看 | 国产精品亚洲片在线播放 | 色夜视频 | 日韩激情视频在线 | 中文字幕一区二区三区视频 | 国产亚洲精品综合一区91 | 中文字幕第一页在线播放 | av手机版 | 精品久久久久久久久久岛国gif | 99综合视频 | 在线播放 日韩专区 | 欧美一区二区在线刺激视频 | 亚洲在线 | 日本最大色倩网站www | 久草视频在 | 综合在线亚洲 | 日韩在线精品一区 | 天天操夜操视频 | 欧美大片aaa | 欧美一区二区三区免费看 | 黄色在线免费观看网址 | 欧美影片 | 久久久久久久久久电影 | 久草爱 | 国产字幕av | 97超碰精品 | 九七视频在线 | 亚洲欧美日韩不卡 | 97精品伊人 | 欧美性色黄大片在线观看 | 久久不见久久见免费影院 | 日本黄色免费在线观看 | 亚洲欧洲国产视频 | 一区二区三区中文字幕在线观看 | 91精品一区二区三区久久久久久 | 久操视频在线 | 五月综合在线观看 | 免费看一级片 | 欧美日韩国产色综合一二三四 | 国产精品第二页 | 亚洲精品玖玖玖av在线看 | 久久久精品电影 | 久久久高清 | av三级在线免费观看 | 开心色停停 | 日韩视频二区 | 97视频在线观看成人 | 久久国产网站 | 亚洲高清免费在线 | 4438全国亚洲精品观看视频 | 三级动态视频在线观看 | 日韩精品观看 | 在线观看亚洲视频 | 欧美日在线 | 国产黄色一级片在线 | 日韩黄色一级电影 | 免费看的视频 | 欧美日韩裸体免费视频 | 97av超碰| av免费在线网 | 久久久黄视频 | 亚洲欧洲精品一区二区 | 亚洲综合一区二区精品导航 | 国产999视频 | www.com久久久 | 天天色天天操综合 | 日韩一区二区三区免费视频 | 婷婷六月中文字幕 | 伊人天天狠天天添日日拍 | 色视频在线观看免费 | 久久系列| 97超视频 | 久久精品99国产精品酒店日本 | 成人av电影免费在线播放 | 中文字幕久久网 | 岛国av在线免费 | 丁香电影小说免费视频观看 | 久久艹艹 | 日韩av高清| 国产精品久久久久久一二三四五 | www.国产精品 | 亚洲免费视频观看 | 精品中文字幕在线 | 天天综合日日夜夜 | 在线观看成人福利 | 9在线观看免费高清完整版 玖玖爱免费视频 | 天天射天天干天天插 | 国产一级免费片 | 91一区在线观看 | 热久久电影| 午夜久久久影院 | 激情网五月天 | 精品一二三四五区 | 国产午夜精品一区 | 97成人免费视频 | 一二区电影 | 超碰人人在 | wwwav视频 | 正在播放国产一区二区 | 天天激情天天干 | 国产精品日韩高清 | 五月婷婷综合色拍 | 成人av亚洲 | 欧美做受69 | 国产成人精品亚洲日本在线观看 | 亚洲区精品视频 | 亚洲最新精品 | 日韩精品视频免费 | 国产中文字幕视频在线观看 | 五月天婷婷在线播放 | 日韩在线观看视频免费 | a天堂最新版中文在线地址 久久99久久精品国产 | 中文亚洲欧美日韩 | 九九综合九九综合 | 91精品视频免费在线观看 | 日韩精品一区二区三区中文字幕 | 8x成人免费视频 | 国产最新福利 | av免费电影网站 | 97超级碰碰碰视频在线观看 | 欧美特一级片 | 日韩av快播电影网 | 国产精品一区二区三区在线看 | 在线色亚洲 | 黄色软件网站在线观看 | 欧美日韩视频在线观看免费 | 久久国产高清 | 精品国产乱码一区二区三区在线 | 啪嗒啪嗒免费观看完整版 | 国产成人三级在线观看 | 亚洲视频观看 | 亚洲成人动漫在线观看 | 黄色美女免费网站 | 超碰电影在线观看 | 操操操综合| 高清av免费一区中文字幕 | 色综合天天综合在线视频 | 亚洲三区在线 | 国产精品丝袜 | 亚洲国内精品视频 | 在线视频亚洲 | 亚洲精品午夜一区人人爽 | 欧美大片大全 | 九九热在线免费观看 | 久久亚洲福利视频 | 日韩av进入 | 亚洲黄色三级 | 国产精品国产三级国产aⅴ入口 | 1区2区3区在线观看 三级动图 | 国内精品久久久久久久 | 精品免费久久久久久 | 黄色www| 97精品国产91久久久久久 | 一区二区三区在线不卡 | 亚洲精品网址在线观看 | 成 人 黄 色 免费播放 | 免费在线色电影 | 国产精品一区二区三区在线免费观看 | 五月综合婷 | 免费视频色 | 国产成人精品在线播放 | 91精品中文字幕 | 91手机视频| 少妇做爰k8经典 | 国产成人精品一区二区在线 | 久久伊人精品一区二区三区 | 国产亚洲一区二区在线观看 | 中文字幕亚洲精品日韩 | 亚洲成人av在线播放 | 麻花豆传媒mv在线观看 | 国产一级特黄毛片在线毛片 | 夜夜视频欧洲 | 国产精品a久久久久 | 日韩精品在线看 | 在线有码中文字幕 | 最近中文字幕大全 | 久久综合成人网 | 久久97久久97精品免视看 | 久久99免费 | 成人午夜电影在线观看 | 91在线免费视频观看 | 丁香五香天综合情 | www.五月天激情 | 中文在线最新版天堂 | 日本中文字幕网 | 中文字幕av一区二区三区四区 | 97精品在线视频 | 伊人手机在线 | 日韩aⅴ视频 | 成人一级在线 | 国产欧美高清 | 亚洲国产成人精品在线观看 | 国产色在线视频 | 国产尤物视频在线 | 日一日操一操 | 国产一级免费观看视频 | 欧美在线视频一区二区三区 | 久久久www免费电影网 | 欧美日韩xxxxx | 免费国产在线视频 | 91漂亮少妇露脸在线播放 | 91大片网站 | 免费网站在线观看成人 | 久久久久久久久久久国产精品 | 国产亚洲欧美精品久久久久久 | 亚洲欧洲日韩 | 在线视频一二区 | 日韩av午夜在线观看 | 日韩午夜小视频 | 天天草天天爽 | 色婷婷综合久久久中文字幕 | 亚洲女人天堂成人av在线 | 亚洲综合网站在线观看 | 久久精品这里精品 | 中文字幕av网站 | 奇米网777 | 午夜久操 | 久久视频6 | 亚洲激情视频在线 | 91女子私密保健养生少妇 | 视频福利在线观看 | 中文字幕亚洲综合久久五月天色无吗'' | 中文字幕一二 | 免费国产在线精品 | 黄www在线观看 | 久久综合干| 久久一及片| 99久久久国产精品美女 | 国产精品久久久久久久毛片 | 国产精品美女久久久久久久 | 在线看欧美 | 亚洲精品免费看 | 日韩一区二区免费视频 | 97色综合 | 在线成人小视频 | 免费的黄色的网站 | 肉色欧美久久久久久久免费看 | 久久艹艹 | 中文字幕一区二区在线观看 | 日韩精品2区 | 日韩精品免费一区二区 |