在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【英飛凌PSoC 6 RTT開發板試用】使用軟件和硬件I2C點亮OLED屏,幀率從2FPS提升到51FPS

碼工雜記 ? 來源:碼工雜記 ? 作者:碼工雜記 ? 2023-07-11 09:21 ? 次閱讀

本文將會分別介紹——使用軟件I2C硬件I2C在PSoC開發板上點亮OLED屏,并進行屏幕刷新率對比測試,最后還會在硬件I2C的基礎上繼續優化屏幕刷新率。本文實驗使用的OLED屏尺寸為0.96寸,分辨率為128x64,驅動芯片為SSD1306。本文使用的開發環境為RT-Thread Studio,設備上運行的是RT-Thread實時系統。本文主旨在于,介紹如何在PSoC開發板上使用軟件I2C和硬件硬件I2C驅動外設,以及對于屏幕刷新率優化的一些思路。

如需離線閱讀,可以下載本文的完整pdf版本:

*附件:【英飛凌PSoC 6 RTT開發板試用】使用軟件和硬件I2C點亮OLED屏,幀率從2FPS提升到51 53b89082947a409aaa80d410ab5527ca.pdf

一、準備工作

開始之前,需要準備實驗所需的硬件和軟件,接下來分別介紹。

1.1 硬件準備

本次實驗需要用到的硬件有:

1.2 軟件準備

本次實驗需要使用的軟件主要為:

  • RT-Thread Studio
  • MobaXterm(其他串口調試工具也可以)

假設你已經成功在電腦上安裝了以上這些軟件。

1.3 硬件連接

硬件連接分為兩部分,一部分是PC和開發板,通過USB Type-C線連接;這個沒啥難度,不做過多介紹;需要注意的是,開發板一端接DAP口;否則無法正常下載程序。

另外一部分是,開發板和OLED屏幕之間的連接,具體如下表所示:

OLED屏引腳 開發板引腳
SDA SDA
SCL SCL
GND GND
VCC 3V3

開發板和OLED屏幕之間的硬件連接,如下圖所示:

Untitled

二、原理分析

這么連接之后,如果主控芯片使用軟件I2C驅動OLED屏,那么什么限制,對應管腳只需要使用GPIO模擬I2C時序即可。如果想要讓主控芯片使用硬件I2C驅動OLED屏,則需要檢查一下主控芯片對應引腳可以設置為硬件I2C功能,接下來即為檢查的過程。

2.1 開發板原理圖

首先,檢查開發板原理圖的Arduino接口部分:

Untitled

這里只能看到標號,看不到主控芯片的引腳名稱。

所以,還需要繼續搜索這兩個引腳的標號,找到主控芯片對應的引腳標號:

Untitled

對照這兩處可以知道——Arduino接口I2C引腳和主控芯片直接的連接關系為:

  • SCL:P8.0
  • SDA:P8.1

2.2 芯片數據手冊

《PSoC 6 MCU: CY8C62x8, CY8C62xA Datasheet》文檔的 Pinouts 章節,Table 8. Multiple Alternate Functions 引腳功能服用表,可以查到P8.0和P8.1的功能有:

Untitled

可以看到,有scb[4].i2c_scl和scb[4].i2c_sda功能。

也就是說,P8.0和P8.1可以設置為硬件I2C功能。

三、軟件I2C驅動OLED

接下來,將使用RT-Thread Studio創建項目,并通過添加軟件包和修改配置的方式,實現使用軟件I2C驅動OLED屏幕。

3.1 創建RT-Thread項目

在RT-Thread Studio中,打開“文件”→“新建”→”RT-Thread項目”菜單,如下圖所示:

Untitled

在彈出的創建項目界面中,Project name中填入psoc6_oled,選中基于開發板的項目,如下圖所示:

Untitled

點擊“完成”,即可創建名為psoc6_oled的項目。

3.2 添加ssd1306軟件包

創建項目后,雙擊項目資源管理器視圖中,項目下方的“RT-Thread Settings”,主編輯區如下圖所示:

Untitled

點擊其中的“添加軟件包”,彈出的軟件包搜索界面,如下圖所示:

Untitled

按照圖中標注的操作順序,即可將ssd1306軟件包添加到當前項目。

添加完成后,主編輯區如下圖所示:

