久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网

您好,歡迎進入深圳市穎特新科技有限公司官方網站!

您現在的位置:首頁 新聞資訊 >> 新聞頭條 >> N76E003之SPI
新聞資訊
NEWS INFORMATION

N76E003之SPI

發布時間:2019-05-22

串行外圍總線 (SPI)
N76E003系列提供支持高速串行通信的SPI模塊。SPI 為微控制與外設 EEPROM, LCD 驅動, D/A 轉換之間提供
全雙工、高速、同步傳輸的總線。可提供主機從機模式傳輸,速度可達到時鐘頻率FSYS/2,支持傳輸完成標志位
和“寫”沖突標志位。在多主機系統中,SPI 支持主機模式錯誤用以防止主機沖突。

圖14-1展示了SPI的簡單體系結構。SPI的主要模塊有SPI控制寄存器,SPI狀態邏輯,波特率控制和管腳邏輯控
制。為了傳送數據和接收數據,SPI 提供了移位寄存器和讀數據緩沖器。因為無論傳送數據或是接收數據都是雙
緩存,所以傳輸端時,在前一個數據發送完成前,也可以寫入下一筆把數據。接收端能讀取讀數據緩存,在移位寄
存器接收第二個數據時,同時前一個接收的數據將被傳送到讀數據緩存。

SPI 接口有四個管腳,分別是主進/從出(MISO),主出/從進(MOSI),移位時鐘(SPCLK), 和從機選擇( SS )。
MOSI腳用于傳輸主機到從機的8位數據,所以MOSI是一個主機設備的輸出引腳,從機設備的輸入引腳。相應
的,MISO用于接收從機到主機的串行數據。


SPCLK引腳為主機模式下的時鐘輸出,從機的輸入時鐘。移位時鐘用于MOSI和MISO腳之間數據傳輸的同步時
鐘。主機模式發送8個移位時鐘周期,在總線上交換一個字節數據。位移時鐘由主機輸出,所以一組SPI傳輸系
統上只能有一個主機以避免設備沖突。


從機設備通過設定從機選擇腳 ( SS )選擇。當需要訪問任何從機時,該從機的此信號腳必須保持低。當SS 為
高,該從機訪問將被禁止。若為多從機模式,在同一時刻必須保持只有一個從機被選定。對于主機, SS 腳不做
任何用途,可配置為普通端口另做他用。SS可用于多主機模式下主機模式錯誤偵測功能

N76E003也提供自動激活片選腳功能,通過自動觸發SS來傳輸字節。

圖 14?2為典型的SPI設備連接圖。通信總線通過3根信號線相連, MOSI ~ MOSI, MISO ~ MISO, 和 SPCLK ~
SPCLK。主機通過一個并口的4個管腳來控制4個 ? 腳,從而實現每個 ? 線分別控制每個從機。MCU1 和 MCU2
可以任意定義為主機或從機模式。SS需配置為主機模式偵測功能避免多主機沖突。

 

圖 14?3表示SPI 模塊單主機/從機互連簡圖。在傳輸時,主機通過MOSI線向從機發送數據。同時,主機也通過MISO線由從機接收數據。此時主機和從機的兩個移位寄存器可被視為一個16位的循環移位寄存器。因此,當主機向從機發送數據時,從機數據也同時推向主機。這樣通過兩mcu的SPI移位寄存器,就完成了交換數據。

默認情況下,SPI先發送MSB 。當LSBFE (SPCR.5) 置1,SPI首先發送LSB,該位不會影響寄存器內MSB/LSB的排列順序。注,下述全部是基于 LSBFE為0的情況,MSB 首先被發送和接收。控制寄存器 (SPCR), SPI 狀態寄存器 (SPSR), SPI 數據寄存器 (SPDR) 這三個寄存器用于SPI傳輸。這些寄存器提供控制,狀態檢測,數據存儲以及時鐘發生設置。下面描述SPI寄存器的相關功能。

主機模式

