wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> 常用芯片 >> 瀏覽文章

VS1003 VS1053B電路圖分析及程序和pdf下載

作者:佚名   來源:會員   點擊數:  更新時間:2015年01月12日   【字體:

     MP3,MP4,數碼相機曾經是奢侈品。科技發展了,這些東西也就成了普通手機的附屬品了。但是作為手藝人學習這些芯片了解這些高性能芯片是很有必要的。學習了解它既拓展了自己的眼界,也可以提升自己對嵌入式系統的認識。原子戰艦板上就板載了一顆高性能MP3音樂播放器芯片VS1053B芯片。通過原子源碼對一些參數的修改,也能欣賞美妙的音樂。這是一款真正的數字產品。還可以作為錄音機使用。

     VS1053是繼VS1003后荷蘭VLSI公司出品的又一款高性能解碼芯片。該芯片可以實現對MP3/OGG/WMA/FLAC/WAV/AAC/MIDI等音頻格式的解碼,同時還可以支持ADPCM/OGG等格式的編碼,性能相對以往的VS1003提升不少。VS1053擁有一個高性能的DSP處理器核VS_DSP,16K的指令RAM,0.5K的數據RAM,通過SPI控制,具有8個可用的通用IO口和一個串口,芯片內部還帶了一個可變采樣率的立體聲ADC(支持咪頭/咪頭+線路/2線路)、一個高性能立體聲DAC及音頻耳機放大器。


     VS1053既然是高性能DSP,也就是說它本身就可以作為主機象普通MCU一樣使用。同普通MCU一樣DSP也具有一樣的最小系統,所以在電路設計中自然就必須要晶振和復位電路。通過讀datasheet知道,VS1053B也有中斷功能,同樣有GPIO!操作寄存器可以控制時鐘頻率。

        下面是電路圖:
 

 下面是音頻驅動電路圖:即耳機驅動電路。


   
    這兩張電路圖是戰艦板原理圖,電路圖設計是核心技術。本人對原子的電路設計只有學習和佩服的份。其中74HC4052和TDA1308分別是用作音頻選擇和耳機驅動,74HC4052芯片將板載的MP3,FM收音機和STM32發出的方波信號通過程序控制做出選擇;也就是說將眾多音頻信號集于一身可以分別單獨送到耳機驅動電路輸出,既節約了空間也節約了成本。設計非常精妙!
   
     通過學習VS1053B,對電路分析能力也有提高。如果看不懂電路圖,即便c語言代碼分析的多么透徹也無濟于事。  通過學習類似VS1053B芯片的驅動,能真正提高手藝人的編程能力。通過數據手冊,寫出相應芯片的驅動程序實現一些簡單功能是一個程序員的核心競爭力!這里涉及到許多c語言編程技巧。一句話,目前我是沒有這個能力。也就只能好好學習別人源碼的份了。有所收獲就記錄下來。

    VS1053B,LCD,RDA5802收音機芯片,ADXL345重力加速度傳感器芯片等等這些芯片,它們有一個共同點:寄存器,寄存器地址,數據幀,命令字,I2C, SPI 協議等等。學會這些外設芯片的驅動程序編寫方法,才能真正發揮ARM處理器的強大功能。

     有感而發!

下面提供VS1003 VS1053B芯片的51單片機完整驅動程序和VS1053 pdf中文資料文件下載:http://www.izizhuan.cn/f/VS1053.rar
 
 
下面是單片機程序的主要部分預覽:
/*
 * MP3模塊測試程序
 * 
 * 用途:MP3模塊測試程序
 *       vs1003 的硬件測試程序,主控芯片為STC12LE5A60S2
 *       其他的微處理器(帶SPI接口的)只需稍加修改即可適用
 *       對于不帶硬SPI接口的微處理器可以用IO進行SPI的時序模擬
 * 
 * 作者 日期 備注
 * Huafeng Lin 20010/09/10 新增
 * Huafeng Lin 20010/09/10 修改
 * 
 */
 
#include "vs1003.h"
#include "MusicDataMP3.c"
 
 
#include <intrins.h>
 
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define bool bit
#define true 1
#define flase 0
 
 
//針對SD卡讀寫板調整引腳
#define uint8 unsigned char
 
sbit  MP3_XRESET  = P3^2;
 
#define Mp3PutInReset()  { MP3_XRESET = 0; }
 
#define Mp3ReleaseFromReset()  { MP3_XRESET =1; }
 
sbit MP3_XCS = P3^3;
 
