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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

stm32中spi可以随便接吗_STM32的SPI模式读写FLASH芯片全面讲解

發布時間:2023/12/8 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32中spi可以随便接吗_STM32的SPI模式读写FLASH芯片全面讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

例程完整代碼:

SPI協議簡介

SPI協議,即串行外圍設備接口,是一種告訴全雙工的通信總線,它被廣泛地使用在ADC,LCD等設備與MCU間通信的場合。

SPI信號線

SPI包含4條總線,分別為SS,SCK,MOSI,MISO.作用如下:

1) SS:片選信號線,當有多個SPI設備和MCU相連時,每個設備的這個片選信號線是與MCU單獨的引腳相連的,而其他的SCK,MOSI,MISO線則為多個設備并聯到相同的SPI總線上,當SS信號線為低電平時,片選有效,開始SPI通信.

2) SCK:時鐘信號線,由主通信設備產生,不同的設備支持的時鐘頻率不一樣.

3) MOSI:主設備輸出/從設備輸入引腳,主機的數據從這條信號線輸出,從機由這條信號線讀入數據,即這條線上的數據方向為從主機到從機.

4)MISO:主設備輸入/從設備輸出引腳,這條線上數據是從機到主機.

SPI模式

根據時鐘極性(CPOL)和時鐘相位(CPHA)配置的不同,分為4種SPI模式。

時鐘極性是指SPI通信設備處于空閑狀態時(也可以認為這是SPI通信開始時,即SS線為低電平),SCK信號線的電平信號。CPOL=0時,SCK在空閑狀態時為低電平,CPOL=1時則相反。

時鐘相位是指數據采樣的時刻,當CPHA=0時,MOSI或MISO數據線上的信號將會在SCK時鐘線的奇數邊沿被采樣。當CPHA=1時,數據線在SCK的偶數邊沿被采樣。

下面以CPHA=0為例講解SPI時序。

首先,由主機把片選信號NSS拉低,意為主機輸出。

在NSS被拉低的時刻,SCK分為兩種情況,若我們設置CPOL=0,則SCK時序在這時為低電平,若設置為CPOL=1,則SCK在這個時刻為高電平。

無論CPOL為0還是1,因為我們配置的時鐘相位CPHA=0,在采樣時刻的時序中我們可以看到,采樣時刻都是在SCK的奇數邊沿(注意奇數邊沿有時為下降沿,有時為上升沿)。

因此,MOSI和MISO數據線的有效信號在SCK的奇數邊沿保持不變,這個信號將會在SCK奇數邊沿時被采集,在非采樣時刻,MOSI和MISO的有效信號才發生切換。

對于CPHA=1的情況也類似,只是數據信號的采樣時刻為偶數邊沿。

注意:使用SPI協議通信時,主機和從機的時序要保持一致,即兩者都選擇相同的SPI模式。

STM32的SPI特性

STM32的小容量產品有一個SPI接口,中容量有兩個,而大容量則有3個,其特征如下:

* 單次傳輸可選擇為8位或16位。

* 時鐘極性(CPOL)和相位(CPHA)可編程設置。

* 數據順序的傳輸順序可進行編程選擇,MSB在前或LSB在前。

* 可出發中斷的專用發送和接收標志。

* 可以使DMA進行數據傳輸操作。

STM32的SPI架構分析

上圖所示為STM32的架構圖,可以看到,MISO數據線接收到的信號經移位寄存器處理后把數據轉移到接收緩沖區,然后這個數據就可以由軟件從接收緩沖區讀出了。

當要發送數據時,我們把數據寫入發送緩沖區,硬件將會把它用移位寄存器處理后輸出到MOSI數據線。

SCK的時鐘信號則由波特率發生器產生,我們可以通過波特率控制位(BR)來控制它輸出的波特率。

控制寄存器CR1掌控著主控制電路,STM32的SPI模塊的協議設置(時鐘極性,相位等)就由它來制定。而控制寄存器CR2則用于設置各種中斷使能。

最后為NSS引腳,這個引腳扮演著SPI協議中的SS片選信號線的角色,如果我們把NSS引腳配置為硬件自動控制,SPI模塊能夠自動判別它能否成為SPI的主機,或自動進入SPI從機模式。但實際上我們用的更多的是由軟件控制某些GPIO引腳單獨作為SS信號,這個GPIO引腳可以隨便選擇。

SPI接口讀取FLASH實例分析

本文章以STM32通過SPI讀寫FLASH的例程來逐步講解STM32的SPI配置及FLASH芯片的普遍驅動方式,盡量做到講解精細易懂。

本實驗使用STM32的SPI2,采用主模式,全雙工通信,通過查詢發送數據寄存器和接收數據寄存器狀態確保通信正常。操作的FLASH芯片型號為W25Q16。

SPI2與芯片引腳連接為:PB12--CS,PB14--SO,PB13--CLK,PB15--SI.

本試驗沒有使用中斷,采用輪詢標志位的方式來確保SPI正常通信。

本例程完整代碼地址:

https://pan.baidu.com/s/1_bQI2V0YToQe1GJlac0rFQ?pan.baidu.com

main文件:

配置好所需的庫文件之后,我們就從main函數開始

int main(void)

{

USART1_Config();

SPI_FLASH_Init()

DeviceID=SPI_FLASH_ReadDeviceID();

Delay(200);

FlashID=SPI_FLASH_ReadID();

printf(“\r\n FlashID is 0x%X, Manufacturer Device ID is 0x%X \r\n”,FlashID,DeviceID);

if(FlashID==sFLASH_ID)

{

printf("\r\n檢測到串行flash W25Q16\r\n");

SPI_FLASH_SectorErase(FLASH_SectorToErase);

SPI_FlASH_BufferWrite(Tx_Buffer, FLASH_WriteAddress , BufferSize );

printf("\r\n寫入的數據 :%s \r\n" , Tx_Buffer );

SPI_FLASH_BufferRead(Rx_Buffer,FLASH_ReadAddress, BufferSize );

printf("\r\n讀出的數據:%s \r\n" ,Rx_Buffer );

TransferStatus1=Buffercmp(Tx_Buffer, Rx_Buffer , BufferSize);

if(PASSED == TransferStatus1 )

{

printf("\r\n 測試成功 \r\n");

}

else

{

printf("\r\n 測試失敗 \r\n");

}

}

else

{

printf( "\r\n 獲取不到W25X16 ID \r\n" );

}

SPI_Flash_PowerDown();

while(1);

}

本實驗中,main函數調用的所有函數都是用戶函數:

1)調用USART1_Config()初始化串口。

2)調用SPI_FLASH_Init()初始化SPI模塊。

3)調用SPI_FLASH_ReadDeviceID()讀取Flash器件生產廠商的ID信息。

4)調用SPI_FLASH_ReadID()讀取器件的設備ID信息。

讀取器件的ID信息可以讓我們知道設備與主機是否能夠正常工作,也便于我們區分不同的器件。

