免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

ESP32-S3驅(qū)動74系列SPI顯示屏:從原理到FreeRTOS實戰(zhàn)

ESP32-S3驅(qū)動74系列SPI顯示屏:從原理到FreeRTOS實戰(zhàn) 大家好我是專注于嵌入式開發(fā)的技術(shù)博主。在物聯(lián)網(wǎng)項目中驅(qū)動一塊顯示屏往往是交互功能的第一步。你是否遇到過這樣的困惑網(wǎng)上購買的顯示屏模塊型號五花八門比如“0.96寸 OLED”、“1.8寸 TFT”但驅(qū)動接口卻常常標注為“SPI”甚至有些模塊直接以“74”開頭命名。這“74”究竟是什么意思它和SPI又有什么關(guān)系更重要的是如何在我們強大的ESP32-S3開發(fā)板上基于最新的ESP-IDF框架配合FreeRTOS實時操作系統(tǒng)穩(wěn)定、高效地驅(qū)動這類顯示屏呢本文將為你徹底解開“74”系列SPI顯示屏模塊的命名之謎并提供一個從零開始的完整實戰(zhàn)教程。我們將基于ESP-IDF 5.x兼容未來版本和FreeRTOS使用C語言編寫驅(qū)動代碼最終實現(xiàn)一個能夠顯示動態(tài)信息的嵌入式AI物聯(lián)網(wǎng)項目雛形。無論你是剛接觸ESP32的新手還是希望將顯示功能集成到復雜項目中的開發(fā)者都能從本文中找到清晰的路徑和可復用的代碼。1. “74”之謎SPI顯示屏模塊命名解析與核心概念在開始動手之前我們首先要弄清楚“74”這個前綴的含義。這并非隨意編號而是源于一個非常經(jīng)典的集成電路家族。1.1 “74”系列邏輯芯片顯示屏驅(qū)動的幕后功臣“74”系列是指74HC、74LS、74HCT等通用邏輯集成電路家族。在早期的數(shù)字電路和單片機系統(tǒng)中它們被廣泛用于實現(xiàn)邏輯門、觸發(fā)器、鎖存器、移位寄存器等功能。在SPI顯示屏模塊尤其是早期或一些特定型號的OLED、TFT屏中“74”通常指代模塊上集成的一顆74HC595芯片。這是一顆8位串行輸入、并行輸出的移位寄存器。它的核心作用在于擴展IO口。為什么需要擴展IO單片機如早期的51、AVR甚至ESP32的某些GPIO緊張場景的GPIO數(shù)量有限。而一個顯示屏需要控制的數(shù)據(jù)線D0-D7、命令/數(shù)據(jù)選擇線DC、復位線RST等會占用大量引腳。74HC595如何工作它通過SPI或類似SPI的3線串行接口接收來自單片機串行數(shù)據(jù)然后在內(nèi)部移位最終通過8個并行引腳輸出。這樣單片機僅用2-3個引腳數(shù)據(jù)、時鐘、鎖存就能控制8個甚至更多通過級聯(lián)的輸出信號極大地節(jié)省了GPIO資源。因此當你看到“74 SPI顯示屏模塊”時很大程度上意味著這個顯示屏模塊板載了74HC595或其他74系列芯片用于將單片機SPI接口的串行數(shù)據(jù)轉(zhuǎn)換為控制顯示屏所需的并行信號。模塊已經(jīng)幫你做好了這部分電路你只需要用標準的SPI接口去驅(qū)動它即可無需關(guān)心底層并轉(zhuǎn)串的細節(jié)。1.2 SPI協(xié)議顯示屏通信的“高速公路”SPISerial Peripheral Interface是一種高速、全雙工、同步的串行通信協(xié)議。它是單片機與外圍設(shè)備如傳感器、存儲器、顯示屏通信的基石之一。對于顯示屏驅(qū)動理解SPI的以下關(guān)鍵點至關(guān)重要四線制基礎(chǔ)SCLK (Serial Clock)時鐘線由主機ESP32-S3產(chǎn)生用于同步數(shù)據(jù)位。MOSI (Master Out Slave In)主機輸出從機輸入。ESP32-S3通過這根線向顯示屏發(fā)送命令和數(shù)據(jù)。MISO (Master In Slave Out)主機輸入從機輸出。但絕大多數(shù)純顯示型SPI模塊如本文討論的不需要向主機回傳數(shù)據(jù)因此這根線常常被省略或標記為NC不連接。這就是所謂的“3線SPI”模式SCLK, MOSI, CS。CS (Chip Select)片選線低電平有效。用于在多個SPI設(shè)備共享總線時選擇當前要通信的從設(shè)備。SPI模式 (CPOL與CPHA)這是SPI配置的核心決定了時鐘極性和相位。不同的顯示屏控制器如ST7735、ILI9341要求特定的SPI模式常見為Mode 0或Mode 3。配置錯誤會導致顯示亂碼或無顯示。CPOL0:時鐘空閑時為低電平。CPOL1:時鐘空閑時為高電平。CPHA0:數(shù)據(jù)在時鐘的第一個邊沿上升沿或下降沿采樣。CPHA1:數(shù)據(jù)在時鐘的第二個邊沿采樣。DC (Data/Command) 引腳這是一個非SPI標準但至關(guān)重要的引腳。它告訴顯示屏控制器當前通過MOSI發(fā)送的是命令如設(shè)置顯示區(qū)域、亮度還是顯示數(shù)據(jù)實際的像素顏色值。通常DC0表示命令DC1表示數(shù)據(jù)。小結(jié)“74”模塊簡化了硬件連接而SPI協(xié)議定義了通信規(guī)則。我們的任務(wù)就是在ESP32-S3上正確配置SPI主機并按照顯示屏控制器的手冊時序通過SPI總線發(fā)送正確的命令和數(shù)據(jù)流。2. 環(huán)境準備ESP-IDF與開發(fā)環(huán)境搭建工欲善其事必先利其器。在編寫代碼前我們需要一個穩(wěn)定的開發(fā)環(huán)境。2.1 硬件清單主控ESP32-S3開發(fā)板如ESP32-S3-DevKitC-1顯示屏一款支持SPI接口的顯示屏模塊例如1.8寸TFT驅(qū)動芯片為ST7735S分辨率128x160。請確認其引腳定義。連接線杜邦線若干。USB數(shù)據(jù)線用于供電和程序燒錄。2.2 軟件環(huán)境安裝ESP-IDFEspressif官方提供了多種安裝方式。對于新手和追求穩(wěn)定性的開發(fā)者推薦使用ESP-IDF Eclipse插件或VSCode ESP-IDF擴展。這里以VSCode為例簡述流程安裝VSCode從官網(wǎng)下載安裝。安裝ESP-IDF擴展在VSCode擴展商店搜索“Espressif IDF”由Espressif Systems官方發(fā)布點擊安裝。通過擴展安裝ESP-IDF安裝擴展后按F1打開命令面板輸入 “ESP-IDF: Configure ESP-IDF extension”選擇 “Advanced” 安裝方式。在安裝器界面選擇你需要的ESP-IDF版本推薦選擇最新的穩(wěn)定版如v5.4.x并設(shè)置安裝路徑。工具鏈編譯器、調(diào)試器等會自動下載。驗證安裝安裝完成后新建一個終端輸入idf.py --version和xtensa-esp32s3-elf-gcc --version如果能正確顯示版本信息則環(huán)境搭建成功。注意如果遇到“a fatal error occurred: failed to connect to esp32-s3: invalid head of packet”等連接錯誤請檢查開發(fā)板是否正確連接端口是否被占用。是否按住了開發(fā)板上的“Boot”按鈕再點擊“Upload”。驅(qū)動程序是否安裝CP210x或CH340。2.3 創(chuàng)建第一個項目在VSCode中按F1輸入 “ESP-IDF: Show Examples Projects”。選擇一個簡單的示例如hello_world創(chuàng)建到本地目錄。編譯并燒錄到ESP32-S3確?;A(chǔ)開發(fā)流程暢通。3. 項目實戰(zhàn)驅(qū)動SPI顯示屏模塊假設(shè)我們使用的是一塊常見的1.8寸SPI TFT屏驅(qū)動芯片為ST7735S。我們將創(chuàng)建一個獨立的項目來驅(qū)動它。3.1 硬件連接根據(jù)你的顯示屏模塊引腳定義連接到ESP32-S3。以下是一個常見的連接示例請務(wù)必以你的屏幕手冊為準顯示屏引腳ESP32-S3 GPIO功能說明VCC3.3V電源切勿接5VGNDGND地SCLGPIO 12SPI時鐘線 (SCLK)SDAGPIO 11SPI數(shù)據(jù)線 (MOSI)RESGPIO 10復位線 (RST)DCGPIO 9命令/數(shù)據(jù)選擇線 (DC)CSGPIO 8片選線 (CS)BLKGPIO 7 (或 3.3V)背光控制可選接GPIO可調(diào)光為什么選擇這些GPIOESP32-S3的多數(shù)GPIO都可用作SPI引腳但有些是專用SPI引腳如SPI2的默認引腳。我們這里使用GPIO 11, 12, 13等需要在軟件中配置為SPI功能。避免使用 Strapping 引腳如GPIO0。3.2 項目結(jié)構(gòu)與配置新建項目在VSCode中使用ESP-IDF擴展創(chuàng)建新項目命名為esp32s3_spi_display。修改CMakeLists.txt主目錄下的CMakeLists.txt通常無需大改。確保包含了main組件。配置SPI主機我們將使用ESP-IDF的SPI Master驅(qū)動。無需額外組件驅(qū)動已內(nèi)置。3.3 編寫顯示屏驅(qū)動代碼我們將代碼組織在main目錄下。第一步創(chuàng)建頭文件spi_display.h// spi_display.h #ifndef SPI_DISPLAY_H #define SPI_DISPLAY_H #include “driver/spi_master.h” #include “freertos/FreeRTOS.h” #include “freertos/task.h” // 顯示屏物理參數(shù) #define DISPLAY_WIDTH 128 #define DISPLAY_HEIGHT 160 // 顏色定義 (RGB565格式) #define COLOR_BLACK 0x0000 #define COLOR_WHITE 0xFFFF #define COLOR_RED 0xF800 #define COLOR_GREEN 0x07E0 #define COLOR_BLUE 0x001F #define COLOR_YELLOW 0xFFE0 // 函數(shù)聲明 esp_err_t display_init(void); void display_draw_pixel(uint16_t x, uint16_t y, uint16_t color); void display_draw_fill_rect(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color); void display_draw_char(uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg_color); void display_draw_string(uint16_t x, uint16_t y, const char *str, uint16_t color, uint16_t bg_color); void display_clear(uint16_t color); void display_test_pattern(void); #endif // SPI_DISPLAY_H第二步實現(xiàn)驅(qū)動源文件spi_display.c這是核心包含了SPI初始化和ST7735S的底層命令。// spi_display.c #include “spi_display.h” #include “driver/gpio.h” #include “esp_log.h” static const char *TAG “DISPLAY”; // SPI設(shè)備句柄和引腳定義 static spi_device_handle_t spi; #define PIN_NUM_MOSI 11 #define PIN_NUM_SCLK 12 #define PIN_NUM_CS 8 #define PIN_NUM_DC 9 #define PIN_NUM_RST 10 #define PIN_NUM_BLK 7 // 向顯示屏發(fā)送命令DC0 static void send_cmd(uint8_t cmd) { esp_err_t ret; spi_transaction_t t { .length 8, // 命令長度為8位 .tx_buffer cmd, }; gpio_set_level(PIN_NUM_DC, 0); // DC線拉低表示發(fā)送命令 ret spi_device_polling_transmit(spi, t); // 阻塞式傳輸 assert(ret ESP_OK); } // 向顯示屏發(fā)送數(shù)據(jù)DC1 static void send_data(uint8_t *data, uint16_t len) { esp_err_t ret; if (len 0) return; spi_transaction_t t { .length len * 8, // 數(shù)據(jù)長度位 .tx_buffer data, }; gpio_set_level(PIN_NUM_DC, 1); // DC線拉高表示發(fā)送數(shù)據(jù) ret spi_device_polling_transmit(spi, t); assert(ret ESP_OK); } // 初始化SPI總線及設(shè)備 static void spi_init(void) { esp_err_t ret; spi_bus_config_t bus_cfg { .mosi_io_num PIN_NUM_MOSI, .miso_io_num -1, // 我們不需要MISO .sclk_io_num PIN_NUM_SCLK, .quadwp_io_num -1, .quadhd_io_num -1, .max_transfer_sz DISPLAY_WIDTH * DISPLAY_HEIGHT * 2, // 緩沖區(qū)大小RGB565每個像素2字節(jié) }; // 初始化SPI總線使用SPI2_HOSTESP32-S3有多個SPI主機 ret spi_bus_initialize(SPI2_HOST, bus_cfg, SPI_DMA_CH_AUTO); ESP_ERROR_CHECK(ret); spi_device_interface_config_t dev_cfg { .clock_speed_hz 40 * 1000 * 1000, // SPI時鐘頻率40MHz可根據(jù)屏幕調(diào)整 .mode 0, // SPI模式0CPOL0CPHA0ST7735S常用 .spics_io_num PIN_NUM_CS, .queue_size 7, // 事務(wù)隊列大小 .flags SPI_DEVICE_NO_DUMMY, // 某些屏需要Dummy位ST7735S通常不需要 }; // 將SPI設(shè)備連接到總線上 ret spi_bus_add_device(SPI2_HOST, dev_cfg, spi); ESP_ERROR_CHECK(ret); ESP_LOGI(TAG, “SPI initialized.”); } // 初始化GPIODC, RST, BLK static void gpio_init(void) { gpio_config_t io_conf {}; // 配置DC、RST、BLK為輸出模式 io_conf.pin_bit_mask (1ULL PIN_NUM_DC) | (1ULL PIN_NUM_RST) | (1ULL PIN_NUM_BLK); io_conf.mode GPIO_MODE_OUTPUT; io_conf.pull_up_en GPIO_PULLUP_DISABLE; io_conf.pull_down_en GPIO_PULLDOWN_DISABLE; io_conf.intr_type GPIO_INTR_DISABLE; gpio_config(io_conf); gpio_set_level(PIN_NUM_BLK, 1); // 默認打開背光 gpio_set_level(PIN_NUM_RST, 1); // 先拉高復位引腳 vTaskDelay(pdMS_TO_TICKS(10)); gpio_set_level(PIN_NUM_RST, 0); // 復位脈沖 vTaskDelay(pdMS_TO_TICKS(10)); gpio_set_level(PIN_NUM_RST, 1); // 結(jié)束復位 vTaskDelay(pdMS_TO_TICKS(120)); // 等待屏幕自檢就緒 ESP_LOGI(TAG, “GPIO and hardware reset done.”); } // 發(fā)送ST7735S初始化命令序列 static void st7735s_init(void) { // 以下命令序列需要參考ST7735S數(shù)據(jù)手冊不同屏幕可能略有差異 send_cmd(0x01); // Software reset vTaskDelay(pdMS_TO_TICKS(150)); send_cmd(0x11); // Sleep out vTaskDelay(pdMS_TO_TICKS(255)); send_cmd(0x3A); // Interface Pixel Format uint8_t data_format[] {0x05}; // 16 bits/pixel (RGB565) send_data(data_format, sizeof(data_format)); send_cmd(0x36); // Memory Data Access Control uint8_t madctl[] {0x08}; // 設(shè)置掃描方向等根據(jù)你的屏幕安裝方向調(diào)整 send_data(madctl, sizeof(madctl)); send_cmd(0x29); // Display ON vTaskDelay(pdMS_TO_TICKS(255)); ESP_LOGI(TAG, “ST7735S init sequence sent.”); } // 公共API初始化整個顯示屏 esp_err_t display_init(void) { gpio_init(); spi_init(); st7735s_init(); display_clear(COLOR_BLACK); ESP_LOGI(TAG, “Display initialization complete.”); return ESP_OK; } // 設(shè)置繪圖窗口用于優(yōu)化連續(xù)像素繪制 static void set_window(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { send_cmd(0x2A); // Column Address Set uint8_t col_data[] {x0 8, x0 0xFF, x1 8, x1 0xFF}; send_data(col_data, sizeof(col_data)); send_cmd(0x2B); // Row Address Set uint8_t row_data[] {y0 8, y0 0xFF, y1 8, y1 0xFF}; send_data(row_data, sizeof(row_data)); send_cmd(0x2C); // Memory Write } // 繪制一個像素點 void display_draw_pixel(uint16_t x, uint16_t y, uint16_t color) { if (x DISPLAY_WIDTH || y DISPLAY_HEIGHT) return; set_window(x, y, x, y); uint8_t color_data[] {color 8, color 0xFF}; send_data(color_data, sizeof(color_data)); } // 填充一個矩形區(qū)域 void display_draw_fill_rect(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) { if ((x w) DISPLAY_WIDTH || (y h) DISPLAY_HEIGHT) return; set_window(x, y, x w - 1, y h - 1); uint32_t total_pixels w * h; // 為了一次性發(fā)送所有數(shù)據(jù)需要動態(tài)分配緩沖區(qū)對于大區(qū)域注意堆棧大小 uint8_t *buffer heap_caps_malloc(total_pixels * 2, MALLOC_CAP_DMA); // 使用DMA兼容內(nèi)存 if (!buffer) { ESP_LOGE(TAG, “Failed to allocate buffer for rect fill!”); return; } for (uint32_t i 0; i total_pixels; i) { buffer[i * 2] color 8; buffer[i * 2 1] color 0xFF; } send_data(buffer, total_pixels * 2); free(buffer); } // 清屏 void display_clear(uint16_t color) { display_draw_fill_rect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT, color); } // 簡單的測試圖案 void display_test_pattern(void) { display_clear(COLOR_BLACK); display_draw_fill_rect(10, 10, 30, 30, COLOR_RED); display_draw_fill_rect(50, 10, 30, 30, COLOR_GREEN); display_draw_fill_rect(90, 10, 30, 30, COLOR_BLUE); display_draw_fill_rect(10, 60, 108, 40, COLOR_YELLOW); // 可以添加畫線、畫圓等更復雜的圖形函數(shù) }第三步編寫主程序main.c// main.c #include stdio.h #include “freertos/FreeRTOS.h” #include “freertos/task.h” #include “esp_log.h” #include “spi_display.h” static const char *TAG “MAIN”; void app_main(void) { ESP_LOGI(TAG, “Application started!”); // 1. 初始化顯示屏 esp_err_t ret display_init(); if (ret ! ESP_OK) { ESP_LOGE(TAG, “Display init failed!”); return; } // 2. 顯示測試圖案 display_test_pattern(); vTaskDelay(pdMS_TO_TICKS(2000)); // 顯示2秒 // 3. 清屏并顯示歡迎信息需要實現(xiàn)字符和字符串函數(shù) display_clear(COLOR_BLACK); // 假設(shè)我們已經(jīng)實現(xiàn)了 display_draw_string 函數(shù) // display_draw_string(20, 70, “Hello ESP32-S3!”, COLOR_WHITE, COLOR_BLACK); // 為了演示我們畫一些色塊 for (int i 0; i 5; i) { display_draw_fill_rect(20 i*20, 70, 15, 15, COLOR_GREEN); vTaskDelay(pdMS_TO_TICKS(500)); } ESP_LOGI(TAG, “Display demo finished. Entering loop...”); // 4. 主循環(huán)可以在此處更新顯示內(nèi)容如傳感器數(shù)據(jù)、時間等 int counter 0; while (1) { // 動態(tài)更新顯示區(qū)域的示例 display_draw_fill_rect(0, 130, DISPLAY_WIDTH, 30, COLOR_BLACK); // 清空底部區(qū)域 // 此處可以調(diào)用顯示文本的函數(shù)來顯示計數(shù)器的值 // display_draw_string(10, 140, “Count:”, COLOR_WHITE, COLOR_BLACK); // display_draw_number(...); // 需要實現(xiàn)數(shù)字顯示函數(shù) counter; vTaskDelay(pdMS_TO_TICKS(1000)); // 每秒更新一次 if (counter 60) break; // 示例運行一分鐘 } ESP_LOGI(TAG, “Demo loop ended.”); }3.4 編譯、燒錄與監(jiān)視選擇目標芯片在VSCode底部狀態(tài)欄點擊 “ESP-IDF: Device Target”選擇esp32s3。選擇串口點擊 “ESP-IDF: Select port to use”選擇你的開發(fā)板對應(yīng)的串口。編譯點擊側(cè)邊欄的 “編譯” 按鈕或按CtrlE, B。燒錄點擊 “燒錄” 按鈕或按CtrlE, F。監(jiān)視點擊 “監(jiān)視器” 按鈕或按CtrlE, M查看串口日志。如果一切順利你將看到顯示屏先顯示紅綠藍黃四個色塊然后底部有綠色方塊依次出現(xiàn)最后進入計數(shù)循環(huán)目前僅體現(xiàn)在串口日志中。4. 集成FreeRTOS創(chuàng)建顯示刷新任務(wù)在物聯(lián)網(wǎng)項目中顯示更新不應(yīng)阻塞主循環(huán)或其他任務(wù)如網(wǎng)絡(luò)通信、傳感器讀取。FreeRTOS可以幫助我們。4.1 創(chuàng)建顯示管理任務(wù)我們在main.c的app_main中創(chuàng)建一個專門負責顯示更新的任務(wù)。// 顯示任務(wù)函數(shù) static void display_update_task(void *pvParameters) { ESP_LOGI(TAG, “Display update task started.”); // 獲取傳入的參數(shù)例如一個包含傳感器數(shù)據(jù)的隊列句柄 // QueueHandle_t sensor_queue (QueueHandle_t)pvParameters; while (1) { // 1. 從隊列或全局變量獲取最新數(shù)據(jù)例如溫度、濕度 // float temperature 25.0f; // 示例數(shù)據(jù) // xQueueReceive(sensor_queue, temperature, portMAX_DELAY); // 2. 清空特定顯示區(qū)域避免全屏刷新閃爍 display_draw_fill_rect(0, 140, DISPLAY_WIDTH, 20, COLOR_BLACK); // 3. 格式化并顯示數(shù)據(jù)需要實現(xiàn)sprintf到顯示的轉(zhuǎn)換 // char buffer[20]; // sprintf(buffer, “Temp: %.1fC”, temperature); // display_draw_string(10, 140, buffer, COLOR_CYAN, COLOR_BLACK); // 4. 任務(wù)延時控制刷新率例如每秒2次 vTaskDelay(pdMS_TO_TICKS(500)); } // 任務(wù)不應(yīng)返回如果返回則刪除自身 vTaskDelete(NULL); } void app_main(void) { ESP_LOGI(TAG, “Application started!”); // 初始化顯示屏 if (display_init() ! ESP_OK) { return; } display_clear(COLOR_BLACK); display_draw_string(10, 10, “System Online”, COLOR_GREEN, COLOR_BLACK); // 假設(shè)已實現(xiàn) // 創(chuàng)建用于任務(wù)間通信的隊列示例 // QueueHandle_t sensor_data_queue xQueueCreate(5, sizeof(float)); // 創(chuàng)建顯示更新任務(wù) xTaskCreate(display_update_task, // 任務(wù)函數(shù) “Display_Task”, // 任務(wù)名稱 4096, // 堆棧大小根據(jù)需求調(diào)整防止堆棧溢出 NULL, // 傳遞給任務(wù)的參數(shù)如隊列句柄 5, // 任務(wù)優(yōu)先級數(shù)字越大優(yōu)先級越高 NULL); // 任務(wù)句柄不需要保存 // 主循環(huán)可以處理其他事情如Wi-Fi連接、HTTP請求等 while (1) { // 模擬其他工作 // float simulated_temp read_sensor(); // 模擬讀取傳感器 // xQueueSend(sensor_data_queue, simulated_temp, 0); vTaskDelay(pdMS_TO_TICKS(1000)); } }4.2 FreeRTOS最佳實踐與堆棧溢出檢測堆棧大小任務(wù)堆棧大小上文的4096需要仔細評估。display_draw_fill_rect中使用了動態(tài)內(nèi)存分配但任務(wù)本身的調(diào)用棧也要足夠。ESP-IDF提供了堆棧溢出檢測功能。你可以在menuconfig中啟用Component config - FreeRTOS - Enable FreeRTOS trace facility和Enable FreeRTOS stack overflow detection。當發(fā)生溢出時會在串口輸出警告。任務(wù)優(yōu)先級顯示更新任務(wù)優(yōu)先級不宜過高避免影響更關(guān)鍵的任務(wù)如網(wǎng)絡(luò)心跳。優(yōu)先級5是一個中間值。使用隊列通信強烈建議使用FreeRTOS隊列xQueueCreate,xQueueSend,xQueueReceive在任務(wù)間傳遞顯示數(shù)據(jù)而不是使用全局變量加信號量這樣更安全清晰。5. 常見問題與深度排查在開發(fā)過程中你幾乎一定會遇到一些問題。以下是典型問題的排查思路。問題現(xiàn)象可能原因排查步驟與解決方案屏幕白屏或背光亮但無顯示1. 電源問題電壓/電流不足2. 復位時序不對3. SPI通信失敗模式、頻率4. 初始化命令序列錯誤1. 確認VCC接3.3VGND共地測量電壓是否穩(wěn)定。2. 檢查RST引腳復位脈沖拉低10ms再拉高用邏輯分析儀或示波器看波形。3.重點檢查SPI模式(CPOL/CPHA)和時鐘頻率。將頻率降低到10MHz或1MHz試一下。用邏輯分析儀抓取SCLK、MOSI、DC、CS波形與數(shù)據(jù)手冊時序圖對比。4. 核對st7735s_init函數(shù)中的命令和數(shù)據(jù)確保與你的屏幕型號匹配。有些屏幕需要額外的0x21反轉(zhuǎn)顯示或0x20命令。顯示花屏、錯位、顏色異常1. 數(shù)據(jù)格式不對RGB565 vs RGB8882. 掃描方向設(shè)置MADCTL錯誤3. 顯存窗口設(shè)置錯誤4. 像素顏色字節(jié)序錯誤1. 確認0x3A命令發(fā)送的數(shù)據(jù)格式是0x05(16bit) 還是0x06(18bit)。2. 調(diào)整0x36(MADCTL) 命令的參數(shù)。嘗試0x00,0xC0,0xA0等值觀察顯示方向變化。3. 檢查set_window函數(shù)中坐標計算是否正確特別是結(jié)束坐標x1,y1。4. RGB565顏色值的高低位字節(jié)順序可能需交換。嘗試將send_data中的color 8和color 0xFF順序?qū)φ{(diào)。SPI初始化失敗1. GPIO引腳沖突或被占用2. DMA通道配置問題3. 堆內(nèi)存不足1. 檢查mosi_io_num,sclk_io_num等是否與其他外設(shè)如SD卡、PSRAM沖突。ESP32-S3的某些GPIO有特殊功能。2. 嘗試將spi_bus_initialize中的SPI_DMA_CH_AUTO改為SPI_DMA_DISABLED禁用DMA測試。3. 增大max_transfer_sz或檢查系統(tǒng)可用堆內(nèi)存。編譯錯誤portmacro.h相關(guān)FreeRTOS配置頭文件包含錯誤或版本不匹配1. 確保#include “freertos/FreeRTOS.h”在#include “freertos/task.h”之前。2. 清理構(gòu)建目錄 (idf.py fullclean) 并重新編譯。3. 檢查ESP-IDF版本確保所有組件兼容。運行時報錯invalid head of packet1. 燒錄時板子未進入下載模式2. 串口驅(qū)動問題3. 開發(fā)板型號選擇錯誤1. 按住BOOT鍵再按一下RST鍵然后松開RST再松開BOOT使板子進入下載模式然后快速點擊燒錄。2. 重新安裝CP210x或CH340驅(qū)動或更換USB口/數(shù)據(jù)線。3. 在menuconfig中確認Target選擇的是ESP32-S3。6. 進階優(yōu)化與工程建議一個健壯的顯示驅(qū)動需要考慮更多。雙緩沖與局部刷新問題直接操作顯存即直接向屏幕發(fā)送數(shù)據(jù)在繪制復雜圖形或頻繁更新時會導致屏幕閃爍。方案在ESP32-S3的內(nèi)部RAM或PSRAM中開辟一塊與屏幕分辨率相同的幀緩沖區(qū)Frame Buffer。所有繪圖操作先在緩沖區(qū)中進行完成后一次性將整個緩沖區(qū)通過DMA發(fā)送到屏幕。這需要較大的內(nèi)存128x160x2 ≈ 40KB但ESP32-S3通??梢猿惺?。ESP-IDF的spi_device_queue_trans和spi_device_get_trans_result可以配合DMA實現(xiàn)非阻塞傳輸。字體與圖形庫實現(xiàn)display_draw_char和display_draw_string需要字模數(shù)據(jù)。可以集成輕量級的開源庫如u8g2需適配或lvgl功能強大但資源消耗大。對于簡單英文/數(shù)字可以自己定義一個小型位圖字體數(shù)組。低功耗考慮當不需要顯示時可以通過命令如0x28進入睡眠模式關(guān)閉屏幕并關(guān)閉背光控制BLK引腳。同時可以降低SPI總線頻率。驅(qū)動抽象層將spi_display.c中的st7735s_init、set_window等函數(shù)通過函數(shù)指針封裝在一個結(jié)構(gòu)體里。這樣如果你想更換為ILI9341、SSD1306等其他SPI屏幕只需實現(xiàn)一套新的操作函數(shù)并替換這個結(jié)構(gòu)體上層應(yīng)用代碼無需改動。錯誤處理與日志目前的驅(qū)動使用assert和ESP_ERROR_CHECK在生產(chǎn)環(huán)境中應(yīng)考慮更優(yōu)雅的錯誤恢復例如初始化失敗后重試或記錄錯誤狀態(tài)。7. 邁向AI物聯(lián)網(wǎng)項目至此你已經(jīng)掌握了在ESP32-S3上驅(qū)動SPI顯示屏的核心技能。這僅僅是開始。在一個完整的AI物聯(lián)網(wǎng)項目中這塊屏幕可以扮演“本地交互界面”的角色狀態(tài)顯示實時顯示W(wǎng)i-Fi連接狀態(tài)、MQTT連接狀態(tài)、本地傳感器數(shù)據(jù)溫濕度、光照。人機交互結(jié)合按鍵或觸摸屏實現(xiàn)簡單的菜單操作用于配置網(wǎng)絡(luò)、觸發(fā)動作。AI結(jié)果可視化如果你在ESP32-S3上運行了輕量級AI模型如TensorFlow Lite Micro進行圖像分類可以將識別結(jié)果如“cat: 95%”直觀地顯示在屏幕上。調(diào)試信息輸出在開發(fā)階段將重要的日志信息輸出到屏幕方便現(xiàn)場調(diào)試。下一步你可以嘗試完善圖形庫實現(xiàn)畫線、畫圓、顯示圖片。將顯示任務(wù)與網(wǎng)絡(luò)任務(wù)如從云端獲取天氣信息并顯示通過FreeRTOS隊列結(jié)合。探索使用LVGL等高級圖形庫創(chuàng)建更復雜的用戶界面。將整個項目移植到ESP-IDF的組件系統(tǒng)中使顯示驅(qū)動成為一個可復用的組件。驅(qū)動一塊“74”SPI顯示屏模塊是連接物理世界與數(shù)字世界的一個經(jīng)典而有趣的起點。希望這篇詳細的指南能幫助你掃清障礙順利點亮屏幕并為你的ESP32-S3物聯(lián)網(wǎng)項目增添一抹亮色。如果在實踐中遇到新的問題歡迎在社區(qū)分享與交流共同進步。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99在线精品免费视频| 91色久| 啪啪色激情五月天| 亚洲乱码日产精品BD| 婷婷深爱五月丁香网| 九九热婷婷| 婷婷综合| 第四色五月天| 自拍偷窥99热| 五月天婷婷激情| 欧洲亚洲免费视频区| 九九精品re免费视频| 在线观看中文字幕| 99在线观看视频| 五月婷婷中文网| 亚洲婷婷激情综合激情999精品| 丁香五月婷婷基地| 五月丁香狠狠爱| 丁香婷婷五月综合影院| 五月丁香WWW| 免费黄色AV| 日韩青青| 六月色丁香婷婷| 久久综合99| 日日激情网| 狠狠爱综合网| 国产成人+综合亚洲+天堂| 97色 五月天丁香| 欧美日韩999| 精品A√| 久久国产精品乱子伦_靑青草…| 日韩肏屄网| 久久综合站| www.狠狠| 操碰色一区就去操| 婷婷的五月天另类视频| 精品日本视频444| 国产精品色| 久久久com| 色天堂A| A久网| 亚洲五月天天| 五月婷婷欲色| 在热视频精品| 激情小说在线视频| 婷婷操超碰| 丁香激情综合| 色噜噜狠狠色综合网| 天天综合天综合| 婷婷综合网在线| 色五月xxx| 9久久婷婷国产综合精品性色| 日韩超碰在线| 亚洲精99| 六月婷婷在线视频| 五月丁香婷婷久久| 五月天综合| 色情五月婷婷| 超碰人人摸人人操| 99久久亚洲国产| 亚洲激情| 99精品国产在热久久| 亚洲av综合网| 亚洲婷婷六月天| 色五月丁香激情| 国产欧美日韩一区二区三区| 五月天激情无码专区| 丁香五月六月欧美| 婷婷色片| 91久久婷婷| 图片区 小说区 区 亚洲五月| 婷婷伊人| 色综啪啪啪啪啪啪| 美女精品一级不卡视频| 天天拍夜夜爽日日| 色播播五月天| 少妇人妻丰满做爰XXX| 九九亚洲| 99九九视频| 激情99热| 丁香五月第四色88| 亚洲综合在线视频| 亚洲AV无码成人电影| 综合激情四射一theav| 九九精品热播| 26UUU精品一区二区Com| 国产婷婷五月天| 五月婷婷与六月丁香图片激情| 久久九九综合| 久久女人九九| 丁香婷婷六月激情| 超碰资源在线| 99欧美精品99日本精品| 丁香5月激情网| 99热精这里只有精品| 夜夜操天天干| 国产午夜精品一区二区三区四区| 五月婷婷AV| 久久这里面只有精品视频| 色五月视频无码播放| 丁香五月电影| 天天躁日日躁狠狠躁日日躁2022年5月9日| 成人 在线 日韩| 天天射射夜| xx人人xx| 91黄色五月天视频| 亚洲五月天综合| 丁香六月激情| 婷婷激情四射五月天| 99热网站| 大香线蕉伊人| 久久超级碰视频| 天天摸.天天mo| 噜噜视频| 五月婷婷免费在线视频| 成熟妇人A片免费看网站| 久草a片| 狠狠操天天操天天操| 久久香蕉网| 婷婷丁香五月在线播放| 亚洲欧美在线观看| 激情婷婷五六月天| 丁香五月Av| 丁香五月停停av| 亚洲区,视频区,视频区免费| 婷婷久久五月天丁香| 成人做爰高潮A片免费视频| 97香蕉人人在线观看| 久久婷婷青草五月天| 五月丁香中文| 日本丰满久久| 久久这里只| 色婷婷成人做爰A片免费看网站| 亚洲网站999| 色五月激情基地| 99热大香蕉| 九九热在线视频观看免费10| 日韩色五月| 国产小精品| 婷婷五月天伊人在线| 九九亚洲综合| 综合激情五月天| 九九 激情 网| 成人丁香五月| 超碰91在线| 99热在线中文字幕| 丁香五月天激情视频| 婷婷涩涩五月天| 韩国天天婷婷| 99噜噜| 九九视频这里只有精品| 69综合在线| 色欲一二三| 精品AV无码超碰| 91啪级电影| 天天操天天干天天日| 另类伊人婷婷| 久久久18| 五月丁香六月花| 1024亚洲无码| 五月天婷婷视频小说| 欧美日韩国产成人在线| 天天干天天做| 色婷婷XXXXX| 九九激情综合| 婷婷基地五月色| av亚洲国产小电影| 婷婷午夜天| 97操男人的天堂| 精品,99| 色婷婷狠狠18yy| 色婷婷五月天视频在线| 91人人操.COM| 亚洲中文字幕在线观看| 青青草五月天| 99热国产国产| 日本久碰| 五月婷精品| 国产欧美日韩性爱| 欧美黄色一级| 亚洲色在线观看| 丁香五月情色| 一级黄色操B| 色婷婷六月| 婷婷久久五月| 影音先锋AV男人站| 丁香五月欧美| 五月丁香黄色视频| 综合欧美五月婷婷| 亚洲成片在线观看| 九月色婷婷| 天天草天天日| 五月婷婷黄色| 99热10在线高清播放| 丁香婷婷社区| 啪啪婷婷五月天激情| 久久9情免费| 日日撸夜夜操| 中文字幕日韩无码制服诱或| 亚洲AV日韩无码| 少妇2做爰HD韩国电影| 丁香五月乱中文字幕| 超碰人人操| 日韩视频99| 日日操日日射| 五月丁香日本片| 六月丁香婷婷爱| 日韩在线视频中文字幕| 天天日日综合| 人妻在线中文字幕久久| site:xmssd.com| 九色亚洲| 日韩中文字幕| 五月丁香六月综合激情| 日本久久婷婷| 天天操天天曰| 五月丁香六月欧美| 婷婷欧美激情综合| 久久婷婷综合网| 射婷婷中文字幕| 99碰超| www.夜夜.com| 丰满人妻一区三区三区| 婷婷区日本| 一起草av在线观看| av超碰在线| 欧美精品XXXXBBBB| 欧美人妻一区二区| 91超碰在线观看| 国产精品A片| site:hcxsz888.com| 99偷拍视频在线日本| 成人视频网| 日韩久久色| 另类激情网| 久久在这里有精品| 婷婷五月丁香影院| 五月丁香爱婷婷深深| 五月丁香偷拍| 在线看av| 日韩有码久久| 成人AV网站在线| 成人在线观看精品| 综合久久激情久久| 丁香伍月婷电影全集| 99色婷婷| 天天色情站| 欧美精品99久久久| 9l视频自拍9l九色成人| 性无码专区无码| www.天天干| 中文字幕丰满人妻无码专区| 五月婷婷啪啪网| 五月天激情久久| 激情五月婷婷丁香综合网| 开心婷婷五月天电影院| 色亭亭五月天网扯| 色操b| 色香五月天| 国产精品在线视频| 激情激情激情网| 丁香桃色综合网| 国产色色网站网址| 伊人狠狠操| 色五月成人网| 五月婷婷中文字幕| www.精品99| 色五月超碰| 51XX午夜影福利| 日本高清久| 97碰碰在线观看视频| 婷婷五月天网址| 久草A片| 色狠狠色| 日韩艹比| 色色色五月婷| 日韩五月婷婷| 五月激情久久综合网| 色欲久久久久| 亚洲综合色婷婷| 天天干一干| 欧洲第一无人区观看| 人妻丰满精品一区二区A片| 成熟妇人A片免费看网站| 国色天香成人网| 日逼影音先锋男人AV资源站| 久久综合五月婷婷| 五月婷婷开心亚洲无| 亚洲婷婷月丁香五月| 天天草天天日| 超碰亚洲天堂| 久热99狠| 99视频色在线观看| 五月丁香天堂网| 91九色中文字幕女在线观看| 欧亚成人A片一区二区| 丁香五月婷婷免费视频| 99在线视频播放| 99噜噜噜在线播放| 婷婷色六月| 99在线小视频| 九一牛视频探花| 99啪啪视频| 五月天婷婷丁香视频| 26uuu在线观看| 26uuu成人网| 丁香婷婷五月香蕉91| 麻豆精品| www.五月激情红色| 操一操干一干| 久久五月天色婷婷| 五月丁香基地| 午夜大香蕉| 丁香五月天亚洲综合| 婷婷五月69| 色五月婷婷亚洲| 婷婷五月激情丁香| www.91婷婷| 亚洲激情电影五月天色婷婷丁香一起草| 九九热经典视频在线观看| 色99在线| 国产精品电影网| 五月伊人视频在线看| 色色a| 国产JK精品白丝AV在线观看| 五月丁香999| 五月天婷婷丁香社区| 九九热精品| 99久久亚洲国产| 99色丁香婷婷综合网| 91九色精品女同系列| 拍色综合| 天天做天天爱天天玩夜夜爽| 曰韩少妇内射免费播放| 色色色777| 九九无码| 日本97久久久精品| 五月丁香六月婷婷无码| 91男人资源站| 97韩国久久电影院| 丁香五月婷婷色综合| 人妻自慰在线| 婷婷香五月天| 99色婷婷视频| 亚洲精品国产成人AV在线| 伊人超碰在线| 色播五月| 99热综合色图| 激情综合区| 日韩av网站在线观看| 夜夜操天天爽| 色爱综合五月| 五月天综合在线| 欧美啪啪五月天| 精品成人a v无码内射| 婷婷在线中文字幕| 日韩操逼小电影| www.超碰97| 婷婷五月天xxx| 九九热视频在线观看| 色五月婷婷中文字幕在线观看 | 天天爽,天天操。| 热99在线| 久久奄也去色色网站| 香蕉久久国产AV一区二区| 亚洲精品国产成人AV在线| www.婷婷六月天| 亚洲精品中文字幕成人片| 色婷婷激情五月天| 操九色| 啪啪色区| WWW色综合| 婷婷五月天影院| 五月丁香六月婷婷综合在线| 婷婷五月天伊人| 五月综合激情网| 轮奸综合网| 99热精品在线观看| 九一99| 91综合视频在线| 激情欧美五月丁香| VA色婷婷| 日韩青青| 殴美日韩成人| 五月激情丁香久久综合网| 久久五月婷6 9| 丁香五月婷婷激情中文| www99精品| 久色视频| 久久亚洲激情五码| 久久资源网五月婷| 激情性爱五月天网页| 色色网五月激情| 欧美激情久| 91精品无码| 日本天天综合| 91综合在线观看首页| 五月丁香六月激情综合| www天天干| 五月婷色丁香| 色情综合网| 婷婷综合六月| 色婷婷网| 色婷婷播放| 182TV大香蕉| 五月天日日操夜夜操| 日本黄色三级片内射| 亚洲成人五月天| 亚洲精久久| 无码免费人妻A片AAA毛片西瓜| 俺去也五月天婷婷| 天天日日人| 九九99视频精品| 啪啪一区| 五月天色婷婷综合| 激情五月天婷婷视频| 大香蕉五月| 亚洲欧洲中文日韩久久AV乱码| 天天狠狠夜夜狠狠2023| 五月亚洲激情| 婷婷午夜| www.久久99热地址发布| 久久视9精| 九九黄色网| 五月婷婷开心亚州在线| 26uuu色噜噜精品一区| 丁香五月大香蕉AV| 五月天婷婷狂暴白浆| 五月婷精品| 一级操逼内射在线视频| 人人人人人人人人人草| 99ri国产| 91精品综合久久婷婷九色| 99热久| 婷婷五月天黄色| 婷婷五月伦理网站| 亚洲 无码 中文字幕 中出 | www.夜夜騎夜夜狠| 狠狠色丁香婷婷基地| 久久伦乱| 六月婷婷九月丁香| 日韩成人电泉AV| www.色五月| 伊人五月综合网| 在线成人视频免费| 五月天播播中文字幕 | 天天射夜夜爽| 在线不卡视频| 婷婷伊人网| 7777精品伊人久久久大香线蕉最新版| 日韩人妻在线播放| 丁香婷婷五月色综合| 99热最新| 国产乱人偷精品人妻A片| 99久在线观看| 超碰人人在线| 九九黄色网| 欧美 日韩 成人 在线| 国产精品人人妻人人爽| 操人妻视频91| 日本天天色| 五月成人天| 久久色五月天综合网| 丁香六月天色婷婷| 人妻自慰高清合集| 思思热在线播放| 亚洲aV写真天天综合网久久| 色情五月婷婷| 91肏| 这里只有精品视频免费在线观看| 99久久激情视频| 91婷婷| 五月婷在线| 97 A I色色| 五月丁香啪啪啪| 日日夜夜干| 女人高潮内射99精品| 久久99久久99久久99人受| 婷婷中文字幕| 五月Huangsewang| 五月婷婷影视| 丁香五月婷婷综合精品素人| 4399亚洲视频| 99无码免费视频| 激情婷婷五月天伊人在线观看| 97婷婷丁香五月天激情图片| 79色色色色| 狠狠摸狠狠摸| 欧美精品999| 青草青草视频2免费观看| 成人做爰A片免费看网站找不到了| 久草热8精品视频在线观看 | 天天爽在线视频| 5月色婷婷| 99热这里只有国产精品| 免费97碰碰| 狠狠穞A片一區二區三區| 专区无日本视频高清8| 日韩久久系列| 超碰人人艹| 在线色婷婷| 激情涩播| av无码电影| 久久99久久久久久| 五月激情综合深爱| 99热综合| 精品自拍99| 人人操日| 色噜噜婷婷| 色色五月丁香婷婷| 一本到不卡高清DVD| 丁香五月综合激情性爱| 操逼福利视频| 亚洲第一黄网| 91干在线视频| 69五月天视频| 久婷| 久久182| 婷婷五月天激情文学小说| 久久久久久五月天| 久久九九99| 色综合偷拍| 婷婷色天香| 丁香五月手机在线| 色色色1网址| 狠狠香婷婷五月| 五月天成人网在线观看| 91男人操女人视频| 五月丁香在线视频观看| 99热精品在线观看| 国产激情一区| www.狠狠干| 婷婷综合网站| 九九干视频| 色99综合视频| 国产SUV精品一区二区6| 性韩日色婷婷五月天激情啪啪XXX| 国产日韩亚洲欧美在线观看| 亚洲国产精品VA在线看黑人| 99九九精品视频| 天天操电影院色狼性av| 国精产品一区一区三区免费视频| 丝袜人妻| 玖玖色综合网| 亚洲色图在线视频| 五月婷婷丁香大陆免费| 99爱爱| 激情五月九九九| 色欲丁香久久| 婷婷天堂站| 欧美色图天堂网色| 婷婷玖玖五月天| 久9综合| 二人电影免费版在线观看| 色丁香五月天| 天堂色色色| 五月综合婷婷五月| 操逼电影免费看| 亚州激情网站无码| 五月婷婷五月天| www.婷婷六月天| 亚洲视频伍月婷婷| 伊人成综合五月婷婷| 九九九九九无码| 99在线资源| AV在线收看| 六月久久狠狠| 亚洲AV另类| 五月天天天色| 五月婷久久综合| 色婷婷社区| 香蕉视频性爱BB做爱| 亚洲婷婷六月天| 婷婷在线播放| 在线区区区| 91啪啪| 亚洲激情丁香五月天色| 色五月丁香五月| 欧美狠狠一在草| 99精品久久| 综合久久综合| 激情小说五月天| 五月丁香日本一抹本| 五月丁香六月激情啪| 五月天色色色网| 欧美日韩aaaa| 丁香五月婷婷色情综合| 五月丁香婷婷在线| 成人午夜无码视频| 丰满少妇乱A片无码| 婷婷五月综合欧美在线播放| 国产做爰视频免费播放| xxx综合在线| 国产婷婷色综合AV蜜臀AV | 天天色天天爱天天爽| 五月丁香综合色婷婷| 丁香网五月天激情| 99在线视频播放| 狠狠色综合网站久久久久| 亚洲免费看片| 99热亚洲只有色| 丁香桃色网| 婷婷五月天综合网| 一本道在线电影| 99色 色| 亚洲成人网站在线| 色综合久久888| 天天开心AV色综合婷婷五月天| www.色色com| 天天噜日日噜综合无码| 天天橾日日橾夜夜橾17| 婷婷第一页| 九色视频91| 天天舔天天插天天干| 熟妇天天综合| 婷婷五月天影院| 日本va欧美va欧美| 婷婷九月激情| 爱狠射| 欧美在线干| 天天日天天做天天操| 色婷婷瘦婷婷日韩| 熟妇人妻中文字幕无码老熟妇 | 丁香五月婷婷动漫视频| 激情中文在线| 欧美顶级少妇做爰HD| 少妇性按摩无码中文A片| 秋霞三级色戒| 色五月中文字幕| 噼里啪啦完整版中文在线观看| 五月天影院| Xx色综合| 婷婷玖玖丁香| 无码人妻精品一区二区蜜桃色欲| 亚洲无线视频| 99热12| 99人人看| 老师高潮流白浆喷水的A片| 九色视频91疯狂| 99精品视频网站| 国产1区2区3区在线观| 国产精品久久久久久久久久| 精品久久99| 日韩欧美一级大黄网站| 五月天五月色| 亚洲天堂99| 日本A片一区| 国产欧美性成人精品午夜| 日本美女五月天| 思思精品热在线| 六月婷婷俺也去| 久久五月天色婷婷| 久久天堂婷婷五月| 久久九网| 久草婷婷在线| 伊人无码高清| 久久激情网| 亚洲AV成人在线| 激情六月综合| 人人草人| 青青草原精品久久| 天天爽天天爽夜夜爽| 九色PORNY9l原创自拍| 99在线小视频| 9久操| 五月Huangsewang| A片试看120分钟做受视频红杏| 色婷婷综合网站| 国产永久一黄| 五月婷婷黄| 97婷婷五月| 婷婷情色五月| 人妻有码乱操| 色99最新网址| 99操网站| 七七色综合| 月丁香久久久| 99热大| 丁香五月婷婷啪啪视频| 国产毛片精品一区二区色欲黄A片| 五月天婷婷基地| 狠狠干狠狠色| 国产精品18久久久| 中文字幕1区2区。| j五月香在线| 国产精品久久久爽爽爽麻豆色哟哟| 青草视频在线观看视频| 丰满少妇猛烈A片免费看观看| 亚洲欧洲中文日韩久久AV乱码| 色色国产| 小视频久久久aaa| 色玖玖| 国产精品第一国产精品| 97成人丁香| 五月色情精品| 婷婷97碰碰| 影音先锋噜一噜| 综合 蜜月 婷婷| 99久扒热| 九九99在线观看视频| 天天粽合合合合| 人人操超踫| 激情五月综合婷婷| 国产亚洲在线观看| 狠狠干2007| 激情都市五月天| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 丰满少妇猛烈A片免费看观看| 国产精品18久久久| 大香蕉啪啪啪啪啪啪| 丁香五月综合无码趴趴| 欧美欧盟性爱网| 五月天婷婷在看| wuyuedingxiang99| 成人色五月天| 五月综合婷婷五月| 日日夜夜干| 日本美女97在线视频| 天天综合网~91综合网| 五月丁香日本一抹本| 天天射影视综合网| 超碰免费大香蕉| 国产精品大香蕉| 五月激情久久| 99在线精品视频免费| 丁香六月婷婷综合啪啪| 超碰AV在线| 色播激情| 性日本激情| 五月丁香六月婷婷在线播放| 五月丁香成人| 五月丁香久久久| 激情综合五月| 天天干天天色天天干| 狠狠爱激情网| 国产一级视频a| 久久免费精品小视频| A A色色| 国产这里只有精品| 全部老头和老太XXXXX| 一级性爱大片| 色 丁香婷婷| 国产精品视频| 日亚二欧美| 青草青草视频2免费观看| 日韩在线看AV| 婷婷丁香五月av| 韩国天天婷婷| 婷婷丁香红五月91C| 日韩啪啪视频| 超碰人人91| 日韩精品一区二区三区,四区,五区视频| 97久久人人操| 99精品福利视频| 99视频这里有精品| 激情深爱五月婷婷| 99热99干| 亚洲成人影视在线| 九九在线精品| WWW,色五月| 精品人妻在线| 大香蕉狠狠爱主页| 天天舔夜夜操www com| 久久WW| 蜜乳AV成人| 天天天摸夜夜夜玩| 双性美人被调教到喷水A片| 欧美日韩成人在线| 色99自拍| 91久久精品无码一区二区三区| 久草xx性爱视频| 无码 av电影| 蜘蛛女免费观看完整版高清电影| 婷婷激情小说| 日韩成人av在线| 丁香九月婷| 中文字幕AV网址| 综合激情深爱| 丁香五月影| 婷婷在线操| 婷婷另类小说| 丁香五月色播中文在线播放| 99免费| 色欲Av五月天| 丁香婷婷影院| 97激情五月天| 国产精品日本一区二区在线播放| www.久久五月天.com| 色丁香五月婷婷| 婷婷五日b| 国产av天堂| 日韩小视频在线99| 99热在线中出| 亚洲成人五月| 六月激情婷婷综合| 九九九九这里只有精品| 日本久久精品| 婷婷激情综合网| 噜色精品| 五月婷婷五月天在线| 五月天婷婷激情在线色图| 激情VA视频| 五月天伊人综合| 成人在线网| 99在线观看免费精品视频| 五月天婷婷小说| 亚洲丁香网| 狠狠爱五月婷婷综合六月| 可以看的av网站| 欧美天堂久久| 丁香婷婷色五月| 欧美性爱特黄一级aaaassss| 99视频日韩| 婷婷爱五月| 99在线观看视频免费| 婷婷丁香六月天| 五月的丁香六月的婷婷| 激情影院69| 天天拍天天操| 六月丁香啪| 日本无码专区| 久久看婷婷| 欧美五月丁香啪啪响视频| 97爱艹婷婷开心丁香激情综合| 99热中文字幕久久| 91精品91久久久中77777| 99久久婷婷国产综合| 丁香五月中文字幕久色| 九九99在线| 婷婷综合久久| 人人爽欧美婷婷久久久五月丁香 | 九九热视频免费| 色婷婷六月天| 久久久99精品免费观看| 日日夜夜天天| 精品视频99看在线视频| 婷婷综合一二三| 久久九九色| 尔尔AV一区| 婷婷偷拍网| 久久九九re热| 人妻AV在线| 99这里有精品视频| 精品九九九久| 99热自拍| 午夜电影网VA内射| 天天干,天天舔| 超碰免费观看| 亚洲中文字幕在线观看| 六月丁香婷婷综合在线| 黄涩毛片| 天天肏视频| 99久久終合| 99久热| 另类激情综合| 久久久久人妻精选| 五月婷婷丁香五月亚洲色| 日韩美女羞羞网站在线观看| 天天碰夜夜操| 99热啪啪| 婷婷丁香激情综合色情| 丁香婷婷色五月天| 99人这里只有精品| 亚洲AV综合在线观看| 色婷婷香蕉丁丁网| 99久久国产宗和精品1上映| 亚洲色婷婷| 天天澡天天狠天天天做| 天天五月情| 99热在这里只有免费精品| 激情久久久久久| 五月丁香婷婷色播无码| 色婷插| 色人久久| www.91久久| AV色婷婷| 丁香五月综合激情啪啪| VfJxEwPH| 99热在线这里| 能看的av片| 丁香五月婷婷成人色区| www久久久| 97在线视频观看| 激情综合五月丁香六月婷婷| 国产无套精品一区二区| 日日夜夜干| 婷婷激情综合| 五月J香蕉婷婷| 九九热超碰| 色色色国产| 久久婷婷五月综合啪| 婷婷久久色| 五月色色激情网| 婷婷五月天激情免费在线观看| 五月天伊人日日噜影片AV| 开心日韩丁香婷婷五月| 精品国产人人爱人人| 亚洲色色图片| 色色色精品无码区| 最新五月天婷婷影| 97色色色色色色色色色色色色色| 五月激情综合五月| 好好日激情五月天| 综合综合网| 岛国av电影网站| 激情五月开心五月丁香五月| 色噜噜狠狠狠综合曰曰曰| 天天操综合网站| 欧美又粗又大一区二区在线观看| 婷婷六月爽| 婷丁五月| 再次出发二| 婷婷激情丁五月| 另类综合网| 婷婷五月免费视频| 久99热在线观看| 天天色色天天| 99操| 五月婷婷黄网站大全| 色婷婷五月丁香色| 国产精品操| 亚州精品色情无码A片| 天天网站天天爽| 先锋av性爱成人电影| 另类激情网| 婷婷色婷婷| 色啪综合| 性做久久久久久久免费看| 丝袜大香蕉| 婷婷五月天性色| 综合色影院| 色吧五月| 亚洲激情免费视频| www.天天干| 婷色五月天| 久cao香蕉影院| 99视频在线播放大全| 国产成人网| 性天天中文网| 丁香五月欧美| 六月丁香五月天| 北条麻妃伊人| 久青操| 3p日韩网站视频| 色婷视频| 丁香五月激情五月| 亚洲精品一二三| 丁香激情网| 五月丁香好婷婷姑娘综合网| 亚洲VA口| 国产五月视频| 色九九七七| 五月天a婷婷伊人| 欧美黄色韩日网| 麻豆AV一区二区三区| 色婷婷色和| 久久国产性爱A V| 国产精品日韩十五区| www.激情五月| 99ri视频在线播放| 99色最新在线视频| 香蕉婷婷色五月| 国产成人精品一区二三区熟女在线| 婷婷五月丁香色综合| 日日夜夜狠狠婷婷色| 丁香五月欧美| 中国女人内射6XXXXX| 操操天堂| 直接看的AV| 9l视频自拍9l九色成人| 久99久视频免费观看| 激情玖玖sh| 婷婷久久五月丁香| 婷婷五月丁香六月天亚洲综合| 久热免费| 久婷婷婷| 九九爱激情| 在线理论片| 九色自拍| 婷婷五月婷婷| 婷婷.com| 人妻久久久久久久久妻久久久久久久久| 天天橾日日橾夜夜橾17| 九九人人操| WWW.99视频| 99爱精品视频| 久久五月天激情| 久久在这里有精品| 99在线精品视频| 六月丁香天堂| 婷婷深爱网| 精品久久久久成人码免费动漫| 久久9精品| 国产免费一区二区三区三州老师F1F1.CC| 色域五月丁香| 亚洲五月天天| 五月丁香大香蕉| 超碰操网| 久热成人| 国产综合婷婷| 五月丁香婷婷婷激情爱爱| 玖玖九九9999在线观看视频精品| 国产夫妻操逼内射视频| 婷婷深爱五月天| 四虎成人精品永久免费AV九九| 五月综合色| 91色欲综合| 色欲色香综合网| 中文字幕在线不卡视频| 色婷婷丁香五月色综合网| 影音先锋91在线资源站| 激情涩涩网| 年轻的妺妺伦理HD中文| 精品综合久久久久久五月天| 天天天天干| 亭亭丁香久久五月| 99精品网| 天天干狠狠操| 91人妻PORNY九色大屁股| 五月婷婷色色色| 五月天婷婷激情小说电影| 黄网免费观看| 97色在线| 性一交一乱一交A片久| 亚洲性爱99| 久热婷婷综合| 丁香五月天激情综合网| 色九月丁香婷婷蜜桃在线观看| 深爱五月天天| 五月婷天堂视频| www.maotanji.com| 亚洲综合婷婷五月| 亚洲无码色| 99色色网站| 97久久婷婷色| 涩婷婷五月天在线精品视频| 99久久精彩视频| 婷婷六月色| 99色区| 色欧美色色色| 九九热视频这里只有精品| 五月激情综合性爱| 六月丁香激情网| 国产99热在线看| 日韩黄在免| 人妻少妇色综合| 97视频久久| 国外亚洲成AV人片在线观看| 青青福利网| 国产精品人妻在线网址| 天天日日夜夜| 亚洲 小说 欧美 激情 另类| 五月婷婷之综合激情在线| 婷婷色导航| 丁香五月六月久久综合 | 91超级碰碰| 激情小说色五月| 久99久热| 五月总合激情网| 超碰色热| www久久艹| 六月丁香婷婷天堂| 欧美精品久| 人妻熟妇国产精品| 天天日天天做天天操| 人人操插| 黑人糟蹋人妻HD中文字幕| 天天色噜| 精品99这里有| 成人午夜在线视频| 97精品综合| 久草五月天| 丁香五月婷婷久久久| 99在线爽| 高清无码视频网址| 天天爽天天摸天天爱| 婷婷五月综合激情| 超碰在线资源| 五月天综合网| 中文AV网站| 亚洲丁香五月美女| 激情伊人| 色婷婷激情Av久久久| 五月丁香日本在线视频观看| 九九成人电影婷婷| 色婷婷视频| av人人干| 五月天另类综合网| 色欲丁香| 精品动漫 无码av| 五月天婷婷久久| 五月停停999| 欧美激情丁香五月| 欧洲S级在线观看| 婷婷五月成人社区| 色综合色色| 亚洲啪啪啪啪| 色色色色色网| 五月婷婷五月天天| 久久这里只有国产| 国产精品人妻欲求不满| 开心婷婷五月综合| 少妇AB又爽又紧无码网站| 狠狠操狠狠干综合| 激情亚洲五月| 99久久黄色顶级视频| 六月激情婷婷综合| 色八戒操婷婷| 五月婷久久久久综合| 丁香五月色| 99久久婷婷| 91九色精品女同系列| 99热免| 久热最新视频| 婷婷激情丁香五月天综合| 亚洲综合五月天婷婷丁香| 综合五月丁香六月婷婷| 亚洲AV影片在线观看| 亚洲精品又粗又大又爽A片| 天天爱天天操| 最新色色五月天| 久草视频一,二三四| 99热只有| 天天天操天天天日| 天天插AV丝袜中| av操一操| 色五月色五天色情网| 婷婷色五月天综合网| 99久久成人| 情婷婷五月天在线| 一个色的综合| 99aese| 欧美五月丁香在线观看| 深爱激情九九五月天 | 丁香五月狠狠在线观看| 99在线精品视频| 精品无码久久久久久久久| 丁香婷婷综合激情五月色| 俺去也综合| 欧美性做爰大片免费看办公室| 欧美成人精品A片免费一区99| 另类视频一区| 婷婷五月天小说| 九九AV| 成人精品视频99在线观看免费| .精品久久久麻豆国产精品| 乱精品一区字幕二区| 久久久亚洲精品一区二区三区浴池 | 久久亚洲网| 久久无码成人| 永久天堂日本| 波多野结衣AV无码Porn| 亚洲婷婷丁香五月| 久大香蕉| 成人做爰A片免费看网站找不到了| 欧美日韩99| 丁香六月亚洲| 婷婷五月天免费视频在线观看| 色天天综合| 激情噜噜噜| 激情五月婷婷网| 五月丁香婷婷综合网| 亚洲宗合激情| 99久视频| 性日本精品| WWW99热| 99久在线精品99re8| 综合色色婷婷| 中文字幕乱码亚洲精品一区| 超级碰碰碰久久网站| 日本三级大片| 婷婷激情综合色五月久久91| 五月婷婷影| 淫视馆AV在线| 丁香六月婷婷一区| 欧美激情五月| 99在线视频精品| 五月天另类视频| av网站免费在线| 日本色天堂| 天天色天天色天天色天天色天天色天天色| 99免费视频在线观看爱| 日本人妻伦在线中文字幕| 精品久久人妻| 中文字幕丰满乱孑伦无码专区| 亚洲天堂无码| 人妻狠狠操| 色 丁香婷婷| 成人av在线网址| 亚洲精品无人区| 婷婷自拍| 99热精品少| 蜜臀99精品| 九九热最新| 色婷婷最新域名| 九九热只有这里是精品| 伊人五月成人| 五月丁香激情综合| 久热伊人9| 成人AV在线网站| 久久久人妻| 亚洲午夜成人av电影网| 亚洲天堂爱爱| 天天橾日日橾夜夜橾17| 91操熟女| 97在线视频 欧美| 亚洲婷婷五月天在线激情综合网| 六月丁香激情婷婷| 欧美综合123区| 婷婷五月丁香四射| 这里只有视频精品| 五月激情婷婷综合| 操老逼综合网| 日韩婷婷五月| 成人综合视频在线| AA片在线观看视频在线播放| 亚洲av综合网| 丁香六月欧美| 五月丁香综合激情| 亚洲av午夜精品一区二区| 亚洲热综合网在线观看| 婷婷开心激情| 99色免费| 丁香激激情网| 性做久久久久久久免费看| 五月婷婷,六月婷婷| 色婷婷丁香五月高清在线| 一起草性爱不卡视频| 久一网站| 俺去也在线视频| 色五月激情五月| 激情丁香婷婷六月天| 中文字幕在线资源| 超碰成人在线免费观看| 丁香六月婷婷色XXXX| 久久久久人妻| 激情综合婷婷| 伊人激情综合网| 九九十99视频| 丁香五月天婷婷中文字幕| 九九色情网站| 中文不卡一二三区| 激情婷婷丁香| 色婷久久| 九九九九国产| 在线网黄| 欧美va视频| 人人搡人人| 五月丁香影视| 五月婷婷六月综合| 亚洲激情综合| 一本狠婷婷综合| 日本操B视频| 精品一区二区三区三区| 天天爽,夜夜爽| 国av网| 亚洲色 视频| 久久丁香婷婷色情综合| 91狠狠色丁香婷婷综合久久| 久久九区| 五月丁香狠狠爱| 中文字幕在线免费观看视频| 久久久www| 天天干天天插| 天天色伊人| 雪千夏麻豆|