MSTR (SPCR.4)位置1,SPI工作在主機模式。整個SPI系統中只允許一個主機啟動傳輸。每次傳輸總是由主機發起,對主機SPDR寄存器的寫開始傳送。在SPCLK控制下在MOSI管腳傳送數據。同時,MISO管腳接收數據。在8位數據傳輸完畢后,SPIF (SPSR.7)由硬件自動置位以示完成一個字節數據傳輸。同時接收到的數據也會傳送到SPDR。用戶可以從SPDR讀出數據,并清除SPIF。14.2.2 從機模式

設定MSTR為0,SPI將工作在從機模式。當作為從機模式時,SPCLK管腳變為輸入腳,它將作為時鐘輸入被另外一個主機SPI設備的輸出時鐘控制, SS管腳也變為輸入腳。當從機設備的SS 管腳不為低時,主機設備不能與從機交換數據。在數據傳輸開始前和數據傳輸完成前,SS 管腳都需要保持低電平狀態。如果SS 變為高電平,SPI將被迫進入閑置狀態。如果SS 管腳在傳輸的過程被置高,那么傳輸將被取消,接收移位緩存區里剩下的位數將變高,同時也將進入閑置狀態。

在從機模式下,數據通過MOSI管腳從主機向從機傳輸,通過MISO管腳從從機向主機傳輸。通過主機SPCLK的時鐘控制,數據進入位移寄存器。在移位寄存器接收到一個字節后,數據將移到讀數據緩存,同時SPIF置1。對SPDR的讀操作實際上就是對讀緩沖器的一次讀操作。為了防止緩沖器溢出或因溢出導致數據丟失,從設備必須在數據第二次從移位寄存器向讀緩沖器傳送前,把數據從SPDR讀出和把SPIF清零。

 

時鐘格式和數據傳輸
為了適應各種各樣的同步串行外設,SPI提供時鐘極性位CPOL(SPCR.3)和時鐘相位位CPHA(SPCR.2)寄存器用以控制。如圖14?4.所示,CPOL和CPHA組合出四種不同的時鐘格式。 CPOL 位表示空閑狀態時SPCLK腳電平。 CPHA位定義表示是MOSI和MISO上時鐘的哪個邊沿用來采樣。在同一系統上的主從設備中,CPOL和CPHA的配置應該是相同的。傳輸不同的數據格式,將產生隨機錯誤結果。

在SPI傳輸中,總是由主機啟動傳輸。如果SPI被選定作為主模機式(MSTR = 1)并且打開傳輸(SPIEN=1),對主機的SPI數據寄存器(SPDR)寫入數據將啟動SPI時鐘和數據傳輸。傳出一個字節的同時會接收一個字節的內容,此后SPI時鐘停止,主機和從機的SPIF(SPSR.7)同時被置1 。如果SPI中斷使能位ESPI(EIE.0)設置為1,全局中斷使能(EA= 1),將執行SPI的(ISR)中斷服務程序。

關于從機模式下, SS 信號需要注意。如圖14?4.所示,CPHA=0時, SPCLK第一個邊沿為MSB的采樣點(LSBFE= 0,MSB優先發送為例)。因此,從機必須在SPCLK第一個采樣邊沿出現之前先把MSB傳出。SS 的下降沿可用于準備MISO的MSB。因此,每次成功串行傳輸一個字節后, SS 引腳必須切換先高然后低。此外,如果從機將數據寫入SPI數據寄存器(SPDR)時,如果SS為低電位,則會發生寫沖突錯誤。當CPHA = 1,采樣邊沿位于SPCLK時鐘的第二個邊沿。從機使用的第一個SPCLK時鐘轉移的MSB,而不是SS的下降沿。因此,在每次成功傳輸時SS 可以始終保持低電位保持低之間的轉移。此格式更適合單主機單從機的結構使用。CPHA =1模式,從機的SS可以不連接在SPI系統中,直接接地。

 

