国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

USB Host 驅(qū)動(dòng) CDC 設(shè)備:枚舉、端點(diǎn)綁定與穩(wěn)定收發(fā)實(shí)戰(zhàn)

USB Host 驅(qū)動(dòng) CDC 設(shè)備:枚舉、端點(diǎn)綁定與穩(wěn)定收發(fā)實(shí)戰(zhàn) 簡介這份資料面向嵌入式開發(fā)者與USB協(xié)議學(xué)習(xí)者聚焦MCU通過USB Host直接識(shí)別并驅(qū)動(dòng)CDC類設(shè)備這一實(shí)際難題幫助打破傳統(tǒng)RS232接口的技術(shù)壁壘。內(nèi)容圍繞USB協(xié)議分析展開涵蓋插入檢測(cè)、NRZI編碼、SYNC同步域、SOP/EOP包結(jié)構(gòu)、PID類型、幀號(hào)與微幀機(jī)制并結(jié)合CH32V307主板實(shí)驗(yàn)平臺(tái)演示以0地址獲取設(shè)備描述符、設(shè)置地址、獲取配置與接口端點(diǎn)描述符直至建立雙向通信的完整流程。資源包為1個(gè)PDF文件大小4.12MB內(nèi)容系統(tǒng)完整便于按章節(jié)查閱。目前已有2654人學(xué)習(xí)下載適合希望掌握USB Host通信流程、理解協(xié)議細(xì)節(jié)并應(yīng)用于串口轉(zhuǎn)USB設(shè)備對(duì)接的開發(fā)者參考。1. USB Host 驅(qū)動(dòng) CDC 設(shè)備從枚舉失敗到穩(wěn)定收發(fā)的那條路把一塊帶 USB Host 接口的開發(fā)板插上 4G 模組、串口轉(zhuǎn) USB 芯片或者某類 CDC 類設(shè)備最常遇到的不是「完全沒反應(yīng)」而是枚舉能過、設(shè)備也認(rèn)到了但數(shù)據(jù)就是收不全、發(fā)不出或者跑幾分鐘就掉線。這類問題幾乎都卡在 USB Host 驅(qū)動(dòng) CDC 設(shè)備這條鏈路上主機(jī)控制器要正確枚舉CDC 的通信類接口和數(shù)據(jù)類接口要分別綁定端點(diǎn)要配對(duì)緩沖區(qū)要夠大還要處理 CDC 特有的控制請(qǐng)求。標(biāo)題里說的「超詳細(xì)資料」真正有價(jià)值的部分不是協(xié)議手冊(cè)的復(fù)述而是把枚舉、描述符解析、端點(diǎn)配置、數(shù)據(jù)收發(fā)這幾步拆到能照著改代碼的程度。這篇面向正在用 USB Host 接 CDC 設(shè)備、被枚舉或收發(fā)卡住的嵌入式開發(fā)者從最小可跑通的路徑講到參數(shù)邊界和踩坑記錄。2. 先搞懂 CDC 設(shè)備在 USB Host 眼里長什么樣2.1 CDC 不是「一個(gè)串口」而是兩類接口的組合很多人第一次寫 USB Host 驅(qū)動(dòng) CDC 設(shè)備腦子里默認(rèn)它就是一個(gè)串口打開、讀、寫。但 USB 協(xié)議層面CDCCommunication Device Class設(shè)備在描述符里通常暴露兩個(gè)接口一個(gè)通信類接口Communication Class Interface負(fù)責(zé)下發(fā)控制命令、上報(bào)線路狀態(tài)一個(gè)數(shù)據(jù)類接口Data Class Interface負(fù)責(zé)真正的數(shù)據(jù)搬運(yùn)。通信類接口一般用中斷端點(diǎn)做事件通知數(shù)據(jù)類接口用批量端點(diǎn)做收發(fā)。這意味著主機(jī)側(cè)驅(qū)動(dòng)要維護(hù)的不是一個(gè)句柄而是兩套接口狀態(tài)。枚舉階段如果只綁定了數(shù)據(jù)接口控制請(qǐng)求就沒人處理設(shè)備可能一直停在未配置狀態(tài)如果只綁定了通信接口數(shù)據(jù)端點(diǎn)沒打開讀寫自然全失敗。常見做法是在解析配置描述符時(shí)按接口逐個(gè)判斷 bInterfaceClass0x02 是通信類0x0A 是數(shù)據(jù)類分別記錄接口號(hào)、端點(diǎn)地址和端點(diǎn)屬性最后把兩者關(guān)聯(lián)到同一個(gè)設(shè)備實(shí)例上。判斷一個(gè) CDC 設(shè)備是否被正確識(shí)別可以看主機(jī)側(cè)打印的接口信息。下面是一段典型的描述符解析輸出結(jié)構(gòu)用偽代碼表示字段含義/* 遍歷配置描述符中的每個(gè)接口 */ for (each interface in config_desc) { if (iface.bInterfaceClass 0x02) { /* 通信類接口通常含一個(gè)中斷 IN 端點(diǎn) */ comm_iface_num iface.bInterfaceNumber; for (each ep in iface) { if (ep.bmAttributes 0x03) { /* 中斷端點(diǎn) */ comm_ep_addr ep.bEndpointAddress; comm_ep_maxpacket ep.wMaxPacketSize; } } } else if (iface.bInterfaceClass 0x0A) { /* 數(shù)據(jù)類接口通常含批量 IN 和批量 OUT 各一個(gè) */ data_iface_num iface.bInterfaceNumber; for (each ep in iface) { if (ep.bmAttributes 0x02) { /* 批量端點(diǎn) */ if (ep.bEndpointAddress 0x80) data_in_ep ep.bEndpointAddress; else data_out_ep ep.bEndpointAddress; } } } }這段邏輯的關(guān)鍵在于不要假設(shè)端點(diǎn)順序固定。不同廠商的 CDC 實(shí)現(xiàn)里批量 IN 和 OUT 的地址順序可能相反中斷端點(diǎn)的最大包長也可能是 8、16 或 64 字節(jié)。把端點(diǎn)地址和最大包長都存下來后面配置主機(jī)控制器通道時(shí)直接用不要寫死。2.2 枚舉階段最容易忽略的三個(gè)描述符字段USB Host 驅(qū)動(dòng) CDC 設(shè)備時(shí)枚舉能不能過往往取決于三個(gè)字段有沒有被正確處理。第一個(gè)是 bNumInterfaces。復(fù)合 CDC 設(shè)備可能不止兩個(gè)接口有的還帶音頻控制接口或廠商自定義接口。如果主機(jī)側(cè)只按固定數(shù)量解析多出來的接口會(huì)被跳過設(shè)備配置不完整。第二個(gè)是 bmAttributes 里的自供電和遠(yuǎn)程喚醒位。CDC 設(shè)備如果是自供電主機(jī)側(cè)配置時(shí)不能按總線供電去限制電流遠(yuǎn)程喚醒位如果置位主機(jī)要允許設(shè)備發(fā)起喚醒否則設(shè)備休眠后主機(jī)收不到事件。第三個(gè)是 wMaxPacketSize。批量端點(diǎn)的最大包長常見是 64 字節(jié)但全速設(shè)備和高速設(shè)備不同高速批量端點(diǎn)最大可以到 512 字節(jié)。主機(jī)控制器通道配置時(shí)如果按 64 去設(shè)實(shí)際設(shè)備發(fā) 512 字節(jié)的包就會(huì)被截?cái)嗷驁?bào)錯(cuò)。提示枚舉失敗時(shí)先抓 USB 總線上的描述符原始數(shù)據(jù)逐字節(jié)對(duì)照不要只看主機(jī)側(cè)打印的「枚舉成功」或「枚舉失敗」。2.3 主機(jī)控制器通道分配端點(diǎn)不是越多越好USB Host 控制器一般有固定的通道數(shù)比如 8 個(gè)或 16 個(gè)。CDC 設(shè)備至少占用三個(gè)通道一個(gè)中斷 IN、一個(gè)批量 IN、一個(gè)批量 OUT。如果主機(jī)上還接了其他 USB 設(shè)備通道可能不夠用。常見做法是枚舉完成后先釋放掉控制端點(diǎn)占用的通道再按優(yōu)先級(jí)分配中斷端點(diǎn)和批量端點(diǎn)。中斷端點(diǎn)用于接收線路狀態(tài)變化優(yōu)先級(jí)可以高一些批量端點(diǎn)用于數(shù)據(jù)搬運(yùn)可以共用通道或者按方向分開。如果通道實(shí)在不夠可以考慮把中斷端點(diǎn)輪詢關(guān)掉只靠批量端點(diǎn)收發(fā)但這樣會(huì)丟失串口斷線、振鈴等事件。通道分配失敗時(shí)主機(jī)側(cè)通常會(huì)報(bào)「管道打開失敗」或「端點(diǎn)配置錯(cuò)誤」。這時(shí)候不要急著改端點(diǎn)地址先確認(rèn)主機(jī)控制器還剩幾個(gè)空閑通道以及每個(gè)通道支持的最大包長和傳輸類型。3. 用最小工程跑通 CDC 枚舉與端點(diǎn)綁定3.1 從復(fù)位到設(shè)置配置主機(jī)側(cè)必須發(fā)的幾條命令USB Host 驅(qū)動(dòng) CDC 設(shè)備的枚舉流程和普通 USB 設(shè)備一致但每一步的返回值都要檢查。下面是一段主機(jī)側(cè)枚舉的偽代碼按順序執(zhí)行/* 1. 復(fù)位設(shè)備等待至少 10ms */ usb_host_port_reset(port); delay_ms(10); /* 2. 發(fā)送 GET_DESCRIPTOR 讀設(shè)備描述符先讀 8 字節(jié)拿 bMaxPacketSize0 */ usb_control_transfer(dev, 0x80, 0x06, 0x0100, 0, buf8, 8); ep0_max_packet buf8[7]; /* 3. 重新讀完整設(shè)備描述符長度 18 字節(jié) */ usb_control_transfer(dev, 0x80, 0x06, 0x0100, 0, dev_desc, 18); /* 4. 設(shè)置設(shè)備地址地址從 1 開始分配 */ usb_control_transfer(dev, 0x00, 0x05, new_addr, 0, NULL, 0); delay_ms(2); /* 5. 讀配置描述符先讀 9 字節(jié)拿 wTotalLength */ usb_control_transfer(dev, 0x80, 0x06, 0x0200, 0, cfg9, 9); total_len cfg9[2] | (cfg9[3] 8); /* 6. 讀完整配置描述符 */ usb_control_transfer(dev, 0x80, 0x06, 0x0200, 0, cfg_buf, total_len); /* 7. 設(shè)置配置通常選配置 1 */ usb_control_transfer(dev, 0x00, 0x09, 1, 0, NULL, 0);每一步的返回值都要判斷。第 2 步如果讀不到 8 字節(jié)說明設(shè)備根本沒響應(yīng)檢查供電和 D 上拉。第 4 步設(shè)置地址后后續(xù)所有通信都要用新地址。第 7 步設(shè)置配置如果返回 STALL說明配置值不對(duì)或者設(shè)備不支持該配置。3.2 解析配置描述符并綁定 CDC 端點(diǎn)拿到完整配置描述符后按接口和端點(diǎn)逐個(gè)解析。下面這段代碼把通信類接口和數(shù)據(jù)類接口的端點(diǎn)信息存到結(jié)構(gòu)體里typedef struct { uint8_t comm_iface; uint8_t comm_ep; uint16_t comm_ep_size; uint8_t data_iface; uint8_t data_in_ep; uint16_t data_in_ep_size; uint8_t data_out_ep; uint16_t data_out_ep_size; } cdc_endpoints_t; void parse_cdc_config(uint8_t *cfg, uint16_t len, cdc_endpoints_t *out) { uint16_t pos 0; uint8_t cur_iface_class 0; uint8_t cur_iface_num 0; while (pos len) { uint8_t bLength cfg[pos]; uint8_t bType cfg[pos 1]; if (bLength 0) break; if (bType 0x04) { /* INTERFACE */ cur_iface_num cfg[pos 2]; cur_iface_class cfg[pos 5]; } else if (bType 0x05) { /* ENDPOINT */ uint8_t ep_addr cfg[pos 2]; uint8_t ep_attr cfg[pos 3]; uint16_t ep_size cfg[pos 4] | (cfg[pos 5] 8); if (cur_iface_class 0x02 (ep_attr 0x03) 0x03) { out-comm_iface cur_iface_num; out-comm_ep ep_addr; out-comm_ep_size ep_size; } else if (cur_iface_class 0x0A (ep_attr 0x03) 0x02) { out-data_iface cur_iface_num; if (ep_addr 0x80) { out-data_in_ep ep_addr; out-data_in_ep_size ep_size; } else { out-data_out_ep ep_addr; out-data_out_ep_size ep_size; } } } pos bLength; } }參數(shù)說明cfg 是完整配置描述符緩沖區(qū)len 是 wTotalLength。bLength 為 0 表示描述符異常直接退出。接口描述符的 bInterfaceClass 在偏移 5端點(diǎn)描述符的 bmAttributes 在偏移 3wMaxPacketSize 在偏移 4 和 5。解析完后comm_ep 和 data_in_ep、data_out_ep 都應(yīng)該有值否則說明設(shè)備描述符不符合 CDC 規(guī)范。3.3 打開管道并做第一次批量收發(fā)端點(diǎn)綁定完成后主機(jī)控制器要為每個(gè)端點(diǎn)打開管道。下面以批量 OUT 發(fā)送為例/* 打開批量 OUT 管道 */ pipe_out usb_host_pipe_open(dev, data_out_ep, PIPE_TYPE_BULK, data_out_ep_size); if (pipe_out 0) { printf(open bulk out pipe failed\n); return -1; } /* 發(fā)送數(shù)據(jù)長度不超過端點(diǎn)最大包長的整數(shù)倍 */ uint8_t send_buf[64] {0x01, 0x02, 0x03}; int ret usb_host_pipe_write(pipe_out, send_buf, sizeof(send_buf), 1000); if (ret ! sizeof(send_buf)) { printf(bulk out write failed, ret%d\n, ret); }批量 IN 接收類似但要注意CDC 數(shù)據(jù)類接口的批量 IN 端點(diǎn)可能一直有數(shù)據(jù)也可能只在設(shè)備有數(shù)據(jù)時(shí)才返回。主機(jī)側(cè)接收時(shí)要設(shè)置合理的超時(shí)不要死等。如果設(shè)備發(fā)來的數(shù)據(jù)長度不是最大包長的整數(shù)倍說明一個(gè)短包結(jié)束可以認(rèn)為本次傳輸完成。第一次收發(fā)建議先發(fā)一條已知命令比如 CDC 的 SET_CONTROL_LINE_STATE看設(shè)備是否響應(yīng)。如果批量 OUT 寫成功但設(shè)備沒反應(yīng)檢查通信類接口的控制請(qǐng)求有沒有發(fā)對(duì)。4. CDC 控制請(qǐng)求與數(shù)據(jù)通道的配合細(xì)節(jié)4.1 SET_LINE_CODING 和 SET_CONTROL_LINE_STATE 怎么發(fā)CDC 設(shè)備的數(shù)據(jù)通道能不能正常工作取決于通信類接口上的幾個(gè)控制請(qǐng)求。最常見的是 SET_LINE_CODING設(shè)置波特率、數(shù)據(jù)位、停止位、校驗(yàn)位和 SET_CONTROL_LINE_STATE設(shè)置 DTR、RTS。這兩個(gè)請(qǐng)求都通過控制端點(diǎn)發(fā)送目標(biāo)接口是通信類接口。下面是一段發(fā)送 SET_LINE_CODING 的代碼/* SET_LINE_CODING: bmRequestType0x21, bRequest0x20 */ uint8_t line_coding[7]; line_coding[0] 0x80; /* dwDTERate 低字節(jié)115200 */ line_coding[1] 0xC2; line_coding[2] 0x01; line_coding[3] 0x00; line_coding[4] 0x00; /* 1 停止位 */ line_coding[5] 0x00; /* 無校驗(yàn) */ line_coding[6] 0x08; /* 8 數(shù)據(jù)位 */ usb_control_transfer(dev, 0x21, 0x20, 0, comm_iface, line_coding, 7);參數(shù)說明bmRequestType 的 0x21 表示主機(jī)到設(shè)備、類請(qǐng)求、接口接收者。wValue 為 0wIndex 是通信類接口號(hào)。line_coding 的 7 個(gè)字節(jié)按小端序排列波特率 115200 對(duì)應(yīng) 0x0001C200。SET_CONTROL_LINE_STATE 更簡單wValue 的 bit0 是 DTRbit1 是 RTS/* 拉高 DTR 和 RTS */ usb_control_transfer(dev, 0x21, 0x22, 0x03, comm_iface, NULL, 0);如果設(shè)備要求先拉 DTR 才能收發(fā)數(shù)據(jù)這一步不能省。很多 CDC 模組在 DTR 為低時(shí)會(huì)忽略批量數(shù)據(jù)。4.2 中斷端點(diǎn)上報(bào)的線路狀態(tài)怎么處理通信類接口的中斷 IN 端點(diǎn)會(huì)周期性上報(bào)線路狀態(tài)比如串口斷線、振鈴、載波檢測(cè)。主機(jī)側(cè)要開一個(gè)接收任務(wù)或者輪詢這個(gè)端點(diǎn)否則設(shè)備可能認(rèn)為主機(jī)不關(guān)心狀態(tài)而停止上報(bào)。中斷端點(diǎn)的數(shù)據(jù)通常是 2 字節(jié)或更多第一個(gè)字節(jié)是狀態(tài)位圖。下面是一段輪詢處理uint8_t status_buf[16]; int n usb_host_pipe_read(comm_pipe, status_buf, sizeof(status_buf), 100); if (n 2) { if (status_buf[0] 0x01) { printf(cdc: carrier detected\n); } if (status_buf[0] 0x02) { printf(cdc: dcd changed\n); } }輪詢超時(shí)不要設(shè)太長100ms 左右比較合適。如果一直讀不到數(shù)據(jù)檢查中斷端點(diǎn)的輪詢間隔和主機(jī)控制器是否支持中斷傳輸。4.3 批量收發(fā)緩沖區(qū)大小與流控CDC 數(shù)據(jù)類接口的批量端點(diǎn)沒有硬件流控主機(jī)側(cè)必須自己控制發(fā)送節(jié)奏。如果主機(jī)發(fā)得太快設(shè)備緩沖區(qū)滿了批量 OUT 會(huì)返回 NAK主機(jī)控制器會(huì)重試但重試次數(shù)有限超時(shí)后就報(bào)錯(cuò)。常見做法是發(fā)送緩沖區(qū)不要超過端點(diǎn)最大包長的整數(shù)倍每次發(fā)送后等設(shè)備返回 ACK 或者等一個(gè)短延時(shí)。接收緩沖區(qū)要足夠大至少能放下一次最大傳輸?shù)臄?shù)據(jù)。如果設(shè)備發(fā)來的數(shù)據(jù)超過緩沖區(qū)多出來的部分會(huì)丟失。下面是一個(gè)帶流控的發(fā)送函數(shù)int cdc_send(uint8_t *data, int len) { int sent 0; while (sent len) { int chunk len - sent; if (chunk data_out_ep_size) chunk data_out_ep_size; int ret usb_host_pipe_write(pipe_out, data sent, chunk, 500); if (ret ! chunk) { printf(cdc send failed at %d, ret%d\n, sent, ret); return -1; } sent chunk; delay_ms(1); /* 給設(shè)備一點(diǎn)處理時(shí)間 */ } return sent; }參數(shù)說明data_out_ep_size 是批量 OUT 端點(diǎn)的最大包長chunk 不能超過它。超時(shí) 500ms 是經(jīng)驗(yàn)值太短容易誤報(bào)太長會(huì)卡住上層。delay_ms(1) 是給設(shè)備緩沖區(qū)留出處理時(shí)間如果設(shè)備處理快可以去掉。5. 避坑CDC 驅(qū)動(dòng)調(diào)試中最容易翻車的五個(gè)點(diǎn)5.1 枚舉成功但批量端點(diǎn)打不開現(xiàn)象主機(jī)側(cè)打印「設(shè)備枚舉成功」但打開批量管道時(shí)返回失敗。原因配置描述符解析時(shí)把端點(diǎn)地址搞錯(cuò)了或者主機(jī)控制器通道不夠。還有一種可能是設(shè)備要求先發(fā) SET_CONFIGURATION 再發(fā) SET_INTERFACE但主機(jī)側(cè)只發(fā)了前者。解決打印解析出的端點(diǎn)地址和主機(jī)控制器剩余通道數(shù)逐字節(jié)對(duì)照配置描述符。如果通道不夠先關(guān)掉不用的端點(diǎn)。5.2 批量 OUT 寫成功但設(shè)備沒反應(yīng)現(xiàn)象usb_host_pipe_write 返回寫入長度但設(shè)備端收不到數(shù)據(jù)。原因CDC 設(shè)備的 DTR 沒拉高或者 SET_LINE_CODING 沒發(fā)。有些設(shè)備在收到 SET_CONTROL_LINE_STATE 之前會(huì)忽略批量數(shù)據(jù)。解決在打開批量管道后先發(fā) SET_LINE_CODING 和 SET_CONTROL_LINE_STATE再發(fā)數(shù)據(jù)。如果設(shè)備有狀態(tài)上報(bào)觀察中斷端點(diǎn)有沒有返回。5.3 接收數(shù)據(jù)斷斷續(xù)續(xù)或丟包現(xiàn)象批量 IN 能收到數(shù)據(jù)但偶爾丟幾個(gè)字節(jié)或者整包丟失。原因接收緩沖區(qū)太小或者主機(jī)側(cè)讀得太慢設(shè)備緩沖區(qū)溢出。也可能是中斷端點(diǎn)沒處理設(shè)備狀態(tài)異常。解決增大接收緩沖區(qū)至少是端點(diǎn)最大包長的 4 倍。提高接收任務(wù)優(yōu)先級(jí)或者用 DMA 搬運(yùn)。檢查中斷端點(diǎn)是否有斷線事件。5.4 跑幾分鐘后設(shè)備掉線現(xiàn)象初始收發(fā)正常運(yùn)行一段時(shí)間后設(shè)備從主機(jī)側(cè)消失。原因USB 線纜質(zhì)量差、供電不足或者主機(jī)側(cè)沒有處理掛起和恢復(fù)。CDC 設(shè)備如果進(jìn)入掛起主機(jī)沒有發(fā)恢復(fù)信號(hào)設(shè)備會(huì)掉線。解決檢查供電和線纜確保 VBUS 穩(wěn)定。在主機(jī)側(cè)實(shí)現(xiàn)掛起檢測(cè)和恢復(fù)流程或者關(guān)閉設(shè)備的遠(yuǎn)程喚醒讓主機(jī)定期發(fā) SOF 保持連接。5.5 控制請(qǐng)求返回 STALL現(xiàn)象發(fā) SET_LINE_CODING 或 SET_CONTROL_LINE_STATE 時(shí)返回 STALL。原因wIndex 填錯(cuò)了接口號(hào)或者設(shè)備不支持該請(qǐng)求。有些 CDC 設(shè)備只支持部分控制請(qǐng)求。解決確認(rèn) wIndex 是通信類接口號(hào)不是數(shù)據(jù)類接口號(hào)。如果設(shè)備確實(shí)不支持跳過該請(qǐng)求直接試數(shù)據(jù)收發(fā)。6. 用狀態(tài)機(jī)把 CDC 收發(fā)做成可復(fù)用的模塊6.1 把枚舉、配置、收發(fā)拆成四個(gè)狀態(tài)CDC 驅(qū)動(dòng)如果寫成一條直線調(diào)試時(shí)很難定位問題。我一般會(huì)把它拆成四個(gè)狀態(tài)IDLE、ENUMERATING、CONFIGURED、ERROR。每個(gè)狀態(tài)只做一件事狀態(tài)遷移條件明確。typedef enum { CDC_STATE_IDLE, CDC_STATE_ENUMERATING, CDC_STATE_CONFIGURED, CDC_STATE_ERROR } cdc_state_t; void cdc_task(void) { switch (state) { case CDC_STATE_IDLE: if (usb_device_connected()) { state CDC_STATE_ENUMERATING; } break; case CDC_STATE_ENUMERATING: if (cdc_enumerate() 0) { state CDC_STATE_CONFIGURED; } else { state CDC_STATE_ERROR; } break; case CDC_STATE_CONFIGURED: cdc_poll(); if (usb_device_disconnected()) { state CDC_STATE_IDLE; } break; case CDC_STATE_ERROR: cdc_cleanup(); state CDC_STATE_IDLE; break; } }參數(shù)說明cdc_enumerate 內(nèi)部完成復(fù)位、讀描述符、設(shè)置配置、打開管道。cdc_poll 負(fù)責(zé)中斷端點(diǎn)輪詢和批量數(shù)據(jù)搬運(yùn)。狀態(tài)機(jī)的好處是掉線后能自動(dòng)回到 IDLE 重新枚舉不用重啟整個(gè)系統(tǒng)。6.2 用環(huán)形緩沖區(qū)解耦接收和業(yè)務(wù)處理批量 IN 收到的數(shù)據(jù)不要直接在中斷里處理放到環(huán)形緩沖區(qū)業(yè)務(wù)任務(wù)從緩沖區(qū)讀。這樣接收不會(huì)因?yàn)闃I(yè)務(wù)處理慢而丟包。#define CDC_RX_BUF_SIZE 1024 static uint8_t rx_buf[CDC_RX_BUF_SIZE]; static volatile int rx_head 0, rx_tail 0; void cdc_rx_push(uint8_t *data, int len) { for (int i 0; i len; i) { int next (rx_head 1) % CDC_RX_BUF_SIZE; if (next rx_tail) { /* 緩沖區(qū)滿丟棄最舊數(shù)據(jù) */ rx_tail (rx_tail 1) % CDC_RX_BUF_SIZE; } rx_buf[rx_head] data[i]; rx_head next; } } int cdc_rx_pop(uint8_t *out, int max_len) { int n 0; while (n max_len rx_tail ! rx_head) { out[n] rx_buf[rx_tail]; rx_tail (rx_tail 1) % CDC_RX_BUF_SIZE; } return n; }參數(shù)說明CDC_RX_BUF_SIZE 根據(jù)業(yè)務(wù)數(shù)據(jù)量調(diào)整一般 1024 或 2048 夠用。rx_head 和 rx_tail 用 volatile 修飾因?yàn)榭赡茉谥袛嗪腿蝿?wù)兩個(gè)上下文里訪問。緩沖區(qū)滿時(shí)丟棄最舊數(shù)據(jù)保證新數(shù)據(jù)能進(jìn)來。6.3 驗(yàn)證方法用回環(huán)測(cè)試確認(rèn)鏈路完整CDC 驅(qū)動(dòng)寫完后最直接的驗(yàn)證是回環(huán)測(cè)試主機(jī)發(fā)一串?dāng)?shù)據(jù)設(shè)備收到后原樣返回。如果返回的數(shù)據(jù)和發(fā)送的一致說明枚舉、配置、收發(fā)、控制請(qǐng)求都對(duì)了。void cdc_loopback_test(void) { uint8_t tx[32], rx[32]; for (int i 0; i sizeof(tx); i) tx[i] i; cdc_send(tx, sizeof(tx)); delay_ms(100); int n cdc_rx_pop(rx, sizeof(rx)); if (n sizeof(tx) memcmp(tx, rx, n) 0) { printf(cdc loopback ok\n); } else { printf(cdc loopback failed, n%d\n, n); } }回環(huán)測(cè)試通過后再逐步加大數(shù)據(jù)量和縮短間隔觀察多久會(huì)丟包。如果跑 10 分鐘不丟基本可以認(rèn)為鏈路穩(wěn)定。6.4 一個(gè)參數(shù)表CDC 驅(qū)動(dòng)常用配置項(xiàng)配置項(xiàng)常見值說明批量端點(diǎn)最大包長64 / 512全速 64高速 512中斷端點(diǎn)輪詢間隔16 / 32 ms根據(jù)設(shè)備描述符設(shè)置批量 OUT 超時(shí)500 ms太短誤報(bào)太長卡住接收緩沖區(qū)大小1024 / 2048按業(yè)務(wù)數(shù)據(jù)量調(diào)整控制請(qǐng)求超時(shí)1000 msSET_LINE_CODING 等狀態(tài)機(jī)輪詢周期10 ms檢測(cè)掉線和狀態(tài)變化這張表里的值不是固定的要根據(jù)具體設(shè)備和主機(jī)控制器調(diào)整。比如高速設(shè)備批量端點(diǎn)最大包長是 512如果按 64 配吞吐量會(huì)掉到八分之一。6.5 我踩過的一個(gè)坑忽略端點(diǎn)最大包長導(dǎo)致吞吐量上不去早期做 CDC 驅(qū)動(dòng)時(shí)批量端點(diǎn)最大包長我直接寫死 64設(shè)備是高速的實(shí)際支持 512。結(jié)果收發(fā)都正常但吞吐量只有理論值的十分之一。查了很久才發(fā)現(xiàn)是主機(jī)控制器通道配置時(shí)按 64 設(shè)的每次傳輸都被拆成多個(gè)小包。后來改成從描述符里讀 wMaxPacketSize吞吐量直接上來了。這個(gè)坑的教訓(xùn)是USB 描述符里的每個(gè)字段都有用不要憑經(jīng)驗(yàn)寫死。尤其是端點(diǎn)最大包長、輪詢間隔、接口數(shù)量這些不同設(shè)備差異很大。調(diào)試時(shí)先把描述符完整打印出來逐字段確認(rèn)比事后猜要快得多。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
大香蕉一人| 亚洲熟女乱色一区二区三区| 四虎视频在线观看| 少妇同性| 亚洲美女高潮喷水视频| 黄在线| 中日无幕一二三四区| 骚人妻少妇视频| 精品亚洲成人免费在线| 欧美99热| 国产美女激情| 一级一性爱免费视频| 久久精品国产亚洲AV嘿嘿| 久久综合久久综合人久久夜精品| 欧美—性—交—色| 97人人草| 一块操欧美性爱| 91美女在线看| 日本熟女免费視颖| 亚洲色香| 日本三级网页| 精品国产乱码久久久影院| 亚洲成a人在线观看久| 一区中文字幕二区日韩| 91久久免费视频互動交流| 116美女午夜| 欧美综合综合| 青青操97| 射丝袜高跟鞋99| 国产丝袜一区二区三区| 九九久久九九久久| 高清不卡视频| 欧美视频一区二区三区| 51一区二区三区| 国产sv美女内射| 国产精品网址| AAA久久| 亚洲成人无码影院| 亚洲av青草久久一区二区| 另类老少妇| 久久ww| 国产乱子伦一区二区三区在线观看| 人妻爽爽啪视频| 新视频sss国产| 黑人精品成人一区二区三区| 桑老女人九区| 3571色综合一区二区二区| 日韩色| 五月综合婷婷久久网站| 久久精品人妻一区二区三区| 色哟哟av网址| 国产三级日产三级韩国三级| 亚洲男人天堂手机版| 久久久无码国精品无码三区三区| 五十路熟女人妻一区二区三区四区五| 日产中文字幕2020| 男人的天堂 在线一区| 91色女| 久久精品国产亚洲妲己影视| 婷婷五月天久久精品视频一区二区三区| 97久久久| 日韩精品影视| 爱爱动态120秒| 精品无码一区二区三区色欲| 色阁阁AV综合网| A片 AV一级在线播放观看免费| 亚洲精品乱码久久久久久蜜桃麻豆| 人看人人摸人人操| 天天综合,91入口| 亚洲有码 视频一区| 一本色道久久天天射天天干| 天美国产精品| 日本午夜久久电影| 人摸人人操人| 人人操人人干网页| 欧美爱爱97| 鸥美精品一区二区久久婷婷| 日本有码久久| 日韩精品中文字幕一| 992大香蕉| 我中文字幕6区| 婷婷啪啪| 91人妻素女| 国产在线激情| 秋霞一级鲁丝片A片| 色爽——AV| 亚洲……91| 97人人操人人摸| 亚州91| 99热18这里只有精品| 老熟女91av| 欧美一级A片在线看视频性色| 欧美日韩国产成人高清| 亚洲国产精品成人久久蜜臀| 東南亚性呦成人伦理资源在线视频| 青青草黑寡妇男人天堂| 九九九综合精品| 欧美操人| 日韩欧美国产高清视频| 久久久久亚洲Av无码专区老牛影视| 欧美72网页| 1024亚洲中文字幕久在线看片你懂的 | 亚洲日本天堂| 97chaopenrihan| 麻豆一区在线| 欧美国产欧美在线观看| 一二三卡欧美日韩人妻免费精品| 东京热激情视频一二三区| 日本五十路熟女一区二区| 中国AV美女| 98久久| 外国免费性情大片| 久热伊人| AV中文字幕三四五| 91欧| 蜜臀久久99精品久久久久久成人小说 | 操死我了嗯嗯嗯| 天天摸夜夜摸| 草b在线 | 欧美狠狠| 亲子敌伦对白在线播放| 沈阳熟女高潮对白视频| 久久永久无码人妻视频| 激情五月天中文字幕色| 一区操逼| av网页一区二区三区| 国产粉嫩蜜臀av一区二区三区| 青青草中日韩在线| 熟女91网| 日韩免费av片高清无码| 久久精品中文字幕观看| 欧美顶级黄片AAAAA在线免费看| 囯产操逼片| 国产女性无套 免费观看| 精品区国产区一区二区三区| 亚洲少妇色| 欧美制服网站美腿丝袜| 麻豆国产第一| 怡红院亚洲怡春院av| 天天干夜夜鈤| 亚洲图片激情小说| 26uuu性| 日本一级婬片试看三分钟| 97精品一区二区视频在线观看| 日本999精品| 蜜桃久久久久久久久久久久| 蜜乳av一区二区三区四区不卡| 91激情网| 久久精品电影| 久久久久女教师免费一区| 亚洲精品日日夜夜52| 久久香蕉综合一本到3atv| 国产操操日韩三级黄| 精品在线观看视频在线| 熟女字幕| 亚洲情色婷婷五月天| 激情文学欧美| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 99啪啪| 久久精品老司| 五十路成人在线视频二区三区| 精品97久久| 国产精品一区二区手机看片| 无码精品蜜桃一区二区三区ww| 色五月网址| 超碰在线974| 日韩欧美资源| 秋霞免费无码视频日韩A片| 视频黄色国产一级| 天堂蜜桃无码视频一区二区| 日本欧美m v精品网站加| 久久久91福利姬| 小说区 图片区色 综合区| 色婷婷视频| 中文字幕一区av| 97超碰色屌| 欧美丝袜中文字幕07在线| 欧美日韩性爱电影在线| 天天影视色香色欲| 欧美青青草视频| 天美传媒婬乱| 日韩一级二级| 亚洲AV不卡在线观看尤物| 2017天天插| 91在线超高颜值国产| 亚洲 综合 欧美| 欧美激情亚洲情色| 久久综合国产精品国产| 欧美三级免费伊人| 亚洲日韩电影| 91精品丝袜久久久久久| 台湾佬中文娱乐网久久久久久久久久com| 高潮精品| 日本精品国产视频| 精品久久久久久无码| 日本在线一二| 97碰碰色| 激情婷婷丁香| 中文字幕丝袜| 殴美综合色88| 天啪| 素人播放一区| 色五月AV在线| 乱论91| 亚洲免费97免费| 操碰97| 色丁香五月婷婷| 久久仑合| 国产精品女生av| 久久国产熟女影院| 天堂伊人久久| 激情熟女12P| 国产精品久久发布| 国内偷拍精品一区二区| 亚洲中文字幕乱码无码一区二区| www国产精品| 日韩激情毛片一级久久久| 再深点灬舒服灬太大了好硬好爽| 男女啊啊啊| 国产精品大香蕉| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 日韩成人大片一区二区| 天天日骚逼熟女| 破苞ⅩXXX性无码动漫无码| 欧美影音在线| 在线国产一区二区av| 国产女人9999| 日韩av影片在线观看| 超碰天天久久79| 亚洲无码超碰免费| 208天天久久九九九| 激情综合婷婷| 欧洲天天在线| 天天碰操中国年青熟妇| 亚洲无码免费看| 国产AV超爽| 欧洲Au麻豆| 色婷婷综合网| 成人免费性爱视视| 九九国产| 日本片日本片祼观看网站在线看中文版网页在线看 | 国产美女口爆吞精视频| 伊人 俄罗斯 a v| 深夜国产一区二区三区在线看| 操老熟女AV| 亚洲操操| 日韩一区二区三区四区五区| 无套后入双马尾| 国产精品情侣啪啪| 欧美综合天天| 日韩精品一区,二区 九九...老司机| 不卡啪啪视频| 精品久久久av无码免费| 91精品婷婷国产综合久久| 婷婷色综合| 人妻偷拍一区二区三区| 精品人妻丰满熟妇一区二区三| 91在线视频免费中出| 99re国产精品视频| 天天久久| 在线观看啊啊啊啊啊| 混色激情av| 亚洲欧美中文一区二区三| 91精产一区二区三区| 78m啪啪啪| 欧美另类精品xxxx| Aa东京男人的天堂| 日本日皮视频逼| 日本视频在线中文字幕| 亚洲欧美999| 香港成人一级视频在线青青草| 黄色av一区二区在线| 国产又黄又粗又猛大片| 91色插| 欧美视频激情久久久久久| 婷婷在线播放| 免费精品福利在线观看| 欧美操逼熟女| av一区二区三区不卡| 日本久久久久久久久久| 欲射影视| 中文字幕免费看| 婷婷色婷婷| 一本精品日本在线视频精品| 9Ⅰ老熟女| 色五月av| 色综合天天爱去电影网| 婷婷五月天色网| 欧美青青视频| 麻豆婷婷成人一二三| 欧美十八禁在线看| 国产人妖的免费的视频| 午夜国产乱伦视频| 亚洲美女av无码| 97亚洲综合电影| 日语五十路和六十路亚洲国产精品| 青青草无码视频| 2019AV天堂| 欧美色97| 九色97| 九久久精品| 国产精品一区二区三| 国产精品国产精品国产| 岛国毛片手机在线观看| 人人干人人搞人人摸| 亚州少妇| 久久精品人妻一区二区三区| 日韩中文字幕视频在线观看| 色在线69堂| 在线有码中文字幕| 丰满精品人妻少妇久久字幕| 免费?级毛片无码?∨蜜芽试看| 亚洲欧美另类图片| 国产熟女精品一区二区| 亚洲av性爱电影| 思思久热在线精品66| 亚洲色狠| 色情成人五月天| 屁屁影院一区二区三区国产 | av草草在线电影| 精品女同一区| 最新制服中文第一页| 九九九九精| 久久久久久久九九九九| 男人的天堂午夜av| 91快色色色色色| 国产伦乱91| 丁香六月激情| 亚洲蜜臀懂色| 国产精品夜夜夜| 久久精品超碰| site:sinbotex.com| 易易A毛视频| 超碰色老头| 韩美日操逼| 超碰97伊人| 黑人免费福利视频| 国产路线专区| 啪啪啪精品| 亚洲精品无码成人久久久99| 成人性爱高清视频免费看| 91欧美综合在线| 91制服丝袜中文字幕| 凹凸精品熟女在线观看| 精品毛片av一区二区| 操逼操逼逼操操逼91| 日韩欧美国产高清视频| 青青草日逼视频| 欧洲精品在线播放| 大香蕉人妻久久| 亚洲情色在线| 凸凹视频在线观看| 大香蕉伊利av| 极品色电影院| 青娱乐啪啪视频| 不卡中文字幕aⅴ在线| 囯产精品久久久久久久久久梁医生 | 嗯啊不要啊在线| 91夜色chaopeng| 五月天精品| 久96热在线观看视频| 青草青草久热| 97天天操天天干| 天天欧美| 福利伊人玖玖国产| 国产美女激情| 97极品无码| 亚洲日韩美国人妻| 久久婷婷五月| 午夜天堂精品久久久久91| 亚洲射综合网| 91丝袜在线播放| 综合免费无码中文| 久操高青| 欧美人妻少妇| 一区二区三区精品黑丝白丝酒店对鸡| 伊人久久亚洲中文字幕不卡| 性色AV蜜色av色欲av| 国产日韩欧美亚洲精品95| 亚洲伊人a线观看视频| 九九av| 五月天黄色av| 伊人骚琪琪亚洲天堂网站| 日本人人操人人操| 91九九九馒头| 最新无码国产| 久久久久久久 九九九九九九九 | 国产精品 久久久精品一牛| 国产后入精品| 国产精品一区二区麻豆| 9999免费精彩视频| 欧美第二页午夜| 91九色蝌蚪在线观看| 久久久久一本一区二区青青蜜月| 久久久性少妇| www成人啪啪18秘 免费| 亚洲黄色网址| 国产探花精品在线| 中出后入| 大香网站| 欧美色图小说综合| 亚洲乱码国产乱码精网站| 欧美色日本| 无码区蜜乳| 狠狠夜色午夜久久综合在线| 嫩草美女久久| 亚洲成人色情五月天丁香花| 精品少妇人妻av久久免费| 成人女人国产| 日逼视频日本| a啊啊啊啊啊啊啊啊一区二区| 2024人人操人人摸| 91精品国产91熟女| 丁香婷婷大香蕉| 97超碰欧美手机| 国产精品天美传媒| 日韩性爱啪啪视频| 中文字幕日韩精品一区二区三区| 久操网无码在线| 欧美激情黑人| 五月天综合网| 亚洲无码国产探花在线观看| 精品小视频在线| 国模不卡| 亚洲黄色电影| 嫩草 人人网精品| 人人操人人摸人人看人人干| 欧美色图片色哟哟| 中文字幕av色| 亚洲色欲天天天堂色欲网女| 国产AV天美传媒一区二区三区 | 中英熟女操女| 欧美最大综合网| 色色色色综合网| 久久超碰网| 蜜臀久久久| 精品一二三区久久AAA片| 精品免费成人久久| 国产超碰在线| 国产精品国产自产高清AV| 青青草在线视频欧美| 日本潮催一卡操| 欧美色道啊| 久久丁香五月婷婷| 99最新日韩偷拍视频| 男人天堂一区二区| 久久精品国产亚洲AV清纯| 亚拍在线| 欧美精品丝袜久久久中文字幕| 亚洲 欧美 日韩 国产一区二区 | 无遮挡h肉动漫在线观看| 91丝袜| 60秒免费小视频| 婷婷中文字幕| 91社区拍啪人妻| 亚洲天天在线| 日本久久999| 97中文天堂| 成人午夜小视频手机在线看| 又粗又长又大国产不卡| 99热这里只有精品1| 嗯嗯啊啊亚欧精品| 国产11页| 久久99热这里只频精品6学生| 婷婷在线视频在线观看| 五十路一区无码| 色老久久| 天堂麻豆天美| 亚洲欧洲小说图片视频 | 少妇久久久久久| 果冻传媒A片一二三区| 91亚洲不卡一区| 激情丁香五月婷婷| 91c色| 日韩激情无码影院| 天天看天天日天天操| 五月天精品| 欧美成人国产精品| 青娱乐av在线| 熟女被操视频网址| 凸凹视频在线观看| 岛国AB视频| 欧美乱欲| 欧美资源| 国产久久久久久| 中国91AV| 中文字幕精品三级久久久| 波多野结衣一级视频| 中国国产精品一区视频| www.yw尤物| 乱人伦 国语对白:视频直接看| 天美精品一区二区三区四区在线观看| 丝袜综合网| 一级二级三级黑人无码| 欧美色性爱| 亚洲蜜臀懂色| 97碰碰色| 天天操福利视频综合网站| 我爱操| 色综91| av九九| 日本一区三级韩国| 欧美日韩国产黄色片| 久久久熟妇熟女国产| 97色插| 91大神电影天堂| 美女啊啊啊啊pc| 99热97| 日韩一区二区熟女| 大香伊人在线一区| 久久9999 | 色婷婷丁香五月天| 中文字幕天天天天天| 国产区在线| 好湿好紧视频| 91精品人妻电影| 亚洲精品第一| 五月婷婷综合网| 国产丝袜欧美在线视频| 好吊色青靑草| 亚洲国产精品成人久久蜜臀| 亚洲天堂男人天堂网| 亚洲 暴爽 AV人人爽日日碰| AA级电影三区| 无码操逼网| 黄色高清无码无码破解免费暗网| 99热婷婷| 最新一二三区视频| 日本九九久久99播| 日韩AV熟女乱伦| 波多野结衣之双飞调教在线播放 | 国产女乱淫真高清免费视频| 强奸a片网| 亚洲色堂免费视频| 熟妇高潮精品一区二区三区下载| 97亚洲综合在线| 激情在线青青操| 精品福利| 操www| 伊人久久大香大香线蕉中文| 国产专区路线| 超碰色美女| 国产丝袜美女在线一区| 亚洲精品日韩国产欧美| 男人下部插入女人下部 | 97色伦欧美| 亚洲男人天堂2013| 超碰97丝袜| 久久人人爽爽人人爽人人片αV| 婷婷五月综合在线| 一本久久精品中文字| 色九久| 国产91啪| 久操视频在线| 午夜福利激情在线视频| 91欧美www| 精品一区二区麻豆| 日韩人妻少妇 一区二区三区| 欧美色www亚洲国产阿娇要播| 色吧5亚洲| 亚洲91射| 激情小说成人日本无码一| 尤物一级在线免费观看| 色色色欧美| 天堂а√在线最新版在线| 国产精品国产| 4141514逼喷水三级片| 97啪啪| 97在线观看免费视频| 亚洲黄日韩无码专区| 超碰地址久久| 黄片直播三级黄片两女一男| 婷婷五月天小说| 伊人久久大香线综合无码| 淫荡网址| 五月天婷婷色| 一区,二区,三区视频| 亚洲精品九九九| 天天爱天天操| 人妻少妇久久中文| 很很热性爱视频| 91AV天堂| 国产精品美女在线一区| 人人噜夜夜操| 強姦亂倫a| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲精品无码久久AV| 亚洲色性情三级| 欧差乱伦二三| 狠狠操一区二区| 国产精品原创巨作?v网站| 超碰在线在公开超碰在线在公开| 啊啊啊骚| 日本不卡高清视频| 黄色一区二区秘书性感| 欧美激情五月天| 人人操,人人液| 2019男人的天堂| 久久久麻豆精品| 天天综合麻豆视频| 久久久无码av精| 五月婷婷性爱| 午夜激情床戏激情| 亚洲国产青青| 91丝袜美腿片| 久久精品国产亚洲AV清纯| 国产精品96久久久久久| 欧美 日韩第一性色| 使劲用力艹少妇视频一区二区| 亚洲欧美自拍偷拍| 玖玖视频在线资源一区二区三区| 综合色好色| 日本123区操B视频| 九九性爱网| 人妻人人澡人人爽人人| 亚洲无码99| 久久性爱视频| 精品视频一二三中文| 91青视频| 天天懆天天日| 女上位精品在线| 五月婷婷六月激情| 91麻豆一二三区| 亚洲天天综合| 精品一区二区三区四区女 | 国产AV人人 夜夜人人澡| 激情四射婷婷四五月天| 久久亚洲天天做| 欧美,日韩综合久久| 欧美日日人人天天| 殴美牲| 波多野结衣AV无码一区| 九九九草| 91九久| 亚洲无码一二三区| 玖草在线视频| 人人天天干干| 欧美婷婷五月天| 曰韩香蕉97| 久久精品店| 久久熟女嫩草成人片免费| 大香蕉手机在线视频| 亚州熟妇精品| 精品人妻一区二区视频| 蜜臀网址在线| 自拍视频大全亚洲专媒视频/一区二区三区 | 久插综合| 日韩人妻免费精品| 91成人18| 亚洲的天堂网| 91色碰| 1769精品一区二区三区| 色九久| 夜夜夜夜爽| 亚洲美欧999| 高清无码国产亚洲| 新久久AV| 黑人猛交| 人妻少妇精品久久久久久| 91欧美成人色站| 久久精品美女一区| 国产 亚洲 一二三四| 中文一区在线日| 夜夜爽33333| 色亚州人久干视频在线观看免费版| 亚洲美乱| 在线99热| 国产精品久久久久久久黄无码| 99re免费| 欧美成人精品欧美一级乱黄一区二…| 国产欧美后入| 中文字幕乱码人妻一区二区三区,99精品| 熟女视频久久| 久久精品国产72国产精品福利 | 欧美午夜精品久久久久久超碰| 1769一区| 网友自拍第一页| 亚洲欧美97√| 好湿好紧视频| 一级免费精品| 亚洲日本大香蕉1| 东京热不卡视频| 亚洲自拍一区夜夜操| 香蕉一区二区三区在线视频| 亚洲日本加勒比在线| 五月丁香| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲色图欧美色图在线播放| 亚洲精品久久一区二区三区蜜桃臀| 久久中日麻豆| 色播五月婷婷| 欧亚乱色熟女一区二区| 国产三级多多影院2022国产AA一级毛片无码| 91av熟女人妻| 囯产精品久久久久久久久久梁医生 | 五月婷婷深深爱| 色五月首页| 可以免费观看的AV| 色97| 日本三级日本三级三级人妇四虎| 久久久久国产亚洲一区欧美色图日韩| 九色 人妻 大香蕉| 97国产亚洲中文在线| 欧美狠狠操| 夜精品久无码| 伊人96在线| 91少妇高潮| 无码78| 日本 情色 1区| 色香欲影| 国产主播福利| 日韩精品在线观看观看| 欧洲一级性爱视频在线观看| 婷婷色播婷婷| 99久久这里只有精品| 日日日啊啊啊| 亚洲五区熟女| 亚洲欧洲无码一区夜| 神马九九九| 97伦乱| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 色偷偷超碰亚洲| 97AV在线免费观看| 加勒比99999| 日韩免费中文字幕视频| 免费观看的黄色的网站| 日本高清_区二区三区| 97久久精品亚洲| 国产精品无码av在线| 黄色片,com| 亚洲天堂性爱| 欧美狠狠弄| 天美麻花大全视频| 久久免费老司机精品| 校园春色 男人天堂 | 日日碰狠狠添天天爽超| 久久黄黄| 欧美精品三区| 操逼无码操逼| 岛国1区2区3区在线观看| 午夜120视频在线观看| 久久人妻视频| 啊啊啊在线看| 三级片网站在线播放| 新视频sss国产| 亚洲激情视频| 狠狠中文字幕| 91国产精品在线看| 久偷拍欧美日韩三区| 97亚洲色图| 亚洲精品国产熟女| 开心激情站| 国产日韩欧美| 国产高清自拍视频| 静品嫩模一区二区| 抽插爽| 色97干| 国产在线视频二区| 加勒比大香蕉视频在线| 成人欧美日超碰| 情色图区| 伊人超碰97| 久操视频资源站公开| 伊人久久国产免费观看视频| 国内毛片四区| 国产精品自拍欧美在线| 久艹伊人精品综合在线| 天天亚洲| 国产91啪| 亚洲青色欧美| 久久无码一区二区二三区性色| 伊人青青一区成人视频在线观看区| 国产精品老熟女一区二区| 高清国产性猛交xxxx乱大交| 中文字幕三四区| 黄色交缠性感爆操91国产精品免费一区二区三区 | 美国aaaaa一级黄片| 天美AV片| 午夜舔阴达高潮视频免费看| 自拍视频大全亚洲专媒视频/一区二区三区| 小日子操bb在线看| 精品999一区二区| 欧美精品久久| 人人妻人人操人人乐| 亚洲综合色男人网| 亚洲综合色图欧美| 欧美日综合| 91狠狠狠| 久久ww| 九九九九九九综合| 国产AV精久久| 狠狠爱夜夜干| 日本五十路熟女一区二区| 亚洲精品一区二区免费在线观看| 91成人高清在线观看| 熟啊v色欧美热| 欧美大香蕉久| 欧美白嫩在线放| 欧美探花网| 欧美91久久久久| 日韩不卡毛片Av免费高清| 久久人人爽av亚洲精品天堂桃色| 2021久久国产综合精品青草| 在线情色电影 91大| 久久毛卡| 九九五月天| 欧美激情综合| 国产精品小视频一区二区三区| 色嗨嗨在线| 天天影视网综合少妇| 热99re69精品8在线播放| 囯产操逼片| 久久伊人东京热| 一级免费啪啪片| 久久免费9| 蜜色网色哟哟| 97在线免费| 一区二区三区男女操逼黄色小电影| 美女黄网| 少妇三P| 亚洲黄色a级片| 国产日韩怡红院| 亚洲色图超碰在线| 俄罗斯一区二区视频在线观看 | 日本高清视频在线观看黄已三辽| 99熟女| 国产黄色剧情影片麻豆免费播放| 丝袜无码a片| 国产99热| 国产精品一区午夜福利| 国产精品自产拍在线观看社区| 婷婷99狠狠| 懂色Av| 91爱看| 欧美Aⅴ| 在线精品福利免费播放| 久久精品国产Aⅴ| 大香蕉伊人一区在线观看| 东京热一区二区中文字幕| 欧美A√综合网| 97视频在线免费观看| 91nbbbbbb| 91人妻Pr| 思思热在线视频免费| 99久久免费看精品国产一区| 啊啊啊久久久视频| 97aiaiai| 色婷婷狠狠| 强奸抽插av| 人人操人人摸人| 99re在线精品78| 国产无马在线| 美女写真| 欧美日韩制服| 一级久久性爱视频| 秋霞福利网| 另类 日韩 熟女| 亚洲第一黄色av网站| 俞拍自拍| 啊嗯好大视频在线观看| 5月婷婷6月六月丁香| 色哟哟综合| 99999久久精| 制服中出中文人人精品| 国产精品久久久视频| 国产精品盗摄 偷窥盗摄| 欧美热图99| 国产精品视频播放| 国产成人资源| 日韩国产中文字幕| 久久毛卡| 国产亚洲精品A在线观看下载| 中国和日本人色哪个不下载能放| 国产精品视频在线播放 | 亚洲色图A| 色偷综合| 天美传媒在线一区| 人妻插插人妻人| 亚洲少妇色| 亚洲激情av| 日本护士高潮| 成人a大片在线观看| 亚洲九九视频在线观看| 97超碰人人操人人操| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 园内精品自拍视频在线播放| 欧美亚洲首页| 99re这里| 加勒比人妻综合| 韩日巨乳美女免费视频在线观看| 97中文字幕色| 综合久欧洲| 色噜噜国产在线| 亚洲AV免费在线观看| 超碰超碰欧美| 麻豆天美国美国产| 精品久久久九九九孕妇| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 天天插天天射| 欧美精品四区| 黑操B| 欧亚免费视频| 久久毛卡| 密乳AV免费观看| 翔田千里爆乳巨臀无码| 91人妻少妇| 亚洲无线观看久久| 日韩电影在线观看网址| 蜜乳成人AV| 夜夜天天噜狠狠爱2021| www.大香| 国产免费永久精品无码| 大香蕉一线视频| 日韩综合成人免费视频| 青娱乐淫乱1314| 91国模| 国产精品成人AV片免费看网站| 亚洲欧洲成人在线电影| 欧美亚洲素人制服精品| 亚洲一曲日韩精品| 中文久久爆乳| 丁香激情网| 蜜色网色哟哟| 久久超碰大香蕉| 超碰69| 亚洲做性| 色爽——AV| 超碰色图| V A在线| 日韩激情啪啪啪| 亚洲女毛多水多21P| 色色婷| 麻豆天美传媒在线视频天堂| 日韩不卡网操逼中文字幕日韩| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 国语av最新自产拍在线观看| 久久97| 精品人妻一区二区免费蜜桃| 91草草草| 日韩大香蕉AV影片| 在线亚洲 欧美 日本专区 | 色哟哟精品1精品2| 亚洲性综合11| 性一级黄色录像片网站导航| 亚洲牲交| A级毛片在线看免费| 成人三一级一片aaa| 992这里有精品| 欧美色图 人妻| 久草这里只有精品 | 国产十八禁视频| 成人一区二区三区四区| 男人的天堂VA| 国产精品 久久久精品一牛| 亚洲精品一区二区三区在线播放| 欧美男人一区| 中美日韩毛片| 91色久| 91网站18在线| 欧成人精品一区二区三区| 十八禁啪啪视频| 欧洲一级性爱视频在线观看| 伊人五月天| 九九成人精品| 91情色在线| 思思热久久成人| 九九热免费国产视频婷婷伊人| 豆1无夜无码| 中文字幕精品探花视频| 久久久婷婷婷| 九九九九九九九九九九九九九九九女| 97色综合中文网| 秋霞免费AV| 亚洲 综合 欧美| 一二三卡欧美日韩人妻免费精品| 69天堂| 色欲天天综合网| 97硬碰| 亚洲深夜福利| 1769一区二区| 日本淫穴在线| 国产无码精品久久久久久| 麻豆国产免费影片| 国产情色在线| 色在线综合| 91在线限制级| 97干97色| 中文字幕精品资源在线| 久久日本熟女精品一区| 成人草草视频| 96久久精品一二三区色欲| 九九热五区| 亚洲精品一区二区日本| 色综合婷婷| 天天干夜夜操一区二区| 精品国产一区二区三区香蕉欧美| www老逼91| 超碰97伊人| 亚洲欧洲网站免费观看| 大香蕉国产中文自拍| 91人妻人人澡人人爽人人精品| 中文字幕日韩综合| 97在线免费视频观看| 婷婷伊人綜合中文字幕| 男人天堂 天天射| 色97干| 91亚州日韩高清| 69精品| 五月天春色激情网| 88xx成人精品视频| 欧美超碰9798| 欧美高清18A片| 欧美 综合| 内射老妇BBWX0C0CK| 91天美传媒精品| 91伊人久| 碰超人人在线一区二区三区| 一本色道综合久久欧美| 亚洲精品97在线| 亚洲97超碰| 色色色网站| 亚洲精品久久久久毛片A片拉屎 | 色哟哟-国产专区| 情趣丝袜无码操逼视频| 日韩一区二区精品视频| 另类图片综合| 久久天天性久久伊人| 超碰成人人人爽人人爽| 欧美精品第四五页中文字幕在线观看| 午夜亚洲WWW湿好大| 伊人操操| 久久综合国产精品国产| 久欲AV| 丁香五月综合| 成人免费性爱视视| 精品人妻一区二区三区夜夜| 美中日韩无码| 激情黄色片在线观看| 国产精品96| AV污污污污| 91男人综合| 五月天婷婷综合网| 日韩一级欧美一级国产一级台湾| 精久久久91| 黄色网址在线免费观看| 九九热精品视频六| 午夜久久一区二区无码中出| 无码精品久久久久久亚洲| 国产精品高潮久久AV| 九月丁香综合网| 欧美姓爱综合网| 亚州乱码中文字幕综合久久久| 免费亚洲黄色视频在线观看| 91天美免费| 99999精品成人| 看日韩操逼| 农村少妇久久久久久久| 亚洲色欲天天人妻无码系列专区| 2017大香蕉| 丝袜综合| 懂色av色欲av蜜臀av| 91国产丝袜美女| 99热亚洲天堂| 操逼天美3区| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | WWW美腿丝袜香蕉中文| 亚州情色j区| 色狠狠 - 百度| 日韩射图| 色九月综合| 欧美性爱1080p| 97国产超碰| 玖玖超碰熟| 丝袜综合| 五月综合激情| 午夜影美女日鸡鸡天天视频国产| 九热中文字幕| 亚洲色综网| 亚洲精品天天影视综合网| 色五月综合| www.91理论| 中国熟女老妇仑乱一区二区三区| 精品丰满熟妇人妻一区| 久久久久久久久久久久黄色| 乱伦日本色图AⅤ| 日韩精品在线放| 美女高潮国产高清| 国产精品色| 98精品国产乱码久久久久久| 殴美,日韩国产伦精品| 欧美中出1| 日韩久久.一级黄色片| 午夜成人爽爽爽爽A片李冰冰| 老熟妇一区二区三区啪啪| 人妻夜夜爽天天爽麻豆三区网站| 日本在线激情一区二区三区 | 久久久久久久久久久久色网| 在线情色电影 91大| 欧美色图私拍91| 激情综合色| 人看人人摸人人操| 国产网红精品| 国产精品露脸在线观看| 九九九热| 色五月av| 国产强奸乱伦第1页| 91亚洲综合在线| 欧美亚洲在线| 好涩综合| 亚洲综合夜色| 青青草视频久久久久| 久久丁香五月婷婷| www.91久久| 看黄片视频免费| 在线国产一区二区av| 中文字幕日本久久| 曰韩成人免费视频| 另类 日韩 熟女| 成年人一级黄色毛片大全在线观看| 成年人性爱日韩| 强奸a片网| 色婷婷亚洲婷婷| 五月丁香啪啪啪| 天天爽天天爽| 久久一级无码精品毛片6| 色综合加勒比| 日韩亚洲欧美中文字幕| 日少妇视频| 激情综合网激情综合| 人妻另类 专区 欧美 制服| julia国产在线| 嗯嗯不要视频| 最近二区三区视频大全| 97色网| 波多野结衣之双飞调教在线播放| 五月情色天| 亚洲丨在线| 91精品人妻一品二品三品| 97超碰色情| 成人免费性爱视视| 国产极品粉嫩馒头一线天av| 日韩精品在线放| 亚洲天堂AV在线播放| 午夜精品久久久久久久久久蜜桃| 亚洲熟妇AV日韩熟妇在线| 久久九九网| 亚洲蜜乳av| 日韩精品9999| 超碰天天操| 欧美日韩亚洲天堂| 久久精品国产亚洲AV片多多| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 国产精品久久久久无码Av网曝门 | 天天躁狠狠躁av| 中文字幕一二三av| 中文字幕人妻丝袜乱一区三区| AV色图| 九九碰九九爱97超碰| 无码操逼网| 偷拍 亚洲|