5)若讀取得到的ID正確,則調用SPI_FLASH_SectorErase()把Flash的內容擦除,擦除后調用SPI_FLASH_BufferWrite()向FLASH寫入數據,然后再調用SPI_FLASH_BufferRead()從剛剛寫入的地址中讀出數據。最后調用Buffercmp()函數對寫入的數據與讀取的數據進行比較,若寫入的數據與讀出的數據相同,則把標志變量TransferStatus1賦值為PASSED。

6)最后調用SPI_FLASH_PowerDown()函數關閉Flash設備的電源,因為數據寫入到Flash后并不會因斷電而丟失,我們使用它時才重新開啟Flash電源。

接下來我們詳細分析main函數中調用的以上用戶函數是怎樣編寫的。

這里USART的配置不做說明,主要就是通過電腦串口打印實驗信息,跟這篇文章所涉及的主要內容不搭邊。

SPI初始化

SPI_FLASH_Init()函數初始化了SPI復用的GPIO引腳,啟動了GPIO及SPI1外設的時鐘,并初始化了SPI的模式。

void SPI_FLASH_Init()

{

SPI_InitTypeDef SPI_InitStructure;

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);

//PB13 SPI2-SCK

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

//PB14 SPI2-MISO

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14;

GPIO_Init(GPIOB,&GPIO_InitStructure);

//PB15 SPI2-MOSI

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15;

GPIO_Init(GPIOB,&GPIO_InitStructure);

//PB12 SPI2-CS

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(GPIOB,&GPIO_InitStructure);

SPI_FLASH_CS_HIGH();

//SPI2配置

SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;

SPI_InitStructure.SPI_Mode=SPI_Mode_Master;

SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;

SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;

SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;

SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_4;

SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;

SPI_InitStructure.SPI_CRCPolynomial=7;

SPI_Init(SPI2,&SPI_InitStructure);

SPI_Cmd(SPI2,ENABLE);

}

SPI_FLASH_Init()分為兩部分,一部分為GPIO的配置,一部分為SPI模式的配置。

這里GPIO的配置及為SPI2相應引腳根據數據手冊配置成相應模式即可。

對STM32的SPI初始化配置,是根據將要與之通信的Flash設備的SPI特性來制定的,初始化時,有如下相關結構體成員:

1)SPI_Mode:STM32的SPI設備可以工作于主機模式(SPI_Mode_Master)或從機模式(SPI_Mode_Slave),這兩個模式的最大區別為SPI的SCK信號線的時序,SCK的時序是由通信中的主機產生的。若被配置為從機模式,STM32的SPI模塊將接收外來的SCK信號。

2)SPI_DataSize:這個成員可以選擇SPI每次通信的數據大小為8位還是16位。從FLASH的數據手冊我們可以查到,本FLASH通信的數據幀大小為8位,STM32的SPI模塊設置要與之相同。

3)SPI_CPOL和SPI_CPHA:這兩個成員配置SPI的時鐘極性和時鐘相位,這兩個配置影響到SPI的通信模式,該設置要符合將要互相通信的設備的要求.CPOL分別可以取SPI_CPOL_High(SPI通信空閑時SCK為高電平)和SPI_CPOL_Low(SPI通信空閑時SCK為低電平)。CPHA則可以取SPI_CPHA_1Edge(在SCK的奇數邊沿采集數據)和SPI_CPHA_2Edge(在SCK的偶數邊沿采集數據)。

查閱FLASH的使用手冊,可以了解到這個FLASH支持以SPI的模式0和模式3通信。即在SPI空閑時,SCK為低電平,奇數邊沿采樣(模式0);也可以在SPI空閑時,SCK為高電平,偶數邊沿采樣(模式3),即無論CPOL的狀態是什么,Flash的數據采樣時刻為SCK的上升沿。

我們在本實驗中配置使用它的模式3,即把CPOL賦值為SPI_CPOL_High;CPHA賦值為SPI_CPHA_2Edge。

4)SPI_NSS:本成員配置NSS引腳的使用模式,可以選擇為硬件模式(SPI_NSS_Hard)與軟件模式(SPI_NSS_Soft),在硬件模式中的SPI片選信號由硬件自動產生,而軟件模式則需要我們親自把相應的GPIO端口拉高或拉低來產生非片選和片選信號。如果外界條件允許,硬件模式還會自動將STM32的SPI設置為主機。

5)SPI_BaudRatePrescaler:本成員設置波特率分頻值,分頻后的時鐘即為SPI的SCK信號線的時鐘頻率。

6)SPI_FirstBit:所有串行的通信協議都會有MSB(高位數據在前)還是LSB先行(低位數據在前)的問題,而STM32的SPI模塊可以通過這個結構體成員,對這個特性編程控制。據Flash的通信時序,我們向這個成員賦值為MSB先行(SPI_FirstBit_MSB).

7) SPI_CRCPolynomial:這是SPI的CRC校驗中的多項式,若我們使用CRC校驗時,就使用這個成員的參數(多項式)來計算CRC的值。由于本實驗的Flash不支持CRC校驗,所以我們向這個結構體成員賦值為7實際上是沒有意義的。

控制FLASH的命令

實際上,編寫設備的驅動都有一定的規律可循。

首先我們要確定設備使用的是什么通信協議。如EEPROM使用的是I2C協議。本章的Flash使用的是SPI,那么我們就根據它的通信協議,選擇好STM32的硬件模塊,并進行相應的I2C或SPI模塊初始化。

因為不同的設備都會相應的有不同的指令,如EEPROM中會把第一個數據解釋為存儲矩陣的地址(實質就是指令)。而FLASH則定義了更多的指令,有寫指令、讀指令、讀ID指令等。

對主機來說,這些指令只是它遵守最基本的通信協議發送出的數據。但設備把這些數據解釋為不同的意義(指令編碼),所以才成為指令。在我們配置好STM32的協議模塊后,想要控制設備,就要遵守相應設備所定義的命令規則。

綜上所述,驅動的編寫原理:確定通信協議模塊,通過協議收發命令、數據,進而驅動設備。

下圖為Flash的各種命令和命令解釋時序

指令表中的A0~A23指地址,M0~M7為器件的制造商ID,D0~D7為數據。

在命令列表中可以了解到讀取設備ID的命令(Device ID)編碼為ABh、dummy、dummy、dummy。表示此命令由這四個字節組成,其中dummy意為任意編碼,表示這些編碼可以發送任意數據。命令列表中帶括號的字節數據表示由Flash返回給主機的響應,可以看到Release Power down or HPM/DeviceID命令的第5個字節為從機返回的響應。(ID1-ID0)即返回設備的ID號。

讀Device指令時序的編程

下圖為讀Device指令的時序圖

以看到主機首先通過MOSI線(即Flash的DI線)發送第一個字節為ABh編碼,緊接著三個字節的dummy編碼(即3個字節的偽數據),然后Flash就忽略DI線上的信號,通過MISO線(即Flash的DO線)把它的Flash設備ID發送給主機。

了解了Device ID命令及其時序,我們分析SPI_FLASH_ReadDeviceID()函數來說明驅動編寫原理。