#define Mp3SelectControl()  { MP3_XCS = 0; }
 
#define Mp3DeselectControl()  { MP3_XCS = 1; }
 
sbit MP3_XDCS  = P3^4;
 
#define Mp3SelectData() { MP3_XDCS = 0; }
 
#define Mp3DeselectData() { MP3_XDCS = 1; }
 
sbit MP3_DREQ = P3^5;
 
sbit c_SPI_SI = P1^5;
sbit c_SPI_SO = P1^6;
sbit c_SPI_CLK = P1^7;
 
#define Macro_Set_SI_High()   c_SPI_SI = 1
#define Macro_Set_SI_Low()   c_SPI_SI = 0
#define Macro_Set_CLK_High()   c_SPI_CLK = 1
#define Macro_Set_CLK_Low()   c_SPI_CLK = 0
 
void LCD_write_english_string(unsigned char X,unsigned char Y,char *s);
 
//#define SPIWait() { while((S0SPSR & 0x80) == 0); }//等待SPI將數據發送完畢
 
//#define SPI_RESULT_BYTE  S0SPDR
 
//extern long volatile timeval; //用于延時的全局變量
//1ms Delayfunction
//void Delay(uchar ucDelayCount)
void wait(uchar ucDelayCount)
{
uchar ucTempCount;
uchar uci;
 
for(ucTempCount=0; ucTempCount<ucDelayCount; ucTempCount++)
{
// uci = 200; //Err
// uci = 250; //OK
uci = 230;
while(uci--)
{
_nop_();
  }
}
}
 
//#define wait(x) Delay(x)
/**********************************************************/
/*  函數名稱 :   MSPI_Init                                */
/*  函數功能 : 初始化SPI接口,設置為主機。               */
/*  參數     :  無                                        */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void  MSPI_Init(void)
{  
/*
PINSEL0 = (PINSEL0 & 0xFFFF00FF) | 0x00005500; //選擇 SPI 
        S0SPCCR = 0x08;                        // SPI 時鐘設置
  S0SPCR  = (0 << 3) | // CPHA = 0, 
   (0 << 4) | // CPOL = 0, 
   (1 << 5) | // MSTR = 1, 
   (0 << 6) | // LSBF = 0, 
           (0 << 7); // SPIE = 0, 
*/
c_SPI_SO = 1;
MP3_DREQ = 1;
 
}
 
/**********************************************************/
/*  函數名稱 :  InitPortVS1003                            */
/*  函數功能 : MCU與vs1003接口的初始化                   */
/*  參數     :  無                                        */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void  InitPortVS1003(void)
{
MSPI_Init();//SPI口的初始化
// IODIR &= 0xfffeffff;   //其他接口線的設置,其中dreq 為輸入口
// IODIR |= MP3_XRESET | MP3_XCS | MP3_XDCS;//xRESET,xCS,xDS均為輸出口
// IOSET |= MP3_XRESET | MP3_XCS | MP3_XDCS;//xRESET,xCS,xDS默認輸出高電平
MP3_DREQ = 1; //置為輸入
 
MP3_XRESET = 1;
MP3_XCS = 1;
MP3_XDCS = 1;
}
 
//uint8 SD_SPI_ReadByte(void);
//void SD_SPI_WriteByte(uint8 ucSendData);
 
//#define SPI_RecByte()  SD_SPI_ReadByte()
//#define SPIPutChar(x) SD_SPI_WriteByte(x)
 
#if 1
/**********************************************************/
/*  函數名稱 :  SPIPutChar                                */
/*  函數功能 : 通過SPI發送一個字節的數據                 */
/*  參數     :  待發送的字節數據                          */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void  SPIPutChar(unsigned char ucSendData)
{      
// S0SPDR = c;
// while((S0SPSR & 0x80) == 0); //等待SPI將數據發送完畢
uchar ucCount;
uchar ucMaskCode;
 
ucMaskCode = 0x80;
for(ucCount=0; ucCount<8; ucCount++)
{
Macro_Set_CLK_Low();
 
if(ucMaskCode & ucSendData)
{
Macro_Set_SI_High();
}
else
{
Macro_Set_SI_Low();
}
 
Macro_Set_CLK_High();
ucMaskCode >>= 1;
 
}
}
 
