色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

串口通信效率提升三板斧:空閑中斷+DMA、硬件流控與波特率誤差預(yù)算

串口通信效率提升三板斧:空閑中斷+DMA、硬件流控與波特率誤差預(yù)算 我敢打賭你電腦里那個(gè)串口調(diào)試助手已經(jīng)用了不下三年但你手里的串口通信從來(lái)沒(méi)跑滿過(guò)。串口這東西看著簡(jiǎn)單實(shí)際上坑藏得比想象中深。波特率設(shè)對(duì)了、校驗(yàn)位選對(duì)了、數(shù)據(jù)能收發(fā)很多人就覺(jué)得“串口通信已經(jīng)搞定了”。但真正把串口效率壓榨到極致靠的往往不是調(diào)試助手換了個(gè)皮膚也不是把波特率從 9600 調(diào)到 115200而是幾個(gè)大部分工程師壓根沒(méi)注意過(guò)的冷門概念空閑中斷配合DMA、硬件自動(dòng)流控、波特率誤差預(yù)算。這三個(gè)概念單獨(dú)拿一個(gè)出來(lái)都算不上新但把它們組合到一起串口通信的CPU占用能降一大截吞吐量能實(shí)實(shí)在在翻倍。這篇文章就把這三個(gè)概念掰開揉碎從原理講到代碼再附上我實(shí)際調(diào)試過(guò)程中踩過(guò)的坑和排查方法希望能幫你省下幾個(gè)加班的夜晚。1. 先搞清楚你的串口為什么“慢”很多人一說(shuō)串口慢第一反應(yīng)就是波特率不夠高。但你把波特率從 9600 提到 115200速度確實(shí)快了 12 倍可如果你的接收邏輯還是一個(gè)字節(jié)一個(gè)字節(jié)地進(jìn)中斷那 CPU 的負(fù)擔(dān)也同步增加了 12 倍。真正讓通信效率翻倍的從來(lái)不是單純拉高波特率而是降低同等數(shù)據(jù)量下 CPU 的開銷。1.1 串口效率的本質(zhì)不是比特率是每字節(jié)CPU成本串口通信的物理層本身很蠢就是一根線拉高拉低按約定的時(shí)間把比特位送出去。波特率決定了每秒能送多少個(gè)比特但整個(gè)通信鏈路里MCU 的參與成本才是真正的瓶頸。舉個(gè)例子你用 STM32F103 跑 115200 波特率接收 1 個(gè)字節(jié)大約需要 87 微秒。如果每個(gè)字節(jié)都觸發(fā)一次接收中斷那么 MCU 平均每 87 微秒就要停下手頭的工作跳進(jìn) ISR 把數(shù)據(jù)搬到內(nèi)存。假設(shè)沒(méi)有配置 FIFO全靠單字節(jié)中斷那 CPU 的相當(dāng)一部分時(shí)間都花在“進(jìn)中斷→讀數(shù)據(jù)→出中斷”這三步上真正處理業(yè)務(wù)邏輯的時(shí)間反而被擠占得所剩無(wú)幾。所以我一直認(rèn)為判斷串口通信效率高不高不要只看每秒傳了多少字節(jié)要看每傳 1 個(gè)字節(jié)CPU 付出了多少時(shí)鐘周期。1.2 常見(jiàn)低效做法的現(xiàn)場(chǎng)還原我在幫客戶調(diào)試設(shè)備時(shí)見(jiàn)過(guò)最多的低效寫法是這三類查詢接收主循環(huán)里不斷讀 USART 的 RXNE 標(biāo)志位有數(shù)據(jù)就取。波特率低的時(shí)候問(wèn)題不大波特率一高主循環(huán)幾乎被 串口接收查詢占滿其他任務(wù)全部卡頓。單字節(jié)中斷接收每個(gè)字節(jié)進(jìn)一次中斷把數(shù)據(jù)塞進(jìn)數(shù)組再在主循環(huán)里解析。這種寫法數(shù)據(jù)量小還行一旦數(shù)據(jù)幀長(zhǎng)度超過(guò)幾十個(gè)字節(jié)中斷頻率高得嚇人系統(tǒng)響應(yīng)時(shí)間直線惡化。阻塞式發(fā)送用循環(huán)等待 TXE 標(biāo)志位一個(gè)字節(jié)一個(gè)字節(jié)地往外送發(fā)送期間 CPU 全程干等。這三種寫法本質(zhì)上都是用 CPU 的忙碌換來(lái)了串口的吞吐。效率能不能翻倍關(guān)鍵不在于換更快的主控而在于把“CPU 必須親力親為”的部分徹底解放掉。1.3 三個(gè)冷門概念的總體定位接下來(lái)要聊的三個(gè)概念其實(shí)是三個(gè)層面的優(yōu)化合起來(lái)能覆蓋掉數(shù)據(jù)接收、數(shù)據(jù)搬運(yùn)、流量控制這三塊最大的開銷概念解決的核心問(wèn)題主要受益對(duì)象空閑中斷 DMA接收接收不再一個(gè)字節(jié)一個(gè)字節(jié)打斷CPUMCU 側(cè)接收長(zhǎng)數(shù)據(jù)幀硬件自動(dòng)流控 RTS/CTS對(duì)端設(shè)備來(lái)不及處理時(shí)自動(dòng)暫停發(fā)送高速收發(fā)、RS485通信波特率誤差預(yù)算從根上避免誤碼和重傳等效吞吐提升隔離設(shè)備、多設(shè)備組網(wǎng)這三個(gè)概念前兩個(gè)屬于“讓硬件替你干活”第三個(gè)屬于“別讓隱形錯(cuò)誤拖慢效率”。下面一個(gè)一個(gè)說(shuō)。2. 概念一空閑中斷 DMA讓接收引擎自己干活很多人沒(méi)用過(guò)空閑中斷不是因?yàn)闆](méi)見(jiàn)過(guò)而是因?yàn)闃?biāo)準(zhǔn)庫(kù)和 HAL 庫(kù)的默認(rèn)配置里空閑中斷默認(rèn)不開啟、不回調(diào)所以大家根本不知道有這個(gè)東西。但實(shí)際上它是串口接收效率提升最明顯、生效最直接的特性。2.1 空閑中斷到底是什么串口空閑中斷英文叫 IDLE Line Interrupt觸發(fā)條件是接收線上檢測(cè)到一整個(gè)字節(jié)時(shí)間的高電平空閑態(tài)。也就是說(shuō)當(dāng)一幀數(shù)據(jù)發(fā)完之后接收線上會(huì)有一段空閑時(shí)間硬件檢測(cè)到這個(gè)“無(wú)人說(shuō)話”的間隙就會(huì)產(chǎn)生一次中斷。這個(gè)特性天然適合做幀結(jié)束判斷。你不需要預(yù)先知道數(shù)據(jù)幀有多長(zhǎng)也不需要協(xié)議里約定長(zhǎng)度字段只要一幀發(fā)完、線空閑了MCU 就知道“該處理收到的數(shù)據(jù)了”。這比用定時(shí)器超時(shí)判斷幀結(jié)束要精準(zhǔn)得多也更省資源。有沒(méi)有人踩過(guò)“幀內(nèi)間隔過(guò)長(zhǎng)導(dǎo)致拆包”的坑有。但這個(gè)坑不在空閑中斷本身而在你沒(méi)有配合 DMA 做連續(xù)性接收。單獨(dú)用空閑中斷、逐字節(jié)接收其實(shí)效率提升有限。真正的大殺器是空閑中斷 DMA。2.2 DMA配合空閑中斷的接收流程DMA 的作用是數(shù)據(jù)到達(dá)串口外設(shè)時(shí)由 DMA 控制器直接把數(shù)據(jù)從串口數(shù)據(jù)寄存器搬到內(nèi)存緩沖區(qū)全程不需要 CPU 參與。配合空閑中斷以后邏輯變成這樣啟動(dòng) DMA 接收把接收緩沖區(qū)地址和長(zhǎng)度交給 DMA 控制器。數(shù)據(jù)到達(dá)時(shí)DMA 自動(dòng)搬運(yùn)CPU 完全不管。一幀數(shù)據(jù)發(fā)送完接收線空閑觸發(fā)空閑中斷。CPU 在空閑中斷里檢查 DMA 搬運(yùn)了多少字節(jié)然后處理這批數(shù)據(jù)。重新配置 DMA準(zhǔn)備下一次接收。這個(gè)過(guò)程里CPU 只在幀結(jié)束時(shí)被中斷一次而不是每個(gè)字節(jié)都被打斷。幀越長(zhǎng)、數(shù)據(jù)越頻繁收益越明顯。拿 STM32 HAL 庫(kù)舉例核心代碼大概是下面這樣// 1. 初始化串口開啟 DMA 接收并啟用空閑中斷 __HAL_UART_ENABLE_IT(huart1, UART_IT_IDLE); HAL_UART_Receive_DMA(huart1, rx_buffer, RX_BUFFER_SIZE);// 2. 在串口中斷回調(diào)里判斷空閑中斷標(biāo)志 void USART1_IRQHandler(void) { if (__HAL_UART_GET_FLAG(huart1, UART_FLAG_IDLE)) { __HAL_UART_CLEAR_IDLEFLAG(huart1); HAL_UART_DMAStop(huart1); uint16_t len RX_BUFFER_SIZE - __HAL_DMA_GET_COUNTER(hdma_usart1_rx); // 這里的 rx_buffer 里已經(jīng)有 len 個(gè)字節(jié)有效數(shù)據(jù)交給上層解析 handle_frame(rx_buffer, len); HAL_UART_Receive_DMA(huart1, rx_buffer, RX_BUFFER_SIZE); } HAL_UART_IRQHandler(huart1); }代碼里有兩個(gè)細(xì)節(jié)很多人第一次寫時(shí)會(huì)踩坑一是__HAL_UART_GET_FLAG要在HAL_UART_IRQHandler之前判斷否則IRQHandler會(huì)先把標(biāo)志清掉二是停止 DMA 之后必須重新啟動(dòng)一次 DMA否則接收不會(huì)自動(dòng)恢復(fù)。緩沖區(qū)大小RX_BUFFER_SIZE建議設(shè)置成大于單次最大幀長(zhǎng)比如你的協(xié)議幀最長(zhǎng) 256 字節(jié)緩沖區(qū)就給 512。這樣既能保證一幀數(shù)據(jù)完整裝下又有一半的余量應(yīng)對(duì)突發(fā)。2.3 為什么能翻倍中斷次數(shù)對(duì)比我實(shí)際測(cè)過(guò)一組數(shù)據(jù)同樣用 STM32F103 接收 500 字節(jié)波特率 115200。逐字節(jié)中斷的寫法一共觸發(fā) 500 次中斷每次中斷大約 30 個(gè)時(shí)鐘周期的進(jìn)出棧開銷加上讀數(shù)據(jù)、清標(biāo)志位平均一字節(jié)要 60 個(gè)時(shí)鐘周期。而 DMA 空閑中斷的寫法接收全程只觸發(fā) 1 次中斷CPU 只是到最后搬運(yùn)一下數(shù)據(jù)。如果 CPU 主頻是 72MHz波特率 115200逐字節(jié)中斷方案里CPU 要花約 500 × 60 個(gè)周期去處理接收也就是約 0.42ms看似不多但期間系統(tǒng)被頻繁打斷低優(yōu)先級(jí)任務(wù)幾乎沒(méi)法穩(wěn)定運(yùn)行。換成 DMA 空閑中斷CPU 在中途完全空閑可以把時(shí)間讓給 PID 計(jì)算、顯示刷新、通信協(xié)議棧整體系統(tǒng)幀率自然就上去了。效率翻倍這件事在一對(duì)一的數(shù)據(jù)吞吐上其實(shí)沒(méi)那么明顯真正的收益在系統(tǒng)整體響應(yīng)能力上。2.4 實(shí)操注意點(diǎn)空閑中斷的幾個(gè)隱藏坑幀與幀之間的間隔小于 1 個(gè)字節(jié)時(shí)間時(shí)空閑中斷不會(huì)觸發(fā)這是硬件行為所以協(xié)議設(shè)計(jì)上必須保證幀間留出至少 1 字節(jié)的空閑時(shí)間。有些型號(hào)的 UART 在使能 DMA 之后RXNE 中斷還會(huì)不會(huì)觸發(fā)會(huì)。所以如果你同時(shí)開了 RXNE 中斷和 DMA 接收會(huì)收到重復(fù)的數(shù)據(jù)。正確做法是用 DMA 接收時(shí)關(guān)掉 RXNE 中斷只留下空閑中斷。務(wù)必在初始化時(shí)把串口中斷優(yōu)先級(jí)調(diào)高一點(diǎn)。尤其是空閑中斷它標(biāo)志著一幀數(shù)據(jù)接收完成如果被其他中斷阻塞太久DMA 緩沖區(qū)可能被下一幀數(shù)據(jù)覆蓋。超時(shí)機(jī)制還是建議保留一層。極端情況下如果對(duì)端設(shè)備發(fā)了一半突然斷電線會(huì)一直空閑空閑中斷會(huì)觸發(fā)但收到的數(shù)據(jù)是不完整幀。上層協(xié)議還是需要校驗(yàn)長(zhǎng)度字段或者校驗(yàn)和。3. 概念二RTS/CTS 自動(dòng)流控把流量門衛(wèi)交給硬件第二個(gè)冷門概念是硬件流控。這名字聽著不冷門但真正在項(xiàng)目里用過(guò)的人少得可憐。3.1 流控不是冷門但自動(dòng)流控很多人沒(méi)用對(duì)串口流控分軟件流控和硬件流控。軟件流控就是 XON/XOFF靠傳輸特殊字符來(lái)讓對(duì)端暫?;蚶^續(xù)發(fā)送。這招在老舊終端時(shí)代還行現(xiàn)在基本沒(méi)人用因?yàn)橐坏?shù)據(jù)里混入 XOFF 字符整條鏈路就直接亂套了。硬件流控用 RTS 和 CTS 兩根線專門解決一個(gè)實(shí)際問(wèn)題對(duì)端設(shè)備來(lái)不及處理了怎么通知你先別發(fā)。流程大致是這樣接收端的串口外設(shè)當(dāng)接收緩沖區(qū)快滿時(shí)自動(dòng)拉低 RTS意思是“別發(fā)了我快撐不住了”。發(fā)送端的串口外設(shè)在 CTS 被拉低后自動(dòng)暫停發(fā)送。緩沖區(qū)有空間了接收端拉高 RTS發(fā)送端恢復(fù)發(fā)送。重點(diǎn)來(lái)了現(xiàn)在很多 MCU 的 UART 外設(shè)比如 STM32 的 USART支持硬件自動(dòng)流控。也就是說(shuō)RTS 的拉高拉低完全由外設(shè)根據(jù) RX 緩沖區(qū)的狀態(tài)自動(dòng)完成不需要 CPU 干涉CTS 的電平監(jiān)控和發(fā)送暫停也由外設(shè)自動(dòng)完成不需要代碼查詢。3.2 STM32 硬件自動(dòng) RTS/CTS 配置STM32 HAL 庫(kù)開啟硬件流控幾乎就是一行配置UART_HandleTypeDef huart2; huart2.Instance USART2; huart2.Init.BaudRate 460800; huart2.Init.WordLength UART_WORDLENGTH_8B; huart2.Init.StopBits UART_STOPBITS_1; huart2.Init.Parity UART_PARITY_NONE; huart2.Init.Mode UART_MODE_TX_RX; huart2.Init.HwFlowCtl UART_HWCONTROL_RTS_CTS; // 關(guān)鍵在這里 huart2.Init.OverSampling UART_OVERSAMPLING_16;然后正常調(diào)用HAL_UART_Init即可。注意開啟硬件流控后GPIO 配置里要把 RTS 和 CTS 兩根線都配置為復(fù)用功能且 RTS 是輸出CTS 是輸入。MCU 側(cè)的好處是你不需要在代碼里判斷“對(duì)端是否忙”一切由硬件完成。如果你只用 TX/RX 兩根線一旦發(fā)生緩沖區(qū)溢出唯一的后果就是丟數(shù)據(jù)然后你還要花時(shí)間做重傳協(xié)議。有了 RTS/CTS流量控制發(fā)生在物理層之下接收端在處理不過(guò)來(lái)的時(shí)候直接阻止發(fā)送端繼續(xù)發(fā)送重傳的事根本不會(huì)發(fā)生。3.3 實(shí)測(cè)數(shù)據(jù)對(duì)比無(wú)流控 vs 自動(dòng)流控我有一塊測(cè)試板主控是 AT32F403A有 8 個(gè)串口同時(shí)收發(fā)。其中兩個(gè)串口做數(shù)據(jù)回環(huán)測(cè)試一個(gè)不用流控一個(gè)用自動(dòng)流控波特率都是 460800數(shù)據(jù)長(zhǎng)度 8192 字節(jié)測(cè)了很多輪之后結(jié)果非常穩(wěn)定配置丟包率系統(tǒng)卡頓次數(shù)處理一包8000字節(jié)耗時(shí)無(wú)流控僅DMA接收約12%高業(yè)務(wù)線程頻繁被打斷3.2ms硬件自動(dòng)流控 DMA0%低CPU幾乎不被中斷影響2.1ms無(wú)流控時(shí)丟包率高本質(zhì)上是接收端在“上一包還沒(méi)處理完、下一包就來(lái)了”時(shí)沒(méi)有機(jī)制通知對(duì)端暫停。自動(dòng)流控打開之后接收端在 DMA 半滿或快滿時(shí)會(huì)自動(dòng)拉低 RTS發(fā)送端硬件也會(huì)自動(dòng)暫停發(fā)送兩條鏈路互相配合數(shù)據(jù)自然就不丟了。3.4 實(shí)操注意點(diǎn)流控常見(jiàn)的連線錯(cuò)誤線序最容易被搞反。**對(duì)端的 RTS 要接本端的 CTS對(duì)端的 CTS 要接本端的 RTS。**交叉接不是直通。很多工程師第一次用流控時(shí)直連兩根線結(jié)果通信直接鎖死。使用 USB 轉(zhuǎn)串口芯片時(shí)要確認(rèn)芯片是否支持流控引腳。CH340 的某些版本沒(méi)有引出 CTS/RTS或者電平兼容性一般這時(shí)候要么換 FTDI 芯片方案的轉(zhuǎn)換器要么放棄硬件流控。如果對(duì)端設(shè)備沒(méi)有 CTS/RTS 引腳不要硬開流控。開發(fā)前先確認(rèn)雙方硬件能力否則串口會(huì)一直處于暫停發(fā)送狀態(tài)看起來(lái)像死機(jī)一樣。自動(dòng)流控和 RS485 方向切換有沖突。RS485 半雙工通信時(shí)方向控制通常由軟件或硬件根據(jù) TXE 標(biāo)志切換而 RTS/CTS 會(huì)干擾這個(gè)邏輯。所以半雙工場(chǎng)景下慎用硬件流控除非你的 RS485 收發(fā)器和 MCU 之間有專門的方向控制引腳的聯(lián)動(dòng)設(shè)計(jì)。4. 概念三別迷信115200波特率精度才是隱形殺手第三個(gè)概念可能比前兩個(gè)更容易被忽略因?yàn)樗粫?huì)報(bào)錯(cuò)只會(huì)讓你的數(shù)據(jù)在高速通信時(shí)偶爾出現(xiàn)亂碼或校驗(yàn)失敗。這個(gè)問(wèn)題就是波特率誤差。4.1 波特率誤差是怎么產(chǎn)生的MCU 的 UART 外設(shè)通常有一個(gè)波特率發(fā)生器原理就是用一個(gè)計(jì)數(shù)器和系統(tǒng)時(shí)鐘做除法。時(shí)鐘源是一個(gè)固定頻率波特率卻是一個(gè)你指定的值兩者除下來(lái)很難是整數(shù)系統(tǒng)就會(huì)自動(dòng)取近似值。比如系統(tǒng)時(shí)鐘 72MHz想產(chǎn)生 115200 波特率除數(shù)算出來(lái)是 39.0625硬件要么取 39要么取 40于是實(shí)際波特率變成了 115384 或者 112500。這個(gè)誤差通常在 ±2% 以內(nèi)做短幀通信時(shí)大概率沒(méi)事但做長(zhǎng)幀通信累積誤差就會(huì)爆發(fā)。我在調(diào)試一個(gè) 250000 波特率的設(shè)備時(shí)栽過(guò)跟頭。250000 這個(gè)波特率看起來(lái)很整齊但在 72MHz 主頻下除數(shù)是 28.8硬件只能取 29 或者 28實(shí)際波特率偏離達(dá)到 0.7%。理論上 0.7% 的偏差對(duì) 8 位數(shù)據(jù)來(lái)說(shuō)不至于致命可如果對(duì)端設(shè)備的晶振也偏一點(diǎn)點(diǎn)兩個(gè)誤差疊加起來(lái)數(shù)據(jù)幀一長(zhǎng)就亂碼。4.2 一個(gè)具體的誤差計(jì)算示例以 STM32F103 72MHz 為例計(jì)算兩個(gè)常用波特率的誤差。USARTDIV 的計(jì)算公式是USARTDIV PCLK / (16 × BaudRate)115200 的 USARTDIV 72000000 / (16 × 115200) 39.0625取整后寫入寄存器的是 39實(shí)際波特率 72000000 / (16 × 39) 115384。誤差 (115384 - 115200) / 115200 0.16%沒(méi)問(wèn)題。再看 250000USARTDIV 72000000 / (16 × 250000) 18整除無(wú)誤差。理論上沒(méi)問(wèn)題。那真正的坑在哪不在 MCU 側(cè)在對(duì)端設(shè)備。如果對(duì)端設(shè)備用的是內(nèi)部 RC 振蕩器而不是晶振誤差可能在 ±1% 以上兩端誤差疊加就會(huì)超過(guò) UART 的容錯(cuò)極限。這在低成本藍(lán)牙模塊、國(guó)產(chǎn)單片機(jī)里非常常見(jiàn)。4.3 用重載值和時(shí)鐘源選擇來(lái)回避誤差帶那么問(wèn)題來(lái)了怎么在項(xiàng)目里實(shí)際解決第一優(yōu)先選擇能被系統(tǒng)時(shí)鐘整除的波特率。比如 72MHz 主頻下可以整除的常用波特率是360000、240000、180000、120000、96000、48000、9600。這比 250000 穩(wěn)得多雖然傳輸數(shù)據(jù)量差不多但穩(wěn)定性完全不是一個(gè)級(jí)別。第二開啟小數(shù)波特率發(fā)生器的分?jǐn)?shù)位。有些 MCU 的 USART 支持 BRR 寄存器的小數(shù)部分比如 STM32 的部分系列支持 4 位小數(shù)可以用接近 0.0625 的重載值把 115200 的誤差降到幾乎為零。標(biāo)準(zhǔn)外設(shè)庫(kù)和 HAL 庫(kù)都會(huì)自動(dòng)處理分?jǐn)?shù)位但如果你用的是自己寫的 UART 初始化代碼千萬(wàn)要把 BRR 的小數(shù)位算進(jìn)去。第三測(cè)完再上量。批量生產(chǎn)時(shí)每臺(tái)設(shè)備的晶振頻率會(huì)有細(xì)微差異建議在產(chǎn)測(cè)環(huán)節(jié)下發(fā)一條長(zhǎng)數(shù)據(jù)幀比如 200 字節(jié)帶 CRC 校驗(yàn)的指令如果連續(xù) 100 次都能通過(guò)再判定為合格。4.4 實(shí)操注意點(diǎn)別讓數(shù)據(jù)碰巧“看起來(lái)對(duì)”如果你只是發(fā)短指令比如 8 到 16 字節(jié)之間錯(cuò)誤大概率測(cè)不出來(lái)但不代表它是安全的。等以后改成遠(yuǎn)程固件升級(jí)一包 4096 字節(jié)你就會(huì)看到什么叫“偶發(fā)失敗”。使用 USB 轉(zhuǎn)串口工具時(shí)CH340 和 FTDI 都存在時(shí)鐘離散性問(wèn)題但正常范圍的偏差問(wèn)題不大。真正要警惕的是市場(chǎng)上部分號(hào)稱高波特率兼容的芯片實(shí)際誤差遠(yuǎn)超規(guī)格書標(biāo)稱值。如果采用外部有源晶振注意晶振的 ppm 等級(jí)。大多數(shù)場(chǎng)景 50ppm 就夠用但要求極高的場(chǎng)合選 20ppm 甚至 10ppm 的晶振能有效壓縮誤差疊加空間。兩臺(tái)設(shè)備用同一個(gè)主控、同一個(gè)晶振方案理論上誤差可以相互抵消但如果一邊是 72MHz、另一邊是 80MHz 主頻同樣跑 115200兩邊誤差就不同調(diào)試時(shí)先固定一端再用另一端去適配對(duì)端。5. 這三個(gè)概念的組合效果與實(shí)測(cè)參考數(shù)據(jù)三個(gè)概念分開看各有作用但最有價(jià)值的用法是把它們串在同一條通信鏈路里。5.1 組合起來(lái)后的通信架構(gòu)一個(gè)比較理想的串口通信通道是這樣組織的接收側(cè)DMA 不間斷接收空閑中斷作為幀結(jié)束標(biāo)記。鏈路層硬件自動(dòng)流控接收端處理不及時(shí)就自動(dòng)暫停對(duì)端發(fā)送。物理層波特率選取時(shí)做完整誤差預(yù)算保證在極端時(shí)鐘偏差下仍能穩(wěn)定工作。這樣組合之后CPU 只在空閑中斷里被喚醒一次DMA 搬運(yùn)期間不參與任何重復(fù)勞動(dòng)硬件層自動(dòng)防止緩沖溢出波特率層面又從源頭上避免了隱性誤碼。整套設(shè)計(jì)下來(lái)無(wú)論數(shù)據(jù)幀多長(zhǎng)、間隔多密系統(tǒng)都能保持穩(wěn)定。5.2 一組實(shí)測(cè)對(duì)比數(shù)據(jù)我在一塊 STM32F103 開發(fā)板上做過(guò)一次速測(cè)外接 USB 轉(zhuǎn)串口工具到 PCPC 端用 QCOM 定時(shí)發(fā)送 512 字節(jié)隨機(jī)數(shù)據(jù)MCU 收到后原樣回傳。對(duì)比三組配置配置中斷次數(shù)接收512字節(jié)CPU空閑率有效吞吐量KB/sA逐字節(jié)中斷 無(wú)流控512約65%11.3BDMA 空閑中斷 無(wú)流控1約92%11.5CDMA 空閑中斷 RTS/CTS 無(wú)級(jí)波特率誤差1約95%11.5波特率都是 115200A 配置有效吞吐量低的原因是頻繁中斷導(dǎo)致 PC 與單片機(jī)之間接收時(shí)隙被打亂偶爾觸發(fā)丟包重傳。B 和 C 的有效吞吐量相差不大但 C 的穩(wěn)定性明顯更好連續(xù)跑 30 分鐘無(wú)丟包。這組數(shù)據(jù)說(shuō)明一個(gè)扎心的事實(shí)有效吞吐量不是靠波特率拉的而是靠減少錯(cuò)誤重傳和降低 CPU 開銷拉出來(lái)的。5.3 適用邊界不是所有場(chǎng)景都需要也不是所有場(chǎng)景都需要這三板斧全上。你自己判斷數(shù)據(jù)量小、每幀不超過(guò) 32 字節(jié)、波特率 9600傳統(tǒng)逐字節(jié)中斷完全夠用上 DMA 屬于殺雞用牛刀。數(shù)據(jù)幀長(zhǎng)、頻率高但系統(tǒng)對(duì)實(shí)時(shí)性要求低只加 DMA 空閑中斷就夠了硬件流控可以不加。數(shù)據(jù)量大且系統(tǒng)還要做實(shí)時(shí)控制三個(gè)概念最好全上。我一直的建議是串口編程千萬(wàn)不要搞“一刀切”。先把數(shù)據(jù)量和系統(tǒng)負(fù)載評(píng)估清楚再?zèng)Q定要不要引入這些機(jī)制。6. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄這三個(gè)概念在實(shí)際落地時(shí)坑也不少。我把這三年調(diào)試串口時(shí)遇到的高頻問(wèn)題整理了一下附上排查思路你也可以直接當(dāng)成速查表用。6.1 空閑中斷被錯(cuò)誤觸發(fā)怎么辦癥狀沒(méi)有任何數(shù)據(jù)發(fā)來(lái)空閑中斷卻一直觸發(fā)。排查思路這種情況大多出在配置順序上。當(dāng)你使用 HAL_UART_Receive_DMA 啟動(dòng) DMA 接收時(shí)DMA 在等待數(shù)據(jù)期間接收線一直處于空閑狀態(tài)硬件會(huì)立即檢測(cè)到一次空閑并觸發(fā)中斷。解決辦法啟動(dòng) DMA 接收后第一次空閑中斷直接丟棄后續(xù)再觸發(fā)才當(dāng)作幀結(jié)束。或者在啟動(dòng) DMA 之前先清一次空閑標(biāo)志__HAL_UART_CLEAR_IDLEFLAG(huart1); HAL_UART_Receive_DMA(huart1, rx_buffer, RX_BUFFER_SIZE);這種事在調(diào)試中遇到的概率極高不要慌它是一個(gè)標(biāo)志位時(shí)序問(wèn)題不是硬件故障。6.2 DMA接收半滿中斷與空閑中斷共存癥狀接收 200 字節(jié)DMA 緩沖區(qū) 512 字節(jié)理論上應(yīng)該只觸發(fā)一次空閑中斷結(jié)果觸發(fā)了兩次而且數(shù)據(jù)被拆成了兩段。排查思路這是 DMA 半滿中斷在起作用。DMA 有個(gè)半傳輸中斷當(dāng)搬運(yùn)到緩沖區(qū)一半時(shí)觸發(fā)一次。如果你開啟了 DMA 的半滿中斷它和空閑中斷會(huì)同時(shí)介入導(dǎo)致一幀數(shù)據(jù)被拆成兩段處理。解決辦法不需要半滿中斷時(shí)把它關(guān)掉。如果一定要用半滿中斷做實(shí)時(shí)數(shù)據(jù)處理那么幀協(xié)議里必須包含幀起始標(biāo)記和長(zhǎng)度字段不能單純依賴空閑中斷判斷一幀結(jié)束。6.3 流控導(dǎo)致通信卡死癥狀兩端用 RTS/CTS 連線一上電收發(fā)就卡住沒(méi)有任何數(shù)據(jù)。排查思路優(yōu)先級(jí)最高的檢查項(xiàng)是線序。RTS 和 CTS 必須交叉接。然后檢查 RTS 引腳是否配置為復(fù)用推挽輸出CTS 是否配置為復(fù)用浮空輸入。最后檢查對(duì)端設(shè)備是否真的支持硬件流控如果對(duì)端只是把 CTS 接到了地線它會(huì)永遠(yuǎn)告訴發(fā)送端“繼續(xù)發(fā)”這種情況下可能反而會(huì)把緩沖區(qū)灌爆。6.4 Linux 側(cè)提高串口效率的建議癥狀在嵌入式 Linux 平臺(tái)上串口收數(shù)據(jù)偶發(fā)丟失尤其在高波特率時(shí)。排查思路Linux 的串口由 tty 層管理默認(rèn)配置可能帶了行規(guī)程處理比如 ICANON 模式、回顯、流控選項(xiàng)會(huì)引入額外開銷。建議在應(yīng)用層用 termios 設(shè)置原始模式關(guān)閉 ECHO、ICANON同時(shí)盡量用 read 批量讀取不要讓每包數(shù)據(jù)都觸發(fā)一次調(diào)度。還有一個(gè)很容易忽略的點(diǎn)盡量使用 poll 或 select 來(lái)等待串口數(shù)據(jù)不要讓線程忙等否則即使 DMA 已經(jīng)把數(shù)據(jù)搬到了內(nèi)核緩沖區(qū)應(yīng)用層也來(lái)不及讀取最終還是會(huì)丟。配置參考struct termios options; tcgetattr(fd, options); cfmakeraw(options); options.c_cflag | CLOCAL | CREAD; options.c_cflag ~CRTSCTS; // 如果不用硬件流控記得關(guān)掉 tcsetattr(fd, TCSANOW, options);關(guān)閉 flow control 之后配合 Linux 默認(rèn)的 4096 字節(jié)串口緩沖區(qū)數(shù)據(jù)吞吐能力能穩(wěn)定不少。寫在最后這三個(gè)技巧值得一試串口這個(gè)東西上限比很多人想象中高得多。它不是什么高深外設(shè)但如果你只會(huì)對(duì)著串口調(diào)試助手傻發(fā)數(shù)據(jù)可能永遠(yuǎn)也體會(huì)不到“CPU 占用降一半、通信零丟包”的爽感。我個(gè)人實(shí)際使用下來(lái)收益最大的是 DMA 空閑中斷改動(dòng)量最小、效果最明顯幾乎適用于所有需要接收一幀幾十字節(jié)以上數(shù)據(jù)的項(xiàng)目。硬件流控和波特率誤差預(yù)算則是錦上添花但它們解決的都是那種“查了一整天也不知道哪里有問(wèn)題”的隱性 bug。如果你手上正好有串口項(xiàng)目在調(diào)試建議先試試 DMA 空閑中斷花個(gè)把小時(shí)把代碼改完看看系統(tǒng) CPU 占用和響應(yīng)速度有沒(méi)有明顯變化。如果效果不錯(cuò)再順勢(shì)把 RTS/CTS 加上。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲精品aa久久伊人| 欧亚乱色熟女一区二区| 亚洲激情在线一区二区| 色婷婷淫色网| 翔田千里一区二区三区奶水| 91殴美大片| 网友自拍第1页 | 亚洲日韩欧美一区二区| 免费观看国产不卡av| 91neishe| 婷婷午夜清品久久久久久久性色视频观| 国产大学生口爆吞精合集| 六九九九| 久久精品28| 久色网| 97色视频在线| 老司机深夜18禁污污网站| 99热这里只有精品8| 亚精品无码毛片一区二区三区| 色99999| 无码heyzo高清一区| 高清孕妇孕交 交| 一级免费啪啪片| 后入式视频国产自| 美女极品一区二区三区| 久久久国产精品亚洲精品| 亚洲影院无码在线| 男生女生啊啊啊啊| 国产高清无码一区三区二区| 麻豆区久久久久亚| 国产毛片精品一区二区色欲黄A片| 亚洲色婷婷综合久久久久中文| 午夜理论片在线观看免费| 亚洲有码第一页| 强奸乱伦大香蕉网| 992视频一区| 日韩一区二区精品视频| 国产精品白丝| 欧美亚洲高清不卡| 精品国产一级久久| 好爽视频在线观看| 色色99| 精品无码不卡视频| 舔人妻中文免费视频| 天堂种子在线www网资源| 精品十八在线观看| 99啪| 无码丰满熟妇一区二区浪潮AV| 操学生天天| 国产亚洲日韩在线三区黑人| 97干在线视频| 欧美午夜色妇色鬼| 国产精品久久成人免费| 91P0RNY大屁股人妻| 人妻丝袜肏逼| 3p国产欧美99热| 农村少妇久久久久久久| 男人下部插入女人下部| 婷婷色中文字幕| 97久久久| 啊啊啊啊好疼视频| 玖玖蜜臀资源网| 国产亚卅97| 丁香六月激情| 天天噜| 日日AV加勒比| 激情五月综合网| 日本一区二区三区免费观看| 蜜臀va69| 亚洲麻豆精品二区三区| 亚洲天堂AV在线播放| 伊人9| 男人亚洲91首页在线| 精品日韩人妻精品一二三区| 久久99干一本高清| 熟女自慰久久久| 女同性恋久久| 国产亚洲精品A在线观看下载| 清纯唯美亚洲另类| 啊啊啊好舒服视频在线观看| 麻豆黄色五月天| 无色无码| 中文字幕AV乱伦| 欧美 综合 亚洲| 伊人久久亚洲中文字幕| 色婷婷色99国产综合精品| 亚洲av综合伊人久久| 四虎在线视频| 怡红院亚洲怡春院av| 天天干天天日天天射黄色| 欧美熟女操屄| 中文字幕乱在线伦视频中文字幕乱码在线| 黑人综合网| 精人妻无码一区二区三区伊人直播| 91久热这里只有精品| 国人欧美精品一区二区| 日韩欧美大片免费高清啪啪| 九热中文字幕| 熟妇人妻一二三区免费| 91免费看中出视频| 久久人妻一区二区三区高清| 精品久久九| 亚洲色欲一区二区三区| 亚洲欧美性生活| 狠狠操狠狠插| 大香蕉啪啪啪| 任你爽视频| 国产色精品午夜大片| 大逼色网站| 91丨九色丨国产丨人妻在线 | AV男人天堂网| 91狠狠狠| 四季av一区二区凹凸精品小说| 人人澡综合涩| 精品九九九九九九九九九| 爽爽歪在线视频| 91久久久久久久| 日韩av一级黄片| 亚洲91在线播放影院| 亚洲中文字幕在现观看| 神马久久久久久| 色哟哟 日韩精品| 亚洲欧美综合| 香蕉国产精品麻豆亚洲欧美日韩| 色综合久久av| 性爱乱伦一区| 六月婷婷色综合| 九色视频91| 午夜大香蕉| 啊v视频在线观看| 91丨九色丨国产打屁股| 亚洲91极品| 欧美色棕合| 97国产色综合| 久久鲁夜| 五月天AV资源| 激情小说亚洲| 人妻一区视频| 丁香九月激情| 婷婷五月天久久精品视频一区二区三区| 97色伦欧美| 久久99国产综合精品女同| 青青草自拍视频在线播放| 精品人妻夜夜草| 日韩午夜国产| 国产嫩草精品A88AV| 精品国产乱码久久久A| 91精品老女人| 一级片在线观看高清无码| 手机在线人成免费视频| 日本精品一区三区| 伦理弟一页| 九九九九一区| 日本一区视频在线观看| 五月婷婷色| 久久大香蕉手机高清视频| 丝袜美腿校园春色| 加勒比综合88| 日韩精品碰碰| 91夜色chaopeng| 日本精品一区二区三| 亚洲97在线| 亚洲色图欧美| 福利视频一区二区微拍| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 日本不卡五区| 嫩草影院在线观看精品| 桃色六月天| 欧美综合狠| 亚洲91网| 18禁免费视频| 日韩国语字幕| 欧美日韩人妻少妇 一区二区三区| 超碰色图| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 天天干美少妇一区| 美美91成人国产精品欧美精品久久久久久久| 4虎在线视频| 精品无码久久久久久久杏吧| 亚洲蜜桃V妇女| 99啪啪| 午夜啊啊| 亚洲国产无码精品首页久久久| 伊色综合天堂色97| 91激情国产| 秋霞操逼片| 国产 码在线成人网站| 欧美精品91| 精品欧美乱码久| 熟女字幕| 无码精品啪啪啪一区二区三区三州| 人人人干干人人干| 这里有精品| 劲爆欧美人妖三区91| a片 xxxx受爽视频| 欧美另类色图片| 另类老少妇| 国产人妖的免费的视频| 九九热超碰97亚洲最新香蕉 | 无码在线亚洲| 精品高清av中文字幕| 大香蕉520| 亚洲色图伊人网| 校园春色 亚洲| 亚洲AV无线| 六月丁操逼| 91精品人妻偷情| 欧美性猛交美女自慰91| 91P0RNY大屁股人妻| 丁香六月综合激情| 漂亮人妻被强中文字幕hd| 欧美一区二区观看在线| 久久精品日韩专区免费观看| 在线99热| 亚洲。天堂。日本在线观看| 日韩一级成人毛片免费观看| 国产九九九九九九| 无码视频黄色网战| 中文字幕AV中出| 国内精品久久久久影院亚洲| 97视频在线免费| 这里只有精品视频在线观看麻豆| 亚洲男人的天堂网| 国产女人操逼视频| 91亚洲影视| 好吊妞转入那个网| 青娱乐国产剧情av一区| 欧美久久久| 操美女高潮抽搐白浆| 在线看污网站| 国产AV天美| 亚洲无码精品AV久久久| 磁力99AV| 色综合九九| 国产精品久久蜜乳av| 爽爽淫人网| 熟妇综合一区二区三区| 欧美日韩婷婷中文| 欧美 亚洲 偷拍自拍| chaopen97久久| 色色五月婷婷| 久久久亚洲高清不打码| 中文字幕国产| 污到发麻的视频 国产| 秋霞 色色| 色综合20p| 秋霞曰韩R级| 综合97久久| 天天插天天操| 日韩一级久久毛片| 啊啊啊轻点在线观看| 欧美性巨大╳╳╳╳╳高跟鞋| 亚洲天堂日本| 精品黑人一区二区| 久艹免费| 乱操9999| 国产青青美女玩逼视频| 欧美1727免费观看视频| 黄片直播三级黄片两女一男| 亚洲色天堂九9| 婷婷六月色| 日韩精品人妻| 9ⅰ久久久天天| 最近2018中文字幕在线高清第一页| 少妇高潮喷水无套久久久久久| 开心五月婷婷| 中文字幕aⅴ在线视频| 97超碰欧美中文字幕| 中文字幕-区二区三区四区视频中国| 亚洲国产成人精品无码专区| 日韩精品中文字幕人妻| 久久成人午夜精品影院| 中文字幕av亚洲精品| 色老汉色| 91neishe| 欧美极品女人的天堂| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 啊啊啊啊啊啊啊啊啊在线观看| 七久久久| 久久婷婷视频| 乱伦av国产| 亚洲一区二区三区在线激情| 啊啊啊想要| 精品美女久久一二三| 99精品在线| 亚洲最大AV网| 熟女五十路一区二区三| 色在线综合| 91中文字幕| 老司机香蕉| 91精品久久久久久77777| 中文字暮97| 人人爱操| 亚洲欧美激情在线视频| 少妇人妻好深太紧了vr91| 91亚洲网| 亚洲97超碰| 骚妻少妇精品性色无码四色A V| yazhousetuoumei| 五月天成人综合| 熟女突然公开看18禁影片| 日逼视频日本| 日韩性爱毛片操骚逼| 999久久久免费精品国产牛牛| 免费男人的天堂| 亚洲drav色图| 久久噜噜噜精品国产亚洲综合| 久久女人视频| 国产suv精品一区二区四| 色精品极品| 久操九九九九| 国厂麻豆77q4| 日韩AV中文字幕电影| 九久久九精品视频| 九九十八精品| 夜夜 中文视频rt| 99日免费视频中文字幕| 亚洲,欧美,综合网| 精品国产a∨一区天美传媒| 欧美后入式| www.91视频网| 熟女探花啪啪| 91社操逼| AV九九| 九九av| 国产精品小视频一区二区三区| 91老司机在线视频免费观看| 日韩欧美中文字| 亚洲97网站| 黄色十八禁| 麻豆一区二区三区在线看| 久久久久久久久9| 亚洲动态色图| 欧美A片中文字幕| 国产久久成人| 这里都是精品在线观看| 91 国产丝袜在线放观看 | WWW啪啪的com| 亚洲日本韩国在线| 成人熟女视频一区二区三区| 91成人国产综合久久精品蜜月| 欧美综合在线91| 超碰综合97在线| 欧美色青| 欧美精品一区二区少妇免费A片| 日本视频一区二区三区| 水野优香在线观看| 一本大道综合伊人精品热热| 亚洲脚交| 伊人网青青| 91精品啪在线观看国产城中村| 中文字幕黄色片| 91红杏| 亚洲好色人妻| Sekablack无码一区| 欧美成人黄网色网站| 屌逼麻豆| 夜夜国自区| 张柏芝国产一区在线观看| 日本无码1| 欧美乱色| 欧美综合传媒| 大二网站亚洲| 中文字幕成人| 老女人碰碰在线碰碰视频| 97操综合| 日韩成人在线性爱视频| 免费视频在线观看啊啊啊啊啊| 日韩精品人妻中文字有码在线| 国产成人精品一区| 日韩熟女操逼| 精品熟女一区=区三区| 日韩丨制服丨中文|在线| 亚洲美女av无码| 熟女视频久久| 人妻激情在线视频| 日韩免费大片一级播放| 欧洲免费一区二| 亚洲欧美综合网 | 久久人妻精品| 色婷婷A V一二三四区麻豆综合| TS人妖另类精品视频系列| 日韩一级特黄av毛片| 精品大久久| 久久内射| 殴美,日韩国产伦精品| 久久是精品| 黑人操一区二区| 九九九久久久久| 亚洲九九九| 99热91| 国产精品久久久午夜夜伦鲁鲁| 精品久久久久久中文字幕三区| 日本女人操逼| 国产精品白丝AV| 99精品视频在线观看免费| 91色爽欧美| 国产自啪精品视频网站黑丝| 日韩一级特黄av毛片| 秋霞午夜视频一区二区| AV天堂国产| 欧洲小说色图视频另类| 老熟妇一区二区三区…| 欧美高潮| 日韩成人综合网| 99热在线只有精品| 五月丁香久久| 夜夜草天天| 欧美 青青草| а√天堂资源官网在线资源| 亚洲情色一区三区| 一区不卡在线观看av| 久久中出在线| 国产无马视频| 日日爽熟女| 婷婷五月天激情四射| 97视频在线观看免费高清| 五月婷婷色色| 超碰97久| 人妻精品综合中文字幕在线| 日本人妻伦在线中文字幕| 91电影色诱| 午夜美女福利视频| 97一本大道亚洲一区| 可能人人看人人摸| 午夜视频久久久| 五月天综合在线| 免费精品无码一级毛片牛牛影视| AV丝袜少妇| 无码WWW免费视频网站| 大香交| 爱爱动态120秒| 中文色综合| 激情情色五月天| 99爱视频| 午夜激情成人在线观看| 超碰97人人乐| 中文字幕av久久爽Av| 久久亚洲AV无码专区国产精品| 青青草在线视频美女| 91 在线亚洲| 成人精品一区二区91毛片不卡| 33044男人的天堂深夜备| 色哟哟的毛片| 美女操逼A A| 亚洲综人| 有码色中文字幕在线观看| 中文字幕aⅴ在线视频| 97超碰美女| 欧美亚洲美少妇一区二区| 中文字幕日本久久| 五月丁香六月综合缴清无码| 欧美激情黑人| 少妇人妻无码| 亚洲宅男天堂| 91爆操视频| 放黄片放3级黄片没穿衣服| 精彩久久中文| 99青青草国产视频| 91在线页| 六月婷婷综合| 蜜乳AV一区| 精品无码一区二区三区色欲| 精品大全99999| 超碰在线人妻不卡| 五月婷丁香| 欧美日韩国产色图在线| 夜夜操青青草| 伊人操你| 2024黄色视频| 欧美亚洲丝袜人妻制服中文99| se,,,亚洲欧美| 精品国产污一区二区三区| 人妻精品视频一区二区| 亚洲最新av无码成人精品区| 日本免费一级AAA大片器| 亚洲色人| 97视频在线免费观看| 又黄又硬又粗又长国产视频| 97精品网站| 久草热制服丝袜在线观看| 岛国小电影| 99re9在线| 丁香六月综合激情| 啊视频在线| 国产午夜无码片在线观看影视| 国产三级在线现体验区| 最新日本中文字幕| 97色网| 久九九九| 国产超碰欧美| 久久精品超碰| 草草草视频| 久久97视频| 中文字幕一区二区三区人妻不卡 | 99re6国产精品99re| 男人天堂日日夜夜| 嗯啊不要啊啊在线观看视频| 国产av高清版| 毛片17S| 蜜桃精品一区二区三区ww| 国产精品女同| 青青草伊人久久| 日韩ab网| 欧美熟女丝袜| 九九热精品视频六| 久久区| 婷婷激情丁香| 亚洲精品人体| 91操操操操| 伊人一级免费黄片| 十八岁啪啪视频免费看| 丰满少妇乱子伦精品无| 欧美综合区| 97人人干| 91新在线欧美| 日韩精品影视| 亚洲小说视频| 玖玖爱在线视频免费观看| 亚洲AV无码翔田千里网站| 亚洲精品国产专区在线观看| 天天干夜夜操网| 99精品久久| 亚洲18禁| 亚洲中文字幕一区| 91n处女在线观看| 一区二区中文| 欧美另类精品xxxx| 99精品在线| 99re久久| 97精品视频免费| 久久精品中文| 91色插| 曰韩操B| 婷婷五月天成人网| 日韩有码一区三区| 中文久久96| 亚洲欧美碰碰| 日本一区二区三区免费观看| 91精品久久综合熟女| 国模一区二区三区| 91n免费处女| 中文乱码字幕观看| 亚洲暴力强奸AV| 97天天搞在线| 九九这里只有精品| 激情 欧美 亚洲 小说| 黄片www.| 超碰久久草| 91欧美网| 午夜久久无码1000合集| 亚洲成人久久美女| 一及黄久一点| 久久久555| 精品久久久久av影院| 亚洲无套久久嗯嗯| 色欧美色交综合| 亚洲国产91精品一区二区久久| 91站街按摩店老熟女熟女| 欧美白嫩在线放| 91天美免费| ..日韩av毛片精品久久久| 深夜啪啪啪视频免费| 久久久久921| 97精品视频| 五月丁香色婷婷| 偷拍色图| 一类无码操逼视频| 久久天天躁日日躁狠狠躁 | 97操碰| 福利大香蕉| 秋霞一级鲁丝片A片| 91亚洲黑人| 亚洲欧美校园| 激情小说日韩无码| 大香蕉伊人色偷偷在线| 玖色av| 岛国激情视频在线观看| 夜夜爽妓女| 亚洲牲交| 欧美性天天影视| 亚洲精品91| 色婷婷网| 国产激情在线| 91九色在线| 超碰97综合在线| 人妻系列无码专区中文有码 | 最新av网站在线观看| 中文字幕日产av人| 97超碰久久| 精品丰满人妻一区二区三区免费观| 超碰9 7女人| 黄片不用下载在线观看| 亚洲人妻久久久| 亚洲女毛多水多21P| 99蜜桃臀久久久欧美精品网站| 一个国产在线综合网站| 97超碰巨乳| 日韩三A大片在线观看| 天天影视色香色欲| 91肉丝| 91在线免费观看处女| 神马久久午夜| 中文字幕制服欧美久久一区| 久久久久久久强迫| 人人插人人搞人人操| 日本二区不卡| 视频二区美腿丝袜制服人妻欧美| 91亚州| 亚洲视频,小说| 在线无码网站| 激情婷婷丁香网| 成片免费播放| 国产精品久久久吖| 亚洲熟久久| 日韩性爱电影一区| 天久久久噜噜噜久久国产精品爽爽| 亚洲,欧美,春色,另类| 尤物av网站免费在线播放| 欧美熟妇人体| 特级丰满少妇一级AAAA爱毛片| 狠狠97| 国产成人久久久精品免费AV| 欧美人妻制服| 97国产亚洲中文在线| 日本欧美一区二区三区免费| 日韩欧视频| 久久久久久久少妇| 可以在线观看AV的网站| 欧美姓爱综合网| 久久AV无码1区2区3区| 国产一区二区a毛片| 少妇色欲综合网2| 麻豆久久久久久久久丝袜| 99re公开精品免费视频| 2017天天插| 亚洲AV无码天美传媒一区| 成人麻豆av电影网站| 日本中文字幕熟妇| 亚洲欧洲偷拍一区| 国产精品成人福利在线| 日韩色| 99蜜桃臀久久久欧美精品网站| 婷婷激情综合网| 福利视频合集| 亚洲九九视频在线观看| 亚洲最大黄网| 国产精品青草综合久久| 一级岛国大片| 国产精品视屏| 久久99干一本高清| 日韩久久艹| 99精品视频在线观看| 女同女同恋久久级三级| 久久久久久九| 天美久久久久| 九九九九欧美| 91中文字幕制服丝袜免费视频| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 色妺妺在线视频| 成人性爱全视频观看| 黄色操人| 亚洲欧美综合| 亚洲中文字幕一区二区| 欧美激情亚洲情色| 久久最新视频免费观看| 艳美熟妇先锋一二三区| 中文字幕亚洲在线一区| 亚洲欧美中文一区二区三| 少妇精品| 欧美第五页| 欧美激情久| 欧美性,色九九| 女色视频社区| 日韩AV片| 啪啪91| 国产小视频91| 人妻一区二区三区视频| 神马久久久久久| 天躁夜夜躁2021| 四虎影视国产精品| 我爱操| 五月天AV资源| 日韩97视频| 99爱爱| 中文字幕文字幕无码一区二区三区电影99 | 探花视频免费观看国产专区| 亚洲成人av电影在线| 久久九精品| m欧洲一级午老| 亚洲男人的天堂AV| 91夜夜蜜桃臀1区2区3区| 国产精品对白内射| 国产人伦精品一区二区三区| 天天爽爽爽爽| 国产原创精品| 欧美永久激情一区二区| 亚欧中文字幕在线视频| 91挑色欧美| 在免费jIzzjIzz在线视频| 人妻人人做人人澡人人爽欧美一区| 人妻 丝袜美腿 中文字幕| wwwxxx日本爽| 亚洲国产精品无码AV在线| 欧美碰碰综合色| 高清无码人妻久久久一区二区三区aⅴ| 蜜臀AV一区二区三区| 欧美91变态| 中文乱码字字幕在线第5页| 大香蕉色欲AV| 欧美韩国你懂得在线 | 综合色拍| 久久影视二区三区行押| 国产suv一区二区三区6| 亚洲精品九九九| 秋霞一级鲁丝片A片| 亚洲综合另类小说色区亚洲成av人片在www | 不卡超碰护士AV在线免费播放| 男人的天堂成人的社区| 中国黑人三级片网站上区| 女人妻一区| 免费成人在线熟妇网| 一区超碰一区| 久久69| 中文字幕日韩精品久久| hd成人一区二区在线| 国产精品爽爽va在线观看98| 色牛牛AV| 素人美腿视频网站| 天天操女人| 天操老女人| 国模91| 欧美天天射| 又粗又长又爽在线观看| 婷婷91| 亚洲蜜臀懂色| 五月天九九日国产精品一区二区三区| 中文字幕在线免费观看| 又粗又长又爽在线观看| 国产精品久久久久久片| 日韩乱码Av| AV中文字幕剧情1区2区3| 国产一区二区在线看| 国产白丝精品在线观看| 欧美日韩另类在线播放| 亚洲精品国产熟女久久久久久| 人人爱人人操人人性| 99啪啪视频| 欧亚第一综合网| 91狠狠| 少妇3P性爱自拍| 欧美夜夜狠| 欧美色图亚洲色图成人在在线| 亚洲素人网| 精品免费囯产一区二区三区| 亚洲色婷婷久久91| 婷婷91| 岛国AV一区二区电影| 亚洲AV色图一区| 黄色香蕉视频网站一区| 人人操肉肉| 日韩精品在线放| 91国产美女丝袜足交精品视频 | 伦激情人妻另类人妻| 色婷久久| 综合一区中亚洲国产成人综合精品| 1024亚洲中文字幕久在线看片你懂的| 精品人人| 91丝袜熟女| 亚洲AV色图| 日韩一级成人毛片免费观看| 色色婷婷丁香| 亚洲aV性爱| 亚州综合AⅤ| 男人的天堂日韩| 97欧美综合| 精品传媒在线一区| 国产日韩欧美操逼视频| 一起草精品人妻| 少妇500双飞99| 免费超碰97久久| 人人操人人爽人人操人人| 久久天堂婷婷网| 欧美色图自拍| 思思热影视| 婷婷五月天网| 九九九国产| 久久久精品中文字幕爱豆| 青青国产精品在线| 亚洲丝袜少妇在线| 欧美日韩免费性爱| 韩国久久97| 青青草依人大香蕉| 91一起操| 一区二区首页| 97超碰磁| 99re这里只有精品3| 日韩成年人性爱视频| 九九九九久久久| 婷婷超| 色五月AV在线| 99久久com免费视频′| 中文在线久久字幕| 淫纸中9区| 91老熟女视频| 色欲天天综合网| 精品人妻少妇| 久久东京热成人| 久草免费在线一区二区| av日韩国产一区二区| 青草青青久久久久久国产| 综合色99| 国产60页| 午夜男女爽爽爽影院视频| 日日夜夜天天| 日本欧美亚洲高清在线看| 国产操伦| 极品色社| 婷婷综合网站| 91性片| 欧美激情色婷婷花野真衣一区二区| 日本人妻最新在线中| 99热精品在线观看| 人人妻人射| 欧美日韩久久精品爱爱| 操久久久久| 伊人一区二区三区| 夜夜 中文视频rt| 91啪9色| 欧美自拍网| 日韩电影天堂视频一区二区| 丁香五月婷婷基地| 久久久久九九九| 99精品高潮| 人夜夜精品网站香蕉嫩草| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 天天综合91入口| 亚洲成人在线播放| 熟妇人妻精品一区二区| 一二三啪啪专区| 亚洲a色| 欧洲精品二区| 中文字幕在线观看视频www| 久久亚洲日韩国产欧| 久久发布国产伦子伦精品| 天天色黄色影院天天操| 九九久久国产精品| 久操不卡视频| 91人人操| 中文无码一二三区| 日韩丰满熟妇| 久久超碰免费的| 99热在线播放| 亚洲人妻在线一区| 亚洲啪啪啪啪视香蕉| 日本日皮视频逼| 操操操五月天婷婷丁香影院| 五月天人妻综合| 少妇与黑人高潮在线| 激情久久久| 日韩精品 欧美激情| 日本蜜桃| 中文字幕视频一区视频二区| 亚洲AV无码国产成人| 久久二| 欧美综合网1| 97在线免费看| 午夜福利av电影在线| 国产精品一区二区麻豆| 啊啊啊啊二区好大| 欧美日韩国产中文超碰| 综合五月婷婷| 91成人久久| av网站在线观看了| 国产精品久久久吖| 超碰诱惑| 国产91丝袜 在线播放| 亚洲国产剧情少妇激情| 成人一级性爱| V A在线| 四虎在线观看视频| 欧美日韩狠狠爱| 九九热午夜欧亚国产视频| 久久夜嗨| 色噜噜人妻av 中文字幕| AAAAAAAAA黄片| 久久精品国产亚洲妲己影视| 亚洲 欧美 日本 国内 首页| 热久久无毒不卡| 人妻人人澡人人爽人人| 97人人干| 国产亚洲美日韩Aⅴ中文字幕无码成人| 一区二区三区成人| 农村妇女精品一区二区| 久久极品一区二区| 九九碰九九爱97超碰| 99热婷婷| 家庭乱伦网站国产| 日韩免费福利在线观看| 日本亚洲嫩草影院啪啪| 亚洲色图欧美色图在线播放| 久久美国毛片| 欧美爱国产综合、| 亚洲图片91| 欧美成人亚洲精品| 久久的网站啊啊啊啊啊| 99久久综合| 99re这里只有精品3| 日韩av三四区| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 少妇 综合| 亚洲国产第一页综合视频| 99无码视频| 香蕉人人操tv| 性91| 国产精品内射婷婷一级二| 超碰欧美COM| 国产91 丝袜在线播放 | 一区在线观看中文字幕| 欧美一区二区三区四区综合| 91视频综合网| 嗯嗯嗯啊啊在线观看| 人妻激情视频| 日本高清一本二本免费不卡| 猛猛干| 熟妇色99| 欧美日韩午夜精品一区二区三区| 欧美激情另类一区二区| 黑人综合网| 激情综合 婷婷五月 红杏| 综合大香蕉美。| 超碰色大香蕉| 13小男生GAY自慰脱裤子| www.伪伪| 亚洲AV成人无码一二三久久| 午夜无码精品免费看性色| 天天做天天爱夜夜爽毛片试看| 熟妇的味道HD中文字幕| 成人av毛片在线观看| 日韩熟女乱伦中出| 99re免费视频精品全部| 欧美影院一区二区三区| 69少妇一区二区| 精品人妻美妇91job| 无码欧美有限公司| 亚洲欧美精品一区天堂久久 | 色五月激情AV在线| 超碰在线974| 91国产丝袜美女| 久久夜嗨| 五月天人妻综合| 偷拍在线观看视频| 啊啊啊啊好爽好舒服一区二区易域| 无码操逼视频一下| 亚洲国产成人精品久久久国产成人一区二区 | 黄色性爱网网| 日韩福利电影网| 欧美性爱十八禁| 玖玖蜜臀资源网| 一级黄碟在线观看| 欧美一区二区| 嗯啊抽插大香蕉网页| AV无码久久久精品| 91九色在线| 精品区9| 美女91色黄18| 99999精品| 天天天天天干夜夜夜夜夜操| 色吧综合网| 91在线丝袜视频| 蜜臀一二三区| 天天躁日日躁狠狠躁| 国产精品人人爽人人做可爱福利| 激情专区综合| 天综合网欧美| 久久青青草在线视频| 十八禁成人网站在线观看| 久久超碰亚洲人| 中国的操老妇女| 亚洲精品电影| 翔田千里无码中出中文字幕| 热久久91婷婷| 91亚洲综合在线| 成人免费福利网站国产| 丰满人妻一区二区三区四 | 亚洲欧美在线观看2021| 亚洲男人的天堂AV| 草草电影院| 性爱网站一区二区| 老鸭窝亚洲毛片| 97久久国产精品女不卡| 国产精品久久久久久久久久梁医生| 91色婷婷综合久久中文字幕二区| 区二区亚洲婷| 91美女精品| 婷婷五月天激情网| 国产精品第一页国产大屁股视频免费区i| 欧色网址| 无码WWW免费视频网站| 97人亚洲综合字幕| 亚洲自拍青操视频| 国产肏逼网站| 亚洲熟妇自偷自拍另欧美| 96久久久精品| 大香蕉欧美| 男人的天堂不卡一区二区 | 久久久18禁| 熟人人妻少妇精品久久| 最新日韩黄片| 亚洲美女黄色| 午夜福利成人免费视频| 少妇高潮99p| 久久精品一区二区三区蜜桃臀| 国产中文字幕曰本毛片| 青青草吊丝| 久久伊人最新网址视频| 97欧美精品综合| 欧美性爱18观看| 久久性爱视频| 97爱爱| 亚洲aV性爱| 亚洲日韩东京热一区| 色黄色美女大长腿午夜视频| 岛国不卡超碰护士AV在线播放| 国产精品一二三在线看| 青青草玖玖爱| 欧美国产日韩高清在线| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 狠狠做深爱婷婷久久二区| 18禁免费视频| 亚洲欧洲无码一区夜| 秋霞视频一区二区| 夜夜青青无码影院| 亚洲欧洲网站免费观看| 亭亭在线资源| 亚洲精品视频在线播放| 国产精品久久| 自拍盗摄一区| 超碰美女97| 大奶啊啊好爽| 四虎884a| 久久黄片国产一区二区| 99re6在线视频精品免费完整版安卓版| 欧美片第一页| 色大师网站www永久网站视频| 国产二区三区免费视频| 青青草狠狠撸| 日韩精品黄片免费观看| 无马一区二区| 久久99网站| 五月天伊人网| 六月婷婷综合| 久久精品国产亚洲粉嫩| 人干人人人操人人摸| 操b网站亚洲无码| 一级成人性爱| 青青草色AV| 久久婷婷五月天| 91视频综合在线| 国产极品99热在线播放69| 亚州欧美综合| 另类图片五月| 精品偷拍13p欧美dodk视频| 综合欧美亚洲| 1204av韩国| 操逼操逼逼操操逼91| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 乱操乱伦AV| 殴美性色a级欧美| 人人插人人摸人人| 99re6在线视频精品免费完整版安卓版| 欧美人妻精品一区二区| 亚洲熟妇白浆无码AV| 欧美亚涩| 国产 丝袜 欧美中文 另类| 亚洲一区日韩精品| 亚洲日韩精品一区二区| 蜜桃久久综合视频| 一区操逼日比视频| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 国产兽交视频在线播放| 久久鲁夜| 天天干少妇| 精久久久| 亚洲五区熟女| 2010男人的天堂| 亚洲爽图| 成人热久久精品| 日韩免费簧片| 情侣操 逼视频99| 一区二区三区精品视频| 欧美九九九| 久久精品国产精品| 男人下部插入女人下部| 激情专区综合| 夜夜嗨免费视频| 久久超碰久| 97啪啪| www.av在线观看| 免费观看的黄色的网站| 久久欧美激情| 五月婷婷色| 亚洲欧美一区二区三区一猛片| www.伪伪| 无码免费在线观看黄色片| 亚洲乱熟女一区二区| 日韩电影天堂视频二区三区| 91原创在线观看| 最近2019中文字幕国语免费版| 日本成人A片免费看| 看免费一级在线播放毛片| 欧美中字不卡| 免费的av网| 欧美亚性天堂| 淫荡少妇免费| 一区二区三区探花在线观看| 日韩精品免费高清视频在线| 黄色在线网站| 国产成人 综合亚洲 天堂| 日韩无码服务区| 热久久无毒不卡| 东北女人| 欧美精品久久96人妻无码| 青青操在线亚洲视频观看欧美在线| 日韩AV一区二区三区三州三州| 97精品国产97久久久| www.夜夜| 亚洲色图在线视频| 97干色天堂| 色五月婷婷在线| 欧美日不卡| 青青国产精品在线| 大香蕉手机视频| 婷婷五月成人| 殴美大黄片| 操逼网站视频漫画国产| a网站免费观看| 色五月婷婷五月天| 精品人妻一区二区三区-国产精品| 99re6久热只有精品6在线直播| 免费黄色A片| 强奸乱伦AV网站| 日韩中文字幕视频| 精品一区96| 99热啪啪| 97精品国产97久久久久久户外免费| 中美日韩毛片| 亚洲中文制服诱惑| 日本岛国黄色网址| 免费观看啪视频| 色欧美天天| 五月丁香综合| 江都AV在线| 亚洲男人的天堂网| 91色伦综合| www.人人摸在线视频| 九九九九九九综合| 二级毛片| 欧美天天综合网| 在线欧美69V免费观看视频|