這個函數實現了讀取Flash的ID 的功能

u32 SPI_FLASH_ReadDeviceID(void)

{

u32 Temp=0;

SPI_FLASH_CS_LOW();

//發送4字節指令

SPI_FLASH_SendByte(W25X_DeviceID);

SPI_FLASH_SendByte(Dummy_Byte);

SPI_FLASH_SendByte(Dummy_Byte);

SPI_FLASH_SendByte(Dummy_Byte);

//讀取Flash返回的第5字節數據

Temp=SPI_FLASH_SendByte(Dummy_Byte);

SPI_FLASH_CS_HIGH();

return Temp;

}

這個函數的代碼流程嚴格遵從DeviceID命令的時序:

1)SPI_FLASH_CS_LOW(),拉低CS線,片選FLASH,以使能FLASH設備。

2)利用SPI_FLASH_SendByte()向Flash發送第一個命令字節編碼W25X_DeviceID,該宏展開后為0xAB.

3)根據指令表,發送完這個指令后,后面緊跟著三個字節的dummy byte,我們把Dummy_Byte宏定義為0xFF,實際上改成其它編碼都可以,無影響。

4)完整的命令在前面已經發送完畢,根據時序,在第5個字節,Flash通過DO端口輸出它的器件ID,我們調用函數SPI_FLASH_SendByte()接收返回的數據,并賦值給Temp變量。SPI_FLASH_ReadDeviceID()函數的返回值即為讀取得到的器件ID。

5)拉高片選信號,結束通信。

這就完成了讀FLASH的ID。在這個讀FlashID 函數中多次調用了一個相對底層的用戶函數,它實現了利用SPI發送和接收數據的功能:

u8 SPI_FLASH_SendByte(u8 byte)

{

while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);

SPI_I2S_SendData(SPI2,byte);

while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE)==RESET);

return SPI_I2S_ReceiveData(SPI2);

}

1)調用庫函數SPI_I2S_GetFlagStatus()等待發送寄存器清空。

2)發送數據寄存器準備好后,調用庫函數SPI_I2S_SendData()向從機發送數據。

3)調用庫函數SPI_I2S_GetFlagStatus()等待接收數據寄存器非空。

4)接收寄存器非空時,調用SPI_I2S_ReceiveData()獲取接收寄存器中的數據并作為函數的返回值,這個數據即由從機發回給主機的數據。

這是最底層的發送數據和接收數據的函數,利用庫函數的標識檢測確保通信正常。

讀取廠商ID

對于其他函數,編寫的方法是類似的,如讀取廠商ID 的函數SPI_FLASH_ReadID()。

u32 SPI_FLASH_ReadID(void)

{

u32 Temp=0,Temp0=0,Temp1=0,Temp2=0;

SPI_CS_LOW();

SPI_FLASH_SendByte(W25X_JedecDeviceID);

Temp0=SPI_FLASH_SendByte(Dummy_Byte);

Temp1=SPI_FLASH_SendByte(Dummy_Byte);

Temp2=SPI_FLASH_SendByte(Dummy_Byte);

Temp=(Temp0<<16)|(Temp1<<8)|Temp2;

return Temp;

}

這里的W25X_JedcDeviceID的宏定義為0x9F.

這個函數根據命令流程,發送一個字節的命令代碼(9F)后,從機就通過DO線返回廠商ID即0~16位的設備ID 。

FLASH芯片的讀寫以及擦除

1.扇區擦除

根據Flash的存儲原理,在寫入數據前要先對存儲區域進行擦除。

所以執行SPI_FLASH_SectorErase()函數對要寫入的扇區進行擦除,也稱為預寫。

void SPI_FLASH_SectorErase(u32 SectorAddr)

{

SPI_FLASH_WriteEnable();

SPI_FLASH_WaitForWriteEnd();

SPI_FLASH_CS_LOW();

SPI_FLASH_SendByte(W25X_SectorErase);

SPI_FLASH_SendByte((SectorAddr & 0xFF0000)>>16);

SPI_FLASH_SendByte((SectorAddr & 0xFF00)>>8);

SPI_FLASH_SendByte(SectorAddr & 0xFF);

SPI_FLASH_CS_HIGH();

SPI_FLASH_WaitForWriteEnd();

}

先忽略SPI_FLASH_WriteEnable()和SPI_FLASH_WaitForWriteEnd()函數。其余為純粹的關于FLASH擦除操作,扇區擦除命令時序如下圖:

其中第一個字節為扇區擦除命令編碼(20h),緊跟其后的為要進行擦除的24位起始地址。

根據Flash的說明,它把整個存儲矩陣分為塊區和扇區,每塊(Block)的大小為64KB,每個扇區(Sector)的大小為4KB,對存儲矩陣進行擦除時,最小的單位為扇區。

2.寫使能

根據Flash的讀寫要求,在進行寫入、扇區擦除、塊擦除、整片擦除及寫狀態寄存器前,都需要發送寫使能命令。

在SPI_FLASH_SectroErase()函數中我們調用了SPI_FLASH_WriteEnable(),具體實現如下:

void SPI_FLASH_WriteEnable(void)

{

SPI_FLASH_CS_LOW();

SPI_FLASH_SendByte(W25X_WriteEnable);

SPI_FLASH_CS_HIGH();

}

本函數比較簡單,就是根據寫使能命令的時序,發送寫使能命令write enable(06h)。

3.讀Flash狀態

在擦除函數SPI_FLASH_SectorErase()中,還調用了用戶函數SPI_FLASH_WaitForWriteEnd()來確保在Flash不忙碌的時候,才發送命令與數據。

這個函數通過讀取Flash的狀態寄存器來獲知它的工作狀態。

void SPI_FLASH_WaitForWriteEnd(void)

{

u8 FLASH_Status=0;

SPI_FLASH_CS_LOW();

SPI_FLASH_SendByte(W25X_ReadStatusReg);

do

{

FLASH_Status=SPI_FLASH_SendByte(Dummy_Byte);

}

while((FLASH_Status & WIP_Flag) == SET );

SPI_FLASH_CS_HIGH();

}

本函數實質是不斷檢測Flash狀態寄存器的Busy位,直到Flash的內部寫時序完成,從而確保下一通信操作正常,這里WIP_Flag宏定義為0x01。

主機通過發送讀狀態寄存器命令Read Status Register(05h),返回它的8位狀態寄存器值。

本函數檢測的就是狀態寄存器的Bit0位,即BUSY位。Flash在執行內部寫時序的時候,除了讀狀態寄存器的命令,其他一切命令都會忽略,并且BUSY位保持為1,即我們需要等待BUSY位為0的時候,再向FLASH發送其他指令。

4.向FLASH寫入數據

對Flash寫入數據,最小單位是256字節,廠商把這個單位稱為頁。

寫入時,一般也只有頁寫入的方式。

因而我們為了方便地把一個很長的數組寫入Flash中,一般需要進行轉換,把數組按頁分好,再寫入Flash中,如同I2C通信中對EEPROM的頁寫入一樣,只是頁的大小不同而已。