在SPI傳輸使能(SPIEN = 1)前,必須先對SPI傳輸進行配置,否則傳輸過程中對LSBFE, MSTR, CPOL, CPHA及 SPR[1:0] 的任一更改,將會停止SPI傳輸并強迫總線進入空閑模式。所以在任何配置位更改前,請先關閉SPIEN使能位。

從機選擇引腳SS配置
N76E003SPI提供靈活的SS 配置用于不同系統。當作為從機時, SS 始終定義為選擇輸入腳。當作為主機時,
SS有三種不同的功能定義,可以通過DISMODF (SPSR.3) 和SSOE (SPCR.7)來配置。默認情況DISMODF=0,
故障偵測功能打開, SS 配置為輸入腳并檢測是否發生故障。反之,如果DISMODF=1,故障偵測功能關閉,
SSOE寄存器定義控制SS 管腳。當SSOE=1,從機選擇信號自動生成,主機的SS 管腳直接與從機的SS 腳連
接,當選擇外部從機進行傳輸時SS 自動拉低,當進入閑置狀態或者沒有選擇從機時,自動拉高。當SSOE=0且
DISMODF=1時,SS不再用作SPI管腳,而完全配置為普通端口狀態。

模式故障偵測
在一個SPI網絡中,當不止一個設備有可能成為主機時,為減少數據傳輸錯誤,模式故障偵測功能是非常有用
的。當一個主機打開模式故障偵測并發現SS 由其它設備拉低,配置詳見 表14-1.從機選擇腳定義,說明系統上
有一個從機試圖尋找主機地址并把主機認為從機。此時,硬件會自動將SPCR 的 MSTR 和SPIEN清除,從而SPI

功能關閉,并使能錯誤偵測標志MODF (SPSR.4)置1 ,如果之前已打開中斷ESPI (EIE .6) 和EA置1,則會進入
中斷向量。

寫沖突錯誤
SPI在發送方向上是單緩存,但在接收上是雙緩存。除非前一個數據傳輸完,否則新的數據不能寫入移位寄存
器。當正在進行一次傳送時,如果設備同時又寫數據到SPDR,將發生寫沖突錯誤。發送數據時由于SPDR不是
一個雙緩存,任何寫入SPDR數據將直接寫入SPI的移位寄存器。一旦發生一個寫沖突錯誤,WCOL(SPSR.6)會
被硬件置1指示發生一個寫沖突。這種情況下,當前的傳輸繼續不停,然而引起寫沖突的新數據將丟失。盡管
SPI邏輯可以在主機和從機之間進行寫沖突檢測,但寫沖突通常會是一個從機錯誤,原因是當主機開始一次傳送
時,從機是無法預知。在從機接收過程中,寫SPDR也將產生寫沖突錯誤。WCOL標志用軟件清除。

移出錯誤
對于接收數據,SPI是雙緩存的。接收到的數據移入到一個讀數據緩存中,同時能接收第二個數據。然而,在下
一個數據移入之前,必須確保已從SPDR中讀取出已接收數據。在下一個數據被移入前,要把前一個數據從讀緩
沖區內讀出,并且清除SPIF,這樣的才不會產生移出錯誤,反之,將產生移出錯誤。這種情況下,第二個字節
的數據不會正常移入讀數據緩存,緩存區內仍保留有前一個數據。當發生移出錯誤時,SPIOVF (SPSR.5)會被
硬件置1。如果中斷打開,會進入中斷請求。Figure 14?7.表示接收數據與移出錯誤之間的關系。

SPI 中斷
SPI中斷狀態標志包括SPIF、MODF 和 SPIOVF,用于產生SPI事件中斷請求。這些位都放在SPSR寄存器中。
當有外部數據傳入SPDR或自身完成數據傳輸后,SPIF標志將被置位。MODF置1時,表示SS 進入模式錯誤狀
態,SPIOVF表示接收發生數據移出錯誤。當SPI中斷打開時(ESPI (EIE.6) 和EA置1),當這3個標志中的任意
一個置1,CPU會執行SPI中斷服務程序。用戶若需要了解是由何種標志引起中斷,必須檢查相應的標志位。這
三個標志必須由用戶軟件清除。

 

 