/*******************************************************************************************************************
** 函數名稱: INT8U SPI_RecByte() Name:  INT8U SPI_RecByte()
** 功能描述: 從SPI接口接收一個字節 Function: receive a byte from SPI interface
** 輸   入: 無 Input:  NULL
** 輸   出: 收到的字節 Output:  the byte that be received
********************************************************************************************************************/
static uchar SPI_RecByte(void)
{
uchar ucReadData;
uchar ucCount;
 
ucReadData = 0;
Macro_Set_SI_High();
 
for(ucCount=0; ucCount<8; ucCount++)
{
ucReadData <<= 1;
//降低時鐘頻率
Macro_Set_CLK_Low();
 
if(c_SPI_SO)
{
ucReadData |= 0x01;
}
Macro_Set_CLK_High();
 
}
 
return(ucReadData);
}
 
#endif
 
/*************************************************************/
/*  函數名稱 :  Mp3WriteRegister                             */
/*  函數功能 : 寫vs1003寄存器                               */
/*  參數     :  寄存器地址,待寫數據的高8位,待寫數據的低8位 */
/*  返回值   :  無                                           */
/*-----------------------------------------------------------*/
void Mp3WriteRegister(unsigned char addressbyte, unsigned char highbyte, unsigned char lowbyte)
{
Mp3DeselectData();
Mp3SelectControl();//XCS = 0
SPIPutChar(VS_WRITE_COMMAND); //發送寫寄存器命令
SPIPutChar(addressbyte);      //發送寄存器的地址
SPIPutChar(highbyte);         //發送待寫數據的高8位
SPIPutChar(lowbyte);          //發送待寫數據的低8位
Mp3DeselectControl();
}
 
/*************************************************************/
/*  函數名稱 :  Mp3ReadRegister                              */
/*  函數功能 : 寫vs1003寄存器                               */
/*  參數     :  寄存器地址     */
/*  返回值   :  vs1003的16位寄存器的值                       */
/*-----------------------------------------------------------*/
unsigned int Mp3ReadRegister(unsigned char addressbyte)
{
unsigned int resultvalue = 0;
uchar ucReadValue;
 
Mp3DeselectData();
Mp3SelectControl();//XCS = 0
SPIPutChar(VS_READ_COMMAND); //發送讀寄存器命令
SPIPutChar((addressbyte)); //發送寄存器的地址
 
// SPIPutChar(0xff); //發送讀時鐘
// resultvalue = (SPI_RESULT_BYTE) << 8;//讀取高8位數據
ucReadValue = SPI_RecByte();
resultvalue = ucReadValue<<8;
// SPIPutChar(0xff);   //發送讀時鐘
// resultvalue |= (SPI_RESULT_BYTE);  //讀取低8位數據
ucReadValue = SPI_RecByte();
resultvalue |= ucReadValue;
 
Mp3DeselectControl();              
return resultvalue;                 //返回16位寄存器的值
}
 
/**********************************************************/
/*  函數名稱 :  Mp3SoftReset                              */
/*  函數功能 : vs1003軟件復位                            */
/*  參數     :  無                                        */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void Mp3SoftReset(void)
{
Mp3WriteRegister (SPI_MODE, 0x08, 0x04); //軟件復位
 
wait(1); //延時1ms
while (MP3_DREQ == 0); //等待軟件復位結束
Mp3WriteRegister(SPI_CLOCKF, 0x98, 0x00);//設置vs1003的時鐘,3倍頻
Mp3WriteRegister (SPI_AUDATA, 0xBB, 0x81); //采樣率48k,立體聲
Mp3WriteRegister(SPI_BASS, 0x00, 0x55);//設置重音
Mp3SetVolume(10,10);//設置音量
    wait(1); //延時1ms
   
    //向vs1003發送4個字節無效數據,用以啟動SPI發送
    Mp3SelectData();
SPIPutChar(0);
SPIPutChar(0);
SPIPutChar(0);
SPIPutChar(0);
Mp3DeselectData();
 
}
/**********************************************************/
/*  函數名稱 :  Mp3Reset                                  */
/*  函數功能 : vs1003硬件復位                            */
/*  參數     :  無                                        */
/*  返回值   :  無                                        */
/*--------------------------------------------------------*/
void Mp3Reset(void)
{
Mp3PutInReset();//xReset = 0   復位vs1003      
wait(200);//延時100ms
SPIPutChar(0xff);//發送一個字節的無效數據,啟動SPI傳輸
Mp3DeselectControl();   //xCS = 1
Mp3DeselectData();     //xDCS = 1
Mp3ReleaseFromReset(); //xRESET = 1
wait(200);            //延時100ms
while (MP3_DREQ == 0);//等待DREQ為高
 
    wait(200);            //延時100ms
  Mp3SetVolume(50,50);  
    Mp3SoftReset();//vs1003軟復位
}
 
 
bool CheckVS1003B_DRQ(void)
{
bool bResult;
 
bResult =MP3_DREQ;
return(bResult);
}
 