void SPI_FLASH_BufferWrite(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)

{

u8 NumOfPage=0,NumOfSingle=0,Addr=0,count=0,temp=0;

Addr=WriteAddr % SPI_FLASH_PageSize;

count=SPI_FLASH_PageSize-Addr;

NumOfPage=NumByteToWrite / SPI_FLASH_PageSize;

NumOfSingle=NumByteToWrite % SPI_FLASH_PageSize;

if (Addr == 0) /* WriteAddr is SPI_FLASH_PageSize aligned */

{

if (NumOfPage == 0) /* NumByteToWrite < SPI_FLASH_PageSize */

{

SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite);

}

else /* NumByteToWrite > SPI_FLASH_PageSize */

{

while (NumOfPage--)

{

SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize);

WriteAddr += SPI_FLASH_PageSize;

pBuffer += SPI_FLASH_PageSize;

}

SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle);

}

}

else /* WriteAddr is not SPI_FLASH_PageSize aligned */

{

if (NumOfPage == 0) /* NumByteToWrite < SPI_FLASH_PageSize */

{

if (NumOfSingle > count) /* (NumByteToWrite + WriteAddr) > SPI_FLASH_PageSize */

{

temp = NumOfSingle - count;

SPI_FLASH_PageWrite(pBuffer, WriteAddr, count);

WriteAddr += count;

pBuffer += count;

SPI_FLASH_PageWrite(pBuffer, WriteAddr, temp);

}

else

{

SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite);

}

}

else /* NumByteToWrite > SPI_FLASH_PageSize */

{

NumByteToWrite -= count;

NumOfPage = NumByteToWrite / SPI_FLASH_PageSize;

NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize;

SPI_FLASH_PageWrite(pBuffer, WriteAddr, count);

WriteAddr += count;

pBuffer += count;

while (NumOfPage--)

{

SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize);

WriteAddr += SPI_FLASH_PageSize;

pBuffer += SPI_FLASH_PageSize;

}

if (NumOfSingle != 0)

{

SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle);

}

}

}

}

在SPI_FLASH_BufferWrite()中,對數組進行分頁后,它調用了用戶函數SPI_FLASH_PageWrite來對數據進行頁寫入。

void SPI_FLASH_PageWrite(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)

{

SPI_FLASH_WriteEnable();

SPI_FLASH_CS_LOW();

//頁編程指令

SPI_FLASH_SendByte(W25X_PageProgram);

//發送高8位地址

SPI_FLASH_SendByte((WriteAddr&0xFF0000)>>16);

//發送中8位地址

SPI_FLASH_SendByte((WriteAddr&0xFF00)>>8);

//發送低8位地址

SPI_FLASH_SendByte(WriteAddr&0xFF);

if(NumByteToWrite>SPI_FLASH_PerWritePageSize)

{

NumByteToWrite=SPI_FLASH_PerWritePageSize;

}

while(NumByteToWrite--)

{

SPI_FLASH_SendByte(*pBuffer);

pBuffer++;

}

SPI_FLASH_CS_HIGH();

SPI_FLASH_WaitForWriteEnd();

}

頁寫入時序如下圖,發送完頁寫入指令PageProgram(02h)及地址后,可以連續寫入最多256字節數據,在發送完數據之后,我們調用SPI_FLASH_WaitForWriteEnd()等待Flash內部寫時序完成再退出函數。

5.從Flash讀取數據

對于讀取數據,發出一個命令后,可以無限制的把整個Flash的數據都讀取完,若認為讀取數據的數據量足夠了,可以拉高片選信號以表示讀取數據結束。

void SPI_FLASH_BufferRead(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead)

{

SPI_FLASH_CS_LOW();

SPI_FLASH_SendByte(W25X_ReadData);

SPI_FLASH_SendByte((ReadAddr&0xFF0000)>>16);

SPI_FLASH_SendByte((ReadAddr&0xFF00)>>8);

SPI_FLASH_SendByte(ReadAddr&0xFF);

while(NumByteToRead--)

{

*pBuffer=SPI_FLASH_SendByte(Dummy_Byte);

pBuffer++;

}

SPI_FLASH_CS_HIGH();

}

以上為讀數據的時序圖,SPI_FLASH_BufferRead()函數首先發送讀數據指令ReadData(03h)。

緊接著發送24位讀數據起始地址,STM32再通過DO線接收數據,并把他們使用指針的方式記錄起來。

總結

以上是生活随笔為你收集整理的stm32中spi可以随便接吗_STM32的SPI模式读写FLASH芯片全面讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

