亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

STM32軟件SPI驅(qū)動1.8寸TFT-LCD完整教程

STM32軟件SPI驅(qū)動1.8寸TFT-LCD完整教程 如果你第一次玩1.8寸TFT-LCD大概率會經(jīng)歷這些屏幕接上電背光亮了但是屏幕白茫茫一片不管你往寄存器里寫多少命令都沒反應(yīng)。我也從這個狀態(tài)過來的。后來發(fā)現(xiàn)卡住大多數(shù)人的往往不是屏幕本身而是驅(qū)動方式的選擇——很多店家給的例程默認走硬件SPI硬件SPI的引腳在自己板子上又經(jīng)常和別的外設(shè)撞車一旦出問題很難定位。這篇文章我要分享的就是我最終穩(wěn)定跑通的方案STM32通過軟件SPI驅(qū)動1.8寸TFT-LCD也就是用GPIO手動模擬SPI時序把底層的每一位時鐘、每一個電平都攤開來看。這套方案適合剛學(xué)會GPIO輸出、還沒系統(tǒng)學(xué)過SPI外設(shè)的初學(xué)者也適合硬件SPI引腳被其他模塊占用、需要靈活換引腳的項目。128x160的分辨率不大軟件SPI的帶寬完全夠用。1. 為什么這塊屏的驅(qū)動要用軟件SPI先說結(jié)論軟件SPI不是來替代硬件SPI的它是很多實際場景里更省事、更好排查問題的選擇。1.8寸TFT-LCD的分辨率只有128x160滿屏刷一種顏色也才40多KB像素數(shù)據(jù)軟件模擬的方式完全扛得住。如果你只是做菜單界面、顯示傳感器數(shù)據(jù)、畫個波形曲線那軟件SPI的刷新速度綽綽有余。1.1 硬件SPI和軟件SPI到底差在哪硬件SPI是芯片內(nèi)部集成的外設(shè)你只要配置好SPI_CR1寄存器、指定好波特率、極性/相位然后往數(shù)據(jù)寄存器里丟一個字節(jié)剩下的移位輸出、時鐘生成都由硬件電路自動完成CPU基本不參與。軟件SPI則完全是另一條路把SCK、SDA對應(yīng)的GPIO引腳當作普通IO口用代碼循環(huán)去翻轉(zhuǎn)電平往SDA上放一個bit再讓SCK來一個上升沿如此重復(fù)8次湊夠一個字節(jié)。這兩種方式的區(qū)別可以列個表看對比項硬件SPI軟件SPI引腳靈活性固定綁定在復(fù)用引腳上任意GPIO都能用傳輸速度輕松跑幾MHz甚至更高實測大約幾百kHz到1MHz左右CPU占用外設(shè)自動處理占用極低每個bit都要CPU翻轉(zhuǎn)占用高調(diào)試難度配置項多出問題排查鏈路長代碼直觀波形一眼能看懂適用場景刷視頻、大屏動畫、高速傳感器菜單、儀表盤、數(shù)據(jù)展示在實際使用中軟件SPI還有一個隱藏優(yōu)勢你可以隨時調(diào)整引腳連接。比如畫好的PCB走線發(fā)現(xiàn)問題或者手頭只剩某個空閑引腳只需要改一下宏定義不用重新配置SPI外設(shè)。1.2 什么場景下優(yōu)先考慮軟件SPI我歸納了三個最典型的場景。第一種是硬件SPI被占用了。STM32F103C8T6這顆芯片雖然有兩個SPI外設(shè)但項目中W25Q128存儲、RF24L01無線模塊往往各占一個剩下的引腳還要給串口、定時器、ADC屏幕就只能去普通GPIO上想辦法。這時候軟件SPI幾乎是唯一解。第二種是引腳布局問題。很多藍板STM32F103C8T6最小系統(tǒng)板的硬件SPI1引腳在PA5/PA6/PA7如果這些引腳已經(jīng)接了編碼器或者舵機再去接屏幕就得飛線繞板子信號不穩(wěn)定不說看著也別扭。軟件SPI可以直接把屏幕接到閑置的PB口一排排插針上整潔又可靠。第三種是學(xué)習SPI協(xié)議本質(zhì)。用軟件模擬時序的時候你能直觀看到SCK電平怎么翻轉(zhuǎn)、SDA數(shù)據(jù)什么時候被采樣、為什么CS要拉低才能選中設(shè)備。這些硬核知識通過波形和代碼雙重驗證比單純用硬件外設(shè)黑盒操作理解深得多。之后再去用硬件SPI配置寄存器時你心里會非常有底。2. 動手之前的準備屏幕引腳、接線與工程環(huán)境硬件準備的核心就一句話把屏幕的6根信號線接到STM32的任意GPIO上供電方式看清模塊絲印。下面我以最常見的STM32F103C8T6藍板為例把整個準備過程拉通。2.1 1.8寸TFT-LCD引腳定義與接線表1.8寸TFT-LCD模塊一般引出8個引腳但實際上我們需要操作的只有6個信號引腳。各廠家絲印命名略有差異最常見的標注是VCC、GND、CS、RES、DC、SDA、SCK、BLK其中SDA也叫SDI或MOSIDC也叫RSSCK也叫SCL或者CLK別被叫法繞暈對應(yīng)關(guān)系如下屏幕引腳類型說明VCC電源供電正極3.3V或5V取決于模塊GND電源供電地CS片選拉低選中屏幕芯片RES復(fù)位硬件復(fù)位信號低電平有效DC數(shù)據(jù)/命令選擇低電平表示寫命令高電平表示寫數(shù)據(jù)SDA/MOSISPI數(shù)據(jù)輸入主控向屏幕發(fā)送數(shù)據(jù)SCK/SCLSPI時鐘主控產(chǎn)生的時鐘信號BLK背光控制拉高或接電源點亮背光我的接線方案是全部走PB口避免和SWD調(diào)試口PA13/PA14沖突也和串口1的PA9/PA10分開屏幕引腳STM32引腳說明CSPB10軟件片選RESPB12復(fù)位控制DCPB14命令/數(shù)據(jù)切換SDAPB15數(shù)據(jù)輸出SCKPB13時鐘輸出BLK3.3V串100R電阻背光常亮VCC3.3V模塊供電GNDGND共地這里有個注意點模塊背面的絲印如果寫5V是可以接5V供電的因為模塊上大多有穩(wěn)壓芯片轉(zhuǎn)成3.3V給屏幕核心供電如果絲印直接寫3.3V老老實實接3.3V。但無論哪種情況ST7735的邏輯IO電平都不支持5VSTM32輸出3.3V直接接過去是安全的。BLK背光引腳直接接3.3V也可以但我建議串一個100R電阻防止背光電流過大實測亮度也足夠。2.2 STM32CubeMX配置與GPIO初始化現(xiàn)在新學(xué)STM32基本都是CubeMX HAL庫這套組合了配置起來比標準庫快很多。打開STM32CubeMX芯片選STM32F103C8Tx按下面步驟配置RCC選項里HSE選擇Crystal/Ceramic Resonator讓外部8MHz晶振作為時鐘源。SYS選項里Debug選擇Serial Wire保留SWD下載調(diào)試功能。在引腳規(guī)劃界面把PB10、PB12、PB13、PB14、PB15分別點擊配置為GPIO_Output。逐個引腳檢查GPIO Output levelCSPB10初始化為High因為片選默認高電平不選中設(shè)備其余引腳初始化為Low。GPIO Speed統(tǒng)一選擇High這個選項影響IO翻轉(zhuǎn)速度選High能確保軟件SPI高電平持續(xù)時間夠短、時序更穩(wěn)定。Clock Configuration里確認SYSCLK為72MHzAPB2外設(shè)時鐘為72MHz。Project Manager里Toolchain選擇MDK-ARM生成工程。生成之后HAL_GPIO_WritePin這個函數(shù)夠用了。我習慣用宏把引腳操作封裝一層這樣萬一后面要換引腳只需要改宏定義不用在代碼里到處找#define LCD_CS_PORT GPIOB #define LCD_CS_PIN GPIO_PIN_10 #define LCD_RES_PORT GPIOB #define LCD_RES_PIN GPIO_PIN_12 #define LCD_DC_PORT GPIOB #define LCD_DC_PIN GPIO_PIN_14 #define LCD_SDA_PORT GPIOB #define LCD_SDA_PIN GPIO_PIN_15 #define LCD_SCK_PORT GPIOB #define LCD_SCK_PIN GPIO_PIN_13 #define LCD_CS_LOW() HAL_GPIO_WritePin(LCD_CS_PORT, LCD_CS_PIN, GPIO_PIN_RESET) #define LCD_CS_HIGH() HAL_GPIO_WritePin(LCD_CS_PORT, LCD_CS_PIN, GPIO_PIN_SET) #define LCD_RES_LOW() HAL_GPIO_WritePin(LCD_RES_PORT, LCD_RES_PIN, GPIO_PIN_RESET) #define LCD_RES_HIGH() HAL_GPIO_WritePin(LCD_RES_PORT, LCD_RES_PIN, GPIO_PIN_SET) #define LCD_DC_LOW() HAL_GPIO_WritePin(LCD_DC_PORT, LCD_DC_PIN, GPIO_PIN_RESET) #define LCD_DC_HIGH() HAL_GPIO_WritePin(LCD_DC_PORT, LCD_DC_PIN, GPIO_PIN_SET) #define LCD_SDA_LOW() HAL_GPIO_WritePin(LCD_SDA_PORT, LCD_SDA_PIN, GPIO_PIN_RESET) #define LCD_SDA_HIGH() HAL_GPIO_WritePin(LCD_SDA_PORT, LCD_SDA_PIN, GPIO_PIN_SET) #define LCD_SCK_LOW() HAL_GPIO_WritePin(LCD_SCK_PORT, LCD_SCK_PIN, GPIO_PIN_RESET) #define LCD_SCK_HIGH() HAL_GPIO_WritePin(LCD_SCK_PORT, LCD_SCK_PIN, GPIO_PIN_SET)環(huán)境方面再提醒一句第一次在Keil里下載程序記得先把ST-Link驅(qū)動裝好Options for Target - Debug里選擇ST-Link Debugger并確認能識別到芯片IDCODE。如果板子上是CH340或CP2102串口芯片那對應(yīng)的串口驅(qū)動也要裝好否則printf調(diào)試信息永遠看不到。很多人卡在這一步以為代碼有問題其實是電腦根本沒枚舉出設(shè)備。3. ST7735初始化序列從復(fù)位到亮屏每個命令都在干什么1.8寸TFT-LCD模塊的核心是一顆叫ST7735的驅(qū)動芯片。這塊芯片內(nèi)部集成了顯存GRAM和掃描控制邏輯MCU不需要一直去刷新屏幕只要把像素數(shù)據(jù)通過SPI寫到它的GRAM里ST7735自己會不停地掃描GRAM并驅(qū)動液晶面板顯示。理解這一點特別關(guān)鍵。3.1 ST7735的核心工作原理整個通信模型可以類比成向一塊畫板填格子CS是“點名”拉低表示“選中你這塊畫板我開始跟你說話”DC是“告訴畫板我接下來要說什么”說命令還是說數(shù)據(jù)SDA和SCK則是真正傳遞信息的那根線和那個時鐘節(jié)拍RES是“把畫板恢復(fù)成出廠狀態(tài)”。ST7735有很多寄存器有的控制顯示方向MADCTL有的控制像素格式COLMOD有的控制電源和伽馬曲線。初始化就是按照芯片手冊規(guī)定的順序依次設(shè)置這些寄存器讓它進入可以正常顯示的狀態(tài)。ST7735內(nèi)部GRAM的容量是128x160x16bit因為每個像素用16位RGB565表示剛好是40KB左右。當MCU連續(xù)寫入像素數(shù)據(jù)時GRAM的寫地址會自動遞增自動從左到右、從上到下填充滿你設(shè)置好的窗口區(qū)域這個自動遞增特性是我們后面能高效刷屏的基礎(chǔ)。3.2 初始化代碼逐段拆解ST7735芯片有R版和S版兩個常見版本初始化序列有差異。ST7735R老版常見紅色PCB需要配置一整套電源、幀率、伽馬寄存器才穩(wěn)定ST7735S新版常見藍色/黑色PCB初始化簡單很多有些屏只要最基本幾步就能點亮。判斷方法很簡單看模塊背面絲印或者問賣家。先給一版最簡初始化適合ST7735Svoid LCD_Init(void) { // 硬件復(fù)位 LCD_RES_LOW(); HAL_Delay(120); LCD_RES_HIGH(); HAL_Delay(120); // 軟件復(fù)位 LCD_Write_Cmd(0x01); // SWRESET HAL_Delay(150); // 退出睡眠模式 LCD_Write_Cmd(0x11); // SLPOUT HAL_Delay(200); // 像素格式設(shè)為16位色 LCD_Write_Cmd(0x3A); // COLMOD LCD_Write_Data(0x05); // 16bit/pixel // 關(guān)閉反顯 LCD_Write_Cmd(0x20); // INVOFF // 開啟顯示 LCD_Write_Cmd(0x29); // DISPON HAL_Delay(100); }如果這版點不亮換成ST7735R的完整初始化。完整初始化會在SLPOUT之后、DISPON之前加入FRMCTR1幀率控制0xB1、PWCTR1電源控制0xC0、VMCTR1電壓控制0xC4、GAMMA曲線0xE0、0xE1等寄存器配置。這些參數(shù)每家面板略有差異最靠譜的來源是你買屏的店鋪給例程源碼照抄對應(yīng)的初始化函數(shù)即可。我把自己手頭這塊紅色PCB屏的參數(shù)補全過代碼如下void LCD_Init(void) { LCD_RES_LOW(); HAL_Delay(120); LCD_RES_HIGH(); HAL_Delay(120); LCD_Write_Cmd(0x01); // SWRESET HAL_Delay(150); LCD_Write_Cmd(0x11); // SLPOUT HAL_Delay(200); LCD_Write_Cmd(0xB1); // FRMCTR1 幀率控制 LCD_Write_Data(0x01); LCD_Write_Data(0x2C); LCD_Write_Data(0x2D); LCD_Write_Cmd(0xB2); // FRMCTR2 LCD_Write_Data(0x01); LCD_Write_Data(0x2C); LCD_Write_Data(0x2D); LCD_Write_Cmd(0xC0); // PWCTR1 電源控制 LCD_Write_Data(0xA2); LCD_Write_Data(0x02); LCD_Write_Data(0x84); LCD_Write_Cmd(0xC1); // PWCTR2 LCD_Write_Data(0xC5); LCD_Write_Cmd(0xC4); // VMCTR1 LCD_Write_Data(0x0A); LCD_Write_Data(0x00); LCD_Write_Cmd(0xE0); // GAMMA LCD_Write_Data(0x02); LCD_Write_Data(0x1C); LCD_Write_Data(0x07); LCD_Write_Data(0x12); LCD_Write_Data(0x37); LCD_Write_Data(0x32); LCD_Write_Data(0x29); LCD_Write_Data(0x2D); LCD_Write_Data(0x29); LCD_Write_Data(0x25); LCD_Write_Data(0x2B); LCD_Write_Data(0x39); LCD_Write_Data(0x00); LCD_Write_Data(0x01); LCD_Write_Data(0x03); LCD_Write_Data(0x10); LCD_Write_Cmd(0xE1); // GAMMA - LCD_Write_Data(0x03); LCD_Write_Data(0x1D); LCD_Write_Data(0x07); LCD_Write_Data(0x06); LCD_Write_Data(0x2E); LCD_Write_Data(0x2C); LCD_Write_Data(0x29); LCD_Write_Data(0x2D); LCD_Write_Data(0x2E); LCD_Write_Data(0x2E); LCD_Write_Data(0x37); LCD_Write_Data(0x3F); LCD_Write_Data(0x00); LCD_Write_Data(0x00); LCD_Write_Data(0x02); LCD_Write_Data(0x10); LCD_Write_Cmd(0x3A); // COLMOD LCD_Write_Data(0x05); LCD_Write_Cmd(0x20); // INVOFF LCD_Write_Cmd(0x29); // DISPON HAL_Delay(100); }初始化里這些延時不是隨便拍的ST7735從睡眠模式喚醒后內(nèi)部DC-DC轉(zhuǎn)換器和振蕩器需要時間穩(wěn)定延時不夠可能出現(xiàn)“十次有三次亮不了”這種玄學(xué)問題。我踩過一次RES拉低只等了10ms結(jié)果屏幕偶爾亮偶爾不亮把延時加到120ms之后徹底穩(wěn)定。4. 軟件SPI核心收發(fā)代碼上升沿采樣到底怎么模擬軟件SPI沒有硬件外設(shè)幫你計數(shù)和采樣所以一切邏輯都靠循環(huán)里的人工操作。代碼并不長核心就一個字節(jié)發(fā)送函數(shù)搞清楚這一段的電平變化邏輯整個驅(qū)動就拿下了一大半。4.1 字節(jié)發(fā)送函數(shù)的時序邏輯我在PB13上用GPIO生成時鐘PB15上放數(shù)據(jù)模擬的是SPI模式0空閑時SCK為低電平在SCK上升沿時數(shù)據(jù)被采樣有效。發(fā)送一個字節(jié)的流程是先把SCK拉低把SDA設(shè)置成當前要發(fā)送的bit最高位先發(fā)再把SCK拉高產(chǎn)生一個上升沿這時ST7735會在SDA上讀到一個穩(wěn)定的電平。循環(huán)8次后8個bit全部完成一字節(jié)發(fā)送結(jié)束。void SPI_WriteByte(uint8_t dat) { for (uint8_t i 0; i 8; i) { LCD_SCK_LOW(); // 時鐘拉低準備一次數(shù)據(jù)發(fā)送 if (dat 0x80) // 取出最高位 LCD_SDA_HIGH(); else LCD_SDA_LOW(); dat 1; // 左移準備下一位 LCD_SCK_HIGH(); // 時鐘拉高產(chǎn)生上升沿從設(shè)備采樣 } }注意循環(huán)體內(nèi)的順序先拉低SCK再改SDA最后拉高SCK。如果順序反了比如先改SDA再拉低SCK就會出現(xiàn)SDA變化瞬間和上升沿重疊的情況從設(shè)備可能采到不穩(wěn)定的電平。順序看似簡單卻是軟件SPI可靠性的關(guān)鍵。在STM32F103這種72MHz主頻下GPIO翻轉(zhuǎn)本身只要幾個時鐘周期整個函數(shù)跑起來大概1微秒多一字節(jié)完全滿足ST7735的工作要求。如果你發(fā)現(xiàn)屏幕偶爾顯示亂碼可以在這個函數(shù)里加幾個空操作延時比如每次電平切換后加兩個__NOP()給信號穩(wěn)定留點余量。但多數(shù)情況下不加延時也穩(wěn)定我自己跑下來滿速刷屏沒有任何問題。4.2 命令和數(shù)據(jù)的區(qū)分DC引腳的作用光有字節(jié)發(fā)送還不夠ST7735要知道你發(fā)的是命令還是數(shù)據(jù)這個信號由DC引腳決定。DC為低芯片把你的數(shù)據(jù)當成要寫入的寄存器地址或命令DC為高芯片把你的數(shù)據(jù)當成顯示內(nèi)容或者寄存器參數(shù)寫入GRAM。封裝成兩個函數(shù)void LCD_Write_Cmd(uint8_t cmd) { LCD_CS_LOW(); LCD_DC_LOW(); // 命令模式 SPI_WriteByte(cmd); LCD_CS_HIGH(); } void LCD_Write_Data(uint8_t dat) { LCD_CS_LOW(); LCD_DC_HIGH(); // 數(shù)據(jù)模式 SPI_WriteByte(dat); LCD_CS_HIGH(); }有些初始化命令后面要跟多個參數(shù)比如設(shè)置顯示窗口的CASET命令0x2A后面要跟4個字節(jié)參數(shù)所以實際使用中先寫命令再連續(xù)寫多個數(shù)據(jù)LCD_Write_Cmd(0x2A); // 列地址設(shè)置 LCD_Write_Data(0x00); LCD_Write_Data(0x00); LCD_Write_Data(0x00); LCD_Write_Data(0x7F); // 0~127共128列這里有一個優(yōu)化點如果在寫確認是命令時已經(jīng)拉低了CS那同一個命令后續(xù)的數(shù)據(jù)其實可以保持CS拉低連續(xù)寫不需要在每寫一個字節(jié)時都切換一次CS。但為了防止邏輯混亂和不必要的時序風險我封裝的兩個函數(shù)之間會切換CS。這個速度損失在初始化階段無所謂但在刷屏階段就必須優(yōu)化了下面說。4.3 優(yōu)化連續(xù)刷數(shù)據(jù)時別頻繁切換CS刷屏的本質(zhì)是在設(shè)置好窗口之后連續(xù)不斷地向GRAM寫入像素顏色。如果每個像素都調(diào)用一次上面那個帶CS切換的LCD_Write_Data你會發(fā)現(xiàn)刷一屏慢得離譜。因為每次CS拉高再拉低ST7735的串行接口會重新等待命令/數(shù)據(jù)標識窗口地址寄存器也可能被重置。正確做法是設(shè)置好窗口后把CS拉低不要動把DC拉高告訴芯片“下面全是數(shù)據(jù)”然后循環(huán)發(fā)送所有像素字節(jié)最后再把CS拉高。我實測這個改動讓全屏填充速度提升了接近一倍。void LCD_SetWindows(uint16_t x_start, uint16_t y_start, uint16_t x_end, uint16_t y_end) { LCD_Write_Cmd(0x2A); // CASET 列地址 LCD_Write_Data(x_start 8); LCD_Write_Data(x_start 0xFF); LCD_Write_Data(x_end 8); LCD_Write_Data(x_end 0xFF); LCD_Write_Cmd(0x2B); // RASET 行地址 LCD_Write_Data(y_start 8); LCD_Write_Data(y_start 0xFF); LCD_Write_Data(y_end 8); LCD_Write_Data(y_end 0xFF); LCD_Write_Cmd(0x2C); // RAMWR 準備寫GRAM }設(shè)置窗口時x、y都是16位參數(shù)所以分成高8位和低8位兩次發(fā)送。屏幕分辨率128x160CASET的范圍是0~127RASET的范圍是0~159參數(shù)寫錯就會出現(xiàn)顯示錯位或者花屏。后面填充顏色時CS只切換一次void LCD_Fill(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color) { uint32_t count (uint32_t)(x2 - x1 1) * (y2 - y1 1); LCD_SetWindows(x1, y1, x2, y2); LCD_CS_LOW(); LCD_DC_HIGH(); // 后面全是數(shù)據(jù) while (count--) { SPI_WriteByte(color 8); // 高字節(jié) SPI_WriteByte(color 0xFF); // 低字節(jié) } LCD_CS_HIGH(); }5. 刷屏與顯示內(nèi)容填充顏色、ASCII字符和BMP圖片屏幕上顯示任何內(nèi)容本質(zhì)都是往GRAM里寫顏色數(shù)據(jù)。把這一層抽象出來之后畫點、畫線、畫矩形、顯示字符甚至顯示圖片都是同一個套路先設(shè)置窗口再往窗口里填充顏色值。5.1 RGB565顏色編碼與單色填充ST7735在COLMOD設(shè)為0x05時每個像素用16位RGB565格式表示高5位是紅色中間6位是綠色低5位是藍色。這種格式舍棄了每個顏色分量的一部分精度把16位空間利用率拉滿。實際使用中我習慣用一個宏把RGB三通道的0~255值轉(zhuǎn)換成RGB565#define RGB565(r, g, b) (((r 0xF8) 8) | ((g 0xFC) 3) | ((b 0xF8) 3))注意轉(zhuǎn)換后的16位數(shù)據(jù)在字節(jié)發(fā)送時高位在前color 8先發(fā)高字節(jié)再發(fā)color 0xFF低字節(jié)。很多剛上手的朋友把順序搞反結(jié)果顏色整體偏色或者紅藍互換屏幕上圖形輪廓是對的但顏色全亂了。全屏填充一種顏色一行代碼就能實現(xiàn)LCD_Fill(0, 0, 127, 159, RGB565(255, 0, 0)); // 全屏紅色 LCD_Fill(0, 0, 127, 159, RGB565(0, 255, 0)); // 全屏綠色 LCD_Fill(0, 0, 127, 159, RGB565(0, 0, 255)); // 全屏藍色5.2 顯示ASCII字符需要自己準備字模液晶屏本身不認字符要顯示字母和數(shù)字必須把字符轉(zhuǎn)換成像素點陣數(shù)據(jù)插進GRAM。我用的是一種常用的8x16 ASCII字模庫每個字符占16個字節(jié)每個字節(jié)對應(yīng)一列的8個像素點從左到右共8列加上縱向16列正好組成8x16的字符。每個字節(jié)的最低位對應(yīng)字符的頂部還是底部不同的取模工具可能不同如果顯示效果是上下顛倒的把取模方向改成從下到上即可。顯示字符函數(shù)的核心邏輯是先按字符的位置設(shè)置顯示窗口然后逐列讀字模遇到為1的bit就填前景色遇到為0的bit就填背景色。關(guān)鍵是把窗口設(shè)置成8像素寬、16像素高然后逐像素輸出。void LCD_ShowChar(uint16_t x, uint16_t y, char ch, uint16_t color, uint16_t bg) { const uint8_t *font ASCII_8x16[ch - ]; LCD_SetWindows(x, y, x 7, y 15); LCD_CS_LOW(); LCD_DC_HIGH(); for (uint8_t i 0; i 16; i) { uint8_t byte font[i]; for (uint8_t j 0; j 8; j) { if (byte (0x80 j)) { SPI_WriteByte(color 8); SPI_WriteByte(color 0xFF); } else { SPI_WriteByte(bg 8); SPI_WriteByte(bg 0xFF); } } } LCD_CS_HIGH(); }字模數(shù)組ASCII_8x16的代碼網(wǎng)上很多直接下載或者自己用取模軟件生成都行。這段邏輯里0x80 j是在從高到低逐位讀取一個字節(jié)的8個bit剛好對應(yīng)屏幕上從左到右的8列像素。顯示中文需要額外準備16x16或者32x32的全角字模思路完全一樣只是字節(jié)數(shù)和行列數(shù)更多。5.3 用取模軟件顯示一張完整圖片顯示BMP圖片的流程本質(zhì)上就是把你準備好的圖片數(shù)據(jù)數(shù)組逐字節(jié)灌進GRAM。圖片需要預(yù)先在電腦上轉(zhuǎn)換成C語言的const數(shù)組我用的是Image2Lcd這款工具設(shè)置非常關(guān)鍵設(shè)置項推薦值輸出顏色16位真彩色像素格式RGB565掃描方式水平掃描行優(yōu)先高位在前勾選最大寬度/高度128 / 160生成的數(shù)組是const unsigned char gImage_xxx[]每個像素占2字節(jié)。顯示時直接設(shè)置窗口為圖片大小然后連續(xù)發(fā)送整個數(shù)組void LCD_ShowPicture(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t *pic) { uint32_t total (uint32_t)width * height * 2; // 總字節(jié)數(shù) LCD_SetWindows(x, y, x width - 1, y height - 1); LCD_CS_LOW(); LCD_DC_HIGH(); while (total--) { SPI_WriteByte(*pic); } LCD_CS_HIGH(); }這個函數(shù)不關(guān)心圖片內(nèi)容只管逐字節(jié)搬運所以任何圖片只要轉(zhuǎn)成數(shù)組就能顯示。要注意取模軟件的掃描方式必須和你的窗口設(shè)置一致如果取模時是垂直掃描而代碼里窗口是水平填充圖像會變成“拉絲”效果一行一行錯位錯開。6. 白屏、花屏、偏色我把常見的坑都踩了一遍配置完這些代碼之后并不是所有板子都能一次點亮。下面這些坑都是我實際踩過的逐個排查基本能解決90%的問題。6.1 白屏的排查鏈路如果背光亮了但屏幕全白按下述順序查。第一步查硬件復(fù)位。很多模塊的RES引腳需要穩(wěn)定拉低再拉高的過程STM32上電瞬間RES引腳的電平如果被其他初始化邏輯干擾屏幕就會停留在復(fù)位狀態(tài)。用代碼在初始化最開始顯式做一次RES低120ms - 高120ms能排除絕大多數(shù)復(fù)位問題。第二步查DC引腳。DC接錯是白屏的另一個高發(fā)原因。DC一旦接反屏幕會把命令當成數(shù)據(jù)處理、把數(shù)據(jù)當成命令處理所有寄存器配置全部錯亂屏幕上就是一片白。確認DC接到了PB14代碼里DC宏定義正確。第三步查初始化序列是否匹配你的芯片版本。紅板ST7735R沒有完整伽馬配置就是白屏藍板ST7735S用完整配置反而可能花屏。先判斷版本再決定初始化方案不要混用。第四步如果你有邏輯分析儀直接抓SCK和SDA波形看初始化階段是否有電平翻轉(zhuǎn)。軟件SPI的速度正好在邏輯分析儀的采樣范圍內(nèi)方便得很。抓不到波形說明代碼根本沒跑起來那就是工程配置問題去查時鐘樹和GPIO模式。6.2 花屏和錯位的真正原因花屏的排查點比白屏更多但特征很明顯屏幕上能看出有東西在顯示只是色彩和位置不對。最常見的花屏原因是窗口設(shè)置和實際像素尺寸不匹配。比如把128x160的屏幕錯配成132x162或者CASET/RASET參數(shù)寫反了GRAM的寫入指針就會溢出到非預(yù)期區(qū)域出現(xiàn)“斜著錯位”的條紋。把窗口參數(shù)改成0~127和0~159通常就能解決。另一種花屏表現(xiàn)為顏色漸變、色斑明顯這不一定是代碼問題可能是模塊電源紋波偏大。我在用杜邦線供電、電源線較長的時候遇到過后來在VCC和GND之間并了一個100uF電解電容現(xiàn)象立刻消失。如果你用的是面包板飛線給屏幕供電多并個電容是好習慣。還有一種是MADCTL方向設(shè)置導(dǎo)致的“翻轉(zhuǎn)錯位”。ST7735的0x36寄存器控制掃描方向和RGB/BGR順序不同廠家的屏初始值不同。如果你發(fā)現(xiàn)顯示內(nèi)容上下顛倒或者左右反轉(zhuǎn)通過修改LCD_Write_Data(0x00)這個參數(shù)來調(diào)整。常用幾組值顯示方向MADCTL值豎屏普通0x00橫屏90度0x60豎屏180度0xC0橫屏270度0xA0這幾個值是經(jīng)驗值不同批次屏幕存在細微差異以實測為準。6.3 引腳電平與供電的灰色地帶ST7735的IO邏輯電平是1.8V~3.3V不支持5V。如果你的主控是5V供電的Arduino或者51單片機必須加電平轉(zhuǎn)換直接接大概率燒壞屏幕控制器或者出現(xiàn)各種奇怪亂碼。STM32本身輸出3.3V這一步反而安全但要注意千萬不能圖省事用5V供電然后直接接3.3V邏輯——電源域和IO電平域是兩回事。另外一個容易被低估的是杜邦線長度。軟件SPI雖然速度慢但線上反射噪聲依然可能導(dǎo)致數(shù)據(jù)錯誤。我試過用30cm的杜邦線連接屏幕滿速刷屏時偶發(fā)花屏縮短到15cm以內(nèi)就完全正常。如果現(xiàn)場不得不走長線那就把SPI_WriteByte的循環(huán)里加幾個__NOP()降速或者干脆把時鐘半周期拉長犧牲一點速度換穩(wěn)定性。最后再提一個值得一提的細節(jié)如果屏幕模塊是帶有PCB板載穩(wěn)壓的版本供電電壓標稱5V實際芯片邏輯部分還是3.3V。這種情況下供電接5V沒問題但不要同時把屏幕的SDA、SCK信號接到5V電平上信號線上沒有穩(wěn)壓芯片保護5V邏輯電平直接懟上去照樣可能損壞ST7735。寫在最后的一點實際建議這套STM32軟件SPI驅(qū)動1.8寸TFT-LCD的方案我已經(jīng)在好幾個項目里復(fù)用了包括一個室內(nèi)溫濕度監(jiān)測器和一個手持LCR表界面。我的體會是屏幕驅(qū)動本身不復(fù)雜但一定要把“時序”兩個字刻在腦子里。SCK什么時候翻轉(zhuǎn)、SDA什么時候變化、DC什么時候切換每一步都要清清楚楚。軟件SPI雖然慢但它把整個通信過程變得完全可控一旦出問題用邏輯分析儀看波形比對著硬件SPI寄存器猜原因高效太多。最后分享一個經(jīng)驗在調(diào)試階段建議把SPI_WriteByte里的時鐘速度刻意調(diào)慢一點比如在每次SCK翻轉(zhuǎn)后加幾個__NOP()這樣邏輯分析儀能更清晰地看清楚每一位數(shù)據(jù)。等整個鏈路確認無誤后再把這些延時拿掉恢復(fù)滿速刷屏。這種方法能有效區(qū)分“時序錯誤”和“邏輯錯誤”排查起問題來快得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
JIZZJIZZ亚洲女人被躁| 91成人社区| 欧美亚州手机在线| 91白嫩| 亚洲欧美日韩免费电影| 男人的天堂成人的社区| 99色综合| 啊啊啊啊,啊啊好多水| 欧美日本中字另类在线| 欧色性第一页| 人妻干天天| 亚91亚洲网| 乱抡国产91| 熟女色图在线| 人人操人人摸人人看人人插| 北条麻妃性愛视频| 国产精品亚洲一区二区三区四区| 色综合1991| av午夜玫瑰| 91人妻少妇| 国产夫妻一区二区| 亚洲免费在线探花| 国产免费小视频| 天天操夜夜操| 91福利网在线观看| 自拍亚洲综合| 激情自拍 校园春色| 97色碰| 婷婷久久五月天| 日夜精品| 97超碰中文| 玖玖爱免费观看视频| 国产aⅴ无码片毛片一级网站| 亚洲国产成人精品久久久国产成人一区二区 | 97精品一区二区视频| 免费看美国人人爽,人人操 | 怡红院成人视频| 嗯啊啊啊轻点视频 | 久久9精品视频| 国产传媒午夜理伦精品| 人妻娇喘 激情视频| 国产精品乱人伊人网| 免费一级精品啪啪视频| 亚洲天天更新| 丝袜美腿91| 青青草日本无码| 天天操天天射青青草| 久久男人精品| 麻豆国产97在线| 青青草在线视频播放器| 日韩pv中文| 自拍偷拍国产欧美日韩韩| 九99久久| 欧美日韩大陆黑人少妇99| 1禁看欧美黄片免费看| 国内伊人久久久久久网站视频| 亚洲不卡不卡中文字幕不卡 | 图色综合网| 欧美人人AAA| 欧美不卡在线一区二区| 亚洲人妻久久| 亚洲春色一区二区三区| 九九热视频在线观看| 亚洲一欧洲中文字幕在线| 中文字幕蜜乳av| 久9爱精品| 久久久久ab| 日日干夜夜操视频h| 色九九综合AV| 欧美A√综合网| 青青草在线视频人人想人人上| 国产成年免费大片黄在线观看| 熟女精品日韩一区二区三区 | 91亚洲欧洲| 91无码人妻精品一区二区三区蜜桃| 亚洲涩涩| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 色五月天AV| 蜜桃臀 后入 一区 二区 三区 在线| 久草久热| 婷婷导航| 久久国产精品一级二级三级| 日韩AV中文字幕电影| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 日韩无码黄色片| 免费一级黄色录像影片| 91爆操视频| 亚洲午夜福利在线影院| **一级毛片国产| 精品久热| 欧美性Fer办公室秘书| 欧美日韩一干二干| 久湿久久| 99色日| 欧美天堂日韩三级国产传媒| 色网在线| 777超碰| 国产一区二区成人av在线播放| 国产欧美日本亚洲精品| 欧美一级做a爰片免费视频| 大香蕉AV在线| 欧美日动态视频| 青青草中日韩在线| 国产精品久久久久久亚洲色欲| 精品国产一区二区三区香蕉欧美| 手机看片1024你懂的国产| 日本福利二区视频| 黄色av网站在线播放| 午夜精品人妻二区三区| 欲色综合| 一区二区三区 丝袜 高跟 美腿| 另类老少妇| 欧美黄色大片在线观看| 亚州色阁| 亚洲欧美精品一区天堂久久| 99热在线播放| 九月色婷婷| 亚洲欧洲第二视频在线观看色图| 久久性爱精品一区| 2020中文字幕在线| 啊啊啊啊啊啊啊网址在线观看| 97免费在线视频| 欧美性爱一内片一区二区三区| 久久久久夜夜夜夜| 欧美视频激情久久久久久| 熟妇人妻一区二区三在线| a男人的天堂| 97精品视频在线| 91色碰| 国产91 丝袜在线播放| 久久久久久久久久久人妻| 青青草原伊人网| 久色网| 放黄片放3级黄片没穿衣服| 亚洲AO在线| 最新三级网址| a级免费在线观看| 欧美国产有色电影| 青青草影视蜜久久| 午夜精品久久久久久久男人的天堂| 2024黄色视频| 97中文热色| 久久大线蕉一区| 日本日皮视频逼| 国产精品麻豆成人av| 国产日韩美女小穴视频网站不卡| 97久久超碰| 超碰综合色| 久久侵犯人妻爽爽爽| 国产小黄片在线免费观看| 91视频精品| 蜜臀久久99精品久久久久电影| 欲色影视综合吧| 色色99| av午夜影院在线播放| 热99re69精品8在线播放| 69视频入口| 亚洲高清在线se| 欧美色偷拍| 久久久97| 亚洲综合在线高清| 国产高清成人免费视频| 98久久超碰| 91黄射| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 欧美极品女人的天堂| 国产亚州高清国产拍精| 欧美视频一区二区在线| 无码人妻丰满热妇又大又粗| 伊人五月天激情| 高清无码在线播放网站| 欧美性爱1080p| 日本不卡高清视频| 人人看人人摸人人色| 精品国产片亚洲一区| 欧美呦呦性爱| 欧美日韩国产色图在线| 97人人超| 69综合网| 欧美在线|亚洲| 九九人妻| 极品销魂美女一区二区 | 色五月亚洲| 激情综合五月| 超碰97日韩| 国产suv精品一区| 射综合网| 国产一区在线观看无码AV| 把腿张开老子CAO烂你| 青青青操| 国产成人无码啪| 青娱乐国产盛宴视频| 精品一区二区三区18| 亚洲熟女人妻中文字幕一区二区| 91久久九九精品国产综合| jk白丝没脱就开始啪啪| 五月激情小说| 1二区9| 欧美综色欧| 日韩精品在线视频在线观看| 天天色播亚洲综合网站| 60秒试看最爽10分钟网站| 97超碰影音| 黄片视频观看| 成人贴图日韩欧美| 天天综合网亚洲综合网| 亚洲国产欧美一区二区潘金莲| 九九伊人网| 99蜜桃臀久久久欧美精品网站| 日日躁夜夜躁狠狠躁超爽| 国产91亚洲精品一区二区三区| 秋霞一级视频在线观看免费| 久久欧洲| 欧美真人抽搐一进一出gif| 国产精品香蕉热久久新品| 日产中文字幕2020| 色哟哟 日韩精品| 91校园春色长篇| 亚洲日本天堂| 国产亚洲美日韩Aⅴ中文字幕无码成人| 最新欧洲欧美日本激情网站| 极品少妇久久久| 九色精品视频导航1| 国产白领连续中出在线观看| 久久男人的天堂| 日本精品性生活久久久| 婷婷久久综合| 无毛精品| 久久久国产成人一区二区三区在线| 欧美日韩淫加| 日韩中文字幕国产| 婷婷15月天青娱乐| 美中日韩无码| 欧美在线干| 亚洲免费人妻在| 色噜噜狠狠色综无码久久| 亚洲欧美国产成人综合不卡| 欧美综合狠| 曰韩av中文字幕专区| 1204人成网站色www| 人妻人人操| 精品视频久久| 久久有码| 国产精品久久久三级无码| 美女黄色91| 大香蕉男女超碰精品在线| 欧美青青草视频| 成人丁香五月| 成人精品久久久午夜福利| 国产白领连续中出在线播放| 狠狠色噜噜狠狠狠狠狠色综合久久 | 欧美在线视频播放| 伊人五月天| 日本伦乱九九九综合| 今日头条成人一区二区三区四虎精品| 人妻乱仑一区二区三区| 91东北熟女| 99色骚| 久久久一区二区三区四曲免费听| 在线观看亚洲成人精品| 97国产|免费| 日韩懂色网| 婷婷久久久| 精品无码人妻一区二区免费蜜桃| 丁香九月激情啪| 97啪啪| 99RE在线视频精品,这里只有精品| 国人欧美精品一区二区| 精品对白久久不卡| 天天综合香 ld视频| 免费视频a级毛片免费视频| 九九九久久久| 男人久久天堂| 99超碰碰| 久久久999国产精品| 成人十八禁日韩欧美一二三| 色综合中文字幕不卡| 丁香五月影院| 亚洲综合成人网| 午夜成人爽爽爽爽A片李冰冰| 综合网亚洲1| 精品久久久久瑟瑟| 国产欧美精品日韩区二区麻豆天美| 国产精品一二三在线看| 台湾成人无码AV| 欧美精品日韩久久久九| 中文字幕高清精品一区| 日本媚薬中文字幕在线| 丝袜美腿丝袜| 久久六六| 不卡中文字幕aⅴ在线| 久久久久97| 大香蕉线| 中文久久久| 综合网亚洲| 国产综合日韩伦理| 国产精品国产自产高清AV| 性爱综合一区二区| 青草青草久热| 欧美日韩国产高清在线一二三区| 狠狠躁天天躁日日躁| 天天综合网~91| 日韩欧美偷拍美女视频| 观看免费区二区三区二| 欧美日本久久精品一区| 99re这里只有精品中心播放| 另类小说五月天| 国模精品一区二区三区苹果色戒 | 97精品一区二区视频| 国产精品电影大全| 九九av| 日本午夜久久电影| 欧美激情视频一区二区三区不卡| 国产高清不卡视频| 国产一区二区精品久久久不卡蜜臀| 本道在线| 婷婷色综合欧美日韩| 欧美亚洲素人制服精品| 精品国产一区二区三区香蕉欧美 | 欧美72网页| 99热日| 亚洲日韩欧美一区二区| 91激情网| 亚洲天堂精品日韩电影| 中国操逼无码| 亚洲综合五月天婷婷丁香| 日本不卡高清免v欧美日韩在线观看| 亚洲欧美激情另类色图| 亚洲青色欧美| 超碰在线人人射| 欧美精品999| 爱爱动态120秒| 欧美高清在线| 亚洲成?V人片在线观看福利| 亚洲综合影视| 人妻99p| 吻戏激情性巴克| 亚洲诱惑| 女优免费一区二区永久| 中文字幕日韩专区精品系列| 风流老熟女一区二区三区l| 91国产精品熟女| 安微少妇操BBB| 在线观看AV片| 欧美精品久久| 日韩精品在线放| 东北夫妻性偷拍| 婷婷午夜清品久久久久久久性色视频观| 男女猛烈无遮掩视频免费软件| 人妻熟女一区二区三区在线| 欧美精品二区视频在线| 天天影视之亚洲综合网| 五月婷网站| 狠狠躁AV| 九七超碰| 日韩人妻精品中文字幕| 97在线精品观看视频| 久久久久大香青草精品综合| 人人玩人人添人人澡免费| 操屄不卡视频| 成人草草视频| nuu12国产麻豆精品| 国内伊人久久久久久网站视频| 久无码| 国产精品久久泡妞网站| 亚洲、日韩、综合、另类| 91国产操逼视频| 欧亚久久偷拍视频| 以及麻豆国产入口在线观看免费| 久久日本熟女精品一区| 日本99热| 最新国内自拍av免费| 91熟女.com| 屌逼麻豆| 人妻偷拍一区二区三区| 97久操| 韩日男人的天堂| 先锋激情∨在线视频播放| 国产九九九九九九| 少妇毛片久久| 香蕉免费一区二区三区不读| 91亚洲色人| 欧美亚洲丝袜美女电影| 艹精品| 啊啊啊啊啊啊在线| 91精品婷婷国产综合久久竹菊| 国产福利影视| 人人搞人人插人人操| 成人日本精品九区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 日本欧美成人片AAAA| 亚洲成人性爱网站在线播放| 久热久操| 91亚洲黑人| 福利色色| 免费啪啪av| 亚洲欧美内射| 久久久内射良家| 蜜桃久久久久久久久久久久| 一区二区三区日韩欧美| 手机在线中文字幕国产| 襙一襙| 亚洲,欧美,综合网| 欧美九9 9 9| 国产亚洲综合欧美一区| 午夜精品探花| 天天搞在线综合网| 国产免费黄色一级大片| 中文字幕熟女人妻丝袜| 久这精品中文在线观看视频| 久久女女| 亚洲色婷婷综合久久久久中文| 97色诱| 一区 欧美 日韩 麻豆| 亚洲狼狼干综合1| 第二页中文字幕| 五月婷婷hd| 成人免费不卡在线视频| 牛黄色久午久| 热热热热日日漂亮永久永久国产日| V A在线| 午夜精品久久99蜜桃的功能章节| 国内毛片四区| 精品无av| 天天影视色香欲综合网小说| 国产一级内射无挡观看| 九九综合久久中文字幕| 91人妻做a观看视频| 国产一在线观看| 国产一在线观看| 欧美传媒| 九九香蕉网| 色婷婷亚洲婷婷| 天美一二三在线观看Av| 美女骚尻视频| 久久精品国产97欧美精品亚洲 | 抽插爽| 加勒比AV网| 97在线亚洲| 亚洲人久久久网| 欧美成人性活片| 91伊人久| 色色亚洲| 日韩av电影网站| 日韩欧美性吧婷婷乱伦大香蕉 | 亚洲 中文 欧美 日韩 在线| 日韩一级二级三级免费看完整版| 粉嫩av平台| 国产超碰| 亚洲。天堂。日本在线观看| 久久亚洲中文字幕视频| 色婷婷五月综合| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 日韩精品一区,二区 九九...老司机| 男人的天堂2010| 青青草自拍视频在线播放| 大干人妻| 亚洲第2页| 淫乱图区| 久久久久久日韩| 国产视频一区二区三区久久亚洲天堂| 99久久久| 校园春色综合| 亚洲图片第一页| 久久婷婷五月天| 欧美日韩青操| 国产中文字幕曰本毛片| 欧洲乱码一区二区| 日韩高清黄片| 999久久久精品国产| 97在线播放| 久久一区二区三区入口| 5252色欧美在线男人的天堂| 国产18精品亚洲精品| 亚洲在钱| 韩国午夜理伦三级好看| 久久9精品网站| 婷婷精品视频| 日本成人在线不卡一区二区三区| 91狠狠综合久久久久久| 2017大香蕉| 99精品网站| 男人的天堂com| 亚洲不卡三级手机播放| 青娱乐亚洲自拍| 极品粉嫩一区二区| 国产精品午夜AV完会免费| 精品一区96| 国产人妖的免费的视频| 91麻豆天美传媒HD| 极品综合| 国产怡红院在线| 嗯阿好爽好紧| 精品午夜福利国产一区二区在线观看| 亚州色阁| 91久久婷婷| 欧美日韩小说| 99久久无色码| 91被操| 91综合国产精品| 色原狠狠天天天| 丁香五月综合| 岛国视频一二三区| 亚洲综合20p| 小骚逼被操的爽不爽| 亚洲精品白浆高清久久久久久| 蜜桃色色网站视频三区| 国产51色综合久久免费| 亚洲天堂久久久久久粉红视频| 国厂麻豆77q4| 亚洲丝袜色图| 色五月婷婷网| 97亚洲中文| 男人天堂无码| 加勒比av中文| 日韩国产十八禁| 欧美婷婷| 99re久久| 黄色电影在线播放综合网站| 美女t无毒不卡不卡| 婷婷九月国产| 丝袜性亚洲| 综合久久99| 久久精品一区二区三区四区五区| 玖玖草久草99蜜月一区二区三区| 精品久久久av| 99精品在线观看| 99在线观看| 高清无码 国产精品| 中国人高清www色视频免费| 亚洲狠| 国产熟女一区二区| 91美女视频电影| 亚洲在钱| 夜夜做夜夜爽精品视频| 日韩毛片9| a啊啊啊啊啊啊啊啊一区二区| 久久久久久久久九九久孕交| 330Dv国产女人终合视频极品人与兽 | 日韩丝袜高跟制服在线观看| 超碰综合色| 国产精品久久久久999| 天美国产三级传媒| 国产肏屁眼视频| 欧美亚洲宗合色性图| 中文字幕av久久爽Av| 日韩97视频!在线| 欧美18老人禁| 国偷自 一区二区| 骚日日av| 亚洲欧美国产中文视频| 艹精品| www99热| 一及黄久一点| 97操碰| 伊香蕉综合久久久久久久噜噜噜| 亚洲天堂2020| 免费观看国产小粉嫩喷水精品午| 日韩成人大片在线观看| 色噜噜国产在线| 97超级色碰碰| 伊人热综合| 国产精品久久久久无码Av网曝门 | 男人的天堂com| 少妇熟女1区2区3区| 免费一级a毛片久久久久久鸭绿欲 国产精品亚洲天堂网址 | 欧美日韩在线小说 | 婷婷丁香成人| 97一区二压| 黄色免费网| 激情五月天色色| 蜜臀在线免费观看在线免费观看| 日日夜夜国产综合| 校园春色五月天| 精品人妻美妇91job| 欧美天堂日韩三级国产传媒| 久久天堂网| 日韩亚洲Av人人夜夜澡人人爽| 又黑又大又粗| 玖草在线视频| 九色97| 色悠久久久av| 日本女人久久久| 国产操偷| 老熟妇一区二区三区啪啪| 欧美熟妇成人一区二区| 少妇被玩视频二三区| 国产丁香精品露脸视频 | 亚洲 欧美 日韩 国产一区二区 | 偷拍伦理视频| 午夜在线播放| 中文字幕精品日韩中文字幕| 天天舔九色婷婷| 久久精品 六十路 熟女 欧美| 日本三级R| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 婷婷丁香五月天亚洲天堂网| 色娱乐色呦呦夜夜夜夜av| 天天操夜夜嗨| 久久久精品视频欧州站| 久久久成人国产精品无码| 免看60秒涩涩视频| 98一区二区精品| 国产偷人伦激情在线观看| 久极品在线观看| 天天日天天搞天天干| 午夜精品久久久久久久男人的天堂| 综合 亚洲 欧美| 成人美女av| 一区二区三区在线日韩影院观看| 大香网伊人久久综合| 中文字幕精品码亚洲| 96AV久久久| 手机在线人成免费视频| 激情人妻另类| 91蜜臀在线久久久久| 久久久久久久97| 国产精品久久久久久久久久久久久久久| 啪啪AV导航| 巨乳特殊服务按摩| 99蜜桃臀久久久欧美精品网站| 五月天黄色激情视频| 超碰久在线天天做| 超碰公开久久网| 亚洲国产一区二区三区四区国产| 欧美在线91| 激情文学亚洲| 爽爽淫人网| 久久亚洲精品成人av| 久久久久白虎| 人妻色情天天操| 夜夜嗨AV一区天天| 性爱边摸边日免费AV| 亚洲欧美电影| 国产白丝网站| 久久久久久免费电影| 熟女一区二区三区| 伊人国产av| 亚州性9| 色欲三区| 亚洲国产97在线精品一区| 久久一二三级一一一| 在线看片国产精品每日更新| 吖在线不卡一区二区国产剧情| 国产吹潮女在线观看| 天天综合网日韩7799| 日本熟妇人妻中出视频| 精品网站99999| 亚洲啪啪视频免费| 免费观看的av| 一本色道综合久久欧美日韩精品| 极品白嫩美女白浆成人福利在线看| 日本大香蕉| heyZO天然素人无码AⅤ专区| 伊人久久婷婷| 婷婷午夜清品久久久久久久性色视频观| 国产无码精品高清| 欧美中文字幕一区| 深夜激情 | 啪啪综合网| 毛片麻豆91糖心精品毛情片| 欧美加勒比| 亚洲经典啪啪| 久久后入制服| 操操啪| 亚洲av青草久久一区二区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 欧美 精品国产制服第一页| 日韩黄色一区二区三区| 人乳av| 午夜高清成人在线视频| 97超级久久| 涩五月婷婷| 国产精品ww久久| 少妇被玩视频二三区| 人妻干天天| 欧美国产视频| 欧美aaaaaaa| 深夜激情| 五月天久久婷婷亚洲| 人妻aa| 免费AV中文网在线观看| 男人的天堂在线| 久久久成人国产精品无码| 亚洲欧美首页| 久久综合女优| 97人人草| 国产精品自拍xxxx| 欧美碰碰综合色| 加勒比伊人影院| 日韩精品9区| 无码人妻精品一区二区三区99不卡| 秋霞午夜视频一区二区| 色婷婷丁香五月| 人人 操人人 操人人| 亚洲精品蜜桃久久久| 久久超碰、| 欧美性巨大╳╳╳╳╳高跟鞋| 亚洲色图欧美| 亚洲丨在线| 蜜臀无码一区二区| 91网站18在线| 人妻久热在线| 亚洲欧美国产成人综合不卡| 亚洲国产亚洲天堂| 天天日天天操VV| 大胆91| 3P乱轮视频| 国模艳艳啪啪一区| 2017天天操| 亚州性色| 搡老女人老91二区| 日韩本不卡视频在线观看 | 国产A v无码专区| 亚洲欧洲日本精品中文a∨| 人妻欧美| 亚洲一区二区在线观看91| 国产区在线| 熟妇高潮二区三区| 人人澡人人弄| 五十路二区在线| 欧美韩国你懂得在线| 亚洲 另类 丝袜 自拍 动漫| 熟妇高潮一区二区免费视频| 操九九九九九九| 亚洲丝袜B诱惑| 久久久久久久久久久999| 亚洲欧美setu| 丝袜天堂网| 老女人老91妇女老热女| 日本免费一区二| 60秒试看最爽10分钟网站| 裸体1区| 日日夜夜草草草| 99只有精品| 亚洲蜜臀精品视频久久| 久久久久久性爱免费视频| 精品无码久久久久久久久果冻糖心| 精品一区二区三区国产| 欧美精品日韩久久久九| 日韩一级片在线看| av无码精品久久久久| 中文字幕精品日韩中文字幕| 成人在线日韩| 污污污8888| 超碰碰激情97+久| 91色伦| 午夜成人爽爽爽爽A片李冰冰| 少妇一级婬片免费放一级a性色.| 欧美性色综合网| 日韩国产在线观看av| 99欧美| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 狠狠亚洲| 东京热av影院| AV污污污污| 欧美制服另类丝袜| 伊人国产视频| 欧美操逼录像国产黄色国产| 中文字幕国产在线天堂| 日本操BAV| 99热 按摩 日韩| 97超碰9| 女人被添高潮免费视频| 国产av高清版| 啪啪自拍九九综合| 性爱Av免费| 欧美日本国产日韩激情视频| www四虎| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 国产一区自拍欧美日韩| 日韩精品区二区三区不卡| 日本黄色天堂| 18禁无码永久免费无限制| 国产精品老师| 亚洲精品不卡一二三区| 久久透逼视频| 噜噜噜久久亚洲精品色情| 中文字幕在线第二页| 亚洲最新中文字幕免费| 91天天爱| 嗯嗯啊啊视频在线看| 天天躁夜夜躁狠狠躁AV| 精品成人动漫一区二区| 91丝袜激情在线| 成·人免费午夜在线观看| 天天欧美色| 欧美热图99| 天天综合91在线| 9Ⅰ老熟女| 国产视频三区四区| 91青青在线| 激情婷婷丁香| 内射夫妻三片| 99re这里| 亚洲色人阁| 亚洲极品| 超碰97久久| 六月丁香久久| 欧美肥臀在线| 人人喜人人妻| 十八禁av无码免费网站APP| 久久精品视| 色婷婷电影| Sekablack无码一区| 亚洲日韩熟女人妻高清在线| AV乱伦国产| 日本好吊色视频| 国产精品自在线发布| 九九热午夜欧亚国产视频| 99热婷婷| 伦伦成年午夜免费视频| 清纯唯美亚洲另类| 啊操爽品善一区二区三区| 1禁看欧美黄片免费看| 一本大道久| 色爱欲亚洲| 欧美成人性爱视频在线播放| 超碰偷拍| 国产精品久久久久久久久久久久久久久久久久 | 中文字幕一区av| 青娱乐亚洲自拍| 久操视频在线观看| 免费亚洲国产精品久久一区| 午夜一区| 久久高清欧美国产| 好爽视频在线观看视频 | 中文字幕亚洲欧美在线不卡| 在线国产福利网址导航| 96一区二区| 九九九精品色乱九九九| 亚洲中文字幕乱码无码一区二区 | 亚洲自拍欧美色综合| 久久久亚洲精品电影免费看| 操逼www.| 国产精品久久久久久久久久久久| 久草成人影片| 福利天堂| 天天天天天天天天综合| 中文字幕日韩精品一区二区三区| 夜夜爽爽爽| 中文字暮97| 女同亚洲欧美一二三区久久电影| 无码99| 激情婷婷| 欧美综合区| 久热超碰| 麻豆视频test| 手机在线中文字幕国产| 亚洲一区二区三区在线激情| 热热色综合网| 欧美少妇高潮视频| 男人综合网| 岛国人妻少妇av在线观看| 操b网站亚洲无码| 久久久久网站-538在线视频-欧美永久乱码| 亚洲午夜免费狠狠干| 日韩黄色一区二区三区| 日韩欧美tv一区二区在线观看| 又大又大又大又粗爽高潮观看 | 超碰色美女| 午夜欧美女人操逼| 国产一区在线观看无码AV| 亚洲国产婷婷在线播放| 91综合网| 99亚洲国产精品色一区二区三区| 成人av毛片在线观看| 久久成年片色大黄全免费网站| 人妻夜夜爽天天爽三区麻豆AV网站| 综合情欲网| 免费视频一二三区| 久久久偷拍| 欧美 亚洲| 国内精品a| 欧美99热| 久热久| 久久高潮妇女视频| 欧美另类精品xxxx| 中文字幕av乱伦| 少妇高潮特黄A片| 91亚州日韩高清| 国产丸一视频| 骚日日av| 男女激烈网站最新| 五月天综合网| 好淫网一二三视区| 久久久久久久久久久久97| 日夜精品| 人人色人人操在线| 亚洲日韩欧美一区二区| 日本不卡免费二区| 屁股久久久久久| 爱我干综合| 夜夜操二区| 天天综合站| 户外裸露刺激视频第一区| 亚洲春色一区二区三区| 韩国黄色片精品久久久| 91在线/欧洲| 精品福利| 人人贴人人摸| 人人澡综合涩| 91色花堂| 国产精品熟女丝袜一区二区| 欧美 亚洲 综合 制服| 国际精品久久久| 日韩一级久久毛片| 东京热激情视频一二三区| 久久9久久| 国产最新小视频在线播放下载| 超AV色女| 日韩射精| www.色婷婷| 日本亚欧爱爱| 国产欧美一区激情交| 97在线/亚洲| 东京热男人的天堂网| 亚洲中文字幕一区| 自拍偷拍2025在线观看| 9999九九九久久久| 97人人爱人人乐| 青青草视频久久| 国产午夜在线观看| 精品性爱无码在线播放| 精品人妻一区二区三区四区| 国产亚洲日韩在线三区黑人| 国产精品久久久久综合| 91 丝袜在线播放| 熟女色综合久久| 三及片网站| 色婷婷狠狠| 欧美亚洲特P| 久久精品国产精品亚洲艾通辽熟妇| 91天天看| 九九九九九九九九九九精品视频| 黄色电影观看久久9| 欧美成人黄网色网站| 啊啊啊好湿久久| 伊色久人大在线| 久久夜嗨| 一级黄色视频网| 亚洲drav色图| 五月大香蕉| 97久久超碰| 国产精品久久发布| 狠狠超| 91视频综合在线| 偷窥自拍亚洲色图| 欧美日韩国产一区二区小黄片大全| 国产精品久久9| 综合啪啪| 色欲色香天天天综合网www-亚洲综合国| 天天爽人人综合免费7799| 国产v亚洲v日韩v欧美v片另类| 在线观看日韩av不卡| 丰满少妇一区二区三区免费看| 色婷婷综合久久中文字幕雪峰| 激情视屏国产乱伦强奸| 亚洲有码视频二区| 老熟女天天操| 天天日天天舔天天喷天天射| 在线毛片片免费观看| 白丝av| 台湾佬中文娱乐自偷自拍| 亚洲啪啪性视频| 国产婷婷综合在线观看| 热热热热日日漂亮永久永久国产日| 久久99网站| 国产超碰人人操| 不卡啪啪视频| 男女激情黄色网址| 精品人体无圣光凹凸| 国产亚洲99久久精品熟| 国产91 丝袜在线播放00-百度| 99在线精品观看视频中文| 丰满少妇精品一区二区| 久久风骚城市人| 亚洲美女黄色| 日1区2区3区2020| 欧美激情内射| 综合网少妇| 啊啊啊啊啊啊在线观看| 夜夜爽夜夜操| 人人爱人人乐人人操| 视频一区二区免费在线| 欧美91色| 99超碰碰| 国产成年女黄特黄| 欧美午夜视频免费观看| 中国一级操逼视频| 日本免费一级AAA大片器| 欧美日本国产日韩激情视频| 无码国产精品96久久久久孕妇| jizz啪啪| 久久精品一区二区三区四区五区| 91精片| 超碰国产精品久| 岛国视频免费在线观看| 亚洲色 国产 欧美 日韩| 九九无码视频| 色婷婷电影网| surenchaopeng| 久久久涩| 亚洲天堂男人天堂| 操逼逼中文字幕| 亚洲综合网电影91| 青青伊人加勒比海| 久久久久久久久一区二区三区| 自拍偷拍草一草| 亚洲午夜福利视频| 色眯眯射| 久热最新在线杭州| 精品国产一区二区三区四区在线看| 91粉嫩萝控精品福利网站_精品影音先锋国 | 人妻熟女一区二区| 91大神精品长腿在线观看网站| 美女熟妇色| 人人妻人人操人人乐| 青青草影视蜜久久| 亚洲成人在线高清| 综合色色网| 亚洲91色在线| 日本淫乱女一区二区三区视频| 大香蕉 222| 欧美视频激情久久久久久| 中文字幕加勒比海高清无码免费视频 | 亚洲AV色图一区| 伊人操你| 啊啊啊啊啊在线观看网址 | 中国国国产一级特黄毛片| 欧美色图片91| 亚洲操操操无码| 久久性爱网站| 欧美论理片| 欧美大香蕉专区网| 亚洲综合性感在线| 亚洲人妻日日日| 日韩精品一区二区三区色欲| 九九九九九九免费视频| 日本性爱网址| 大香蕉综合| 美女诱惑一区| 九九热免费国产视频婷婷伊人五月| 91在线一起| 色综合九九| 日韩超碰97| 香一区二区三区| 草莓精品视频在线免费观看| 国产AV人人 夜夜人人澡| 97在线视频观看| 久久精品免费| 久久超碰日韩精品| 熟女一区二区| 国产AV久久野战精品| 亚洲怡春院| 激情文学网伊人| 欧美超碰97| 91视频国品一二三区| 久久97| 久久超碰av在线| 97操碰| 国产精品不卡高清在线观看| 九九亚洲精品| 国产精品无码在线| 日韩精品9区| 欧美另类色图片| 国产一区自拍欧美日韩| 91蜜臀人妻中文字幕在线| 伊人影院中文字幕| 内射老妇BBWX0C0CK| 大香交| 蜜臀久久一区二区| 99e久久国产精品| 噜噜噜亚洲精| 草b在线 | 久久久成人精品| 狠狠色伊人亚洲综合网站色| 色综合久久夜色精品国产天堂| 成人三一级一片aaa| 一区二区不卡视| 啊啊啊 在线| 色色色网站| 精品一区二区成人| 啊啊啊啊好疼视频| 91 偷| 日逼国产| 欧美日韩在线视频网站| 欧美性综合| 婷婷五月天在线观看| 尤物黄色在线观看网站| 亚洲欧洲激情卡通另类文学四射小说网站 | 欧美日韩免费专区在线| 婷婷大香蕉| 97婷婷色| www.人人cao| 大地资源在线观看中文第二页| 久久久无码视频| www国产精品| 中国91AV| 欧美黑人日韩少妇色情| 密乳无码| 亚洲高清欧美总合| 久久超碰大香蕉| 亚洲色图欧美另类在线| 欧美一级三级| 黄色网址久久精品欧美喷水| 日本午夜精品理论片A级APP发布| 亚欧无码在线| 强奸乱伦αv片| 91色婷婷综合久久中文字幕二区| 精品国产久热在线观看| 日韩欧美大力操| 精品无吗m| 久久9免费视频| 9久久9综合| 亚欧高清v| 岛国片国产成人亚洲播放| 伊人操你| 精品人妻视频入口| 亚洲精品蜜桃久久久| 九热大香蕉| 人人插人人搞人人操| 国产97在线 | 亚洲| 97伦乱| 不卡六六在线91| 中出20p| 国产探花日韩援交| 黄色成品网站| 吻戏激情性巴克| 久久久久久久六六| 亚洲极品| 欧美图片色五月天| 亚洲高清综合网| 精品99999| 日本欧美不卡| 天天在线91| 男生女生啊啊啊啊| 国产成人主播| 久9久9精品| 60秒免费小视频| 亚州,欧美在线| 国产中文字幕在线| 欧美呦呦性爱| 天天干1区2区在线| 日韩亚洲97| 亚洲av性爱电影| 91色鬼| 超碰人人妻| 久久一二三四不卡| 久久精品国产亚洲AV先锋| 午夜美女福利视频| 激情五月天色播| 欧美色综合图片| 亚洲97成人在线观看| 91黑人无码激情在线| av72网| 国产精品97视频| 欧美日韩不卡a片| 网站A V在线| 大香蕉综合|