/***********************************************************/
/*  函數名稱 :  VsSineTest                                 */
/*  函數功能 : vs1003正弦測試,將該函數放在while循環中,  */
/*              如果能持續聽到一高一低的聲音,證明測試通過 */                            
/*  參數     :  無                                         */
/*  返回值   :  無                                         */
/*---------------------------------------------------------*/
void VsSineTest(void)
{
Mp3PutInReset();  //xReset = 0   復位vs1003
wait(200);        //延時100ms        
SPIPutChar(0xff);//發送一個字節的無效數據,啟動SPI傳輸
Mp3DeselectControl();  
Mp3DeselectData();     
Mp3ReleaseFromReset(); 
wait(200);               
Mp3SetVolume(50,50);  
 
  Mp3WriteRegister(SPI_MODE,0x08,0x20);//進入vs1003的測試模式
while (MP3_DREQ == 0);     //等待DREQ為高
  Mp3SelectData();       //xDCS = 1,選擇vs1003的數據接口
 
  //向vs1003發送正弦測試命令:0x53 0xef 0x6e n 0x00 0x00 0x00 0x00
  //其中n = 0x24, 設定vs1003所產生的正弦波的頻率值,具體計算方法見vs1003的datasheet
    SPIPutChar(0x53);      
SPIPutChar(0xef);      
SPIPutChar(0x6e);      
SPIPutChar(0x24);      
SPIPutChar(0x00);      
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
// wait(500);
wait(250);
wait(250);
Mp3DeselectData();//程序執行到這里后應該能從耳機聽到一個單一頻率的聲音
  
        //退出正弦測試
Mp3SelectData();
SPIPutChar(0x45);
SPIPutChar(0x78);
SPIPutChar(0x69);
SPIPutChar(0x74);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
// wait(500);
wait(250);
wait(250);
 
Mp3DeselectData();
 
        //再次進入正弦測試并設置n值為0x44,即將正弦波的頻率設置為另外的值
    Mp3SelectData();       
SPIPutChar(0x53);      
SPIPutChar(0xef);      
SPIPutChar(0x6e);      
SPIPutChar(0x44);      
SPIPutChar(0x00);      
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
// wait(500);
wait(250);
wait(250);
 
Mp3DeselectData(); 
 
//退出正弦測試
Mp3SelectData();
SPIPutChar(0x45);
SPIPutChar(0x78);
SPIPutChar(0x69);
SPIPutChar(0x74);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
// wait(500);
wait(250);
wait(250);
 
Mp3DeselectData();
 }
 
void test_1003_PlayMP3File();
 
void TestVS1003B(void)
{
Mp3Reset();
VsSineTest();
Mp3SoftReset();
test_1003_PlayMP3File();
}
 
//寫寄存器,參數,地址和數據
void VS1003B_WriteCMD(unsigned char addr, unsigned int dat)
{
/*
VS1003B_XDCS_H();
VS1003B_XCS_L();
VS1003B_WriteByte(0x02);
//delay_Nus(20);
VS1003B_WriteByte(addr);
VS1003B_WriteByte(dat>>8);
VS1003B_WriteByte(dat);
//delay_Nus(200);
VS1003B_XCS_H();
*/
Mp3WriteRegister(addr,dat>>8,dat);
}
 
//讀寄存器,參數 地址 返回內容
unsigned int VS1003B_ReadCMD(unsigned char addr)
{
/*
unsigned int temp;
unsigned char temp1;
VS1003B_XDCS_H();
VS1003B_XCS_L();
VS1003B_WriteByte(0x03);
//delay_Nus(20);
VS1003B_WriteByte(addr);
temp=  VS1003B_ReadByte();
temp=temp<<8;
temp1= VS1003B_ReadByte();
temp=temp|temp1;;
VS1003B_XCS_H();
return temp;
*/
return(Mp3ReadRegister(addr));
}
 
//寫數據,音樂數據
void VS1003B_WriteDAT(unsigned char dat)
{
// VS1003B_XDCS_L();
// VS1003B_WriteByte(dat);
// VS1003B_XDCS_H();
// VS1003B_XCS_H();
 
    Mp3SelectData();
SPIPutChar(dat);
Mp3DeselectData();
Mp3DeselectControl();
 
}
 