免费视频在线观看网站 | 91视频91自拍 | 在线91观看 | 日韩电影一区二区在线 | 欧美日韩中文国产 | 欧美日韩国产成人 | 在线免费观看视频一区二区三区 | 久久国产三级 | 欧美污污视频 | 国内精品久久久久影院一蜜桃 | 久久狠狠一本精品综合网 | 91精品国产自产在线观看永久 | 午夜性色 | 操操日日| 999热线在线观看 | 国模视频一区二区 | 青青草国产精品视频 | 免费午夜网站 | 精品96久久久久久中文字幕无 | 久精品视频免费观看2 | 国产自产高清不卡 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 大胆欧美gogo免费视频一二区 | 91人人人 | 国产在线a免费观看 | 激情久久伊人 | 日韩精品中字 | av中文字幕在线免费观看 | 天天草av | 伊色综合久久之综合久久 | 欧美日韩高清在线观看 | 欧美精品久久久久久久久老牛影院 | 综合久久久久久久久 | 国产原创在线视频 | 亚洲欧美日韩精品一区二区 | 国色天香在线观看 | 久久久精品国产免费观看一区二区 | 福利视频导航网址 | 国产一区成人 | 亚洲一区黄色 | 一区二三国产 | 视频二区在线 | 日韩欧美一区二区三区视频 | 一级黄网| 亚洲精品美女在线观看播放 | av在线影视 | 中文字幕色站 | 九九热在线精品视频 | 91看片淫黄大片一级在线观看 | 精品国产人成亚洲区 | 日韩欧美电影 | 久久久久国产一区二区三区四区 | 色婷婷国产 | 国产一区免费在线观看 | 日日摸日日添日日躁av | 国产手机免费视频 | 日韩精品最新在线观看 | 伊人五月天婷婷 | 成人免费在线观看av | 精品一区免费 | 奇米网777 | 日本黄色免费在线 | 亚洲黄网站 | 啪啪资源 | 国产黄色免费在线观看 | 亚洲春色综合另类校园电影 | 深爱激情av| 日本中文字幕在线免费观看 | 久草色在线观看 | 日日草视频 | 精品国产乱码久久久久久浪潮 | 三级av在线播放 | www.玖玖玖 | 午夜电影av | 天天综合网久久综合网 | 国产精品资源在线观看 | 狠狠躁夜夜躁人人爽视频 | 97日日碰人人模人人澡分享吧 | 国产99一区视频免费 | 国产一区91| 婷婷在线播放 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 青青草华人在线视频 | 久久另类小说 | 伊人久操| 亚洲专区在线 | 色婷婷视频在线 | 91丨九色丨蝌蚪丰满 | 欧美日韩一区二区视频在线观看 | 大胆欧美gogo免费视频一二区 | 日本不卡一区二区三区在线观看 | 欧美日韩高清一区二区 | 97人人精品| 少妇视频在线播放 | 久久久久久久免费 | 久久精品99国产 | 最近乱久中文字幕 | 欧美少妇xxx | 成人久久久久久久久久 | 国产精品欧美激情在线观看 | 亚洲国产欧美在线看片xxoo | 国产免费叼嘿网站免费 | 免费看国产一级片 | 在线观看精品一区 | 丁香av在线| 夜夜操狠狠操 | 亚洲免费国产视频 | 中文字幕在线一区二区三区 | 色999视频 | 久久综合在线 | 久久久伦理 | 蜜臀av一区二区 | 成年人在线观看免费视频 | 人人爽人人做 | 天天躁天天躁天天躁婷 | 91丨九色丨蝌蚪丨对白 | 一区二区伦理电影 | 欧美精品久久久久a | 色婷婷88av视频一二三区 | 成人免费在线播放 | 久久人人做 | 黄色毛片观看 | 911国产在线观看 | 99精品欧美一区二区三区 | 91免费视频网站在线观看 | 在线看片一区 | 九九免费在线视频 | 免费在线观看成人av | 一级片免费视频 | 欧美在线视频不卡 | 日韩一级网站 | 奇米影视777四色米奇影院 | 免费观看一级视频 | 国内精品久久天天躁人人爽 | 久久视频免费看 | 亚洲一区美女视频在线观看免费 | 国产精品免费小视频 | 99久久这里只有精品 | 国产精品毛片网 | 黄色精品久久 | 午夜精品久久久久久99热明星 | 国产最新精品视频 | 久久久久久久久久久久99 | 国产黄色大全 | 不卡国产视频 | 免费看毛片网站 | 激情久久综合网 | 免费网站黄 | www.精选视频.com | 亚洲精品www久久久 www国产精品com | 欧美日韩精品在线观看 | 成人免费网站视频 | 国产精品 美女 | www.xxx.性狂虐| 国产在线播放不卡 | 九九九热精品免费视频观看网站 | 日韩一区二区三区在线观看 | 午夜精品麻豆 | 天天视频亚洲 | 337p欧美| 色香蕉网 | 亚洲精品动漫成人3d无尽在线 | 日韩欧美精品在线观看视频 | 亚洲视频一区二区三区在线观看 | a久久久久 | 五月天六月婷婷 | 最新一区二区三区 | 亚洲精品三级 | 国产99视频在线观看 | 国产伦精品一区二区三区… | 丁香五香天综合情 | 欧美激情视频一区 | 国产精品美女网站 | a在线视频v视频 | 特级毛片在线免费观看 | a级一a一级在线观看 | 在线视频观看你懂的 | 日韩丝袜| 色婷婷视频在线观看 | 亚洲一区视频免费观看 | 狠狠干狠狠插 | 国产精品va最新国产精品视频 | 国产黄色av影视 | 在线中文字幕av观看 | 碰超人人 | 久久综合婷婷 | 黄色免费网战 | 在线观看不卡的av | 毛片美女网站 | 国产在线播放一区二区三区 | 天堂va欧美va亚洲va老司机 | 日本中文字幕在线一区 | 热久久视久久精品18亚洲精品 | 亚洲 欧美变态 另类 综合 | 久久成年人网站 | 三上悠亚一区二区在线观看 | 久草在线免费资源 | 天天久久夜夜 | 亚洲精品久久久久久久不卡四虎 | 黄色特一级片 | 黄色片网站av | 91成人免费 | 人人爽久久涩噜噜噜网站 | 欧美久久久久久久久中文字幕 | 免费一级日韩欧美性大片 | 国产视频18 | 婷婷色网视频在线播放 | 免费a视频在线 | 精品美女久久久久 | 色婷婷综合久久久 | 久久国产精品色婷婷 | 精品福利av | 中文字幕免费播放 | 久草在线99| 一区二区在线电影 | 麻豆视频国产精品 | 波多野结衣在线观看一区二区三区 | 精品国产99国产精品 | 免费一级片在线观看 | 在线观看黄色小视频 | av大全在线 | 国产一区二区电影在线观看 | 中文字幕资源网 国产 | 国产69精品久久久久9999apgf | 精品你懂的 | 成人在线免费观看网站 | 四季av综合网站 | 日韩精品91偷拍在线观看 | 成年人毛片在线观看 | 四虎国产精品成人免费影视 | 国产精品女同一区二区三区久久夜 | 欧美a级成人淫片免费看 | 欧美日韩破处 | 91视频免费国产 | 国产视频综合在线 | 亚洲国产97在线精品一区 | 中文字幕在线播放日韩 | 福利一区二区三区四区 | 国产激情小视频在线观看 | 黄色在线免费观看网站 | 中文字幕在线观看完整版电影 | 久久免费激情视频 | 最新中文字幕在线资源 | 久久av伊人 | 欧美另类激情 | 激情av网址| www.eeuss影院av撸 | 高清在线一区 | 操操操日日日干干干 | 婷婷色六月天 | 午夜电影一区 | 91麻豆精品国产自产 | 午夜精品一二区 | 热热热热热色 | 国产欧美中文字幕 | 婷婷香蕉 | 国产在线播放一区二区 | 18pao国产成视频永久免费 | 色妞色视频一区二区三区四区 | 国产午夜精品一区二区三区在线观看 | 在线视频免费观看 | 久久亚洲免费 | 久久成人精品视频 | 国产精品嫩草在线 | 久久久精品国产免费观看同学 | 国产精品久久久久久久久免费看 | 久久精品视频在线观看 | 国产精品久久久久影视 | 玖玖玖在线观看 | 欧美性生爱 | 久久狠狠一本精品综合网 | 国产在线看一区 | 天天天天色综合 | 黄网站免费看 | 亚洲三级在线免费观看 | 91在线视频观看 | 在线国产一区 | 麻花传媒mv免费观看 | 成人动漫精品一区二区 | 日韩欧美高清不卡 | 精品一区二区在线看 | 色欧美视频 | 久久免费观看少妇a级毛片 久久久久成人免费 | 免费观看国产精品视频 | 国产一区二区在线观看视频 | 久久精品高清 | 天天天干天天射天天天操 | 亚洲国产精品激情在线观看 | 中午字幕在线 | 日韩高清不卡在线 | 久久免费视频网 | 美女免费电影 | 丁香激情综合久久伊人久久 | 婷婷午夜激情 | 亚洲精品视频网站在线观看 | 色视频网站免费观看 | 日韩精品不卡在线观看 | 色婷婷电影 | 视频 国产区 | 四虎免费在线观看视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 欧美精品一二三 | 国产一级在线观看视频 | 少妇激情久久 | 国内精品久久久 | 日韩欧美精品一区 | 亚洲午夜小视频 | 亚洲资源在线 | 中文字幕免费不卡视频 | 免费观看一级视频 | 免费高清看电视网站 | av网址最新 | av资源在线观看 | 午夜精品一区二区三区视频免费看 | 91亚洲网| 欧美一级电影免费观看 | 99久久久久成人国产免费 | 97超碰资源站 | 国产一级免费片 | 日韩免费看片 | 国产一区二区在线免费观看 | 日本精品久久久久中文字幕5 | 一级成人免费 | 久久久精品99 | 久久国产一区二区三区 | 欧美日韩视频一区二区三区 | 久草视频免费在线观看 | 狠狠躁18三区二区一区ai明星 | 日本特黄一级 | 久久特级毛片 | 成人一区影院 | 亚洲天天在线日亚洲洲精 | 婷婷国产视频 | 国精产品一二三线999 | 免费一级日韩欧美性大片 | 亚洲一区二区天堂 | 在线精品视频免费播放 | 伊人国产在线观看 | 免费久久片 | 久久精品视频免费 | 色婷婷综合久久久久中文字幕1 | 六月丁香婷婷在线 | 亚洲va欧洲va国产va不卡 | 成人在线一区二区 | 中文字幕在线观看视频网站 | 免费观看一级视频 | 中国精品一区二区 | 中文字幕av网站 | 福利电影一区二区 | 97精品国自产拍在线观看 | 免费午夜视频在线观看 | www.操.com| 99精品视频在线观看免费 | www.五月婷婷.com | 欧美日韩精品久久久 | 久久99精品久久久久久三级 | 亚洲一一在线 | 91精品人成在线观看 | 欧美国产高清 | 日本精品视频在线观看 | 中文字幕在线影院 | 亚洲国产精品99久久久久久久久 | 亚av在线 | av在线短片 | 一级成人网 | 天天干,夜夜操 | 亚洲精品伦理在线 | 中文字幕一区二区三区在线观看 | 国产精品美女久久久久久久 | 亚洲色图色 | av理论电影 | 久久午夜免费观看 | 日日夜夜精品免费视频 | 欧美在线视频不卡 | 玖玖视频| 西西44人体做爰大胆视频 | 天天射天天操天天干 | 国产自产高清不卡 | 成人在线免费视频观看 | 国产视频不卡一区 | 日韩精品中文字幕在线观看 | 二区三区精品 | 亚洲午夜av电影 | 欧美在线资源 | 久久精精品视频 | 国产污视频在线观看 | 天天干夜夜干 | 国产免费精彩视频 | 国产精品福利久久久 | 国产黄色精品在线观看 | 精品久久免费看 | 亚洲精品h| 国产精品视频久久久 | 亚洲 综合 国产 精品 | 日本三级全黄少妇三2023 | 国产黄色片网站 | 天天色天天爱天天射综合 | 亚洲综合色激情五月 | 亚洲一区二区麻豆 | 中文字幕第一页av | 国产精品99精品久久免费 | 色干综合 | 国产精品大片免费观看 | 国产美女在线免费观看 | 精品视频9999 | 欧美一区二区三区不卡 | 亚洲激情中文 | 蜜臀av夜夜澡人人爽人人 | 欧美五月婷婷 | 美女久久精品 | 国产精品一区二区久久精品 | 精品96久久久久久中文字幕无 | 国产高清不卡av | 黄色一级免费电影 | 国产在线播放一区二区三区 | 免费www视频 | 精品一区二区三区久久久 | 亚洲精品美女视频 | 在线 精品 国产 | 在线观看国产麻豆 | 激情网站免费观看 | 日韩精品亚洲专区在线观看 | 日本乱视频 | 国产成人精品999在线观看 | 97超视频免费观看 | 亚洲免费av电影 | 女人18毛片90分钟 | avav99| 久久精品欧美视频 | 国产精品美女www爽爽爽视频 | www.超碰 | 婷婷丁香激情网 | 在线播放国产一区二区三区 | 男女啪啪免费网站 | 91传媒免费在线观看 | 亚洲成人黄 | 国产成人免费av电影 | 婷婷婷国产在线视频 | 日韩欧美电影在线观看 | 色婷婷综合久久久久 | 97精品在线观看 | 亚洲成人高清在线 | 日韩在线视频免费播放 | 波多野结衣在线视频免费观看 | 久久久精品亚洲 | 日本三级在线观看中文字 | 国产一级在线视频 | 久久新视频 | 国产在线一区二区三区播放 | 美女视频黄网站 | 中文在线a∨在线 | 日韩av午夜在线观看 | www.亚洲精品视频 | 亚洲深夜影院 | 国产流白浆高潮在线观看 | 国产精品久久久久久久av大片 | 免费中文字幕视频 | 国产亚洲成人网 | 黄色在线观看免费网站 | 96av麻豆蜜桃一区二区 | 91在线在线观看 | 香蕉视频亚洲 | 亚洲天天摸日日摸天天欢 | www.av在线.com | 一区免费视频 | 九九免费在线观看视频 | 午夜丁香网 | 高清视频一区 | 日韩黄色网络 | 国产精品av在线 | 日韩欧美黄色网址 | 五月开心六月伊人色婷婷 | 午夜精品久久一牛影视 | 色搞搞| av电影在线观看 | 精品视频免费观看 | 欧美色精品天天在线观看视频 | 深爱激情五月综合 | 国产精品网站 | 国产丝袜美腿在线 | 国内精品久久久久影院优 | 欧美综合久久 | 色视频在线免费 | 国产福利网站 | 97超碰影视 | a√天堂资源 | 欧美一级片在线观看视频 | 久久99国产精品久久99 | 成人少妇影院yyyy | 激情欧美丁香 | 国产在线免费观看 | 夜色资源站国产www在线视频 | 欧美精品资源 | 欧美精品九九99久久 | 国产成人精品亚洲a | 成年人在线免费看片 | 欧美日韩在线视频一区二区 | 美女视频久久 | 色资源网在线观看 | 日韩精选在线观看 | 日韩激情在线 | 免费观看久久久 | 波多野结衣在线播放一区 | 国产不卡在线看 | 久久超级碰视频 | 欧美成人tv| 五月婷婷一级片 | 成全在线视频免费观看 | 国产破处在线播放 | 91热爆视频 | 国产麻豆电影在线观看 | 黄色一级在线免费观看 | 国外成人在线视频网站 | 国产成人精品免费在线观看 | 欧洲一区二区三区精品 | 免费日韩 精品中文字幕视频在线 | 久久精品人人做人人综合老师 | 免费在线观看av网站 | 在线免费日韩 | 免费看的国产视频网站 | 亚洲成人av电影在线 | 中文字幕91在线 | 黄色1级大片 | 青青河边草手机免费 | 日韩成人精品在线观看 | 天天色天天色天天色 | 国产一区二区成人 | 国产一区二区在线播放视频 | 国产成人精品一二三区 | 最近中文字幕高清字幕免费mv | 人人干人人爽 | 欧美亚洲久久 | 欧美日韩不卡一区 | 婷婷在线精品视频 | 麻豆视频大全 | 亚洲国产偷 | 成人夜晚看av | 99色在线观看 | 婷婷中文字幕在线观看 | 一区在线播放 | 久久久久伊人 | 日本精品在线视频 | 蜜桃传媒一区二区 | 九九免费视频 | 成人h电影在线观看 | av中文字幕亚洲 | 久久精品久久精品久久39 | 亚洲日本色| 99视频在线精品免费观看2 | 欧美日本高清视频 | 天天干天天玩天天操 | 中文久久精品 | 久久这里只有精品视频99 | 亚洲日韩精品欧美一区二区 | 国内一区二区视频 | 一区二区三区电影 | 麻豆传媒视频在线播放 | 久久精品激情 | 伊人色综合久久天天 | 麻豆视频国产 | 九九视频精品在线 | 99精品在线| 中文字幕91视频 | 亚洲v精品| 人人看黄色| 欧美看片 | 亚洲91av| 成人播放器 | 黄色一级动作片 | 69绿帽绿奴3pvideos | 深夜男人影院 | 久久99久国产精品黄毛片入口 | 天天干夜夜操视频 | 99麻豆久久久国产精品免费 | 欧美综合色在线图区 | 婷婷六月综合亚洲 | 97精品国产97久久久久久 | 午夜色场 | 色婷婷av国产精品 | av专区在线| 碰天天操天天 | 免费国产一区二区视频 | 精品视频 | 一区在线播放 | 欧美美女一级片 | 国产精品久久久久久久久免费 | av大全在线 | 欧美性一级观看 | av免费片| 久久免费视频一区 | 欧美日韩视频网站 | 国产免费亚洲高清 | 国产亚洲视频在线 | 国产小视频在线看 | 91亚洲精品久久久蜜桃 | 婷婷丁香花| 91丨九色丨国产丨porny精品 | 久一网站| 精品久久久久国产免费第一页 | 久久精品中文视频 | 99久久综合国产精品二区 | 久久久久久免费毛片精品 | 国产黄色片久久久 | 久草观看视频 | 高潮久久久久久 | 伊人国产在线播放 | 美女视频永久黄网站免费观看国产 | 天天操夜夜逼 | 胖bbbb搡bbbb擦bbbb | 亚洲一区 av| 中文永久免费观看 | 超碰97在线资源站 | 免费视频黄 | 欧美a级在线免费观看 | 欧美一级片免费观看 | 久草在线国产 | 毛片网站免费 | 欧美精品日韩 | 97超视频 | 福利电影一区二区 | 免费在线观看成人小视频 | 444av| 一区二区av | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产精品久久久久久久久免费看 | 91成人区| 天天曰天天 | 日本中出在线观看 | 国产精品成人一区二区三区 | 久久99深爱久久99精品 | 成人久久久久久久久久 | 国产中文字幕视频在线观看 | 天天射天天射 | 久久精品xxx| 色综合天天色综合 | 色94色欧美| a午夜在线 | 中文字幕亚洲五码 | 激情中文字幕 | 国产999在线 | 一区二区三区免费在线播放 | 在线成人av | 国产 日韩 欧美 中文 在线播放 | 九九热在线免费观看 | 亚洲国产成人在线 | 欧美精品一区二区在线观看 | 免费三级黄色片 | 国产高清精 | 天天操天天干天天综合网 | 成人香蕉视频 | 日韩精品在线免费播放 | 亚洲国产精品99久久久久久久久 | 国产精品久久久久aaaa九色 | 亚洲va欧美va人人爽 | 亚洲免费永久精品国产 | 一本一本久久a久久 | 亚洲视频电影在线 | 伊人亚洲综合 | 欧美精品在线观看一区 | 亚洲每日更新 | 日韩精品在线观看av | 91在线看免费 | 激情综合五月 | 日本精品久久久久久 | 久久久久久久久爱 | 国内成人精品视频 | 欧美日韩国产一区二区三区在线观看 | 久久电影网站中文字幕 | 久久爱www.| 亚洲精欧美一区二区精品 | 88av视频| 伊人热 | 国产一区二区三区久久久 | 国产不卡精品 | 久久精品—区二区三区 | 九九综合久久 | 国产精品1024 | www五月天婷婷 | 国产日韩精品视频 | 久久99久久99精品免视看婷婷 | 国产精品1区2区3区在线观看 | 99综合久久 | 最新中文字幕在线观看视频 | 天天爱av导航 | 欧美精品在线观看一区 | 九九99视频| 久久手机免费视频 | 久久久男人的天堂 | 亚洲视频高清 | 六月丁香在线视频 | 亚洲国产日本 | 最新日韩精品 | 成人中文字幕av | 黄p在线播放 | v片在线看 | 综合久久精品 | 一区二区三区高清在线 | 黄色小说18 | 国内精品中文字幕 | 日韩aa视频 | 九九热久久久 | 亚洲精品一区二区三区四区高清 | 亚洲日本在线一区 | 国产精品久久久久久吹潮天美传媒 | 久久久精品二区 | 日韩成人免费在线 | 国产亚洲情侣一区二区无 | 国产精品美女免费看 | 日韩动态视频 | 久久国产精品99久久久久久丝袜 | 亚洲综合激情小说 | 日韩高清在线观看 | 国产在线a免费观看 | 午夜免费久久看 | 色www精品视频在线观看 | 国产精品视频内 | 久久免费视频精品 | 男女靠逼app | 久久午夜网 | 国产综合婷婷 | 日韩一级理论片 | 久久国产亚洲精品 | 日韩在线视频播放 | 国产精品久久久久永久免费 | 欧美日韩中文在线视频 | 精品一区二区三区在线播放 | 亚洲成色777777在线观看影院 | 天天操天天摸天天爽 | 久久综合网色—综合色88 | 亚洲精品乱码久久 | 亚洲婷婷网 | www.伊人网 | av网站在线观看免费 | 欧美亚洲免费在线一区 | 久av在线| 欧美精品久久久久久久久久久 | 久久综合视频网 | 国产精品成久久久久三级 | 在线观看a视频 | 99精品欧美一区二区三区黑人哦 | 二区中文字幕 | 亚洲精品综合一二三区在线观看 | 亚洲精品视频二区 | 国产在线一线 | 久久久九九 | av在线一二三区 | 久久综合久久综合九色 | av电影在线免费观看 | 日韩大片在线免费观看 | av三级在线播放 | 欧美午夜精品久久久久久孕妇 | 亚洲欧美日韩国产精品一区午夜 | 国产在线观看免费观看 | 日操操 | 日韩在线观看三区 | 国产999精品久久久久久麻豆 | 日韩午夜精品福利 | 五月丁香 | 91精品国产成人 | 少妇性bbb搡bbb爽爽爽欧美 | av黄网站 | 免费在线观看av片 | 51久久夜色精品国产麻豆 | 91久久国产自产拍夜夜嗨 | 久草视频在线看 | 毛片基地黄久久久久久天堂 | 美女视频免费精品 | 999国产在线 | 免费av观看网站 | 久久无码av一区二区三区电影网 | 日韩三区在线观看 | 99国产情侣在线播放 | 天堂av免费观看 | 99久久精品免费看 | 成人免费大片黄在线播放 | 毛片美女网站 | 色综合天天综合 | 色婷婷狠狠五月综合天色拍 | 99热网站 | 久久精品综合一区 | 中文字幕第 | 欧美日韩国产精品一区二区 | 免费看国产精品 | 黄色软件大全网站 | 西西444www大胆高清图片 | 69视频在线 | 国产精品99久久久久人中文网介绍 | 天天综合网国产 | 欧美va日韩va | 成人网在线免费视频 | 日本久久精品视频 | 中文字幕在线观看不卡 | 日韩性色| 天天操天天爱天天干 | 国产精品久久一区二区三区不卡 | 久草干 | 中文国产在线观看 | 国产精品专区在线 | 久久一区二区三区四区 | 日韩毛片在线播放 | 香蕉影视在线观看 | 亚洲成av人片在线观看香蕉 | 国产无套视频 | 99热在线这里只有精品 | 久久高清片 | 日韩精品网址 | 亚洲 欧洲 国产 精品 | 日日久视频| 国产一区在线视频 | 99热精品在线 | 久久免费视频观看 | 久久视频在线观看免费 | 国产精品久久久久久69 | 国产一级黄色免费看 | 99视频网站 | 99c视频高清免费观看 | 国产精品爽爽爽 | 又黄又刺激视频 | 天天操天天摸天天爽 | 免费看黄网站在线 | 国产小视频在线观看 | 新av在线 | 在线看片一区 | 欧美另类老妇 | 婷婷av电影 | 97影视| 国产一级二级三级在线观看 | 在线视频一区二区 | 免费成人在线电影 | 天天色天天 | 成人a级网站 | 808电影| 特级毛片在线 | 中文字幕 在线 一 二 | a视频在线观看免费 | 色多多污污 | 91久久人澡人人添人人爽欧美 | 天天干天天射天天操 | 久久99视频免费 | 欧洲精品在线视频 | 日韩在线视频不卡 | 激情五月婷婷综合网 | 五月婷婷六月丁香在线观看 | 精品一区av | 成 人 免费 黄 色 视频 | 免费91在线观看 | 96亚洲精品久久 | 九九精品在线观看 | 国产综合片 | 91久久精品一区二区三区 | 天天综合在线观看 | 97精品久久人人爽人人爽 | av福利在线播放 | 特黄特黄的视频 | 又黄又爽又湿又无遮挡的在线视频 | 国产精品尤物 | 久久狠狠一本精品综合网 | 国产成人精品久久久久蜜臀 | 日本91在线| 国产五十路毛片 | 国产系列 在线观看 | 美国三级黄色大片 | 黄色在线网站噜噜噜 | 久久99精品久久久久久秒播蜜臀 | 亚洲精品国产精品99久久 | 伊香蕉大综综综合久久啪 | 激情导航 | 国产精品黄色 | 久久综合成人网 | 在线 高清 中文字幕 | 又黄又爽免费视频 | 又爽又黄又无遮挡网站动态图 | 91久久丝袜国产露脸动漫 | 欧美激情视频一区二区三区免费 | 极品中文字幕 | 久久国产精品99精国产 | 91九色在线视频 | 亚洲精品动漫久久久久 | 国产成人av电影在线观看 | 国产主播99 | 欧美一级久久久久 | 亚洲欧美国内爽妇网 | 天天操人人要 | 91精品国自产在线偷拍蜜桃 | 又大又硬又黄又爽视频在线观看 | 黄色片网站 | 国产69精品久久久久99尤 | 91豆花在线观看 | www.97色.com| 亚洲一区黄色 | 亚洲人人av | 欧美精品免费视频 | 在线 国产 日韩 | 日韩精品一区在线播放 | 超碰公开在线 | 国产成人一区二区三区免费看 | 一区二区三区在线电影 | 天天色中文| 亚洲欧美国产精品 | 欧美在线1区| 在线va网站| 久久国产精品99久久久久久老狼 | 亚洲国产精品第一区二区 | 国产伦精品一区二区三区无广告 | av 一区 二区 久久 | 中文字幕观看在线 | www.狠狠插.com | 久久国产精品二国产精品中国洋人 | 国产69精品久久久久9999apgf | 久久精品影片 | 在线免费观看的av网站 | 亚洲精品裸体 | 久久久久久久久久久久影院 | 国产精品第 | 国产亚洲精品综合一区91 | 成人亚洲免费 | 天天躁日日躁狠狠 | 久久视频精品在线观看 | 亚洲精品天天 | 国产成人福利在线 | av免费在线免费观看 | 色网站在线观看 | 中文字幕在线观看视频免费 | 91成人免费 | 成人黄色片免费 | 久久久久北条麻妃免费看 | 视频一区二区精品 | 不卡电影免费在线播放一区 | 国产成人av福利 | 国产成人精品一二三区 | 中文字幕在线视频一区 | 国产男女爽爽爽免费视频 | 一区二区丝袜 | 日韩久久精品一区 | 91九色pron| 激情网站网址 | 色多多污污在线观看 | 中文字幕欧美日韩va免费视频 | 91亚洲国产成人久久精品网站 | 中文字幕视频一区 | 久草综合在线 | 国产精品不卡在线 | 国产三级av在线 | 国产精品一区二区三区99 | 色爱成人网 | 五月亚洲综合 | 中文字幕国语官网在线视频 | 久久精品国产亚洲a | 国产精品美女网站 | 国产精品免费大片视频 | 天天曰夜夜爽 | 成人免费视频在线观看 | 日韩网站免费观看 | 日韩亚洲欧美中文字幕 | 高清在线一区二区 | 少妇啪啪av入口 | 日本不卡一区二区三区在线观看 | 人人舔人人爽 | 91禁在线看 | 激情五月av| 人人看人人 | 国产精品av免费观看 | 夜夜爽88888免费视频4848 | 91字幕| 午夜av影院 | 中文字幕视频一区 | 成人av资源在线 | 国产一级黄大片 | 不卡视频一区二区三区 | 97精品国产97久久久久久粉红 | 99久热在线精品视频观看 | 在线观看一 | 黄色影院在线免费观看 | 国产专区一| 成人福利在线 | 精品视频9999| 国产日韩欧美视频 | 亚洲人成人天堂h久久 | 亚洲黄色a | 夜夜爽夜夜操 | 欧美日韩另类视频 | 超碰人人在 | 狠狠狠狠狠操 | 久久久久久久久久伊人 | 夜夜操狠狠干 | 国产精品初高中精品久久 | 四虎成人免费观看 | 天天天天天天天天操 | 一区二区三区在线观看免费 | 天天天干| 成人av视屏 | 亚洲有 在线 | 最新成人在线 | 免费一级片观看 | 天天插日日操 | 欧美日韩在线网站 | 久久午夜网| 亚洲少妇久久 |