/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp. 
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Apr/21/2015
//***********************************************************************************************************

//***********************************************************************************************************
//  File Function: N76E885 Access SPI Flash (W25Q16BV) demo code
//***********************************************************************************************************

#include <stdio.h>
#include <intrins.h>
#include <string.h>
#include "N76E885.h"
#include "Version.h"
#include "Typedef.h"
#include "Define.h"
#include "SFR_Macro.h"
#include "Common.h"
#include "Delay.h"

/*
//-------- <<< Use Configuration Wizard in Context Menu >>> ------------
//
//<e0> System Clock Source Configuration
// <o1> System Clock Source Selection
//      <0=> 2~25MHz    XTAL
//      <1=> 32.768KHz  XTAL
//      <2=> 22.1184MHz Internal
//      <3=> 10KHz      Internal
//      <4=> OSC-In     External
//</e>
//
//<e2> Clock Divider Configuration
//     <o3.0..7>  System Clock Source Devider <1-255>
//                     <i> Fsys = (System Clock Source) / (2 * Devider)
//</e>
//
// <o4> SPI Clock Rate Selection (11.0592MHz System Clock)
//                  <0=>  2.7648MHz, Fosc/4 
//                  <1=>  1.3824MHz, Fosc/8 
//                  <2=>  0.6912MHz, Fosc/16
//                  <3=>  0.3456MHz, Fosc/32
//-------- <<< end of configuration section >>> ------------------------------
*/

#define SYS_CLK_EN      0
#define SYS_SEL         2
#define SYS_DIV_EN      0                   //0: Fsys=Fosc, 1: Fsys = Fosc/(2*CKDIV)
#define SYS_DIV         1
#define SPI_CLOCK       0