//開啟環繞聲
void VS1003B_SetVirtualSurroundOn(void)
{
uchar ucRepeatCount;
uint uiModeValue;
 
ucRepeatCount =0;
 
while(1)//寫時鐘寄存器
{
uiModeValue = VS1003B_ReadCMD(0x00);
if(uiModeValue & 0x0001)
{
break;
}
else
{
uiModeValue |= 0x0001;
VS1003B_WriteCMD(0,uiModeValue);
}
ucRepeatCount++;
if(ucRepeatCount++ >10 )break;
}
 
}
 
//關閉環繞聲
void VS1003B_SetVirtualSurroundOff(void)
{
uchar ucRepeatCount;
uint uiModeValue;
 
ucRepeatCount =0;
 
while(1)//寫時鐘寄存器
{
uiModeValue = VS1003B_ReadCMD(0x00);
if(uiModeValue & 0x0001)
{
break;
}
else
{
uiModeValue |= 0x0001;
VS1003B_WriteCMD(0,uiModeValue);
}
ucRepeatCount++;
if(ucRepeatCount++ >10 )break;
}
 
}
 
//增強重音
//入口參數 1.強度0-15
// 2.頻率0-15 (X10Hz)
void VS1003B_SetBassEnhance(uchar ucValue, ucFrequencyID)
{
uchar ucRepeatCount;
uint uiWriteValue;
uint uiReadValue;
 
ucRepeatCount =0;
 
uiWriteValue = VS1003B_ReadCMD(0x02);
 
uiWriteValue &= 0xFF00;
uiWriteValue |= ucValue<<4;
uiWriteValue &= (ucFrequencyID & 0x0F);
 
while(1)//寫時鐘寄存器
{
 
VS1003B_WriteCMD(2,uiWriteValue);
uiReadValue = VS1003B_ReadCMD(0x02);
if(uiReadValue == uiWriteValue)
{
break;
}
ucRepeatCount++;
if(ucRepeatCount++ >10 )break;
}
 
}
 
 
 uint uiVolumeCount; //當前音量值
 
//VS1003初始化,0成功 1失敗
unsigned char VS1003B_Init()
{
unsigned char retry;
/*
PORT_INI();
DDRB|=0xa0;
VS1003B_DDR &=~(1<<VS1003B_DREQ);
//delay_Nus(50);
VS1003B_XCS_H();
VS1003B_XDCS_H();
VS1003B_XRESET_L();
VS1003B_Delay(0xffff);
VS1003B_XRESET_H();//使能芯片
VS1003B_SPI_Low();//先以低頻操作
VS1003B_Delay(0xffff);//延時
*/
Mp3Reset();
 
retry=0;
while(VS1003B_ReadCMD(0x00) != 0x0800)//寫mode寄存器
{
VS1003B_WriteCMD(0x00,0x0800);
if(retry++ >10 )break;//{PORTB|=_BV(PB1);break;}
}
retry=0;
/*while(VS1003B_ReadCMD(0x02) != 0x75)//寫mode寄存器
{
VS1003B_WriteCMD(0x02,0x75);
if(retry++ >10 )break;//{PORTB|=_BV(PB1);break;}
}*/
retry=0;
while(VS1003B_ReadCMD(0x03) != 0x9800)//寫時鐘寄存器
{
VS1003B_WriteCMD(0x03,0x9800);
if(retry++ >10 )break;
}
retry=0;
// while(VS1003B_ReadCMD(0x0b) != 0x1111)//設音量
// {
// VS1003B_WriteCMD(0x0b,0x1111);
// if(retry++ >10 )break;
// }
while(VS1003B_ReadCMD(0x0b) != uiVolumeCount)//設音量
{
VS1003B_WriteCMD(0x0b,uiVolumeCount);
if(retry++ >10 )break;
}
 
// VS1003B_SPI_High();//提高速度,全速運行
if(retry > 10)return 1;
return 0;
}
 
//VS1003軟件復位
void VS1003B_SoftReset()
{
VS1003B_WriteCMD(0x00,0x0804);//寫復位
// VS1003B_Delay(0xffff);//延時,至少1.35ms
wait(2);
}
 