Untitled

此時,按Ctrl+S快捷鍵,保存對項目配置的修改。如果網絡通常,則會在控制臺窗口中看到ssd1306軟件包正常下載的日志:

Untitled

這樣,ssd1306軟件包就成功添加到項目中了,位于packages子目錄下:

Untitled

3.3 配置軟件I2C和ssd1306軟件包

接下來,在RT-Thread Studio主編輯器,點擊詳細配置按鈕,按鈕位置如下圖所示:

Untitled

主編輯器將會顯示詳細配置:

Untitled

切換到“硬件”標簽頁,找到“Enable Software I2C”選項,并打開該選項,如下圖所示:

Untitled

接著,打開“使能I2C1 BUS”,并將scl和sda中分別改為64和65,如下圖所示:

Untitled

然后,在搜索框輸入ssd1306,彈出懸浮菜單后,單擊該懸浮菜單,如下圖所示:

Untitled

勾選“Enable debug log output”和“Enable ssd1306 sample”,如下圖所示:

Untitled

最后,按Ctrl+S保存對所有配置項的修改。

3.4 編譯和下載程序

首先,點擊工具欄的錘子圖標,或者按Ctrl+B快捷鍵,觸發項目構建(全部編譯):

Untitled

項目構建完成后,可以在控制臺窗口看到生成了elf文件,以及預計Flash和RAM占用情況:

Untitled

接著,點擊工具欄上的下載圖標,或者Ctrl+Alt+D快捷鍵,觸發下載程序二進制文件到開發板上,如下圖:

Untitled

下載過程中以及下載完成后,控制臺窗都可以看到日志輸出:

Untitled

PS:開始下載之前,需要確認開發板以及和PC正確連接了(開發板要連在DAP口上,并能夠正常識別)。

3.5 運行和測試程序

為了方便在串口中進行命令控制,運行之前,需要先打開MobaXterm(或者其他串口調試工具):

Untitled

如上圖所示,選中對應的COM號,串口參數設置為:

  • 波特率 115200
  • 數據位 8
  • 停止位 1
  • 校驗 None
  • 流控 None

之后,點OK確認連接。

連接成功后,按開發板的復位鍵,可以看到串口連接中輸出:

Untitled

此時輸入help命令并回車:

Untitled

可以看到,有ssd1306_TestAll命令。

輸入ssd1306_TestAll命令并回車,如無意外,將會看到OLED屏幕上已經有畫面顯示了:

Untitled

但是此時的幀率較低,測試顯示僅有2幀每秒:

Untitled

四、硬件I2C驅動OLED

方便起見,接下來將不再創建新項目,而是在剛剛創建的RT-Thread Studio項目上進行修改,通過修改配置的方式,實現使用硬件I2C驅動OLED屏幕。

4.1 增加I2C4配置和代碼

RT-Thread Studio默認創建的項目不支持I2C4,不能實現硬件I2C驅動OLED。因此,需要先添加I2C4配置和代碼,才能進行后續操作。

首先,修改 board/Kconfig 文件,在config BSP_USING_HW_I2C6之前添加如下代碼行:

config BSP_USING_HW_I2C4
                bool "Enable I2C4 Bus (Arduino I2C)"
                default n
                if BSP_USING_HW_I2C4
                    comment "Notice: P8_0 -- > 64; P8_1 -- > 65"
                    config BSP_I2C4_SCL_PIN
                        int "i2c4 SCL pin number"
                        range 1 113
                        default 64
                    config BSP_I2C4_SDA_PIN
                        int "i2c4 SDA pin number"
                        range 1 113
                        default 65
                endif

接著,修改 libraries/HAL_Drivers/SConscript 文件,找到 src += ['drv_i2c.c'] 前一行,添加一個條件:

if GetDepend('BSP_USING_HW_I2C3') or GetDepend('BSP_USING_HW_I2C4') or GetDepend('BSP_USING_HW_I2C6'):

最后,修改 libraries/HAL_Drivers/drv_i2c.c 文件,具體修改內容為:

--- a/libraries/HAL_Drivers/drv_i2c.c
+++ b/libraries/HAL_Drivers/drv_i2c.c
@@ -11,7 +11,7 @@
 #include "board.h"

 #if defined(RT_USING_I2C)