#define SS_PIN          P04
#define WRITE_ENABLE    0x06
#define WRITE_DISABLE   0x04
#define READ_DATA       0x03
#define PAGE_PROGRAM    0x02
#define CHIP_ERASE      0xC7
#define READ_STATUS1    0x05
bit BIT_TMP;
//-----------------------------------------------------------------------------------------------------------
void SPI_Error(void)
{
    printf ("\n*  SPI Error, please check the connection between MCU and SPI Flash");
    while(1);
}
//-----------------------------------------------------------------------------------------------------------
void SPI_Initial(void)
{
    #if   SPI_CLOCK == 0
            clr_SPR1;
            clr_SPR0;
    #elif SPI_CLOCK == 1
            clr_SPR1;
            set_SPR0;
    #elif SPI_CLOCK == 2
            set_SPR1;  
            clr_SPR0;
    #elif SPI_CLOCK == 3
            set_SPR1;
            set_SPR0;
    #endif

    /* /SS General purpose I/O ( No Mode Fault ) */
    set_DISMODF;
    clr_SSOE;

    /* SPI in Master mode */
    set_MSTR;

    /* MSB first */
    clr_LSBFE;

    clr_CPOL;
    clr_CPHA;
    
    /* Enable SPI function */
    set_SPIEN;
}
//-----------------------------------------------------------------------------------------------------------
void Read_MID_DID(UINT8 *pu8MID,UINT8 *pu8DID)
{
    SS_PIN = 0;
    SPDR = 0x90;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0xFF;
    while((SPSR&0x80)==0x00);
    *pu8MID = SPDR;
    clr_SPIF;

    SPDR = 0xFF;
    while((SPSR&0x80)==0x00);
    *pu8DID = SPDR;
    clr_SPIF;
    SS_PIN = 1;    
}
//-----------------------------------------------------------------------------------------------------------
void Flash_Write_Enable(void)
{
    SS_PIN = 0;
    SPDR = WRITE_ENABLE;
    while((SPSR&0x80)==0x00);
    clr_SPIF;
    SS_PIN = 1;    
}
//-----------------------------------------------------------------------------------------------------------
void Flash_Write_Disable(void)
{
    SS_PIN = 0;
    SPDR = WRITE_DISABLE;
    while((SPSR&0x80)==0x00);
    clr_SPIF;
    SS_PIN = 1;    
}
//-----------------------------------------------------------------------------------------------------------
void Flash_Chip_Erase(void)
{
    SS_PIN = 0;
    SPDR = CHIP_ERASE;
    while((SPSR&0x80)==0x00);
    clr_SPIF;
    SS_PIN = 1;    
}
//-----------------------------------------------------------------------------------------------------------
void Flash_Read_Status(void)
{
    UINT8 u8Status;

    SS_PIN = 0;
    do{
        SPDR = READ_STATUS1;
        while((SPSR&0x80)==0x00);
        clr_SPIF;
    
        SPDR = 0xFF;
        while((SPSR&0x80)==0x00);
        u8Status = SPDR;
        clr_SPIF;
    }while((u8Status&0x01)==0x01);
    SS_PIN = 1;    
}
//-----------------------------------------------------------------------------------------------------------
void Flash_Erase_Verify(void)
{
    UINT16 u16CNT;    
    UINT8  u8Data;

    SS_PIN = 0;

    SPDR = READ_DATA;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    /* 24-bit Address */
    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    for(u16CNT=0;u16CNT<256;u16CNT++)
    {
        SPDR = 0x00;
        while((SPSR&0x80)==0x00);
        u8Data = SPDR;
        clr_SPIF;
        if(u8Data != 0xFF)
        {
            SPI_Error();
        }
    }

    SS_PIN = 1; 
}
//-----------------------------------------------------------------------------------------------------------
void Flash_Program(void)
{
    UINT16 u16CNT; 
    
    SS_PIN = 0;

    SPDR = PAGE_PROGRAM;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    /* 24-bit Address */
    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    /* Send the data to SPI_Flash buffer */
    for(u16CNT=0;u16CNT<256;u16CNT++)
    {
        SPDR = (UINT8)u16CNT;
        while((SPSR&0x80)==0x00);
        clr_SPIF;
    }
    
    SS_PIN = 1;    
}
//-----------------------------------------------------------------------------------------------------------
void Flash_Program_Verify(void)
{
    UINT16 u16CNT;    
    UINT8  u8Data;

    SS_PIN = 0;

    SPDR = READ_DATA;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    /* 24-bit Address */
    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    SPDR = 0x00;
    while((SPSR&0x80)==0x00);
    clr_SPIF;

    for(u16CNT=0;u16CNT<256;u16CNT++)
    {
        SPDR = 0x00;
        while((SPSR&0x80)==0x00);
        u8Data = SPDR;
        clr_SPIF;
        if(u8Data != (UINT8)u16CNT)
        {
            SPI_Error();
        }
    }

    SS_PIN = 1; 
}
//-----------------------------------------------------------------------------------------------------------
void main(void)
{      
    UINT8 u8MID,u8DID;

    /* Note
       MCU power on system clock is HIRC (22.1184MHz), so Fsys = 22.1184MHz
    */
    
    Set_All_GPIO_Quasi_Mode();
    InitialUART0_Timer1_Type1(9600);             /* 9600 Baud Rate*/

    Show_FW_Version_Number_To_PC();
    
    printf ("\n*===================================================================");
    printf ("\n*  Name: N76E885 SPI Demo Code, MCU <--> W25Q16BV");
    printf ("\n*===================================================================\n");
    
    /* Change system closk source */
    #if SYS_CLK_EN == 1
        #if   SYS_SEL == 0
            System_Clock_Select(E_HXTEN);   //Fosc = 2~25MHz XTAL
        #elif SYS_SEL == 1
            System_Clock_Select(E_LXTEN);   //Fosc = 32.768KHz XTAL
        #elif SYS_SEL == 2
            System_Clock_Select(E_HIRCEN);  //Fosc = 22.1184MHz Internal RC
        #elif SYS_SEL == 3
            System_Clock_Select(E_LIRCEN);  //Fosc = 10KHz Internal RC
        #elif SYS_SEL == 4
            System_Clock_Select(E_OSCEN);   //Fosc = OSC-In External OSC
        #endif
    #endif
    
    #if SYS_DIV_EN == 1
        CKDIV = SYS_DIV;                    //Fsys = Fosc / (2* CLKDIV) = Fcpu
    #endif

    SPI_Initial();

    Read_MID_DID(&u8MID,&u8DID);

    printf ("\n*  MID value of W25Q16BV = 0x%X",(UINT16)u8MID);
    printf ("\n*  DID value of W25Q16BV = 0x%X",(UINT16)u8DID);

    if((u8MID != 0xEF)&&(u8DID != 0x17))
    {
        SPI_Error();
    }

    /* The procedure of SPI Flash at erase mode */
    Flash_Write_Enable();
    Flash_Chip_Erase();
    Flash_Read_Status();
    Flash_Write_Disable();
    
    Flash_Erase_Verify();

    /* The procedure of SPI Flash at program mode */
    Flash_Write_Enable();
    Flash_Program();
    Flash_Read_Status();
    Flash_Write_Disable();

    /* Program verify */
    Flash_Program_Verify();

    printf("\nFinished the SPI Demo Code and test pass!!!\n");
    while(1);
}
//-----------------------------------------------------------------------------------------------------------

 

