久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

FPGA驅(qū)動(dòng)串口屏USART_HMI:從協(xié)議到調(diào)試全解析

FPGA驅(qū)動(dòng)串口屏USART_HMI:從協(xié)議到調(diào)試全解析 寫(xiě)這個(gè)系列之前我一直覺(jué)得FPGA搞顯示是很勸退的一件事。數(shù)字邏輯寫(xiě)到能跑UART、能收發(fā)字符串已經(jīng)算入門(mén)了結(jié)果一看需求要把采集到的電壓、溫度、狀態(tài)幀值顯示在屏幕上還得有幾個(gè)按鈕能切頁(yè)面——很多人在這一步直接轉(zhuǎn)投ARM了。直到我把USART_HMI串口屏引入項(xiàng)目才發(fā)現(xiàn)FPGA做交互界面也可以這么省心。這篇是FPGA串口收發(fā)字符串系列的第四篇專(zhuān)門(mén)把串口屏USART_HMI這塊講透包括協(xié)議幀格式、FPGA側(cè)指令發(fā)送模塊怎么寫(xiě)、聯(lián)調(diào)時(shí)會(huì)遇到哪些坑以及后續(xù)可以往雙向交互延伸的方向。手里已經(jīng)跑通UART收發(fā)模塊的朋友這一章可以直接落地就算前面幾篇沒(méi)讀只要懂串口字節(jié)怎么發(fā)也能跟上。1. 為什么FPGA項(xiàng)目里我會(huì)選串口屏來(lái)顯示1.1 顯示方案的選型對(duì)比很多FPGA工程師第一次面對(duì)要給項(xiàng)目加顯示這個(gè)問(wèn)題時(shí)列出的候選方案大概跟我當(dāng)年差不多數(shù)碼管、LCD1602/COG12864、SPI或者RGB接口的TFT屏最后才輪到串口屏。我把實(shí)際對(duì)比結(jié)果放在一張表里大家感受一下差異。方案顯示能力人機(jī)交互開(kāi)發(fā)工作量FPGA資源占用適合場(chǎng)景數(shù)碼管數(shù)字和少量字母內(nèi)容有限基本無(wú)低動(dòng)態(tài)掃描即可低電壓、計(jì)數(shù)、狀態(tài)指示LCD1602/COG12864字符或簡(jiǎn)單圖形需自己取模無(wú)或按鍵擴(kuò)展中初始化時(shí)序和字庫(kù)都要處理中簡(jiǎn)單文本顯示SPI/RGB接口TFT色彩豐富像素級(jí)控制需要自己寫(xiě)觸摸和GUI高顯存、字庫(kù)、GUI框架全自己做高RGB屏還得外掛SRAM/SDRAM對(duì)顯示刷新速度要求極高的場(chǎng)合USART_HMI串口屏彩色顯示文字、圖形、曲線、圖片均可自帶觸摸事件上報(bào)低上位機(jī)做界面FPGA只發(fā)指令極低占兩個(gè)IO和一個(gè)UART設(shè)備狀態(tài)顯示、參數(shù)面板、人機(jī)交互這里不是說(shuō)數(shù)碼管和TFT不好而是工程上有性?xún)r(jià)比的考量。數(shù)碼管適合那種看一眼就夠的數(shù)據(jù)TFT屏適合需要高頻刷新畫(huà)面的場(chǎng)景但代價(jià)是FPGA里要維護(hù)一整套路顯存和繪圖庫(kù)開(kāi)發(fā)周期以周為單位。串口屏把這塊全包了它內(nèi)部有一顆主控芯片專(zhuān)門(mén)負(fù)責(zé)解析指令、刷新LCD、掃描觸摸FPGA要做的只是按協(xié)議把字符串或者數(shù)值幀發(fā)過(guò)去。1.2 USART_HMI解決的核心問(wèn)題用一句話概括串口屏的本質(zhì)它不是一塊普通顯示屏而是一個(gè)帶GUI引擎的UART從設(shè)備。你在上位機(jī)軟件里畫(huà)好界面拖好文本控件、數(shù)字控件、按鈕分配好變量地址燒錄到屏幕里然后FPGA這邊只需要通過(guò)串口告訴它把變量0x0001的內(nèi)容改成多少多少屏幕上對(duì)應(yīng)的控件就會(huì)自動(dòng)刷新。這和傳統(tǒng)TFT方案完全是兩種思維方式。以前是FPGA逐像素去畫(huà)現(xiàn)在是FPGA只發(fā)命令畫(huà)面怎么渲染、字體怎么顯示、按鈕怎么響應(yīng)都是串口屏自己去處理。就像一個(gè)是自己調(diào)油漆刷墻另一個(gè)是打電話讓裝修隊(duì)干活活一樣能干完但工作量根本不是一個(gè)量級(jí)。我用串口屏之后最直觀的感受是FPGA側(cè)的邏輯可以專(zhuān)注在信號(hào)采集、算法處理、狀態(tài)控制這些真正核心的事情上界面交互只是偶爾發(fā)一串字節(jié)的事。開(kāi)發(fā)周期從幾周縮短到一兩天而且改界面布局不用重新綜合FPGA工程只改串口屏上位機(jī)的工程再燒錄就行這在項(xiàng)目調(diào)試階段非常救命。1.3 什么場(chǎng)景不適合串口屏串口屏不是銀彈它的短板也很明顯我這里把丑話說(shuō)在前面。首先是刷新速度以115200波特率為例理論上一秒只能傳約11520字節(jié)一條簡(jiǎn)單的寫(xiě)變量指令大概10字節(jié)左右也就是說(shuō)一秒最多發(fā)一千多次但實(shí)際考慮幀間隙和串口屏內(nèi)部處理時(shí)間穩(wěn)定跑到幾十赫茲就到頭了。所以它適合展示狀態(tài)數(shù)據(jù)和參數(shù)不適合做高速波形輸出之類(lèi)需要像素級(jí)實(shí)時(shí)更新的界面。其次是成本串口屏的單價(jià)明顯高于同等尺寸的裸屏加驅(qū)動(dòng)方案如果產(chǎn)品已經(jīng)確定要大規(guī)模量產(chǎn)而且顯示內(nèi)容極其固定那還是老老實(shí)實(shí)自己驅(qū)動(dòng)屏幕更劃算。最后還有一點(diǎn)容易忽略串口屏是帶固件的黑盒一旦遇到官方固件不支持的協(xié)議細(xì)節(jié)你沒(méi)法繞過(guò)它直接操作像素靈活度確實(shí)比不上自己寫(xiě)驅(qū)動(dòng)。理解了這個(gè)邊界你才知道什么時(shí)候該用它什么時(shí)候不該用。2. USART_HMI協(xié)議先看懂再動(dòng)手2.1 指令幀的基本結(jié)構(gòu)串口屏雖然界面華麗但通信協(xié)議其實(shí)相當(dāng)簡(jiǎn)潔核心就是一幀一指令。USART_HMI的指令幀通常由幀頭、數(shù)據(jù)長(zhǎng)度、指令碼、數(shù)據(jù)區(qū)和校驗(yàn)字段組成大致是這個(gè)樣子字段長(zhǎng)度說(shuō)明幀頭1字節(jié)固定值0xA5表示一幀的開(kāi)始數(shù)據(jù)長(zhǎng)度1字節(jié)從指令碼到校驗(yàn)之前的字節(jié)數(shù)用于接收端分幀指令碼1字節(jié)標(biāo)識(shí)這條指令要做什么比如寫(xiě)變量、讀變量、跳頁(yè)面數(shù)據(jù)區(qū)N字節(jié)變量地址、數(shù)據(jù)類(lèi)型、具體的數(shù)據(jù)內(nèi)容校驗(yàn)1字節(jié)通常是對(duì)前面數(shù)據(jù)區(qū)做異或和用于驗(yàn)證幀沒(méi)有傳錯(cuò)做FPGA的人看到這種結(jié)構(gòu)應(yīng)該很親切它跟我們的UART狀態(tài)機(jī)是天然匹配的。接收端先等幀頭0xA5收到之后再讀數(shù)據(jù)長(zhǎng)度然后按長(zhǎng)度把剩下的字節(jié)收滿最后做一遍校驗(yàn)幀就完整還原了。這也是為什么串口屏特別適合跟FPGA配合——協(xié)議本身就對(duì)硬件邏輯友好不需要PC上那種復(fù)雜的緩沖解析。不同品牌和固件版本在字段定義細(xì)節(jié)上有差異比如淘晶馳TJC系列、Nextion系列和迪文DGUS系列就是三套不同的體系甚至同一品牌不同批次固件對(duì)長(zhǎng)度字段的計(jì)數(shù)方式都可能不一樣。我在項(xiàng)目里固定用淘晶馳的USART_HMI協(xié)議本文也以它為例。動(dòng)手之前一定要把自己手上屏的協(xié)議手冊(cè)打印出來(lái)對(duì)照別拿網(wǎng)上例程的幀直接抄。2.2 最常用的幾條指令用串口屏控制界面絕大多數(shù)時(shí)間就三條指令寫(xiě)變量、讀變量、跳頁(yè)面。所謂變量就是你在上位機(jī)里給每個(gè)控件綁定的數(shù)據(jù)通道比如文本控件t0綁定了變量v0數(shù)字控件n0綁定了變量n0這些變量在屏的內(nèi)部存儲(chǔ)里都有固定地址FPGA只要往對(duì)應(yīng)地址寫(xiě)數(shù)據(jù)控件就會(huì)刷新。寫(xiě)變量指令的語(yǔ)義是往地址X寫(xiě)入數(shù)據(jù)Y。數(shù)據(jù)Y可以是字符串也可以是二進(jìn)制數(shù)值具體是哪一種由數(shù)據(jù)類(lèi)型字段區(qū)分。舉個(gè)例子如果要在文本控件里顯示OK兩個(gè)字指令幀的數(shù)據(jù)區(qū)就包含控件地址、字符串類(lèi)型標(biāo)識(shí)、以及字符O和K的ASCII碼。FPGA要做的事情并不復(fù)雜地址、類(lèi)型、ASCII碼都是確定的算好長(zhǎng)度和校驗(yàn)把整幀發(fā)出去即可。讀變量指令是反過(guò)來(lái)FPGA向屏請(qǐng)求讀取某地址的數(shù)據(jù)屏收到后會(huì)把當(dāng)前值回傳。這條指令在做雙向交互時(shí)很有用比如FPGA上電后要讀取屏上保存的參數(shù)。跳頁(yè)面指令就更直白了告訴屏切換到某個(gè)頁(yè)面ID適合做多菜單、多界面切換。在FPGA里設(shè)計(jì)發(fā)送模塊的時(shí)候我建議把這些指令統(tǒng)一封裝成一個(gè)指令序列器每條指令是一個(gè)固定模板需要變化的只是地址和數(shù)據(jù)區(qū)。模板加上動(dòng)態(tài)參數(shù)拼成一幀再送到UART模塊發(fā)出去。這樣代碼結(jié)構(gòu)清晰后面要加新指令只是加一個(gè)模板的事。2.3 控件變量地址與數(shù)據(jù)類(lèi)型的坑用串口屏上位機(jī)拖控件的時(shí)候很多人會(huì)忽略地址分配這件事。上位機(jī)軟件的變量控件列表里每個(gè)變量都有一個(gè)地址一般是按創(chuàng)建順序從0x0000開(kāi)始編號(hào)。FPGA側(cè)寫(xiě)指令時(shí)用的就是這些地址。如果你只記得控件名字不記得地址那寫(xiě)指令時(shí)就會(huì)對(duì)不上。我一般會(huì)在上位機(jī)里把變量名和地址做成一張對(duì)照表和FPGA代碼放同一個(gè)工程目錄下改一次同步一次不然調(diào)試時(shí)極容易暈。數(shù)據(jù)類(lèi)型字段是另一個(gè)容易出岔子的地方。字符串和數(shù)值的編碼方式不一樣字符串直接用ASCII碼字節(jié)流數(shù)值可以用二進(jìn)制直接傳輸也可以轉(zhuǎn)成ASCII形式的數(shù)字字符。串口屏接收不同數(shù)據(jù)類(lèi)型時(shí)解析邏輯完全不同一旦類(lèi)型標(biāo)識(shí)傳錯(cuò)屏上顯示的就是亂碼或者0。這個(gè)字段在上位機(jī)協(xié)議文檔里有明確的取值表寫(xiě)代碼前要確認(rèn)好。還有一個(gè)細(xì)節(jié)容易被新手忽略字符串長(zhǎng)度和控件顯示區(qū)域的關(guān)系。文本控件如果設(shè)置了最多顯示4個(gè)字符你一幀發(fā)8個(gè)字符進(jìn)去要么被截?cái)嘁窗雅赃厓?nèi)容擠亂。所以FPGA側(cè)發(fā)送字符串之前要么自己做好截?cái)嘁丛谏衔粰C(jī)里把控件長(zhǎng)度放寬。我自己寫(xiě)模塊時(shí)會(huì)在指令序列器里加一個(gè)最大長(zhǎng)度寄存器配合控件屬性一起設(shè)置避免指令本身沒(méi)問(wèn)題但顯示效果稀碎。3. FPGA端串口指令發(fā)送模塊怎么設(shè)計(jì)3.1 模塊劃分思路FPGA端驅(qū)動(dòng)串口屏不需要一個(gè)萬(wàn)能協(xié)議棧那反而把事情搞復(fù)雜了。我習(xí)慣把邏輯拆成三塊指令序列器、字節(jié)發(fā)送器、參數(shù)生成邏輯。字節(jié)發(fā)送器說(shuō)白了就是系列前幾章寫(xiě)的UART TX模塊負(fù)責(zé)把一個(gè)字節(jié)變成串行波形發(fā)出去帶busy或者done信號(hào)。參數(shù)生成邏輯負(fù)責(zé)算地址、算長(zhǎng)度、做校驗(yàn)比如數(shù)值轉(zhuǎn)ASCII、字符串拼接。指令序列器是大腦負(fù)責(zé)按順序把一幀里的字節(jié)逐個(gè)送給字節(jié)發(fā)送器中間控制節(jié)奏保證幀內(nèi)字節(jié)連續(xù)、幀間留出間隔。這個(gè)劃分的好處是每一塊都能單獨(dú)測(cè)試。UART TX單獨(dú)連電腦驗(yàn)證過(guò)參數(shù)生成邏輯可以用Modelsim仿真對(duì)比輸出字節(jié)流指令序列器只要狀態(tài)機(jī)不跑飛整幀順序就不會(huì)亂。等到最后聯(lián)調(diào)時(shí)問(wèn)題范圍能快速鎖定到某一小塊不會(huì)滿工程找bug。3.2 狀態(tài)機(jī)加FIFO的設(shè)計(jì)方式指令序列器我一律采用先組裝到發(fā)送FIFO再自動(dòng)發(fā)送的方式而不是一字節(jié)一狀態(tài)地硬憋。為什么因?yàn)橹噶顜囱b過(guò)程中可能要插入動(dòng)態(tài)參數(shù)如果整個(gè)幀的字節(jié)都是一個(gè)時(shí)鐘一個(gè)時(shí)鐘地直接塞給UART中間一旦被更高優(yōu)先級(jí)的邏輯打斷幀就殘了。用FIFO緩沖一層組裝過(guò)程可以分步完成組裝完畢后UART模塊從FIFO里連續(xù)取字節(jié)發(fā)送幀的原子性就有保證。核心狀態(tài)機(jī)示意代碼大致是這樣// 指令序列器核心狀態(tài)機(jī)節(jié)選 localparam IDLE 3d0; localparam ASSEMBLE 3d1; localparam WAIT_EMPTY 3d2; always (posedge clk or negedge rst_n) begin if (!rst_n) begin state IDLE; end else begin case (state) IDLE: if (tx_start) begin byte_cnt 0; state ASSEMBLE; end ASSEMBLE: begin // 每個(gè)時(shí)鐘寫(xiě)一個(gè)字節(jié)到FIFO // 先寫(xiě)幀頭0xA5再寫(xiě)長(zhǎng)度、指令碼、數(shù)據(jù)區(qū)、校驗(yàn) fifo_wr_en 1b1; fifo_wr_data frame_byte_gen(byte_cnt); if (byte_cnt frame_total_len - 1) begin fifo_wr_en 1b0; state WAIT_EMPTY; end else begin byte_cnt byte_cnt 1b1; end end WAIT_EMPTY: if (fifo_empty) begin // 整幀發(fā)送完成 tx_done 1b1; state IDLE; end endcase end end實(shí)際工程里frame_byte_gen不會(huì)是一個(gè)簡(jiǎn)單函數(shù)而是根據(jù)byte_cnt查表0號(hào)字節(jié)固定是0xA51號(hào)字節(jié)是長(zhǎng)度2號(hào)字節(jié)是指令碼后面的字節(jié)可能是變量地址、數(shù)據(jù)類(lèi)型、數(shù)據(jù)內(nèi)容最后是校驗(yàn)字節(jié)。動(dòng)態(tài)參數(shù)部分在上層邏輯觸發(fā)tx_start之前就預(yù)先算好放在參數(shù)寄存器里組裝階段只是把它們按順序搬進(jìn)FIFO。UART模塊那邊從FIFO讀字節(jié)、逐字節(jié)發(fā)送發(fā)送完成信號(hào)把FIFO讀指針推進(jìn)。這個(gè)方案的妙處在于FIFO天然隔離了兩個(gè)時(shí)鐘域如果有的話和兩級(jí)邏輯組裝過(guò)程不占用UART發(fā)送時(shí)間幀與幀之間還能方便地插入任意延時(shí)。3.3 長(zhǎng)度和校驗(yàn)的計(jì)算時(shí)機(jī)長(zhǎng)度和校驗(yàn)是FPGA工程師最容易寫(xiě)錯(cuò)的地方。長(zhǎng)度字段指的是從這個(gè)字段自身后面開(kāi)始、直到數(shù)據(jù)區(qū)結(jié)束的字節(jié)數(shù)。校驗(yàn)字段通常是對(duì)長(zhǎng)度、指令碼和數(shù)據(jù)區(qū)做異或幀頭0xA5不參與校驗(yàn)。這兩者的計(jì)算必須放在組裝階段的開(kāi)頭算出結(jié)果存進(jìn)寄存器隨幀一起寫(xiě)入FIFO而不是在UART發(fā)送過(guò)程中臨時(shí)去算。為什么強(qiáng)調(diào)時(shí)機(jī)因?yàn)楹芏嘈率謺?huì)在發(fā)送每一字節(jié)的組合邏輯里去動(dòng)態(tài)計(jì)算校驗(yàn)結(jié)果綜合出來(lái)的電路出現(xiàn)奇怪的時(shí)序問(wèn)題幀內(nèi)容對(duì)了但校驗(yàn)總不對(duì)。我現(xiàn)在的做法是先算后發(fā)。幀長(zhǎng)如果固定長(zhǎng)度字段就直接是一個(gè)常量校驗(yàn)則在PREPARE階段用組合邏輯異或樹(shù)算好或者更省事——因?yàn)橐粠止?jié)數(shù)不多完全可以在寫(xiě)入FIFO的時(shí)候同步計(jì)算校驗(yàn)最后一個(gè)字節(jié)寫(xiě)進(jìn)去時(shí)校驗(yàn)值也已經(jīng)算出來(lái)直接跟著寫(xiě)進(jìn)去。這里還有個(gè)工程上的建議第一版盡量把所有指令設(shè)計(jì)成定長(zhǎng)幀。定長(zhǎng)幀的長(zhǎng)度字段是常量地址偏移是常量校驗(yàn)樹(shù)也可以預(yù)先確定結(jié)構(gòu)調(diào)試難度會(huì)低很多。等定長(zhǎng)幀跑通了再改成變長(zhǎng)幀處理動(dòng)態(tài)字符串就會(huì)從容很多。4. FPGA變量如何變成屏幕上的數(shù)字和字符串4.1 數(shù)值轉(zhuǎn)ASCII的處理FPGA內(nèi)部處理的數(shù)據(jù)是二進(jìn)制數(shù)但串口屏要顯示的是人類(lèi)能讀的十進(jìn)制數(shù)字。所以中間必須有一個(gè)數(shù)值轉(zhuǎn)ASCII的過(guò)程。最基礎(chǔ)的方法是把二進(jìn)制數(shù)轉(zhuǎn)成BCD碼然后把每一位BCD碼加上0x30就得到對(duì)應(yīng)數(shù)字的ASCII碼。比如二進(jìn)制數(shù)27轉(zhuǎn)成BCD碼是0010 0111即十位2、個(gè)位7加上0x30后得到0x32和0x37對(duì)應(yīng)字符2和7。二進(jìn)制轉(zhuǎn)BCD常用的是加3移位算法也叫移位加3法一段循環(huán)邏輯就能實(shí)現(xiàn)不需要除法器非常適合FPGA。對(duì)于0到9999范圍的數(shù)值移位16次就可以完成轉(zhuǎn)換占用資源很少。如果你要顯示的是有符號(hào)數(shù)還得先處理符號(hào)位在前面加一個(gè)負(fù)號(hào)0x2D。我看到有些人在FPGA里直接用取模和除法運(yùn)算符去轉(zhuǎn)ASCII仿真沒(méi)問(wèn)題但綜合出的除法器吃資源比較多而且路徑延遲大。在小規(guī)模顯示應(yīng)用里加3移位法既省資源又容易控制時(shí)序是我比較推薦的方案。4.2 字符串指令幀的拼接實(shí)例舉個(gè)實(shí)際例子假設(shè)要把溫度值27度顯示在屏上的文本控件控件地址是0x0001。FPGA側(cè)要發(fā)出的指令幀大致是這樣的先幀頭0xA5然后是長(zhǎng)度、寫(xiě)變量指令碼、地址高字節(jié)、地址低字節(jié)、數(shù)據(jù)類(lèi)型標(biāo)識(shí)接著是2和7兩個(gè)ASCII字節(jié)最后是校驗(yàn)。整個(gè)過(guò)程在指令序列器里就是按byte_cnt依次輸出這些字節(jié)。數(shù)值轉(zhuǎn)ASCII的結(jié)果怎么和固定幀頭拼接呢我一般用一個(gè)可變長(zhǎng)度移位寄存器組方式把固定部分、動(dòng)態(tài)部分、校驗(yàn)部分分別存到三個(gè)小寄存器區(qū)組裝時(shí)按順序選通。如果幀長(zhǎng)固定動(dòng)態(tài)部分也只是長(zhǎng)度固定那整個(gè)幀甚至可以定義成一個(gè)寄存器數(shù)組ASSEMBLE狀態(tài)里按地址查表輸出即可。調(diào)試的時(shí)候有一個(gè)很實(shí)用的技巧在UART TX的輸出引腳上接邏輯分析儀或者直接在FPGA里把那路信號(hào)引到一個(gè)空閑引腳用示波器看波形。整幀字節(jié)的時(shí)序波形一目了然哪里的字節(jié)不對(duì)對(duì)照協(xié)議文檔一比對(duì)就能定位到是拼接邏輯還是數(shù)值轉(zhuǎn)換的問(wèn)題。4.3 顯示刷新節(jié)奏與帶寬估算串口屏能接受的顯示刷新速度沒(méi)有你想象的那么高。我實(shí)測(cè)下來(lái)狀態(tài)類(lèi)數(shù)據(jù)10到20Hz刷新就已經(jīng)非常平滑了沒(méi)必要每毫秒無(wú)腦刷。原因有兩個(gè)一是串口帶寬有限115200波特率一秒鐘才能傳一萬(wàn)多字節(jié)一條指令就是十幾字節(jié)刷新頻率越高留給其他指令的帶寬就越少二是串口屏內(nèi)部解析幀、刷新LCD也需要時(shí)間指令過(guò)來(lái)太密會(huì)出現(xiàn)排隊(duì)甚至丟幀。所以我一般在FPGA里給串口屏發(fā)送加一個(gè)節(jié)流器比如用一個(gè)計(jì)數(shù)器產(chǎn)生10ms或50ms的周期脈沖每個(gè)脈沖最多觸發(fā)一幀顯示指令。這樣既保證了人眼看起來(lái)連續(xù)又不會(huì)把串口屏和串口帶寬壓到極限。我在做多通道數(shù)據(jù)采集顯示時(shí)用5ms周期更新一個(gè)頁(yè)面同時(shí)還要處理觸摸事件上報(bào)沒(méi)有出現(xiàn)過(guò)串口擁堵的問(wèn)題。記住一個(gè)原則顯示類(lèi)的數(shù)據(jù)寧可少刷不要暴刷。5. 聯(lián)調(diào)實(shí)錄這幾個(gè)坑我替你們踩過(guò)了5.1 波特率誤差帶來(lái)的隱性故障FPGA和串口屏之間的波特率如果對(duì)不上表現(xiàn)不是完全不通而是時(shí)好時(shí)壞尤其當(dāng)誤差積累到采樣的臨界點(diǎn)時(shí)會(huì)隨機(jī)出亂碼。這個(gè)坑隱蔽性很高因?yàn)樗环€(wěn)定復(fù)現(xiàn)很容易讓人懷疑是屏壞了或者代碼邏輯錯(cuò)了。正確的做法是先用頻率計(jì)確認(rèn)FPGA系統(tǒng)的基準(zhǔn)時(shí)鐘頻率再算波特率分頻值。比如50MHz系統(tǒng)時(shí)鐘跑115200波特率分頻值是50_000_000/115200約等于434取整后誤差不到0.01%基本可以忽略。但如果你的板子用的是24MHz或者12MHz晶振分頻后的誤差就可能超過(guò)1%這時(shí)候就要考慮換一個(gè)更合適的波特率或者用小數(shù)分頻器來(lái)處理。我的習(xí)慣是FPGA側(cè)和串口屏都固定用115200這幾乎是兩者之間最穩(wěn)的一個(gè)平衡點(diǎn)。9600雖然更抗干擾但顯示刷新有明顯的打字機(jī)感不太適合做界面。另外要注意串口屏模塊的默認(rèn)波特率可能和它實(shí)際跑的波特率不一致收到屏之后第一次通電就要用串口助手確認(rèn)屏的配置。5.2 幀被切斷和指令被吞的問(wèn)題聯(lián)調(diào)時(shí)最常遇到的現(xiàn)象是屏上偶爾顯示一次正確內(nèi)容然后連續(xù)發(fā)好幾條指令都沒(méi)反應(yīng)或者顯示出來(lái)的是殘缺數(shù)據(jù)。排查下來(lái)的典型原因是FPGA側(cè)的指令序列器在多幀連續(xù)發(fā)送時(shí)幀間隙控制不好或者處理器邏輯在發(fā)送過(guò)程中搶占了串口發(fā)送的優(yōu)先級(jí)導(dǎo)致幀頭后面的數(shù)據(jù)沒(méi)跟上。解決思路就是我前面說(shuō)的FIFO緩沖方案讓整幀組裝成一個(gè)不可分割的整體。發(fā)送期間絕不允許其他邏輯往UART模塊里插入字節(jié)必須等當(dāng)前幀的最后一個(gè)字節(jié)發(fā)完、FIFO清空之后才允許下一幀開(kāi)始組裝。這個(gè)原子性設(shè)計(jì)不是可選項(xiàng)而是必須項(xiàng)。另外幀與幀之間要留出足夠的間隔讓串口屏來(lái)得及解析上一幀。我實(shí)測(cè)淘晶馳系列的屏處理一幀普通指令大概需要幾毫秒到十幾毫秒不等取決于指令類(lèi)型。所以我在指令序列器里配置了一個(gè)幀間隔計(jì)數(shù)器一般取5ms到10ms如果連續(xù)快速切換頁(yè)面時(shí)發(fā)現(xiàn)偶發(fā)不響應(yīng)就把這個(gè)間隔再拉大一些。5.3 上電時(shí)序和初始化等待FPGA和串口屏有一個(gè)很容易被忽略的時(shí)序關(guān)系上電瞬間誰(shuí)先就緒。串口屏內(nèi)部有操作系統(tǒng)和GUI引擎上電后需要幾百毫秒甚至更長(zhǎng)時(shí)間初始化如果FPGA在這個(gè)窗口期就往外發(fā)指令屏根本收不到。我見(jiàn)過(guò)最頭疼的問(wèn)題就是FPGA啟動(dòng)后立刻發(fā)初始化指令配置界面結(jié)果指令被吞界面停留在默認(rèn)狀態(tài)但單獨(dú)用串口助手手動(dòng)發(fā)指令又一切正常。解決方案很簡(jiǎn)單也很粗暴FPGA的串口屏初始化流程必須在一個(gè)延時(shí)后才開(kāi)始。我在頂層狀態(tài)機(jī)里加了一個(gè)上電等待計(jì)數(shù)器一般取500ms到1秒。先讓串口屏初始化完再發(fā)第一條寫(xiě)變量或跳頁(yè)面指令。如果有條件更穩(wěn)妥的做法是先用串口助手上電觀察屏的返回信息確認(rèn)屏完全就緒后再讓FPGA發(fā)指令。如果做出來(lái)的產(chǎn)品還有休眠喚醒這類(lèi)需求那上電時(shí)序就更要謹(jǐn)慎了。串口屏進(jìn)入休眠后不代表串口還能照常收數(shù)據(jù)喚醒時(shí)序也得按手冊(cè)來(lái)不能默認(rèn)它一直在線。5.4 先用串口助手驗(yàn)證再上FPGA這個(gè)經(jīng)驗(yàn)我每次帶人都要強(qiáng)調(diào)一遍不要一上來(lái)就拿FPGA和串口屏對(duì)調(diào)先用USB轉(zhuǎn)串口模塊接電腦用串口調(diào)試助手手工發(fā)指令確認(rèn)屏的界面和協(xié)議沒(méi)問(wèn)題。這個(gè)操作能幫你把問(wèn)題分成兩個(gè)階段非常省時(shí)間。具體操作流程是第一步用串口助手連接屏幕把上位機(jī)生成的指令示例逐條發(fā)過(guò)去觀察屏幕反應(yīng)確認(rèn)地址、長(zhǎng)度、校驗(yàn)都對(duì)第二步把電腦斷開(kāi)把FPGA的UART TX引腳接到串口屏的RX引腳先用FPGA發(fā)一條最簡(jiǎn)單的指令用邏輯分析儀抓UART TX的波形和串口助手里發(fā)過(guò)的指令字節(jié)流做對(duì)比第三步確認(rèn)波形一致后再讓FPGA跑完整邏輯。這三步看起來(lái)多花了一點(diǎn)時(shí)間但實(shí)際上能省掉大量無(wú)頭緒的排查。我遇到過(guò)很多人把問(wèn)題定位在FPGA側(cè)結(jié)果是串口屏上位機(jī)工程里控件地址沒(méi)分配對(duì)也有人懷疑屏壞了結(jié)果根本原因是FPGA的引腳電平不匹配。先驗(yàn)證屏自身沒(méi)問(wèn)題是從源頭排除故障面的好習(xí)慣。6. 從這一章還能往哪走雙向交互與進(jìn)階玩法6.1 觸摸事件上報(bào)與FPGA接收解析串口屏不光是顯示設(shè)備它還是一個(gè)完整的人機(jī)交互終端。當(dāng)你用手指按下屏上的按鈕時(shí)串口屏?xí)鲃?dòng)向主機(jī)發(fā)送一條事件上報(bào)幀里面通常包含頁(yè)面ID、控件ID和事件類(lèi)型。這就意味著FPGA不光要發(fā)還要收。接收側(cè)的核心也是那個(gè)熟悉的套路狀態(tài)機(jī)檢測(cè)幀頭0xA5然后讀長(zhǎng)度字段按長(zhǎng)度收完整幀做校驗(yàn)。解析到是一個(gè)觸摸事件后根據(jù)控件ID跳轉(zhuǎn)到對(duì)應(yīng)的處理邏輯。比如一個(gè)啟動(dòng)/停止按鈕FPGA接收到按下事件后置位或清除一個(gè)控制寄存器進(jìn)而控制外設(shè)狀態(tài)。我建議接收和發(fā)送共用同一個(gè)FIFO緩沖思路只不過(guò)方向反過(guò)來(lái)。串口屏發(fā)來(lái)的字節(jié)流被UART RX模塊接收后先寫(xiě)進(jìn)接收FIFOFPGA主邏輯空閑時(shí)再去解析。這樣即使一幀事件在接收過(guò)程中被其他邏輯打斷也不會(huì)丟字節(jié)。等這一塊跑通你的FPGA系統(tǒng)就真正有了面板操作的能力而不只是單方向顯示。6.2 頁(yè)面切換、曲線顯示與后續(xù)擴(kuò)展USART_HMI協(xié)議里還有很多值得玩的功能。頁(yè)面切換指令可以讓你的FPGA設(shè)備實(shí)現(xiàn)菜單層級(jí)跳轉(zhuǎn)按下設(shè)置進(jìn)入設(shè)置頁(yè)按下返回回到主頁(yè)面。曲線控件可以把采集到的連續(xù)數(shù)據(jù)流動(dòng)態(tài)畫(huà)出來(lái)雖然刷新率不如直接驅(qū)動(dòng)屏幕高但做溫濕度歷史曲線這類(lèi)低頻波形完全夠用。圖片推送功能甚至可以把FPGA采集的圖像數(shù)據(jù)一幀一幀推到串口屏上顯示配合SD卡存儲(chǔ)可以做一個(gè)很輕量的數(shù)據(jù)記錄儀。如果項(xiàng)目到了一定規(guī)模我建議把串口屏通信封裝成一個(gè)獨(dú)立模塊對(duì)外只留寫(xiě)字符串變量寫(xiě)數(shù)值變量注冊(cè)觸摸回調(diào)這幾個(gè)接口。上層邏輯永遠(yuǎn)不直接拼幀所有協(xié)議細(xì)節(jié)都隔離在模塊內(nèi)部。這樣以后換屏幕品牌、升級(jí)協(xié)議版本只需要替換這一個(gè)模塊頂層控制邏輯一行都不用改。我現(xiàn)在項(xiàng)目里的分工基本是FPGA專(zhuān)心做信號(hào)采集和算法處理串口屏專(zhuān)心做人機(jī)界面兩者之間只有一組UART連接。這種把“界面”從“邏輯”里剝離開(kāi)的思路其實(shí)是FPGA工程成熟之后很自然的演進(jìn)方向。串口收發(fā)字符串本身只是基本功接上一個(gè)像USART_HMI串口屏這樣真正能出活的終端它才變成生產(chǎn)力。這大概是我寫(xiě)這個(gè)系列到現(xiàn)在最想留給你的東西。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
中欧人妻丝袜中文字幕| 丁香五月色| 久久大香蕉97| 亚州再线| 九九色热| 最新中文字幕在线亚洲| 精品无码欧美三级| 九九九九久久久| 黄色香蕉视频网站一区| 97干97色| 欧美在线|亚洲| 超碰地址97| 四虎影视在线| 操一区| 91啦人妻| 国产精品免费久久久久久久久久| 国产成人精品日本视频| 伊人网青青| suv精产一二三区| 激情视频一二三| 亚洲天堂7777| 操逼无码一区| 亚洲欧美高清无码| 蜜臀久久久99久久久久 | 99热免费| 亚洲黑丝在线| 大香蕉97久久| 99热精品在线| 丁香五月天啪啪| 欧美性生活综合| 青青免费在线视频一区| 欧美狠狠干| 97超碰总站| 久久国产三区| 色色热| 色婷婷九月| 国产精品麻豆视频网站| 天天爽夜夜爽夜夜爽精| 久久国产逼| 日韩性爱啪啪视频| 秋霞Av理论一级在线| 男人的天堂Va| 久久久久久九九九九| 青青草好吊色| 91老熟女视频| 亚瑟国产精品久久无码| 影音先锋每日最新资源在线观看| 操操操五月天婷婷丁香影院| 天天懆天天日| 收看日本人日bb| 国产精品懂色tv影视免费观看 | 激情第四色| 开心激情婷婷| 久久日韩毛| 六月婷婷激情| 中文字幕丝袜人妻| 熟妇无码视频三区| 超碰精品97| 精品一区二区三区丰满熟女-亚洲欧美一区| 校园春色 亚洲| 97国产|免费| 久久69| 女沟厕偷窥piss小便| 超碰97人妻免费在线| 97在线免费看视频| 国产做?爰片久久毛片?片美国| 色婷婷五月综合激情中文字幕| 国产精品自拍欧美在线| 极品白嫩福利在线| 囯产精品强| 亚洲熟女综合一区二区| 操逼网站网站| 亚洲啪啪视频一区二区| 97色色婷婷| 香一区二区三区| 欧美韩国你懂得在线| 五毛骚逼极品美女怕怕| 98超碰欧美| 亚洲阿v天堂在线| 26UUU欧美激情一区二区| 亚洲乱伦图片视频| 人人色人人射人人妻| 蜜桃精久三区| 日本五区不卡| AV麻豆免费一区| 亚洲啪啪性视频| 国产不卡片| 久日综合网| 日本不卡一二区| 日本操逼视频不卡直接放| 成人乱码一区二区三少妇| 日日夜夜干| 成人综合网 欧美| 欧美日韩97在线| 国产综合久久久麻桃个| 黄色网址在线免费观看| 超碰79人人乐| 美女91网| 欧美色999| 国产精品久久久三级无码| 亚洲激情在线| 欧美人妻少妇| 欧美性爱另类综合| 亚洲诱惑| 777琪琪午夜免费A片| 久久久中文| 97这里只精品| 日本十八禁免费看污网站| 九九色精品| 伊人色综合超碰| 夜夜高潮夜夜爽夜夜爱爱一区| 亚洲?V无码专区在线电影| 色五月婷婷在线| 国产久久日| 中文字幕国产在线天堂| 久插不卡| 国产精品不卡一区二区三区av| 骚逼高潮久久精品| 欧美美逼| 97亚洲性爱| 久欲AV| 亚洲国产精品有声| 亚熟hd视频在线| 综合久久久久久久久91| 78综合网| 国产精品美女久久久久久网站| 俺去俺来也在线www| 综合久欧洲| 黄片免费日韩| 亚洲精品国产精品乱码不卡| 精品人妻视频入口| 330Dv国产女人终合视频极品人与兽| 亚洲男人天堂2017| 俺去也婷婷| aV中文麻| 日日夜夜青青草母狗| 中国一级αV| 欧洲综合视频| 免费av高清无码| 一区二区三区日韩欧美| 涩涩这里只有精品视频| 亚洲系列欧美| 五月丁香| 久久AV无码AV| 亚洲一二三| jizzjizz欧美| 一本大道青青| 艳美熟妇先锋一二三区| www.色吧5.com| 精品视频97| 中文字幕精品日韩中文字幕| 91视频综合在线| 中文一区在线视频| 色约约一区=区三区| 自偷自拍的亚洲视频| 视频二区美腿制服人妻欧美| 久久国产精品91| 五月天精品| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 另类天堂| 欧美一级美片在线观看免费| 91欧美丝袜| 探花激情视频| 中文字幕丰满子伦无码专区在线视频最新 | 国产女人与拘做受视频免费| 俞拍久久国应视频| 日韩操呦呦影院在线观看| 日韩无码黄色片| 色欲人妻一区二区在线| 99日精品欧美国产| 欧美高清无码免费视频高清版| 岛国片在线播放| 国产吹潮女在线观看| 91精品综合久久久久久五月丁香| AV和黑人在线播放| 91操熟女视频| 欧美日本天堂| 蜜臀久久99精品久久综合| 欧美日韩*字幕一区| 无码人妻丰满熟妇区毛片| 国模限制级电影| 丰满人妻一区二区三区性色| 久草这里只有精品 | 99在线观看视频在线高清| 97在线免费看视频| 9999久久久久| 熟女一区二区三区| 久 久无码人妻AV| A片A5445444| 一区二区三区日韩欧美| 国产精品麻豆成人AV艾秋| 九月激情婷婷| 久久精品国产亚洲av水密被窝| 歐美一級亂黃99在綫精品| 国语国产操逼伊人AV网| 操国产逼| 男人的天堂久久久| 日本免费二区三区| 欧美一二级| 欧美成人9797| 亚洲第一页色| 亚洲无码99| 熟女五十路一区二区三| 亚洲精品自拍| 国产成人99久久亚洲综合| 欧美日韩久久精品爱爱| 久草综合网| 香蕉免费一区二区三区不读| 黄色成品网站| 国内黄色精品| av东京热男人的天堂| 爱爱动态120秒| 超碰九色| 天天添天天干电影| 免费黄色A片| 中文字幕,人妻,日韩| 四虎在线免费视频| 欧亚成人在线视频| 久久久精品中文字幕麻豆| 99re只有精品| 天天操夜夜操| 国产毛片精品一区二区色欲黄A片| 91c色| 亚洲色图国产另类| 青青草大香蕉在线视频| 9超碰免费| 欧美视频第二页| 极品粉嫩一区二区| 欧美永久激情一区二区| 人人噜夜夜操| 在线观看午夜婷婷久久久久清性观看| 亚洲欧美在线综合| 亚洲熟女人妻中文字幕一区二区 | 欧美高潮| 极品少妇久久久久| 人妻少妇精品视频一区二区三区| 大香久久| 亚洲欧美第一页| 99re这里只有精品9| 久久久久久999| 天天综合网日韩| 无码不卡八戒| 在线中文字幕极品av| 日韩成人大片一区二区| 青青草中文-久久青草精品一区二区三| 亚洲蜜乳av| 国产AV久久久蜜爱影集| 色婷婷在线视频精品导航| 99在线免费视频| 欧美最婬乱婬爆婬性视频 | 丁香五月激情啪啪| 麻豆国产原创AV色哟哟| 亚洲天堂日本| 天天cao在线| 日韩成人高清一区二区| 秋霞一级视频在线观看免费| 九九在线视频| 久久久九九九九| 精品熟妇视频一区二区| 欧美真人抽搐一进一出gif| 免费成人在线观看91| 色情乱伦AV| 中文字幕在线观看丝袜| 在线国产探花| 日韩中文字幕宗合在线| 国产精品剧情| 国产懂色精品国产av| 亚洲,欧美,春色,另类| 久久超碰、| 日韩99999| 成年人黄色视频免费| blacked精品一区国产| 亚洲综合另类| 97在线观看视频| 蜜臀AV秘一区翔田千里| 中文字幕在线观看视频www| 欧美无圣光在线| 国产精品另类一区大香蕉| 亚洲AV成人无码一二三久久| 91在线色综合| 欧美亚洲清纯| 91啪啪| 国产激情片在线观看| 人妻密肉在线观看| 无码精品久久久久久亚洲| 日韩精品在线观看网站| 男人夜色天堂ss| 免看60秒涩涩视频| 中文字幕一二区二三区人妻专区| 你草精品在线视频| 亚洲影视高清第一页| 九九久久玖玖| 精品少妇99| 久久久久久久国产视频| 人妻 制服 日韩 中文 在线| 三上悠亚在线毛片91| 91综合在线| 试看60秒| 日本国产欧美高清在线| 日日AAvv| 看一级特黄a大一片| 成人一区二区三区四区| 亚欧成人综合影院| 800zy一区二区| 亚洲欧美第一页| 色色色综合网| 男人综合网| 日韩成人电影AV| 老鸭窝在线视频播放| 人人看人人摸人人色| 一区二区不卡| 很很热性爱视频| 亚欧美无遮挡| 日韩有码一区三区| 白丝AV| 国产女上位好爽在线| 亚洲天堂男| 色999人与兽| 91人妻人人澡人人爽人人精品| 日韩乱中文| 欧美91色| 色五月综合网| 蜜臀久久99精品久久久久久| 亚洲最大黄网| 天堂俺去俺来也www久久婷婷| 97视频620| 奇米狠999| 国产97在线播放| 99九九精品| 无码人妻一区二区三区四区老鸭窝| 午夜男人av| 亚洲女人毛茸茸91| 午夜精品99久久久久传媒| 久久久久久网址| 国产少妇高潮| 人人人人人人少妇| 女人爽到高潮久久久| 欧美人人天天网| 亚洲欧洲综合av在线| 欧美激情久| 手机在线看片免费人成视频| 午夜九九| 婷婷三区| 九九精品热| 精品视频在线观看精品| 欧美天堂第二区| 人人考人人摸人人干| 国产精品久久久久久久久久久久久久吹| 无码少妇精品一区二区60岁老人| 97干97色| 99re这里只有精品3| 伊人精品久久网站| 久久久精精精| 日日噜噜夜夜久久亚洲一区二区 | 84YTCOM性无码| 亚洲熟女乱色一区二区三区久久久 | 99精品久久| 97资源视频| 精品视频一区二区| 久久久久久久久久久久久久9999| 最新日产中文在线麻豆| 久久久亚洲| 嗯~啊~快点 死我视频免费看网站| 亚洲 欧美 91| 熟女乱伦A| 亚洲另类春色| 国产嫩草精品A88AV| 91在线丝袜视频| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 久湿久久 | 色www精品视频在线观看| 激情视屏国产乱伦强奸| 色色九区| 亚拍在线| 躁躁日曰躁2020| 成人精品在线| 最新av网站在线观看| 色色97爱| 密臀在线一区尤物| 欧美日韩一干二干| 97视频网站在线观看| 国产亚洲色婷婷久久99精品91葵花宝典| 国产日产欧产美韩系列麻豆免费| 亚洲丝袜色图| 丝袜性亚洲| 99热| 丁香九月婷婷| 国产一区二区三区精品观看啪| 国产日韩区| 91天美| 丝袜狂射91| 日韩ab网 | 色九九九九| 第四色色综合91| 强奸乱伦av电影| 中文字幕中文字幕一区二区| 欧美精品成人在线播放| 91丨豆花丨熟女| 强奸乱伦AV网址| 97超级久久| 久热这里| 亚洲无码一区成人免费午夜| 伊人久日| 91九九| 国产成人精品一区| 亚洲加勒比色图| 久久r精品| 久久久性少妇| 男人久久天堂| 亚洲av成人精品一区| 清纯唯美激情| 欧美在线91| 秋霞色色影院| 免费久久一级毛片大黄| 极品尤物自安慰| 91丨熟女丨丰满熟女| 丰满人妻一区二区三区四区| 亚洲一卡2卡3卡4卡乱码网站| 玖玖资源综合在线视频| 90后性网国产欧美| 青青草原人妻| 二级久久网| 99精品在线| 91天堂| 夜夜欢天天干| 一级做a爰片性色毛片久久| 级做a爱无码性色永久免费| 亚洲欧美洲综合| 一级婬片120分钟试看| 国产黄片精品在线| 天天综合网站| 91狠狠综合久久久久久| 久久久久亚洲一区女同性恋中文字幕| 超碰到97情色| 中文字幕人妻资源在线| 2021久久国产综合精品青草| 发朗少妇买婬全视频中文| 乱伦图一区| 亚洲天堂区| 9九九九九视频在线观看| 老师充足的奶水小说| 太久视频| 911av网站免费观看| 久久9视频| 日本精品国产视频| 78m啪啪啪| 狠日欧美| 看一级黄色视频| 一区麻豆 高清中文字幕| 欧美性五月| 黄色成人网久久久久久| 日本成a人v网站在线观看| www.黄色在线| 亚洲aw毛茸茸在线| 玖玖久久久| 老熟女乱子伦中文字幕一区二区| 婷婷丁香五月综合| 欧洲一区二区三区四区在线观看| 日日骚一区二区三区| 国产欧美精选激情视频| 97啪啪| 国产精品视频在线播放| 日本人妻最新在线中| 不卡av在线中文字幕| 白丝1区2区3区| 91欧美另类| 国产精品人妻免费精品| 能看的AV| 日韩BBN| 精品中文字幕一区二区l - 百度| A啊啊在线观看| 97在线免费看视频| 五月婷婷丁香六月| 日日97| 福利视频网站| 射 色综合| 久久久一区二区三区麻豆| 日本精品无码三级网站| 中文字幕女同在线| 人人操人人摸人人看人人干| 97人人爱人人做人人乐| 精品性爱| 欧美精品91| 你懂的在线观看区国产| 亚洲1区| 亚洲综合色图欧美| 色五月激情综合网| caopeng97人妻| 国产粉嫩蜜臀av一区二区三区| 国产精品亚洲美女久久久久| av橘色网站| 精品人妻美妇91job| 色大香蕉97N| 欧美一级黄色免费专区| 国产乱弄免费在线视频。| 九九九九九精品| 狠狠躁AV| 亚洲高清无毛一区二区| 97超碰人操| 激情久久久| 欧亚日本情色| 色九月| 欧美性天天| 日本新免费二区三区| 夜色AV无码手机在线影院| 少妇高潮九九九九九九九| 碰碰在线视频| 四虎国产精品永久入口| 超碰97久久国| 国产男女无套视频免费观看| 大香交伊人网| 欧美日韩电影成人在线| 亚洲交换| 91最新综合| 约操熟妇| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 夜夜影视四色| 久久东京热久久| 欧美香蕉视xxx| 久久久亚洲欧美综合| 美女t无毒不卡不卡| 日韩激情啪啪| 性色AV蜜色av色欲av| 高凊专区人人操| 岛国视频一二三区| 97伊人网| 狠狠干妹子| 天美传媒国产原创中文字幕亚洲欧美另类 | 欧亚乱色熟女一区二区| 亚洲风情在线观看| 日本一久是| 日韩亚洲美女一区久久| 国产aⅴ无码片毛片一级网站| 骚货操死你| 欧洲一区二区三区免费| 人妻熟女av国产网站| 尤物av网站免费在线播放| 学生妹天天看| 欧美色五月| 久久五十路熟女人妻| AV色女综合| 和协影院中文字幕三区| 人妻夜夜爽天天爽麻豆三区网站 | 中文字幕97| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | AⅤ片水多多| 欧美综合色,www| 97超碰久| 欧美少妇第一页| 婷婷五月天成人网| 色牛牛AV| 国产 亚洲 丝袜 制服| 欧美亚洲天堂| 超碰色综合| 久久久久久十| 日韩干B| 澳门成人网站久国产日韩| 亚洲一区日韩| 日韩在线观看字幕精品| 芊芊操逼视频无码| 欧美色视频在线| 无码精品久久| 欧日韩一二三f区| 首页亚洲国产高跟丝袜诱惑视频| 尤物国产一区在线观看| 欧美一级黄片视频在线| 黄色激情电影在线观看| 91搞逼视频| 国产乱伦视频污| 欧美性爱一区二区| 97爱亚洲| 精品人成视频在线观看| 麻豆久久精品亚洲精品88| 亚洲Av诱惑| 欧美天天干| 综合色91| 日本阿v天堂在线观看| 亚洲男人天堂网| 深夜福利黄片| 正在播放国产精品一区| 狠狠中文字幕| 一区二区三区 日韩欧美| 精品人体无圣光凹凸| 无码精品一区二区三区潘金莲| 日本一区二区中文字幕久久| 日韩av无码网站| av网站免费线看| 女人与公拘交酡2020视频| 超碰无码加勒比| 高清无码在线播放网站| 99精品欧美一区二区三区桃色| 日韩啪啪视频| 台湾一区国产高清在线| 人妻少妇被猛烈进入中| 国产精品熟女丝袜一区二区| 欧美人与性动交a美精品| www黄片免费看com| 五月天成人综合| 二区熟妇韩日| 久久成人午夜狠狠| 亚洲美女精品九九视频| 中文字幕久久婷婷丁香五月天| 日韩免费簧片| 国产精品无码在线| 人妻激情偷乱视频一区二区三区| 国产欧美一区激情交| 91狠婷| 美女久久久久久久| 大但人体久久久久| 欧美成人性活片| 精品国产一区二区三区香蕉欧美| 成人av影院在线观看| 国产亚洲日韩欧| 岛国艾薇凹凸视频天堂| 91人妻人人妻| 怡红院亚洲怡春院av| 美女网站91| av在线观看不卡网站| 亚洲AV成人无码一区二区三区在线观看| 国产11页| 青青操视频在线| 精品人妻一区二区三区四区不卡在| 人人操我人人干| 婷婷五月天激情网| 久操在97| 草草电影院| 超碰精品日韩欧美国产| 国产精品又黄又猛又粗| 日韩无码专区| 亚洲污污网站| 狠狠操狠狠操操| 日韩九区| 亚洲美女黄色| 中国农村熟妇毛片视频| 99热这里只有精品9| av线电影| 97这里有精品| 美女一区二区国产精品| 亚洲大色堂| 九九综合九九综合| 超碰免费在线| 欧美肥臀在线| 亚洲成a人片在线观看中文!!!| 高清不卡视频| 精品视频一二三中文| 国产男女无套视频免费观看| 97视频620| 综合伊人激情| 精品一区二区三区最新| 日少妇视频| 久久精彩视频| 国产精品一区二区三区在线| 人人透人人操| 国产97在线播放| 人妻日日干| 中文字幕伊人| 成人无码影片视频在线| 亚洲男人天堂2016| 在线免费观看日韩一区| 欧美精品偷拍| 国产精品亚洲一级av第二区| 色爽——AV| 亚洲日本韩国在线| 亚洲激情片| 禁十八久久| 国产精品无码av嫩草| 污电影在线观看| 亚洲经典啪啪| 日本操逼视频免费| 中文字幕丝袜美腿| 日韩黄片视频试看| 国产性感在线观看| 亚洲精品国产无码高清| 亚洲色图欧美另类在线| 91c色| 欧洲色综合| 丁香五月影院| 亚洲精品九九九| 熟女一区二区| 国产91精品福利在线| 美女让帅哥通她小鸡鸡| 91GD.COM| 超碰九7| 国产精品熟女AV中文字幕在线播放| 欧美亚洲中文字幕| 亚州少妇| 91精品久久久久五月天精品| 蜜桃狠狠色伊人亚洲综合| 日韩av影片在线观看| 男人天堂2019| 开心激情站| 97天天摸天天爽| 精品视频久久久久九九九九9999 | 97网址97| 涩五月婷婷| 欧美日韩国内不卡| 夜夜综合| 亚洲日韩AV视色| 乱伦av麻豆| 精品人妻一区二区三区日产| 老熟女中文字幕高清| 色综合91| 欧美十八禁在线看| 无码精品久久| 中文字幕一区二区无码成人| 走光一区92下载| 欧美亚综合色图| 伊人久久婷婷| 乱欲一区二区| 久久精品 六十路 熟女 欧美| 大香蕉2017| 日日做夜狠狠爱欧美黑人| 尻女朋友一夜| 人人操AV| 丁香六月综合激情| 欧美国产伊人久久久久| 日韩乱伦AⅤ| 精品国产乱码久久| 欧美日韩久久精品爱爱| 欧美特黄视频网站| 91美女看B| 日夜久久久九九九久| 人妻少妇蜜桃视频欧美一区| 综合久久中文字幕综合日韩精品| 操操逼操操逼操操逼逼| 岛国片在线视频网站| 国产日本一区二区三区蜜臀在线观看| 天天综合91入口| 五十路人妻在线| 久久久99999久网站| 久久精品老司| 96爱综合| 97在线欧洲| 第二页中文字幕| 天天干2019| 嗯嗯,啊啊,国产精品| 久久黄黄| 国产馆极品诱惑| 亚州操操穴网| 亚洲精品一二三四区| 国产黄a三级三级三级av在线看| 午夜丁香婷婷| 日本 欧美 亚中文字幕| 丝袜美腿诱惑亚洲欧美视频在线观看| 色狠狠综合| 天天爽天天爽| 狠狠久久四虎| 亚洲熟女综合| 天天天天天超碰| 蜜桃丰满熟妇av无码区不卡| 69丨亚洲丨精品丨入口免费播放| 亚洲情色综合网| 可乐操亚洲蜜911| 亚洲精品电影| 久久大黄片| 8x福利精品第一福利视频导航| 岛国片在线播放| 神马久久久久久伦理片| 嫩草影院在线观看精品| 成视频在线观看免费看| AV污污污污| 十八禁啪啪视频| 超碰在线人妻中文字幕| 强奸乱伦免费网站| 亚洲高清国产理伦片| 亚洲中文字母在线播放| 五月天偷拍| yazhousetuoumei| 天美一区在线| 神马午夜久久| 都市久久精品激情亚洲| 粉嫩绯色AV一区二区在线| 99热综合| 国产天天看| 蜜桃臀AV在线| 超碰色综合| 伦伦成年午夜免费视频| 大香蕉520| 色婷婷综合久久久久中文一区二区 | 亚洲激情综合| 日韩99神马视频片| 国产尤物在线三区| 国产真乱mangent| 亚洲精品日韩国产欧美| 91在线免费观看处女| 俞拍自拍| 成 人 A V免费视频在线观看| 欧美色性爱| 夜夜中出国产| 校园春色家庭伦理欧美激情| 白丝一区| 国产女人成人精品视频| 久久一二三级一一一| 无码精品啪啪啪一区二区三区三州| 欧美色图第一页| 在线国产福利网址导航| 久久国产精品91| 日本精品一区二区三| 日韩性爱小视频| 日韩999| 美女91色黄18| 久久无码一区二区二三区性色 | 网友自拍第1页 | 九九亚洲色在线观看| 欧美激情激情xxxx欧美专区| 18禁超污无遮挡无码免费网| 观看视频图片一区二区三区| 欧美亚州综合网图片| 欧美精品99久久久**| 亚洲AV资源| 大香蕉淫人网| 国产激情综合| 欧美激情亚洲情色| 99这里只有精品国产| 综合色图,成人综合网| 91精品在线播放| 欧美成人性爱视频免费观看| 久草婷婷| 中文字幕高清精品一区| 日本在线一二| 欧美综合天堂| 亚洲操人| 色偷偷色偷偷欧美日韩| 亚洲欧美日韩国产丝袜自拍中文| 亚洲国产美女久久久久| 屌逼传媒| 成人无码欧美一级A片狼牙直播| 亚洲天堂7777| 蜜臀th| 亚乱色| 亚洲偷拍欧美激情| av无码av无码专区| 男人网站婷婷| www.黄色在线| 99re在线视频国产| 国产操逼逼网| 好爽要喷了| 一级A啪啪啪啪| 中日韩久久久免费看| 一级黄色牲爱A级片| 日韩综合97P| 久久久国产亚洲精品系列| 91久久久老司机| AAAAAAAAA黄片| 99黄页网站| aaaa少妇高潮大片| 91大香蕉伊人| 欧美夜夜狠| 中文操逼字幕| 大香网伊人久久综合网eew| 74成人在线| 热热热热日日漂亮永久永久国产日| 欧美偷拍区| 天天日熟妇| 亚欧性爱在线无码| 久久超碰com| 国产自产91区13区| 久久天天艹| 久久久久久久9最新免费视频观看| 家庭乱伦网站国产| 欧中美三级一区二区三区| 午夜精品久久久久久久男人的天堂 | 四虎影视在线| 91人妻最真实刺激绿帽| 超碰午夜| 激情网五月天| 久久久精品中文字幕爱豆| 日韩欧美天天爽爽爽天天爽爽| 日本护士高潮| 91在线视频国产网站| 少妇三P| 两性综合网| 电家庭影院午夜69久久夜色精品国产69乱 | 91精品国| 爆乳免费黄网站| 乳欲人妻办公室奶水| 玖玖资源视频一区二区三区| 日本三级韩国三级99| 欧美日韩大香蕉| 中文字幕无码不卡啪啪| 成 人 影视 一区 二区 三区 四区 | 一级毛片电影免费看| 激情黄色五月天| 欧美九9 9 9| 国产在线激情视频| 青女在线| 亚洲 欧美 天天| 亚一综合久久久久久久久久| 偷拍视频青青草在线视频| 国产AV人人 夜夜人人澡| 一区二区三区机械有限公司| 久久精品 六十路 熟女 欧美| 婷婷探花久久精品一区| 密臀在线免费观看| 色综合久久888| 中文精品一区二去| 亚洲综合97| 婷婷精品国产欧美精品亚洲人人爽| 欧美色棕合| 精品人妻美妇91job| 久艾草在线精品视频在线观看| 久久久无码精品人妻二区| 国产丰满熟夫69mpp| caorenqi shipin| 亚洲图片偷拍视频区| 黄片免费视频2019| 九色黄站| 久久大香蕉97| 超碰97欧美日韩| 午夜欧美J进J出白浆流出久久久| 日韩人妻无码专区| 福利视频一区二区微拍| 日本操逼视频免费| 大香蕉淫人| 噜噜瑟| 风骚少妇视频中文字幕| 久久久久久中文版| 蜜桃精久三区| 麻豆区99999| 亚洲 欧美 中文 日韩超碰| 久久激情五月| 人妻精品视频一区二区| 美国aaaaa一级黄片| 欧美色视频在线| 久久久久久电影| 99久久久久久亚洲精品不卡| 日韩性爱啪啪视频| 懂色Av| 亚洲伊人成综合成人网| 啊啊嗯嗯好爽| 懂色av一区二区三区天美传媒| 黑人在线91| 久久免费9| 人妻欧美| 亚洲天堂欧美| 人妻三级在线中文字幕| 九九九色| 色哟哟 日韩精品| 国内精品嫩模A∨私拍小视频| 亚洲啪啪综合?v一区综合精品区| 国产一级高清免费观看| 日本不卡一区| 一中国女人毛片水真多| 高清国产无码av| 国产成人自拍视频视频| 一区二区三区黄色片a| 成人性爱av.com| 丝袜熟女一区二区三区| 欧美人人AAA| 国产超碰在线| 99热亚洲天堂| 天天享受天天看| 日韩精品9区| 亚洲在线A| 少妇高潮九九九九| 国产成人91一区二区三区| 亚洲精品免费中文字幕| 免费在线黄片视频| 无码自拍SM| 2010男人的天堂| 欧美一区二区情色| 蜜臀色乳| 日韩日韩日韩-国产乱码精品一区二区| 亚洲图片视频小说| 四虎精品永久在线播放| 人人贴人人摸| av天堂手机版追回| 久久久精品国产亚洲伊人| 日日干夜夜操视频h| AV色图| 蜜臀久久99精品久久久久久-DVD| 国产一级舔足在线观看| 亚洲欧美综合区自拍另类| 中文字幕 国产 精品| 台欧久久精品视频| 99蜜桃臀久久久欧美精品网站| 天天碰久久入| A级国产欧美激情在线| 一本一道vs波多野结衣| 日本三级韩三级99久久| 欧美日韩亚洲天堂网| 国产一二三福利视频网| 日本黄色精品专区网站| 91精品国产高清久久久久久,亚洲成人| 欧美日韩高潮喷水91| 亚洲综合九| 97AV在线观看| 国产精品久久久久久 百度| 国产欧美精品日韩区二区麻豆天美| 久久久中文版| 伊人麻豆传媒| 久久国产热视频97电影| 亚洲欧美大| 久久精品高清无码一区| 91久久久亚洲| 爱射综合| 狠狠做深爱婷婷久久二区| 男人在线天堂| 免费观看啪视频| 最新国产精品久久精品| 精品十三区| 97色综合中文网| 国产家庭乱伦网址| 欧美少妇第一页| 久久久91| 国产亚洲精品第一最新| 午夜福利在线视频1000| 中文久久久| 99热最新| 韩国毛片一区二区三区| 久久精品人人做人人看| 欧美日韩丝袜 | 免费A V在线播放| 欧美老妇女内射网址| 久久久久久久九九九九| 亚洲AV成人在线| 97久久国产精品| 人人看人人爰人人操| 人妻天天爽夜夜爽爽| 9 1果冻精品视频| 色香色欲天天综合网天天来吧| 中文字幕久久精视频久久大全| 91狠狠综合网| 五月天社区| 欧美男人的天堂| 韩国一级婬片A片AAAAA| 九九九九一级| 成人八戒网站| 久久久久久久六六| ..日韩av毛片精品久久久| 欧洲精品在线播放| 国产精品视频91久久| 婷婷国产精品九区| 蜜臀久久99精品久久久电影| 五月婷婷丁香| 久久久久久性爱免费视频| 色噜噜狠狠色综无码久久合欧美| 欧美在线|亚洲| 日韩性爱网址| 校园春色 亚洲| 99视频内射三四| 人妻精品一区二区| 亚洲天堂男人在线| 超碰97护士| 青青草在线视频人人想人人上| 日韩三级伦理中文字幕| 亚洲AV免费在线观看| 国产黄色剧情影片麻豆免费播放| 欧亚乱色熟一区二区三四区| 亚洲熟伦熟妇AV无码春色| 亚洲另类色图片| 另类小说综合网| 啊嗯嗯啊好大好爽| 欧美人人AAA| 国产精品一区二区密臀| 亚洲图片欧美91N| 中文字幕精品免费一区二区| 亚洲美女色图| 天天做日日爱夜夜爽| 久久久999国产| 人妻碰碰碰碰碰碰| 蜜乳中文字幕a在线| 亚洲揄拍网| 中文字幕 国产区| 日韩精品人妻一区二区| 高树玛利亚无码流出| 日韩性爱1级片视频| 本道在线| 玖玖视频在线资源一区二区三区| 久久国产AⅤ| 蜜桃精品一区二区三区久在线| 91在线无码精品秘 软件| 啊啊啊啊啊啊好多水| 99久久综合| 久操不卡视频| 欧美v日韩v亚洲v最新在线| 77国产精品| 91久操| 免费自拍三级综合| 蜜区区视频79| 第四色色综合91| 欧美性爱系列| 亚洲一区二区三区在线激情| 91美女看B| 大香交伊人网| 午夜AV人气不卡| 96麻豆精品一区二区三区| 99国产精品免费| 婷婷色中文字幕| 亚洲乱色熟女一区| yazhououmeizongya| 青青草日逼视频| 麻豆国产96在线| 亚洲AV无码秘 蜜桃臀国精产品| 亚洲欧洲激情| 夜夜操91744565| 97人人模人人爽人人| 91东京热男人的天堂| 久久久久99精品成人片蜜臀| 久久內射| 国产一区二区三区中文字幕| 国产AV久久野战精品| 日韩视频中文字幕| 人妻人久久精品中文字幕| 99青青草国产视频| 亚洲男人天堂Av| 国产又粗又长又爽又色| 亚洲AV成人无码一二三久久| 97视频在线观看免费高清| 久久精品中文字幕女同| 欧美狠狠弄| 久久,精品一二三| 国产激情av女片自拍| 国产视频一区二区三区在线免费观看 | A级毛片在线看免费| 日韩在线电影| 久操免费视频| 日韩人妻精品| 亚洲成人色情五月天丁香花| 欧美AB在线观看| 伊人成人中文字幕久久网| 人妻-91porn| av午夜影院在线播放| ,成人免费啪啪视频| 麻豆天美91| 91人人操| 亚州性色| 色九久| 久久在肏| 外国免费性情大片| 久操视频在线| 亚洲综合另类色图| 国产热av| 欧美天天在线| 999熟女精品| 黄色一区三区| 天堂射| 99热精品在线| 色优久久| 丁香五月婷婷基地| 操91| 人妻激情偷乱视频一区二区三区 | 欧美亚洲首页| 亚洲高清91| 欧美性性性| 中文久久久| 一区在线精品中文字幕| 日韩精品99999| 人妻丝袜一区二区三区在线| 97综合久第一页| 国产精品对白自产拍| chaopen97久久| 9美女超碰在线免费观看| 亚洲日本大香蕉1| 我要色综合网站| 97天天| 色综合加勒比| 黑人美精品 A片| 美女午夜福利免费视频| 国产午夜无码片在线观看影视 |