-#if defined(BSP_USING_HW_I2C3) || defined(BSP_USING_HW_I2C6)
+#if defined(BSP_USING_HW_I2C3) || defined(BSP_USING_HW_I2C4) || defined(BSP_USING_HW_I2C6)
 #include 

 #ifndef I2C3_CONFIG
@@ -22,7 +22,16 @@
         .sda_pin = BSP_I2C3_SDA_PIN, \\\\\\\\
     }
 #endif /* I2C3_CONFIG */
-#endif
+
+#ifndef I2C4_CONFIG
+#define I2C4_CONFIG                  \\\\\\\\
+    {                                \\\\\\\\
+        .name = "i2c4",              \\\\\\\\
+        .scl_pin = BSP_I2C4_SCL_PIN, \\\\\\\\
+        .sda_pin = BSP_I2C4_SDA_PIN, \\\\\\\\
+    }
+#endif /* I2C4_CONFIG */
+
 #ifndef I2C6_CONFIG
 #define I2C6_CONFIG                  \\\\\\\\
     {                                \\\\\\\\
@@ -32,11 +41,16 @@
     }
 #endif /* I2C6_CONFIG */

+#endif /* defined(BSP_USING_I2C1) || defined(BSP_USING_I2C2) */
+
 enum
 {
 #ifdef BSP_USING_HW_I2C3
     I2C3_INDEX,
 #endif
+#ifdef BSP_USING_HW_I2C4
+    I2C4_INDEX,
+#endif
 #ifdef BSP_USING_HW_I2C6
     I2C6_INDEX,
 #endif
@@ -63,6 +77,10 @@ static struct ifx_i2c_config i2c_config[] =
         I2C3_CONFIG,
 #endif

+#ifdef BSP_USING_HW_I2C4
+        I2C4_CONFIG,
+#endif
+
 #ifdef BSP_USING_HW_I2C6
         I2C6_CONFIG,
 #endif
@@ -145,8 +163,7 @@ void HAL_I2C_Init(struct ifx_i2c *obj)

 int rt_hw_i2c_init(void)
 {
-    rt_err_t result;
-    cyhal_i2c_t mI2C;
+    rt_err_t result = RT_EOK;

     for (int i = 0; i < sizeof(i2c_config) / sizeof(i2c_config[0]); i++)
     {
@@ -157,8 +174,6 @@ int rt_hw_i2c_init(void)
         i2c_objs[i].mI2C_cfg.address = 0;
         i2c_objs[i].mI2C_cfg.frequencyhal_hz = (400000UL);

-        i2c_objs[i].mI2C = mI2C;
-
         i2c_objs[i].i2c_bus.ops = &i2c_ops;

         HAL_I2C_Init(&i2c_objs[i]);
@@ -171,4 +186,4 @@ int rt_hw_i2c_init(void)
 }
 INIT_DEVICE_EXPORT(rt_hw_i2c_init);

-#endif /* defined(BSP_USING_I2C1) || defined(BSP_USING_I2C2) */
+#endif /* RT_USING_I2C */

4.1 修改I2C和ssd1306軟件包配置

首先,打開RT-Thread Settings的詳細配置,切換到硬件標簽頁,關閉“Enable Software I2C Bus”配置項,如下圖所示:

Untitled

接著,打開“Enable Hardware I2C Bus”配置項,再打開其中的“Enable I2C4 Bus (Arduino I2C)”配置項,如下圖所示:

Untitled

最后,再次搜索ssd1306,點擊懸浮菜單,跳回到ssd1306配置,修改I2C bus name為 i2c4 ,如下圖所示:

Untitled

完成修改后,按Ctrl+S保存配置。

4.2 編譯、下載、運行

重新Ctrl+B編譯,Ctrl+Alt+D下載,按RESET鍵復位之后,重新運行 ssd1306_TestAll 命令,可以看到,OLED屏幕成功顯示畫面了。

并且,這一次測得的幀率為7fps,如下圖所示:

Untitled

這次顯示畫面快了很多,之前只有2fps,現在已經7fps了;但還是不夠高,還可以繼續優化。

接下來繼續優化,提高幀率,提高幀率的思路:

  • 提高I2C時鐘信號頻率
  • 減少一幀畫面發送數據量

4.3 提高I2C時鐘信號頻率

接下來,分別從這兩方面嘗試提升幀率。

首先是提升I2C頻率,默認的速度寫在drv_i2c.c代碼里面:

i2c_objs[i].mI2C_cfg.frequencyhal_hz = (400000UL); // 400K

查閱芯片手冊,可以知道CY8C624ABZI芯片I2C最高支持1Mbps:

Untitled

將drv_i2c.c里面的默認I2C頻率改為1M之后,測試顯示的幀率為12fps:

Untitled

4.5 減少一幀畫面發送數據量

查看ssd1306.c文件,發現可以優化的代碼:

// Send data
void ssd1306_WriteData(uint8_t* buffer, size_t buff_size) 
{
#if PKG_USING_SSD1306_HW_I2C
    HAL_I2C_Mem_Write(&SSD1306_I2C_PORT, SSD1306_I2C_ADDR, 0x40, 1, buffer, buff_size, HAL_MAX_DELAY);
#else
   for (int i = 0; i < buff_size; i++)
   {
       uint8_t buf[2] = {SSD1306_CTRL_DATA, buffer[i]};
       rt_i2c_master_send(i2c_bus, SSD1306_I2C_ADDR, RT_I2C_WR, buf, 2);
   }
#endif
}

這段代碼中,PKG_USING_SSD1306_HW_I2C 宏內部的分支是STM32的代碼,不用關系,主要看下面的分支;

下面的分支,使用了一個for循環,調用rt_i2c_master_send接口,每次卻只發送兩個字節,存在重復的大量的SSD1306_CTRL_DATA字節。

查詢SSD1306數據手冊,可以知道,它是支持在一個數據標記字節之后,連續發送數據的:

相應的可以優化為:

// Send data
void ssd1306_WriteData(uint8_t* buffer, size_t buff_size) 
{
    uint32_t len = buff_size + 1;
    uint8_t* data = rt_malloc(len); // 申請一個更大的緩沖
    RT_ASSERT(data);

    // 準備數據
    data[0] = SSD1306_CTRL_DATA;
    rt_memcpy(&data[1], buffer, buff_size);

    // 發送
    rt_i2c_master_send(i2c_bus, SSD1306_I2C_ADDR, RT_I2C_WR, data, len);

    rt_free(data); // 釋放
}

這段代碼修改之后,再次運行,測得幀率為45fps:

Untitled

更進一步檢查,發現還有優化空間:

void ssd1306_UpdateScreen(void) 
{
    // Write data to each page of RAM. Number of pages
    // depends on the screen height:
    //
    //  * 32px   ==  4 pages
    //  * 64px   ==  8 pages
    //  * 128px  ==  16 pages
    for(uint8_t i = 0; i < SSD1306_HEIGHT/8; i++) 
    {
        ssd1306_WriteCommand(0xB0 + i); // Set the current RAM page address.
        ssd1306_WriteCommand(0x00);
        ssd1306_WriteCommand(0x10);
        ssd1306_WriteData(&SSD1306_Buffer[SSD1306_WIDTH*i],SSD1306_WIDTH);
    }
}

這個函數里面,從注釋可以知道,對于128x64分辨率的屏,會分為8頁進行發送;每個頁面發送開始的時候,會調用三次ssd1306_WriteCommand函數。

實際上可以不需要重復調用ssd1306_WriteCommand函數:

void ssd1306_UpdateScreen(void) 
{
    uint8_t cmd[] = {
        0X21,   // 設置列起始和結束地址
        0X00,   // 列起始地址 0
        0X7F,   // 列終止地址 127
        0X22,   // 設置頁起始和結束地址
        0X00,   // 頁起始地址 0
        0X07,   // 頁終止地址 7
    };
    uint32_t count = 0;
    uint8_t data[2 * sizeof(cmd) + 1 + SSD1306_BUFFER_SIZE ] = {};

    // copy cmd
    for (uint32_t i = 0; i < sizeof(cmd)/sizeof(cmd[0]); i++) {
        data[count++] = SSD1306_CTRL_CMD | SSD1306_MASK_CONT;
        data[count++] = cmd[i];
    }

    // copy frame data
    data[count++] = SSD1306_CTRL_DATA;
    memcpy(&data[count], SSD1306_Buffer, sizeof(SSD1306_Buffer));
    count += sizeof(SSD1306_Buffer);

    // send to i2c bus
    rt_i2c_master_send(i2c_bus, SSD1306_I2C_ADDR, RT_I2C_WR, data, count);
}

Untitled

非??炝?,已經是最初2fps的25倍。

最終達到的幀率并沒有達到OLED屏幕的物理極限,可能還存在一些優化空間,感興趣的讀者還可以在此基礎上繼續探索。

文章就到這里,感謝閱讀,下次再會~

五、參考鏈接

  1. RTT PSoC開發板原理圖:IFX-PSoC6-RT-Thread-sch.pdf (gitee.com)
  2. CY8C624A 芯片數據手冊:Infineon-PSOC_6_MCU_CY8C62X8_CY8C62XA-DataSheet-v18_00-EN.pdf
  3. CY8C624A 架構參考手冊: Infineon-PSoC_6_MCU_CY8C6xx8_CY8C6xxA_Architecture_Technical_Reference_Manual_(TRM)-AdditionalTechnicalInformation-v08_00-EN.pdf
  4. CY8C624A 寄存器參考手冊: Infineon-PSoC_6_MCU_CY8C62x8_CY8C62xA_Registers_Technical_Reference_Manual-AdditionalTechnicalInformation-v06_00-EN.pdf
  5. Cypress HAL接口參考: Redirecting to Infineon GitHub (cypresssemiconductorco.github.io)
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 英飛凌
    +關注

    關注

    66

    文章

    2188

    瀏覽量

    138716
  • 單片機
    +關注

    關注

    6037

    文章

    44558

    瀏覽量

    635237
  • PSoC
    +關注

    關注

    12

    文章

    170

    瀏覽量

    91914
  • OLED
    +關注

    關注

    119

    文章

    6200

    瀏覽量

    224198
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1487

    瀏覽量

    123740
  • 開發板
    +關注

    關注

    25

    文章

    5050

    瀏覽量

    97456
  • RTT
    RTT
    +關注

    關注

    0

    文章

    65

    瀏覽量

    17127
  • RT-Thread
    +關注

    關注

    31

    文章

    1289

    瀏覽量

    40125
收藏 人收藏

    評論

    相關推薦

    【Renesas RA6M4開發板I2C(模擬)驅動ssd1306 OLED屏幕】

    【Renesas RA6M4開發板I2C(模擬)驅動ssd1306 OLED屏幕】
    的頭像 發表于 01-11 09:34 ?4551次閱讀
    【Renesas RA<b class='flag-5'>6</b>M4<b class='flag-5'>開發板</b>之<b class='flag-5'>I2C</b>(模擬)驅動ssd1306 <b class='flag-5'>OLED</b>屏幕】

    英飛凌PSoC 6】新建RTT工程

    介紹英飛凌PSoC 6 RTT開發板環境創建
    的頭像 發表于 04-24 15:29 ?1944次閱讀
    【<b class='flag-5'>英飛凌</b><b class='flag-5'>PSoC</b> <b class='flag-5'>6</b>】新建<b class='flag-5'>RTT</b>工程

    英飛凌PSoC 6 RTT開發板試用】通過軟件硬件I2C接口獲取數字溫濕度傳感器SHT30的數據

    本文將會分別介紹——使用軟件I2C硬件I2CPSoC開發板上獲取SHT30數字溫濕度傳感器的
    的頭像 發表于 07-11 09:21 ?3476次閱讀
    【<b class='flag-5'>英飛凌</b><b class='flag-5'>PSoC</b> <b class='flag-5'>6</b> <b class='flag-5'>RTT</b><b class='flag-5'>開發板</b><b class='flag-5'>試用</b>】通過<b class='flag-5'>軟件</b>和<b class='flag-5'>硬件</b><b class='flag-5'>I2C</b>接口獲取數字溫濕度傳感器SHT30的數據

    【觸覺智能 IDO-SBC2D06-V1B-12W開發板試用OLED點亮

    使用的開發板還是和之前一樣的板子,使用接口需要在設備樹中打開,本次使用的是GPIO_6/7是I2C0,這是因為I2C1被觸摸使用了。這是需
    發表于 11-14 17:59

    camera幀率只能到17fps左右是為什么?如何解決?

    我這邊發現幀率只能到17fps左右,我調低分辨率到720p幀率依然不能提高,ov13850的datasheet來看,當分辨率下降到1080p幀率
    發表于 12-30 06:29

    【觸覺智能 Purple Pi開發板試用點亮I2C_SSD1306

    如下:【總結】Purple Pi開發板,板載了i2c外設,可以外接多個的i2c傳感器、OLED等外設,而且網上開源的驅動多,使用起來非常方
    發表于 11-03 14:30

    【新品發布】英飛凌PSoC 6 RTT物聯網開發板內容詳解

    操作系統 RT-Thread 。PSoC 6 RTT開發板具有豐富的軟硬件資源和低成本優勢,兼容 Arduino 接口,助力
    發表于 04-13 13:46

    【新品試用英飛凌PSoC 6 RTT開發板試用活動

    概述、軟件調試、硬件接入、視頻演示,不少于500字+2張圖片。 2)報告形式:標題格式 【評測活動標題+自擬標題】示例: 【英飛凌
    發表于 04-13 15:26

    【正點原子STM32探索者V3開發板免費試用】+I2C驅動OLED

    **【正點原子STM32探索者V3開發板免費試用】+I2C驅動 OLED** OLED (OrganicLight-Emitting Dio
    發表于 05-07 17:48

    英飛凌PSoC 6 RTT開發板試用】+開箱測試

    英飛凌PSoC 6 RTT開發板試用】+開箱測試 硬件
    發表于 06-05 01:06

    硬件I2C與模擬I2C

    硬件I2C對應芯片上的I2C外設,有相應I2C驅動電路,其所使用的I2C管腳也是專用的,因而效率要遠高于
    發表于 12-28 19:14 ?81次下載
    <b class='flag-5'>硬件</b><b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    龍芯2K500先鋒試用體驗,驅動OLED播放視頻

    一、硬件準備 硬件部分主要包括: 龍芯2K500先鋒 0.96寸OLED
    的頭像 發表于 02-04 12:50 ?2149次閱讀

    英飛凌聯合 RT-Thread 發布 PSoC? 62 with CAPSENSE ? evaluation kit開發板

    RTT 開發板開發板,其默認內置物聯網操作系統 RT-Thread 。 PSoC 6 RTT
    的頭像 發表于 04-13 01:35 ?1876次閱讀

    Hi3861硬件i2c驅動oled

    最近想用 3861 做個有意思的東西,記錄一下開發過程。今天使用 3861 的硬件 i2c 驅動 oled。
    的頭像 發表于 04-18 09:09 ?1523次閱讀

    使用I2C協議點亮OLED

    你好,我是愛吃魚香ROS的小魚。本節我們就嘗試直接使用I2C協議來點亮OLED,因為主要測試I2C協議,所以對于復雜的顯示處理部分小魚就略過了,畢竟有方便的開源庫使用,我們也不用那么糾
    的頭像 發表于 07-15 16:47 ?1957次閱讀
    使用<b class='flag-5'>I2C</b>協議<b class='flag-5'>點亮</b><b class='flag-5'>OLED</b>
    主站蜘蛛池模板: 国产伦精品一区二区三区网站| 在线观看黄色的网站| 久热国产精品视频| 插插好爽爽爽| 婷婷在线观看网站| 亚洲国产成人精彩精品 | 欧美 激情 在线| 亚洲偷偷| 一级毛片真人免费播放视频| 色吧五月婷婷| 国产综合色精品一区二区三区| 亚洲午夜精品久久久久 | 亚洲国产午夜看片| 欧美伦理一区| 上一篇26p国模| 激情网站网址| 天天性综合| 日韩欧美高清色码| 中文字幕三级| 欧美巨大bbbb动漫| 91美女在线播放| 成人午夜视频免费看欧美| 最近的中文字幕免费动漫视频| 久久综合香蕉久久久久久久| 午夜寂寞影| 狼色网| 一个人看aaaa免费中文| 国产毛片一区二区三区精品| 欧美图片小说视频| 日本一区二区在线视频| 色屋视频| 手机看片日韩1024| 日本不卡免费一区| 四虎新网站| ww欧美| 欧美在线区| 欧美在线小视频| 午夜视频在线观看一区二区| 91网站免费在线观看| 四虎伦理| 人人看人人鲁狠狠高清|