具體講解 容后再說

 

聯系方式0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市南山區桃源街道平山社區平山一路2號南山云谷創業園二期11棟410-411

久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网
国产精品333| 欧美日韩精品在线一区二区 | 日韩欧美精品免费| 国产资源第一页| 免费看黄色a级片| 黄网站色视频免费观看| a级黄色小视频| av免费播放网址| 日本999视频| 91av视频免费观看| 黄色一级片免费播放| 国产美女视频免费| 黄色一级片在线看| 国产精品乱码久久久久| 午夜啪啪小视频| h无码动漫在线观看| 欧美色图色综合| 97超碰成人在线| 国产激情在线看| 日本老熟妇毛茸茸| 波多野结衣免费观看| 国产精品无码一区二区在线| 亚洲精品怡红院| 久久男人资源站| 丰满少妇在线观看| 日韩a级黄色片| 久久久久久久久久久久久久国产| 日韩高清第一页| 美女扒开大腿让男人桶| 狠狠躁狠狠躁视频专区| 欧美大黑帍在线播放| 免费一级特黄录像| 黄网站欧美内射| 亚洲精品在线网址| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 中文字幕日本最新乱码视频| 在线观看亚洲色图| 波多野结衣综合网| 国产精品波多野结衣| 国产精品拍拍拍| 欧美丰满熟妇bbbbbb百度| 色网站在线视频| 日本熟妇人妻中出| 免费国产a级片| 亚洲国产一二三精品无码| 日韩av播放器| 五十路熟女丰满大屁股| 99久久99久久精品| 日本黄色的视频| 91香蕉视频导航| 人妻无码视频一区二区三区| 黄色特一级视频| 精品国产一区二区三区在线| 中文字幕免费高清在线| 国产视频一区二区三区在线播放| 亚洲人精品午夜射精日韩 | 黄色一级片在线看| 999一区二区三区| 黄色网络在线观看| 看一级黄色录像| 国产在线拍揄自揄拍无码| 污视频在线观看免费网站| 黄色小视频免费网站| 一道本在线免费视频| 日日噜噜夜夜狠狠| 爱爱爱爱免费视频| 91欧美一区二区三区| 久久艹这里只有精品| 精品国产三级a∨在线| 国产精品一二三在线观看| 日韩一级特黄毛片| 欧美一区二区激情| 国模杨依粉嫩蝴蝶150p| 国产精品igao| 激情成人在线观看| 97在线国产视频| 日本精品一区二区三区四区| 在线观看av日韩| 色婷婷777777仙踪林| 免费看欧美一级片| 日本成人中文字幕在线| www.夜夜爽| 女人被男人躁得好爽免费视频| www.99热这里只有精品| 中文字幕视频在线免费观看| 亚洲男人天堂av在线| 无码人妻精品一区二区蜜桃网站| 日韩精品视频久久| 性欧美18一19内谢| 777777av| 国产资源中文字幕| 日韩黄色片视频| 国产一级片91| xxxx一级片| 人人妻人人做人人爽| 在线免费视频一区| 亚洲精品天堂成人片av在线播放| 各处沟厕大尺度偷拍女厕嘘嘘| 日本一二区免费| 久草热视频在线观看| 色黄视频免费看| 老司机午夜av| 精品国产av无码一区二区三区| 午夜在线观看av| 97超碰人人澡| 9999在线观看| 在线免费观看视频黄| 欧美成人一区二区在线观看| 欧美视频亚洲图片| 亚洲视频在线a| 野外做受又硬又粗又大视频√| 精品亚洲一区二区三区四区| 欧美综合在线播放| 欧美中日韩在线| 黄色一级片网址| 中文字幕在线综合| 亚洲三级视频网站| 欧美视频免费播放| 国产亚洲综合视频| 欧美啪啪免费视频| 1024av视频| 国产3p露脸普通话对白| 国产一线二线三线女| 国产欧美久久久久| 国产欧美综合一区| 日本xxxxx18| 日韩中文在线字幕| 精品人妻人人做人人爽| 91视频成人免费| 超碰超碰超碰超碰超碰| 一级黄色片播放| 大陆av在线播放| 欧美日韩二三区| heyzo国产| 国产一区亚洲二区三区| 性欧美极品xxxx欧美一区二区| 亚洲视频在线观看一区二区三区| 丁香啪啪综合成人亚洲| www.精品在线| 一级片免费在线观看视频| 最新av网址在线观看| 日韩欧美国产综合在线| 久久婷婷五月综合色国产香蕉| 男人亚洲天堂网| mm131亚洲精品| 久久久久久久久影视| 一女被多男玩喷潮视频| 欧美精品无码一区二区三区| 日韩av.com| 久久av综合网| 浓精h攵女乱爱av| 黄色三级视频在线播放| 成人一区二区免费视频| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 亚洲综合日韩欧美| 日日噜噜夜夜狠狠久久丁香五月| 欧美在线一区视频| 中文字幕亚洲欧洲| 少妇高潮毛片色欲ava片| 9久久婷婷国产综合精品性色 | 网站一区二区三区| 2021国产视频| 91国产精品视频在线观看| 黄色高清视频网站| 免费观看成人网| 精品嫩模一区二区三区| 超碰在线97免费| 日韩av综合在线观看| 国产精品无码乱伦| 日韩欧美xxxx| 97国产在线播放| 九一免费在线观看| 中文字幕12页| 香蕉视频网站入口| a√天堂在线观看| 国产经典久久久| 青娱乐精品在线| 亚洲欧美国产中文| 免费裸体美女网站| www.浪潮av.com| 国产特级淫片高清视频| 亚洲天堂第一区| www.黄色网址.com| 91 视频免费观看| jizz欧美性11| 艹b视频在线观看| 成人性生生活性生交12| 亚洲国产精品久久久久爰色欲| 精品丰满人妻无套内射| 屁屁影院ccyy国产第一页| 爱爱爱视频网站| 性做爰过程免费播放| 日韩不卡的av| 五月六月丁香婷婷| 日韩 国产 一区| 亚洲第一页在线视频| 最新av在线免费观看| 欧美一级中文字幕| 少妇大叫太大太粗太爽了a片小说| 51xx午夜影福利|