void VS1003B_Fill2048Zero()
{
unsigned char i,j;
 
for(i=0;i<64;i++)
{
if(CheckVS1003B_DRQ())
{
Mp3SelectData();
 
for(j=0;j<32;j++)
{
 
VS1003B_WriteDAT(0x00);
}
Mp3DeselectData();
}
}
}
 
 
void test_1003_PlayMP3File() 
{
   unsigned int data_pointer;unsigned char i;
unsigned int uiCount;
 
uiCount = sizeof(MusicData);
data_pointer=0; 
VS1003B_SoftReset();
    while(uiCount>0)
 
  if(CheckVS1003B_DRQ())
      {
    for(i=0;i<32;i++)
            {
      VS1003B_WriteDAT(MusicData[data_pointer]);
      data_pointer++;
            }
uiCount -= 32;
         }
    }
VS1003B_Fill2048Zero();
}
 

調試過程詳見:http://www.izizhuan.cn/mcu/758.html

關閉窗口
国产综合色区在线观看| 91在线精品一区二区三区| 午夜小视频在线观看| 精品视频一区二区观看| 日本三级欧美三级| 欧美激情国产精品日韩| 国产私拍一区| www.亚洲一区| 欧美精品tushy高清| 国产日韩欧美制服另类| 久久永久免费| 精品国产乱码久久久| 免费毛片b在线观看| 成人福利视频导航| 欧美6699| 国产草草影院ccyycom| 亚洲女人久久久| 青娱乐国产精品视频| 4444亚洲人成无码网在线观看| 国产精品91久久久| 国产一级揄自揄精品视频| 色婷婷激情一区二区三区| 久久在线免费观看| 青青草成人在线观看| 国产精品成人av| 亚洲综合网站| 中文字幕av一区二区三区佐山爱| 男人天堂网在线观看| 菠萝蜜视频网站入口| 欧美孕妇与黑人巨交| 国产精品乱码一区二区| 久久综合亚洲色hezyo国产| 亚洲欧美在线不卡| 午夜剧场在线免费观看| 浮妇高潮喷白浆视频| 天堂va久久久噜噜噜久久va| 成人性生交大片免费看视频直播 | 亚洲曰韩产成在线| 99精品视频中文字幕| 麻豆精品一二三| 亚洲经典在线看| 亚洲九九视频| 激情婷婷综合| 亚洲黄页网站| 女同久久另类99精品国产 | 国产精品视频免费| 99精品偷自拍| 99国产精品视频免费观看| 激情图片小说一区| 日韩专区在线视频| 久久国产精品99国产| 国产综合久久| 狠狠入ady亚洲精品经典电影| 日韩一区欧美| 久久综合av| 手机在线一区二区三区| 日韩中文字幕高清在线观看| 四虎成人免费在线| ass白嫩白嫩的小美女| 99久久国产视频| 欧美人乱大交xxxxx| 中国女人内谢69xxxx视频| 亚洲精品字幕在线| 亚洲第一免费视频| 色综合视频在线| 日本人妻熟妇久久久久久| av免费在线观看不卡| 国产肥老妇视频| 欧美 日韩 国产 成人 在线 91| 动漫av一区二区三区| 欧美一区二不卡视频| 好男人官网在线| 亚洲精品精品一区| 国产男女av| 黄色网址网站| 天天射夜夜骑| 传媒av在线| 国产无套粉嫩白浆在线2022年 | 国产福利久久精品| 精品九九九九| 欧美日韩国产三区| 欧美h视频在线观看| 男女私大尺度视频| 一级在线免费视频| 男女性杂交内射妇女bbwxz| 中文字幕在线观看网址| 天天操天天舔天天射| 久草中文在线视频| 免费在线不卡av| 黑人乱码一区二区三区av| 亚洲成色在线综合网站2018站| 欧美性色黄在线视频| 婷婷5月激情5月| **孕交吃奶水一级毛片| 亚洲а∨精品天堂在线| 黄网站免费在线观看| 香蕉视频亚洲一级| 国产精品白浆| 亚洲mv大片欧洲mv大片| 日本不卡高清视频| av在线综合网| 亚洲一区二区三区四区五区黄| 色香色香欲天天天影视综合网| 日韩一区二区三区免费看 | 中文字幕av专区| 亚洲美女性囗交| 国产sm调教视频| 精品欧美一区二区三区免费观看| 国产av一区二区三区精品| 欧美五级在线观看视频播放| 成人18网站| fc2在线中文字幕| 欧美日韩不卡| 欧美裸体在线版观看完整版| 一区二区三区四区五区在线 | 亚洲一区二区三区高清视频| 综合图区欧美| 成年在线播放小视频| 69久久夜色| 久久精品国产福利| 欧美wwwww| 精品一区二区三区免费毛片爱| 国产精品毛片大码女人| 欧美日韩国产小视频在线观看| 亚洲香蕉伊综合在人在线视看| 日本精品视频在线观看| 久久av免费观看| 欧美日韩在线不卡视频| 国产jjizz一区二区三区视频| 日韩在线播放中文字幕| 人xxxx性xxxxx欧美| 轻轻色免费在线视频| 国内激情视频在线观看| 美日韩中文字幕| 日韩高清一级片| 亚洲三级在线免费观看| 亚洲成人aaa| 国产精品第一区| 91精品一区二区三区四区| 美女扒开腿免费视频| 国产精品香蕉一区二区三区| 欧美高清在线视频| 国产在线一区二区三区欧美| 日韩在线你懂得| 欧美aaaaa性bbbbb小妇| 国产区精品视频在线观看豆花| 狠狠综合久久av一区二区老牛| 国产69精品久久久久777| 欧美天堂在线观看| 久久视频在线看| 免费久久99精品国产自| 四虎成人在线播放| 国产成人一区二区三区影院在线| 最近2018年中文字幕在线 | 青青草原免费观看| 亚洲综合在线不卡| 香蕉av一区| 香蕉成人app| 日本欧美久久久久免费播放网| 又紧又大又爽精品一区二区| 一二美女精品欧洲| 精品国产乱码久久久久软件| 国产精品久久久久久久99| 国产99免费视频| 黄色影片网站| 欧美大片高清| 午夜亚洲性色福利视频| 亚洲精品中文字幕在线观看| 亚洲香蕉av在线一区二区三区| 国产精品亚洲不卡a| 性生活一级大片| 91精品国产乱码久久久| 免费网站www在线观看| 色成人综合网| 精品亚洲porn| 91精品国产综合久久香蕉麻豆| 国产精品久久久久久久一区探花| 亚洲中文字幕无码中文字| 日产精品久久久久| 蜜桃av导航| 亚洲毛片在线免费| 奇米影视一区二区三区小说| 91国产福利在线| 国产美女主播一区| 日本特黄在线观看| 国产自产一区二区| 国产精品99999| 99国产**精品****| 亚洲欧洲www| 欧美激情精品久久久久久久变态| 日韩久久久久久久久久久久| 国产成人啪精品午夜在线观看| 免费vip影院| 亚洲免费看片| 成人综合在线视频| 亚洲性线免费观看视频成熟| 国产成人精品免费看在线播放| 日韩视频中文字幕在线观看| 黄色免费直接看| 欧美2区3区4区| 91免费看视频| 精品国产自在精品国产浪潮 | 国产精品久久久久久婷婷天堂| 亚洲精品20p| 亚洲色婷婷综合开心网| a'aaa级片在线观看| 日本v片在线高清不卡在线观看| 欧美一级艳片视频免费观看| 国内一区在线| 日本精品人妻无码77777| 成人嫩草影院免费观看| 卡通动漫国产精品| 亚洲欧美国产高清| 国产成人av网址| 无码一区二区精品| 偷偷看偷偷操| 国产极品模特精品一二| 亚洲欧美激情小说另类| 国产精品久久综合av爱欲tv| 国产老熟女伦老熟妇露脸| 性一交一乱一色一免费无遮挡| 欧美视频免费看| 2021国产精品久久精品| 久久免费视频网| 亚洲av综合色区无码另类小说| 亚洲国产精品区| 欧美美女福利视频| 国产精品青草综合久久久久99| **欧美日韩vr在线| 91精品啪在线观看国产| 91p0rn永久地址| 久本草在线中文字幕亚洲| 一区二区三区日韩在线观看| 91精品国产综合久久香蕉| 久久久视频6r| 美日韩黄色片| 欧美二区不卡| 亚洲精品在线免费观看视频| 欧美一级爱爱视频| 人妻与黑人一区二区三区| 国产精品亚洲一区二区三区在线观看| 91在线国内视频| 国产精品欧美风情| 91成人福利视频| wwwww在线观看免费视频| 精品在线播放午夜| 欧美不卡视频一区发布| 少妇被狂c下部羞羞漫画| www.jizz在线观看| 911精品美国片911久久久| 日韩午夜在线播放| 国产精品333| 国内精品女同女同一区二区三区| av成人app永久免费| 天天综合网天天综合色| 日本欧洲国产一区二区| va婷婷在线免费观看| 成人一区视频| 婷婷综合另类小说色区| 亚洲国产一区二区在线| jizz中国少妇| 亚洲国产中文在线二区三区免| 欧美日韩色婷婷| 亚洲午夜精品一区二区三区| 丰满熟女一区二区三区| 97青娱国产盛宴精品视频| 91国偷自产一区二区三区成为亚洲经典| 一区二区视频在线观看| 性xxxfllreexxx少妇| 在线一区二区三区视频| 欧亚洲嫩模精品一区三区| 黄网站色视频免费观看| 欧美日韩视频精品一区二区| 青草国产精品| 亚洲欧美综合v| 五月天丁香社区| 欧美vide| 国产成人高清视频| 91久久综合亚洲鲁鲁五月天| 久久人妻免费视频| 成人久久网站| 一本久道久久综合中文字幕 | 成人免费xxxxx在线观看| 六月丁香激情综合| 美女网站在线看| 亚洲永久精品国产| 最近免费观看高清韩国日本大全| 影音先锋在线中文| 久久综合国产| 日韩在线视频观看| 波多野结衣喷潮| 超清av在线| 一区二区三区四区乱视频| 亚洲欧美日韩精品在线| 九色精品视频在线观看| 欧美激情成人在线| 久久久久久欧美| 91国产丝袜播放在线| 免费成人高清在线视频| 欧美日韩精品三区| 中文字幕在线观看日| 在线看的av| 国产亚洲一区二区三区四区| 视频在线99| 国产成人夜间影院在线观看| 国产精品外国| 国产拍精品一二三| 国产99久一区二区三区a片| 女厕嘘嘘一区二区在线播放| 中文字幕欧美精品在线| 国产探花在线免费观看| 欧美亚洲大片| 欧美成人伊人久久综合网| 亚洲熟女乱综合一区二区三区| 成人黄视频在线观看| 午夜激情一区二区| 天天操,天天操| 国产h视频在线观看| 综合精品久久久| 午夜肉伦伦影院| 无线免费在线视频| 亚洲日本护士毛茸茸| 国产精品沙发午睡系列| 91免费版在线观看| 国产精品久久久久久久久动漫 | 亚洲一区3d动漫同人无遮挡| 天堂视频免费在线观看| 久草在线在线精品观看| 久精品国产欧美| 91日本韩国| 国产一区二区三区视频在线播放 | 久久青青草原亚洲av无码麻豆| 网站一区二区| 少妇高潮久久77777| 日本午夜小视频| 欧美a一欧美| 久久久久国产精品免费| 97av免费视频| 欧美视频成人| 91蜜桃网站免费观看| 久久精品国产屋| 国产乱码精品一区二区三区忘忧草 | 成年人在线观看视频| 亚洲综合在线五月| 91国内在线播放| 手机av免费在线| 欧美一区二区三区日韩视频| 日本猛少妇色xxxxx免费网站| 久久亚洲精品爱爱| 亚洲色图在线观看| 亚洲毛片一区二区三区| 精品无吗乱吗av国产爱色| 一区二区激情小说| 久久久无码人妻精品无码| 久久青草伊人| 亚洲人成免费电影| 黄色污污视频软件| 欧美日韩18| 精品麻豆av| 激情av网站| 亚洲成av人综合在线观看| 免费欧美一级片| 亚洲精品粉嫩美女一区| 精品国偷自产在线视频| 99久久亚洲精品日本无码| 在线综合亚洲| 欧美日韩一区二区三区在线视频| 麻豆视频免费网站| 亚洲精品v日韩精品| 国产黑丝一区二区| 国产成人久久精品一区二区三区| 欧美国产激情18| 跑男十一季在线观看免费| 国产精品99久久久久久久vr | 久久国产欧美| 亚洲视频在线二区| 你懂的在线视频| 欧美挠脚心视频网站| 欧美国产日韩综合| 99久久婷婷| 日本免费高清一区| 亚洲色图27p| 你懂的一区二区三区| 成人欧美一区二区三区视频| av日韩在线免费| 欧美日韩在线视频首页| 影音先锋男人资源在线观看| 欧美日韩中文一区二区| 国产麻豆日韩| 亚洲热app| 精品久久久久久无| 91禁在线观看| 精油按摩中文字幕久久| 国产深夜男女无套内射| rebdb初裸写真在线观看| 欧美日本国产在线| 国产成人精品自线拍| 亚洲蜜臀av乱码久久精品| 蜜桃传媒一区二区亚洲| 日韩欧美高清在线播放|