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

ARTICLE DETAIL

資訊詳情

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

STM32F407VE硬接W5500:HAL庫(kù)驅(qū)動(dòng)移植與TCP通信實(shí)戰(zhàn)

STM32F407VE硬接W5500:HAL庫(kù)驅(qū)動(dòng)移植與TCP通信實(shí)戰(zhàn) 簡(jiǎn)介這是一份基于STM32F407VE的W5500以太網(wǎng)通信工程采用HAL庫(kù)并集成WIZnet最新驅(qū)動(dòng)面向嵌入式開(kāi)發(fā)者及物聯(lián)網(wǎng)、工業(yè)控制場(chǎng)景已配置好時(shí)鐘、GPIO、SPI、中斷與協(xié)議?;A(chǔ)可直接編譯運(yùn)行以驗(yàn)證TCP/UDP通信也可作為應(yīng)用起點(diǎn)。壓縮包共206個(gè)文件、約8.22MB以66個(gè)頭文件與46個(gè)C源文件為主體涵蓋uvprojx/uvoptx工程配置、ioc圖形化設(shè)置、hex/axf固件、sct鏈接腳本及清理編譯中間文件的bat腳本目錄按Hardware、Internet、W5500、Sys等模塊劃分并含utility.c/h工具函數(shù)與board_config.h硬件定義。另有README說(shuō)明、License授權(quán)、CMSIS與RTE組件管理及JLink調(diào)試配置已有40人學(xué)習(xí)適合需快速搭建W5500應(yīng)用、減少驅(qū)動(dòng)移植與工程配置成本的開(kāi)發(fā)者。1. 用STM32F407VE硬接W5500到底比其他方案省在哪如果你正在做一個(gè)需要聯(lián)網(wǎng)上報(bào)數(shù)據(jù)的設(shè)備比如工業(yè)采集器、智能網(wǎng)關(guān)或者遠(yuǎn)程控制板手里又恰好選中了STM32F407VE那么以太網(wǎng)通信大概率會(huì)在兩條路線之間糾結(jié)用LwIP軟件協(xié)議棧還是用W5500這種硬件協(xié)議棧芯片。F407VE本身不帶PHY要用內(nèi)部MAC就得外掛PHY芯片再配LwIP光回調(diào)、信號(hào)量、內(nèi)存池就能折騰掉一大半開(kāi)發(fā)周期而W5500把TCP/IP協(xié)議棧做進(jìn)了芯片內(nèi)部MCU端只需要通過(guò)HAL庫(kù)配一路SPI和幾個(gè)GPIO協(xié)議棧的收發(fā)、重傳、分片全交給硬件去干。這篇筆記講的就是這條落地路線用HAL庫(kù)把W5500官方最新驅(qū)動(dòng)跑在F407VE上從接線、CubeMX配置到驅(qū)動(dòng)移植和TCP收發(fā)再到那些最容易翻車的現(xiàn)場(chǎng)一次講清楚。適合手里有F407VE開(kāi)發(fā)板或自繪板、想快速把以太網(wǎng)跑進(jìn)量產(chǎn)節(jié)奏的工程師。2. W5500和STM32F407VE的連接方式與CubeMX配置SPI、復(fù)位、中斷三個(gè)關(guān)鍵點(diǎn)W5500對(duì)外接口很干凈一路SPI從機(jī)、一個(gè)片選、一個(gè)復(fù)位、一個(gè)中斷輸出。真正決定通信能不能穩(wěn)定的就這三組信號(hào)。這一章先講物理接線再講CubeMX里SPI1、復(fù)位腳和外部中斷的配置每一步都會(huì)說(shuō)清楚為什么這么設(shè)。2.1 引腳連接表五個(gè)信號(hào)一個(gè)都不能錯(cuò)常見(jiàn)做法是讓W(xué)5500掛在SPI1上因?yàn)镾PI1掛在APB2上時(shí)鐘源最高能到84MHz配置后實(shí)際SPI時(shí)鐘還有上限后續(xù)如果想把SPI時(shí)鐘提上去SPI1的裕量比SPI2和SPI3都大。下面這張表是我常用的一組引腳分配W5500信號(hào)W5500引腳STM32F407VE引腳說(shuō)明SCLKSCLKPA5 (SPI1_SCK)SPI時(shí)鐘空閑低電平MOSIMOSIPA7 (SPI1_MOSI)主機(jī)輸出接W5500的MOSIMISOMISOPA6 (SPI1_MISO)主機(jī)輸入接W5500的MISOSCSSCSnPA4片選低有效軟件控制RSTNRSTnPB0復(fù)位低有效普通推挽輸出INTNINTnPA0中斷輸出低有效下降沿觸發(fā)接線時(shí)有個(gè)容易忽略的點(diǎn)W5500的供電和IO電平都是3.3VF407VE的IO雖然部分引腳兼容5V但既然都是3.3V系統(tǒng)不要偷懶把W5500模塊插到5V供電的轉(zhuǎn)換座上。模塊上如果自帶電平轉(zhuǎn)換另說(shuō)裸芯片或最小系統(tǒng)板必須統(tǒng)一3.3V。另外SCSn和INTn這兩個(gè)腳在W5500內(nèi)部都有上拉但這不意味著可以不接。SCSn必須由MCU明確控制INTn必須進(jìn)MCU的外部中斷否則驅(qū)動(dòng)狀態(tài)更新只能靠輪詢實(shí)時(shí)性和CPU占用都吃虧。2.2 CubeMX里SPI1配置模式0、10MHz以內(nèi)、軟件片選在CubeMX里選擇STM32F407VE后先把SPI1打開(kāi)Mode設(shè)為Full-Duplex MasterNSS信號(hào)設(shè)為Disable片選完全交給普通GPIO控制。W5500的SPI時(shí)序支持模式0和模式3工程里絕大多數(shù)例程用模式0也就是CPOL0、CPHA0。如果配置成模式1或模式2讀出來(lái)的寄存器大概率是0xFF后面排查時(shí)會(huì)非常迷惑。SPI時(shí)鐘先別急著拉滿。W5500手冊(cè)上給的SCLK上限在不同參考資料里說(shuō)法不一致保險(xiǎn)的做法是先設(shè)到10MHz以內(nèi)跑通功能再一點(diǎn)點(diǎn)往上探。CubeMX里SPI1的波特率預(yù)設(shè)為10.5MHz84MHz除以8分頻這個(gè)值作為起步很合適。參數(shù)表如下配置項(xiàng)取值說(shuō)明ModeFull-Duplex Master全雙工主機(jī)NSSDisable軟件控制片選Data Size8 BitsW5500寄存器都是8位寬First BitMSB First與W5500幀格式一致CPOLHighNo設(shè)Low空閑時(shí)鐘為低CPHA1 Edge模式0第一個(gè)邊沿采樣Baud Rate84MHz / 8 10.5MHz調(diào)通后再提速有個(gè)隱藏坑點(diǎn)CubeMX生成代碼后SPI的片選引腳雖然在圖形界面里掛到了PA4但如果你勾選了硬件NSSSPI外設(shè)會(huì)在傳輸過(guò)程中自動(dòng)拉低NSS造成和軟件片選打架。最好把PA4配成普通推挽輸出初始化代碼里默認(rèn)輸出高電平片選的拉低和抬升全部在驅(qū)動(dòng)移植層手動(dòng)完成。2.3 復(fù)位與中斷引腳的初始化上電時(shí)序和EXTI優(yōu)先級(jí)PB0作為復(fù)位輸出腳CubeMX里配成GPIO_Output默認(rèn)輸出高電平。W5500在上電后需要一次完整的復(fù)位脈沖拉低、保持、拉高、等待穩(wěn)定。很多人只拉低幾微秒就釋放結(jié)果芯片還沒(méi)完成內(nèi)部初始化后續(xù)讀寄存器全失敗。我一般拉低不少于1ms拉高后延時(shí)100ms再訪問(wèn)寄存器雖然手冊(cè)上給的復(fù)位時(shí)間沒(méi)有這么夸張但工程上多等一點(diǎn)換穩(wěn)定性是劃算的。PA0作為外部中斷輸入CubeMX里配成GPIO_EXTI0觸發(fā)方式選Falling Edge因?yàn)閃5500的INTn是低有效輸出有中斷事件時(shí)拉低。外部中斷的優(yōu)先級(jí)要根據(jù)你的系統(tǒng)來(lái)定常見(jiàn)做法是比SysTick低、比主循環(huán)邏輯高在NVIC里設(shè)搶占優(yōu)先級(jí)為5、子優(yōu)先級(jí)為0這類中段數(shù)值避免中斷里做的輕量處理影響關(guān)鍵實(shí)時(shí)任務(wù)。外部中斷回調(diào)里應(yīng)當(dāng)只置標(biāo)志位和處理狀態(tài)記錄不要直接在中斷里操作SPI。原因很直接HAL庫(kù)的SPI收發(fā)是阻塞式的如果主循環(huán)同時(shí)也在操作SPI總線中斷和主循環(huán)會(huì)穿插訪問(wèn)W5500輕則數(shù)據(jù)錯(cuò)位重則卡死。真要在中斷里清W5500事件標(biāo)志也必須通過(guò)下面要講的臨界區(qū)保護(hù)來(lái)做。3. 移植W5500官方最新驅(qū)動(dòng)把VFS層接到HAL庫(kù)SPI驅(qū)動(dòng)移植是這條路線里最核心的一步。W5500官方驅(qū)動(dòng)歷史上幾經(jīng)改版但移植思路一直沒(méi)變芯片驅(qū)動(dòng)層負(fù)責(zé)拼地址幀和控制字節(jié)底層IO函數(shù)需要你按實(shí)際MCU去實(shí)現(xiàn)。HAL庫(kù)環(huán)境下這些IO函數(shù)就是包一層HAL_SPI_TransmitReceive再配合片選和臨界區(qū)回調(diào)。3.1 驅(qū)動(dòng)文件怎么拷、接口層要補(bǔ)什么從官方驅(qū)動(dòng)庫(kù)里拷貝文件時(shí)核心是Ethernet目錄下的那組源文件wizchip適配層、W5500芯片驅(qū)動(dòng)層和socket接口層。這三個(gè)部分是一套完整的依賴關(guān)系少一個(gè)都編譯不過(guò)所以直接整個(gè)目錄拷進(jìn)工程再按需保留其他內(nèi)容。socket接口層之上還有Internet目錄里面是DNS、DHCP這些上層應(yīng)用協(xié)議。手頭工程如果只需要靜態(tài)IP直連先不拷這些減少干擾項(xiàng)。等以太網(wǎng)通信跑通后再按需加入DHCP??酵旰笠a(bǔ)的就是底層移植文件通常命名為w5500_port.c之類。它需要向驅(qū)動(dòng)注冊(cè)三樣?xùn)|西片選控制函數(shù)、SPI單字節(jié)讀寫(xiě)函數(shù)、臨界區(qū)進(jìn)入退出函數(shù)。新版驅(qū)動(dòng)通過(guò)注冊(cè)回調(diào)的方式掛接老版本則直接改寫(xiě)底層宏定義具體接口名因版本而異但要做的事情就這三件。3.2 移植層代碼片選、SPI收發(fā)、臨界區(qū)三個(gè)回調(diào)下面這段是移植層的核心邏輯對(duì)應(yīng)W5500芯片對(duì)SPI時(shí)序的全部要求/* 片選低有效 */ static void w5500_cs_select(void) { HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET); } static void w5500_cs_deselect(void) { HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET); } /* 單字節(jié)讀寫(xiě)SPI是全雙工收和發(fā)要同時(shí)進(jìn)行 */ static uint8_t w5500_spi_readbyte(void) { uint8_t tx 0xFF; uint8_t rx 0; HAL_SPI_TransmitReceive(hspi1, tx, rx, 1, HAL_MAX_DELAY); return rx; } static void w5500_spi_writebyte(uint8_t data) { uint8_t rx 0; HAL_SPI_TransmitReceive(hspi1, data, rx, 1, HAL_MAX_DELAY); } /* 臨界區(qū)保護(hù)裸機(jī)環(huán)境可以簡(jiǎn)單關(guān)中斷 */ static void w5500_cris_enter(void) { __disable_irq(); } static void w5500_cris_exit(void) { __enable_irq(); } /* 注冊(cè)到驅(qū)動(dòng) */ void w5500_port_init(void) { reg_wizchip_cs_cbfunc(w5500_cs_select, w5500_cs_deselect); reg_wizchip_cris_cbfunc(w5500_cris_enter, w5500_cris_exit); reg_wizchip_spi_cbfunc(w5500_spi_readbyte, w5500_spi_writebyte); }注意這里用的是HAL_SPI_TransmitReceive而不是分開(kāi)的Transmit或Receive原因是SPI本質(zhì)上是移位交換主機(jī)發(fā)送一個(gè)字節(jié)的同時(shí)必然收到一個(gè)字節(jié)。如果用HAL_SPI_Receive去收數(shù)據(jù)主機(jī)端依然要產(chǎn)生時(shí)鐘雖然HAL庫(kù)能生成時(shí)鐘但多一層封裝不如直接用收發(fā)一體清晰。片選函數(shù)里沒(méi)有做延時(shí)。有些工程師擔(dān)心CS拉低后W5500還沒(méi)準(zhǔn)備好于是在select和第一個(gè)字節(jié)之間插入微秒級(jí)延時(shí)這是多余的。只要SPI時(shí)鐘頻率不過(guò)高CS拉低到采樣之間由SPI硬件時(shí)序保證足夠。真遇到數(shù)據(jù)錯(cuò)位先去查SPI模式而不是亂加延時(shí)。臨界區(qū)在裸機(jī)環(huán)境直接關(guān)中斷即可。如果跑RTOS這里應(yīng)該換成互斥量或調(diào)度鎖否則中斷回調(diào)里操作wizchip相關(guān)寄存器時(shí)會(huì)發(fā)生上下文競(jìng)爭(zhēng)。3.3 驅(qū)動(dòng)初始化順序先復(fù)位芯片再校驗(yàn)版本和網(wǎng)關(guān)拷完驅(qū)動(dòng)、寫(xiě)完移植層接下來(lái)是初始化順序。這個(gè)順序錯(cuò)一步都會(huì)讓后續(xù)操作表現(xiàn)得很詭異尤其是先初始化網(wǎng)絡(luò)參數(shù)再?gòu)?fù)位芯片的做法會(huì)把W5500內(nèi)部寄存器清掉調(diào)試時(shí)以為是代碼問(wèn)題其實(shí)是順序問(wèn)題。uint8_t ver 0; /* 1. 硬件復(fù)位W5500 */ HAL_GPIO_WritePin(RST_GPIO_Port, RST_Pin, GPIO_PIN_RESET); HAL_Delay(10); HAL_GPIO_WritePin(RST_GPIO_Port, RST_Pin, GPIO_PIN_SET); HAL_Delay(100); /* 2. 注冊(cè)IO回調(diào) */ w5500_port_init(); /* 3. 讀取版本寄存器確認(rèn)SPI鏈路已通 */ if (ctlwizchip(CW_GET_VERSION, ver) ! 0) { /* 讀版本失敗多半是SPI或復(fù)位問(wèn)題 */ } if (ver ! 0x04) { /* W5500版本號(hào)固定為0x04讀到別的值說(shuō)明鏈路不對(duì) */ } /* 4. 初始化wizchip內(nèi)部狀態(tài) */ ctlwizchip(CW_INIT_WIZCHIP); /* 5. 配置網(wǎng)絡(luò)參數(shù)靜態(tài)IP起步 */ wiz_NetInfo netinfo { .mac {0x02, 0x00, 0x00, 0x00, 0x00, 0x01}, .ip {192, 168, 1, 20}, .sn {255, 255, 255, 0}, .gw {192, 168, 1, 1}, .dns {192, 168, 1, 1}, .dhcp 0, }; ctlwizchip(CW_SET_NETINFO, netinfo);版本寄存器讀到0x04這一步是整個(gè)移植的分水嶺。如果這一步能通過(guò)說(shuō)明SPI時(shí)序、片選、復(fù)位都正常后面的socket操作都是在調(diào)參數(shù)如果這一步讀不出來(lái)先別急著查業(yè)務(wù)代碼回去對(duì)著第5章的避坑清單查物理層和配置層。DHCP在第一步調(diào)通時(shí)不建議開(kāi)因?yàn)檗k公室里不一定每臺(tái)路由器都有DHCP服務(wù)或者DHCP響應(yīng)慢會(huì)干擾你判斷到底是驅(qū)動(dòng)問(wèn)題還是網(wǎng)絡(luò)環(huán)境問(wèn)題。靜態(tài)IP直連同網(wǎng)段PC是最干凈的最小驗(yàn)證環(huán)境。4. 跑通第一路TCP客戶端、服務(wù)器最小代碼與狀態(tài)機(jī)驅(qū)動(dòng)初始化完成后W5500相當(dāng)于一個(gè)具備完整TCP/IP能力的網(wǎng)絡(luò)設(shè)備剩下的工作就是在8個(gè)socket上執(zhí)行open、connect、listen、send、recv。這一章分別寫(xiě)出TCP客戶端和TCP服務(wù)器的標(biāo)準(zhǔn)流程再講清中斷狀態(tài)機(jī)怎么處理和主循環(huán)配合。4.1 TCP客戶端連接服務(wù)器并收發(fā)數(shù)據(jù)先看看客戶端側(cè)的最小代碼。假設(shè)目標(biāo)服務(wù)器是192.168.1.100:8080本地端口用6000uint8_t sn 0; int8_t ret; /* 分配socket0的收發(fā)緩沖區(qū)每個(gè)2KB */ setSn_RXBUF(sn, 0x02); setSn_TXBUF(sn, 0x02); /* 打開(kāi)socket指定TCP協(xié)議和本地端口 */ ret socket(sn, Sn_MR_TCP, 6000, 0); if (ret ! sn) { /* socket分配失敗可能是sn已被占用 */ } /* 連接服務(wù)器 */ uint8_t server_ip[4] {192, 168, 1, 100}; uint16_t server_port 8080; ret connect(sn, server_ip, server_port); if (ret ! SOCK_OK) { /* 連接失敗檢查服務(wù)器是否可達(dá)、端口是否開(kāi)放 */ } /* 連接成功后進(jìn)入主循環(huán) */ while (1) { uint16_t len getSn_RX_RSR(sn); if (len 0) { uint8_t buf[1460]; int16_t rlen recv(sn, buf, len sizeof(buf) ? sizeof(buf) : len); if (rlen 0) { /* 收多少回多少做回顯測(cè)試 */ send(sn, buf, rlen); } } /* 主循環(huán)里還要定期檢查連接狀態(tài)見(jiàn)4.3節(jié) */ }setSn_RXBUF(sn, 0x02)里的0x02表示2KBW5500每個(gè)socket的發(fā)送和接收緩沖可獨(dú)立設(shè)置為1KB到16KB總共加起來(lái)32KB。調(diào)大收發(fā)緩沖能提升吞吐但會(huì)擠占其他socket的空間。8個(gè)socket全部使用默認(rèn)2KB配置在簡(jiǎn)單場(chǎng)景下完全夠用。recv函數(shù)返回的是實(shí)際接收字節(jié)數(shù)如果返回值是個(gè)負(fù)數(shù)去查錯(cuò)誤碼定義常見(jiàn)的是SOCK_BUSY意思是socket正在忙需要稍后重試。newdriver里有拿返回值當(dāng)長(zhǎng)度用的坑記得先判斷正負(fù)再處理緩沖區(qū)。4.2 TCP服務(wù)器監(jiān)聽(tīng)端口并處理新連接服務(wù)器側(cè)流程差異不大只是把connect換成listen然后查狀態(tài)寄存器確認(rèn)是否進(jìn)入監(jiān)聽(tīng)uint8_t sn 0; setSn_RXBUF(sn, 0x04); setSn_TXBUF(sn, 0x04); if (socket(sn, Sn_MR_TCP, 6000, 0) ! sn) { /* socket打開(kāi)失敗 */ } listen(sn); if (getSn_SR(sn) ! SOCK_LISTEN) { /* 沒(méi)有進(jìn)入監(jiān)聽(tīng)狀態(tài)檢查波特率和socket狀態(tài) */ } while (1) { /* 有客戶端連上來(lái)時(shí)Sn_SR變成SOCK_ESTABLISHED */ if (getSn_SR(sn) SOCK_ESTABLISHED) { uint16_t len getSn_RX_RSR(sn); if (len 0) { /* 與客戶端收發(fā)數(shù)據(jù) */ } } }W5500在服務(wù)器模式下沒(méi)有顯式的accept函數(shù)??蛻舳诉B接建立后Sn_SR自動(dòng)從SOCK_LISTEN變成SOCK_ESTABLISHED同時(shí)產(chǎn)生Sn_IR_CON中斷。應(yīng)用層只需要持續(xù)查詢狀態(tài)或者依賴中斷事件來(lái)感知新連接。有個(gè)邊界要提前知道W5500每個(gè)socket在監(jiān)聽(tīng)模式下同一時(shí)刻只能接受一個(gè)TCP連接。第二個(gè)客戶端連上來(lái)時(shí)W5500不會(huì)主動(dòng)處理表現(xiàn)為連接不上或超時(shí)。需要多連接時(shí)要么一個(gè)socket只服務(wù)一路客戶端要么改用多socket監(jiān)聽(tīng)不同端口這個(gè)坑在第5章還會(huì)細(xì)說(shuō)。4.3 中斷處理SIR/Sn_IR按位解析輪到誰(shuí)就服務(wù)誰(shuí)W5500的中斷源分兩級(jí)全局中斷寄存器SIR指示哪個(gè)socket有事件Sn_IR指示具體是什么事件。外部中斷回調(diào)里做的事件解析如下void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin INT_Pin) { uint8_t sir getSIR(); for (uint8_t i 0; i 8; i) { if (sir (1 i)) { uint8_t ir getSn_IR(i); if (ir Sn_IR_CON) { g_event[i] | EVT_CONNECT; } if (ir Sn_IR_RECV) { g_event[i] | EVT_RECV; } if (ir Sn_IR_DISCON) { g_event[i] | EVT_DISCON; } setSn_IR(i, ir); /* 寫(xiě)1清除讀到的ir原樣寫(xiě)回 */ } } setSIR(sir); } }中斷回調(diào)里只置應(yīng)用層的g_event標(biāo)志不直接調(diào)用recv或send。主循環(huán)檢測(cè)到標(biāo)志后再去操作socket這樣避免SPI總線并發(fā)訪問(wèn)。同時(shí)也能保證中斷處理的時(shí)間非常短不會(huì)拖累系統(tǒng)實(shí)時(shí)性。很多新手的疑問(wèn)是初始化時(shí)INT引腳已經(jīng)觸發(fā)了大量的中斷事件主循環(huán)還沒(méi)來(lái)得及處理flags會(huì)不會(huì)重復(fù)累積W5500的中斷標(biāo)志寄存器是邊沿型事件讀后如果不清除就會(huì)一直保持如果清了就不會(huì)重觸發(fā)。這里的關(guān)鍵是主循環(huán)處理完數(shù)據(jù)后再去清一次Sn_IR。如果主循環(huán)還沒(méi)處理完就把中斷清了事件就丟了如果處理完不清下次中斷不會(huì)再觸發(fā)。常見(jiàn)做法是中斷回調(diào)里清一次主循環(huán)里處理完業(yè)務(wù)后再主動(dòng)讀一次狀態(tài)寄存器確認(rèn)沒(méi)有新的pending。5. W5500移植最容易翻車的5個(gè)現(xiàn)場(chǎng)現(xiàn)象、原因、解決這一章是拿真金白銀換來(lái)的經(jīng)驗(yàn)。以下5個(gè)問(wèn)題在論壇和實(shí)際項(xiàng)目里反復(fù)出現(xiàn)每條都按現(xiàn)象、原因、解決的順序拆開(kāi)講排查時(shí)可以直接對(duì)號(hào)入座。5.1 讀版本寄存器返回0xFFSPI模式或時(shí)鐘先查讀VERSIONR寄存器一直得到0xFF是最常見(jiàn)的首發(fā)癥狀。出現(xiàn)這個(gè)現(xiàn)象時(shí)程序往往已經(jīng)正確配置了SPI、也注冊(cè)了回調(diào)但就是讀不到芯片的應(yīng)答。原因分三類一是SPI模式配錯(cuò)W5500要求模式0或模式3不少人用了模式2CPOL1、CPHA0數(shù)據(jù)在錯(cuò)誤的邊沿被采樣二是片選控制失效CS引腳沒(méi)用軟件GPIO控制、而是被SPI硬件NSS接管導(dǎo)致CS時(shí)序錯(cuò)亂三是SPI時(shí)鐘過(guò)快超出W5500的實(shí)際承受范圍尤其在長(zhǎng)走線或模塊供電不穩(wěn)時(shí)更容易出錯(cuò)。解決方法是先降速排查。把SPI波特率降到2MHz左右確認(rèn)模式為CPOL0、CPHA0片選用普通GPIO拉低不放再讀版本寄存器。如果還是0xFF用示波器抓SCLK和CS的時(shí)序看CS是否在傳輸期間穩(wěn)定拉低、SCLk是否有毛刺。這一步能排除九成的問(wèn)題。5.2 復(fù)位后立刻訪問(wèn)寄存器不成功復(fù)位時(shí)序不夠現(xiàn)象是代碼流程看著完全正常但第一次讀版本寄存器失敗復(fù)位一次后又能成功或者上電后必須手動(dòng)按一下復(fù)位鍵才能通信。原因是W5500內(nèi)部在復(fù)位釋放后需要時(shí)間完成自檢和PHY初始化。復(fù)位拉低時(shí)間太短、釋放后等待時(shí)間不足芯片還沒(méi)準(zhǔn)備好就訪問(wèn)寄存器自然會(huì)失敗。解決方法是拉低RSTn至少10ms釋放后延時(shí)100ms再執(zhí)行任何SPI訪問(wèn)。如果板子上W5500的電源濾波電容偏大上電時(shí)間會(huì)更長(zhǎng)延時(shí)要相應(yīng)加大。這個(gè)延時(shí)只出現(xiàn)在初始化階段不影響運(yùn)行時(shí)的響應(yīng)速度。5.3 中斷標(biāo)志清不掉讀到的ir原樣寫(xiě)回不是寫(xiě)0現(xiàn)象是調(diào)試時(shí)發(fā)現(xiàn)中斷回調(diào)反復(fù)被觸發(fā)即使在回調(diào)里執(zhí)行了setSn_IR(sn, 0)中斷依然不斷進(jìn)來(lái)仿佛永遠(yuǎn)清不掉。原因W5500的中斷標(biāo)志寄存器是寫(xiě)1清除W1C機(jī)制。寫(xiě)0沒(méi)有任何效果只有把對(duì)應(yīng)位寫(xiě)1才會(huì)清除該中斷標(biāo)志。很多從其他芯片轉(zhuǎn)過(guò)來(lái)的工程師習(xí)慣寫(xiě)0清標(biāo)志在W5500這里就失效了。解決方法是把讀出來(lái)的ir值原樣寫(xiě)回setSn_IR(i, ir);比如讀到的ir是0x04Sn_IR_RECV就寫(xiě)回0x04。如果想清除多個(gè)事件把要清除的位按位或起來(lái)再寫(xiě)。全局中斷SIR寄存器同樣是寫(xiě)1清除不要寫(xiě)0。5.4 TCP服務(wù)器只能接一個(gè)連接W5500硬件就這么設(shè)計(jì)現(xiàn)象開(kāi)發(fā)板上跑著TCP server第一個(gè)手機(jī)或PC連上來(lái)收發(fā)正常第二個(gè)設(shè)備再連接時(shí)一直連不上抓包發(fā)現(xiàn)服務(wù)端完全沒(méi)有響應(yīng)。原因W5500的每個(gè)socket在同一時(shí)刻只維護(hù)一個(gè)TCP連接。監(jiān)聽(tīng)狀態(tài)下一旦有客戶端連入Sn_SR就從SOCK_LISTEN變成SOCK_ESTABLISHED芯片不會(huì)再處理新的SYN包。這是硬件TCP/IP協(xié)議棧的邊界不是代碼bug。解決辦法分兩種一是產(chǎn)品本身只需要單連接比如一臺(tái)設(shè)備對(duì)一臺(tái)配置終端那就接受這個(gè)限制在文檔里寫(xiě)清楚二是需要多連接就在同一端口開(kāi)放多個(gè)socket輪詢監(jiān)聽(tīng)或者改走UDP。注意同一個(gè)端口號(hào)和不同socket綁定是可行的多個(gè)socket都執(zhí)行l(wèi)isten同一端口由硬件負(fù)載均衡但實(shí)現(xiàn)復(fù)雜度會(huì)上升一般場(chǎng)景不如直接換UDP或加一層應(yīng)用層轉(zhuǎn)發(fā)。5.5 收發(fā)一段時(shí)間后丟包接收緩沖被讀慢或緩沖區(qū)分配不合理現(xiàn)象TCP通信剛連上時(shí)收發(fā)都正常持續(xù)跑幾分鐘后開(kāi)始丟包或者吞吐量驟降重啟后又恢復(fù)過(guò)陣子再犯。原因W5500的接收緩沖區(qū)是共享的如果某個(gè)socket的接收緩沖太小應(yīng)用層讀取不及時(shí)硬件FIFO滿了之后新的數(shù)據(jù)包會(huì)被直接丟棄。TCP協(xié)議棧不會(huì)無(wú)限制地重傳超過(guò)重傳次數(shù)后連接就會(huì)被斷開(kāi)。解決方法是先從軟件上保證recv的調(diào)度頻率。中斷置位后主循環(huán)要盡快讀取數(shù)據(jù)不要在recv之前插入大延時(shí)。再把接收緩沖區(qū)調(diào)大比如setSn_RXBUF(sn, 0x08)設(shè)為8KB同時(shí)觀察getSn_RX_RSR的返回值是否持續(xù)增長(zhǎng)。如果增長(zhǎng)到接近緩沖區(qū)上限后掉回0說(shuō)明發(fā)生了溢出丟包。還有一種隱蔽情況recv的len參數(shù)直接用了getSn_RX_RSR的返回值而這個(gè)返回值可能大于你定義的buf長(zhǎng)度導(dǎo)致緩沖區(qū)溢出。標(biāo)準(zhǔn)寫(xiě)法是取RSR和buf容量的較小值防止棧被寫(xiě)穿。6. 收尾技巧用UDP回顯拉通全鏈路再談SPI提速TCP鏈路調(diào)通后我習(xí)慣再用一個(gè)UDP回顯做交叉驗(yàn)證因?yàn)閁DP無(wú)連接、無(wú)重傳能直接暴露最底層的收發(fā)路徑是否完整。如果UDP回顯都穩(wěn)定那么TCP出現(xiàn)問(wèn)題時(shí)就可以把嫌疑范圍縮小到驅(qū)動(dòng)參數(shù)或網(wǎng)絡(luò)環(huán)境而不是SPI物理鏈路。6.1 一個(gè)UDP socket測(cè)通整條收發(fā)路徑UDP不需要connect和listen打開(kāi)socket后直接收發(fā)uint8_t sn 1; socket(sn, Sn_MR_UDP, 9000, 0); uint8_t buf[1460]; while (1) { uint16_t len getSn_RX_RSR(sn); if (len 0) { uint8_t peer_ip[4]; uint16_t peer_port; int16_t rlen recvfrom(sn, buf, len, peer_ip, peer_port); if (rlen 0) { sendto(sn, buf, rlen, peer_ip, peer_port); } } }用PC上的網(wǎng)絡(luò)調(diào)試助手向板子的IP:9000發(fā)一串?dāng)?shù)據(jù)板子原樣回傳能連續(xù)跑幾百個(gè)包不丟說(shuō)明SPI鏈路、W5500緩沖管理、中斷機(jī)制都正常。UDP測(cè)試的另一個(gè)價(jià)值是排除TCP狀態(tài)機(jī)干擾——如果UDP正常而TCP異常問(wèn)題多半出在socket狀態(tài)轉(zhuǎn)換或網(wǎng)絡(luò)參數(shù)上而不是底層硬件。6.2 提高SPI時(shí)鐘的驗(yàn)證方法和判斷標(biāo)準(zhǔn)鏈路穩(wěn)定后可以試著提速SPI。每次在CubeMX里把波特率上調(diào)一檔比如從10.5MHz提到16MHz、21MHz重新編譯燒錄然后跑一遍UDP回顯壓力測(cè)試。判斷標(biāo)準(zhǔn)是連續(xù)跑10分鐘不出現(xiàn)0xFF、不丟包、中斷響應(yīng)正常。提速度有個(gè)前置條件檢查PCB走線。如果W5500模塊是通過(guò)杜邦線連到開(kāi)發(fā)板的線長(zhǎng)超過(guò)10cm高速SPI會(huì)因反射和串?dāng)_變得非常不可靠此時(shí)強(qiáng)行提速屬于玄學(xué)調(diào)參。自繪板上W5500的SCLK走線要做等長(zhǎng)處理盡量短遠(yuǎn)離晶振和電感。提速后如果出現(xiàn)偶發(fā)丟包先別急著降速試著在片選函數(shù)里加一個(gè)SPI速率相關(guān)的空操作延時(shí)。雖然我之前說(shuō)不要亂加延時(shí)但在高SPI頻率下CS拉低后立即產(chǎn)生第一個(gè)時(shí)鐘邊沿如果W5500從機(jī)還需要一點(diǎn)建立時(shí)間加一個(gè)極短的__NOP()可能有幫助。這個(gè)要根據(jù)示波器實(shí)測(cè)決定不要盲調(diào)。以我自己的經(jīng)驗(yàn)SPI時(shí)鐘穩(wěn)定運(yùn)行在16MHz左右是一個(gè)甜點(diǎn)區(qū)功耗不高且CPU占用率遠(yuǎn)低于純軟件協(xié)議棧。超過(guò)21MHz后收益衰減明顯排查成本和硬件要求反而直線上升。所以日常做的產(chǎn)品我一般鎖死在16MHz省下的時(shí)間拿去完善應(yīng)用協(xié)議更值得。最后說(shuō)一個(gè)習(xí)慣W5500工程做完后我會(huì)把讀版本寄存器、連接服務(wù)器、UDP回顯這三個(gè)節(jié)點(diǎn)用串口打日志輸出每個(gè)節(jié)點(diǎn)一個(gè)固定前綴比如[W5500][VER]、[W5500][TCP]。每次燒錄新板卡不用接調(diào)試器光看串口就知道問(wèn)題出在物理層、驅(qū)動(dòng)層還是網(wǎng)絡(luò)層。這個(gè)習(xí)慣幫我省掉了大量反復(fù)插拔調(diào)試器的時(shí)間希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产精品女aA片爽爽视频| 99e久久国产精品| 五月激情综合网| 亚洲欧美另类激情小说| 天天综合网~91| 欧美美女自慰一区二区三区| 久久久久久国产精品免费网站| 蜜臀网 一区| 麻豆精品天美| 爱干爱射网啊啊啊| 亚洲最大的黄色电影网站。 | 中文字幕老熟妇黄色视频| 日本操嫩b网| 啊啊啊啊啊啊啊啊在线观看| 97在线视频观看免费| 日韩中文字幕熟妇人妻 | 欧美 日韩 另类 亚洲| 人妻少妇精品一区二区三区| 亚洲乱熟女一区二区三区大香蕉| 国产精品亚洲无码| 99久久99久久免费精品蜜臀| 精品免费视频国产一区| 一区二区影视| 亚洲色图欧美色图另类图片| 色区97| 97视频在线免费播放| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 亚洲Av无码成人精品国产| 超碰人人操97碰| 色欲天天综合久久久无码网中文| 久久久久夜夜夜夜| 亚洲情欲| 日本韩高清无砖码22o| 麻豆熟妇乱妇熟色A片在线看| 欧美久久婷婷| 天天日骚逼熟女| 熟女高潮合集-永久久久-成人AV| 综合天天网| 久久男人网| AND人妻系列| 五月激情综合网| 亚洲天堂电影精品一区| 日本人妻天堂网站在线播放| 伊人久久亚洲色欲综合网站| 久久伊人东京热| 国产超碰欧美| 午夜性刺激视频免费观看| 久久春色| 91啦人妻| 亚洲不卡不卡中文字幕不卡 | 人人性爱视频免费| 欧美乱欲| 亚洲少妇激情视频| 午夜后入| 99热在线观看| 老熟女乱伦一区| 久久综合国产精品国产| 亚洲最大AV网| 国产剧情一区在线观看| 大香蕉99热| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 97色色婷婷| 国产高清1234区| 亚洲限制级在线| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 欧美第五页| 精品传媒在线一区| 嫩草美女久久| 五月婷婷综合网| 嗯嗯,啊啊,国产精品| 欧美色图私拍91| 日本最新免费韩国1区2区视频播放| 神马久久啊啊| 亚洲精品97| 91啦人妻| 久热婷婷| www. 男人天堂成人在线| 亚洲国产亚洲天堂| 乱伦熟女专区| 玖玖婷婷五月天| 无码免费一区二区三区啪啪| 日韩精品国模| 另类图片欧美激情综合| 毛片电影一区二区三区| 国产久久一区二区三区野外在线| 无码精品啪啪啪一区二区三区三州| 易易A毛视频| 免费公开人人操| 99re9在线| 丝袜美女诱惑 91 视频| 99久久精品国产系列| 六六久久日韩不卡| 日韩美女高潮喷水视频| 亚洲国产美女久久久久| 亚洲欧美中文日韩视频中国语| 91欧美高清| 久久大精品乱码视频人妻熟女| 特色a在线上| 欧美色性爱| 91骚妇| 色图综合| 一二三区在线| 伊色久人大在线| 多乙久久久久久| 性色国产东北露脸精品视频| 91操操操操| 噜噜噜无码AV一级一级久久影院| 91综合天天看| 欧美日韩国内不卡| 熟妇一区,二区,三区。| 亚洲精品亚洲人成在线麻豆| 日本999精品| 亚洲视频中文一区| 青青草在线视频人人想人人上| 综合色区偷拍| 操操碰| 97色欧洲| 六月婷婷综合| 麻豆视频一区二区| 午夜啊啊啊| 亚洲国产一级黄色视频| 丰满少妇一区二区三区四区观看| 久久伊人最新网址视频| www.欧精品| 亚洲国产精品无码AV久久| 97福利视频| 97操b| 日韩欧美视频青青| 人人搞人人插人人操| 粉嫩国产精品久久粉嫩| 国产亚洲精品一区二区三区| 啊啊啊啊啊啊好湿好爽视频| 亚洲成人在线高清| 亚洲一本色码中文字幕| 18禁免费视频| 丁香7月婷婷| 在线v中文字幕一区二区三区| 97久久国产亚洲精品超碰热| 婷婷91| 美女黄页网站| 欧美视频激情久久久久久| 777琪琪午夜免费A片| 色诱avtt| 91狠狠综合久久| 天天综合网网欲色| 极品后入免费视频| 婷婷丁香五月综合| 亚洲精品成人动漫在线| 亚洲交换| 自拍丝袜美腿人妻| 九九内射在线| 婷婷六月色开| 色婷婷一区二区三区久久| 91九久| 综合av社区| 香蕉黄色一级视频| 精品人妻视频一区二区在线播放 | 蜜臀一二三区| 在线观看十八禁| 日韩性爱1级片视频| 婷婷九月国产| 亚洲一二三四区机械| 影音先锋视频在线| 五十路一区无码| 国产女同性恋视频| 亚洲操操| 国产福利小视频高清在线观看| 日日躁夜夜躁狠狠躁超爽| 欧美日韩国产中文超碰| 免费伦费视频在线观看| 放黄片放3级黄片没穿衣服| 日韩 欧美 国产 麻豆| 色五月激情网| 日韩色欲久久一二三四区| 男人天堂毛片| 国产精品午夜精品| 欧美第一页| 国内精品不卡无毒99999| 免费在线观看国内色片网站网址| av中亚| 九九九九97| 国产自产91区13区| 精品四五区| 中文字幕免费看大片| 亚欧色图在线激情| 天天欲望网| 日日日色色色色色| 日韩78m视频| 午夜精品久久久久久久男人的天堂| 国产精品 久久久精品一牛| 综合色91| 综合少妇网| 欧美成人国产精品| 人妻人妻天天碰| 久久理论字幕视频| 大香蕉碰碰| www狠狠| 丰满高潮18xxxx| 欧洲黄色网| 碰碰97| 97se亚洲综合自| 久久精品日韩专区免费观看| 亚洲人综合| 搞中出视频在线观看| 色噜噜人妻av 中文字幕| 99爱精品| 91熟女熟妇视频网站 | 国际精品久久久| 天美传媒精品一区二区| 97超级久久| 国产日韩美女小穴视频网站不卡| 素人伊尹大香蕉免费下载视频| 天堂伊人久久| 东京热熟女亚洲视频网站| 成人热久久精品| 色网1| 久久精品夜色国产亚洲AV| 中文字幕天天天天天| 人妻天天夜夜爽一区二区| 清柠毛片| 色九月综合| 欧美一二在线| 风骚少妇视频中文字幕| 懂色影视久久| 色香综合| 国内精品a| 日本免费专区| 色99视频| 欧美香蕉视xxx| 97色色国产视频| 97国产伦理| 精品久久久一本一道| 人人操人人精品影片| 欧美最婬乱婬爆婬牲视频| 久久成人东京热人妻| 伊人麻豆传媒| 欧美色视频在线| 人妻少妇av在线观看| 午夜男人一级A片7777| 丁香五月大香蕉| 日韩少妇丰满亚洲| 亚洲精品久久久久久| 欧美日韩人妻精品系列一区二区三区| 国产精品日本无码A片| 国产毛片久久久久久久| 97操碰| 中日韩久久人妻一区二区| 国产精品在线一区二区| 女优大全 - 91n| 啪啪啪东京| www.婷婷五月天| 国产高清不卡视频| 大香蕉99999| 琪琪精品免费一区二区三区 | 97在线日韩中文字幕| 狠狠爱夜夜| 国产精品视频麻豆入口| 亚洲黑丝在线| 91精品操美女| 成年人三级黄色片视频| 久久欧美按摩999| 尤物视频网 刘玥| 国产精品免费久久久久久久久久| 欧亚性爱视频免费看| 黄页18禁| 91性感在线| 少妇人妻精品| 国产9区| 日本午夜久久电影| 五月天欧美色图| 成人精品无码| 人妻少妇一区二区| 亚洲欧美不卡线| 美中日韩无码| 天美麻豆黄色录像| 中国东北熟女老太婆内谢| 五月天黄色av| 日本影视久久免费| 97青青操视频| 欧美亚洲中文| 在线人妻熟女一区二区三区四区五区| 亚洲有码视频二区| 亚洲综合色网| 98久久超碰| 99热欧美| 美女91网| 国产这里只有精品| 国产9l 大屁股| 欧美丰满熟妇XXXX性ppX人交| 97精品第3页| A级国产欧美激情在线| 嗯嗯啊啊视频在线看| 国产成人精品网站| 丁香五月婷婷色| 精品少妇人妻一区二区三区| 国产超碰| 校园春色 亚洲| 五月丁香激情综合| 天天天肏屄肏屄肏屄欧美欧美| 亚洲欧洲日韩国产自在线| 香蕉免费一区二区三区不读| 男女激情黄色网址| 91高潮| 中文伊人大香蕉视频| 久久久久久网址| 亚洲精品一二三四区| 超碰在线欧美性爱激情| 东北操逼| 五月丁香六月婷| 91天堂网| 大香蕉天天看妹子| 乳欲人妻办公室奶水| 欧美色图在线视频少妇| 熟女乱伦二区| 又粗又长又大国产不卡| 国内97干免费看| 久久精品三级影视| 亚洲 暴爽 AV人人爽日日碰| 欧美色图成人网一区二区| 精品欧美А∨无码黑人大荫蒂 | 中文字幕在线免费观看2| 久久久久日本视| 在线观看亚洲成人精品| 啊啊啊啊啊啊啊网址在线观看| 国产中文字幕曰本毛片| 欧洲精品二区| 亚洲视频一二区| 91人妻尻屄视频| 天堂综合网| 人妻大相焦在线| 亚洲高清无码AAA久久久精品| yazhououmeizongya| 国产精品乱人伊人网| 污污汅18禁网站在线永久免费观看| 97在线亚洲| 18一区二区三区| 乱欲一区二区| 欧美传媒| 午夜福利合集| 精品乱码久久久久| 91国产精品在线看| 亚洲欧美国产成人综合不卡| 欧美色网| 激情婷婷黑人91| 亚洲综合性感在线| 色香蕉影院| 日韩人妻有码免费视频| 日日夜夜精品视频| 欧美在线第五页| 男插女青青影院| 天天干天天做| a一区二区三区乱码在线| 亚洲成人色情五月天丁香花| 操狠狠| 九九探花视频在线观看| 日本在线观看网址| 韩国一级做a久久久久| 亚洲精品97久久中文字幕| 色婷婷婷五月天激情四射| 五月天激情网图片| 欧美特大黄一级片片免费| 久久中文字幕一区不卡| 秋霞一集毛片观看| 久久久蜜桃臀无码视频| 最新AV在线| 亚洲se电影| 欧美国产有色电影| 久草资源在线视频官方总站日韩丝袜美腿 | 日本性交操一区二区不卡系列| 98超碰欧美| 超碰97在线色男人??| 久久久久久91香蕉国产| 色九月综合| 97 亚洲 日韩 欧美 在线| 性一交一乱一交A片久久四色| 亚洲欧美中文一区二区三| 久久高潮妇女视频| 国产精品乱码久久久久久| 欧美A√综合网 | 97视频在线免费播放| 美女大乳久久久久久久女人18| 国产丝袜美女诱惑| 亚洲日本韩国极品一区二区| 欧洲天天在线| 97九色人妻| 91久热这里只有精品| 蜜臀av在线播放一区二区三区| 丁香五月影院| 大香蕉97久久| 99热精品青草在线 | 精品国产乱码久久久影院| 久久久精品中文字幕麻豆| av线电影| 九九久精品| 老司机香蕉| 亚洲激情视频| 极品欧美一区二区三区| av在线播放国产一区| 国产视频一区二区三区在线免费观看| 老司机天天操| 婷婷丁香五月天综合东京热| 国产女性无套 免费观看| 爆操无码| 97视频观看| 九九热免费在线国产视频伊人五月| 久久久穴999| 亚洲精品美女操逼| 激情内射| 视频一区二区免费在线| 天天激情干| 国产熟女乱论| 欧亚乱色熟一区二区三四区| 国产精品久久久久久久久久久久久久久久| 天天综合网~91入口| 九九久精品| 蜜臀久久99精品久久久| 狠狠操夜夜| 日韩啪啪啪视频| 97久久精品不卡| 亚欧美综合网| 国产野战露脸在线播放| 9久久精品| 第45页一区二区| 99热99re6国产在线播放| 97国产|免费| 肏逼福利网站| 精品一二三区久久AAA片| 成人一二| 五月综合激情| 老熟女网站| 少妇激情一区二区三区视频| 色姑娘综合网| 五月天婷精品激情| 91精品成人| 久久久91福利姬| 国产精品 视频| 岛国AB视频| 青青草日本无码| 亚洲综合伊人| 69国产对白刺激| 久久久国产成人一区二区三区在线| 亚洲丝袜色| 国产欧美黑人丰满在线| 波多野结衣之双飞调教在线播放 | juliaann精品熟女一区| 东京热AV男人的天堂| 性饥渴少妇av无码毛片| 天天日日夜夜| 蜜臀99久久精品| 影音先锋视频在线| 神马久久久久久久久久久久| 51一区二区三区| 色妺妺AⅤ| 精品区国产区一区二区三区| 久日91在线| 精品人妻一区二区蜜桃视频 | 玖玖爱一区在线| 夜夜骑夜夜操| 久久精品一区二区三区不卡| 97精品一区| 一,爱啪啪,在线免费视频| 大香蕉综合| 欧亚日韩中文在线| 日韩啪啪啪啪啪| 亚洲自拍小说| 中文字幕jul-617人妻熟女| 久啪| 亚洲av综合色区图片亚洲| 久久久久久夜夜夜夜夜| 亚洲天天综合| 91色五月俺来也| 青娱乐淫乱1314| 荡小穴在线观看| 97视频在线看| 久草视频制服诱惑| 日韩视频精品在线观看| 人人污日韩一区二区| 欧美一区二区男人天堂| 四季AV综合网址| 岛国在线免费视频| 色男人色天堂东京热| 久久av一级av少妇av高潮| 91少妇香蕉久久精品| 美女尤物人人操| 91女优在线观看| 男男H黄动漫啪啪无遮挡网站| 91美女高潮| 三级三久久线久久99久目本WW| 欧美丰满少妇交换91欧美精品| www.国产高潮精品| 欧美写真视频一区| 97色论| 美国人人操人人操| 九九九九精品在线| 蜜臀久久一区二区| 国产精品久久久三级无码| 人澡逼| 狠狠色丁香| 亚洲中文字幕在现观看| 级品肉射| 天天日天天插| 大学生口爆吞精| 91精品免费| 可以免费观看的av| 久久成人国产精品| 懂色av中文字幕| 嗯嗯啊操我| 国产强奸乱伦xd| 亚洲国产中文字幕| 激情四射婷婷四五月天| 岛国大片在线观看网站入口| 加勒比综合88| 蜜臀久久99精品| 色婷婷亚洲婷婷| 大学生美女口爆| 伊人精品国产| 极品丝袜无码| 国产女性无套 免费观看| 一区二区三| 欧美日本不卡| 97色爱| 91丨熟女丨丰满熟女| 蜜臀久久99精品久久久久久无删减 | 国产精品大香蕉| 人妻一区二区三区视频| 亚洲色交| 国产91丝袜在线播放蜜月| 久久久久骚| 国产精品爽爽va在线观看98| 91丨九色丨国产丨人妻在线| v91av| 蜜臀av中文字幕| 91美乳| 六九九九| 丁香五月自拍| 亚洲码专区| 亚洲春色欧美激情自拍| 91性片| 亚洲欧美天| 97资源免费视频| 第45页一区二区| 丰满欧美少妇| 婷婷综合久久| 国产精品青草综合久久| 一,爱啪啪,在线免费视频| 亚洲成人精品在线一区| 78久久| 日本 情色 1区| 五十路成人在线视频二区三区| 青青草啪啪网| 久久夜色一区二区| 国产超碰在线一区| 丝袜综合| 日韩中文字幕2020| 精品97精品97| 国产偷仑| 金典av| 涩涩久久精品| 97伦乱| 日本中文字幕熟妇| 美女黄码视频午夜| 99re在线视频国产| 青操影院| 久久青娱乐| 色路综合| 日韩精品-原创伙伴| 免费视频97| 96久久久| se吧提供国产乱老熟视频胖女人| 91色人妻| 亚洲图片激情综合另类| 老熟妇一区二区三区…| 色综合久久88色综合久久天天| 无码日韩人妻av一| av亚洲天堂资源网站| 亚洲一二三精品久久网 | 久久春色| 亚洲一区日韩精品| 国语精品内射在线观看| 色婷婷丁香| 色欧美天天| 后入内射蜜桃臀| 伊人青青草久久| 日韩 欧美 国产 麻豆| 四虎精品永久在线观看| 久久久久亚洲| 久久成人午夜精品影院 | 激情终合网| 欧美青青草视频| 精品十八在线观看| 综合久久97| 国产亚洲精品久久久久小 | 伊人精品国产| 欧美色图亚洲色| 国产强奸乱伦xd| 天天操天天舔| 97干色天堂| 天天天操天天天爱| 97超碰色色| 精品欧美А∨无码黑人大荫蒂 | 久热久| 加勒比海人人操超碰在线| 免费操逼91| 日韩精品 视频一区二区| 色综合久久888| 啊啊啊好舒服好爽啊啊啊视频| 性感美女啊啊啊在线| 人妻久久一区二区三区| 老司机深夜影院18未满| 看日韩美女二区三区免费操逼视频| 磁力99AV| 国产精品视频在线观看| 强奸乱伦中文字幕AV| 日本久久久久久久久| 91伊人久久在线| 日韩一级欧美一级国产一级台湾| 久久免费精品视频免一| 玖玖蜜臀资源网| 久久爱97| 男女真人网18| 午夜精品久久久久久久99热影院| 人人操人人摸超碰| 亚洲制服欧美另类内射| 日夜干射色啊| 日韩免费在线观看不卡| 97色色色| 96一区二区三区| 久久精品毛片免费不卡| 色999偷自拍拍| 欧美97在线欧| 久久香蕉影院| 国产乱码久久久| 尤物一级在线免费观看| 婷婷五月天无码| 国产精品福利视频播放| 极品白嫩福利在线| 久久97超碰| 久久亚洲不卡| 色与欲影视| 爱射综合| 亚洲男人天堂网站| 99精品在线| 亚洲天堂另类| 99精品久久| 欧美劲爆第一页| 婷婷综合久久| 校园春色亚洲色图| 一区二区三区四区色图| 亚洲 欧美 第一页 | 亚洲精品蜜桃久久久久久久| av一区二区三区四区| 麻豆黄四叶草网站| 91精品久久久久五月天精品| 欧美情色男人的天堂| 男女猛烈无遮掩视频免费软件| 国产乱婷婷精品二区三区| 老女人综合网| 九九九精品美女| 无码国产精品午夜不卡( | JULIA一区二区三区在线播放| 国产精品久久久999| 八人操人人摸人人看| 国产丸一视频| 日本123区操B视频| 亚洲人久久久久日| 殴美日韩m| 最新国内自拍av免费| 蜜桃久久久久久久久久久久| 手机在线人成免费视频| 青青草影视蜜久久| 亚洲五月天激情| 91精品人| 欧洲精品久久| 在线99热| 欧美大波激情xxxx| 色香91| 九九九九久久久| 国产精品免费1区2区视频| 色色综合97| 国产精品熟女乱伦| 日本操逼无码| 精品无码一区二区人妻久久蜜桃| 成人午夜无码视频| 小说区 图片区色 综合区| 日日夜夜草草草| 欧美视频在线视频免费va| 欧美色青| 少妇色综合| 69超碰综合| 精品久久久高清无码| 精品丰满熟妇人妻一区| 色九月综合| 国产粉嫩出水在线播放| 尤物视频视频官网| 国产日产欧产美韩系列麻豆免费| 欧美熟爽综合| 强奸乱伦av电影| 亚洲成a人v欧美综合天堂下载| 日本天天干天天搞一区| 天天操天天插| 欧美视频在线视频免费va| av网站免费看| 欧美图片色五月天| 丝袜视频一区二区在线播放国产中文 | 老女人日韩美91| 在免费jIzzjIzz在线视频| 青草综合| 亚洲同性aV综合| 亚洲97p| 草b在线| 婷婷五月天成人网| 国产日韩欧美亚洲精品95 | 美女超碰978| 国产成人精品日本视频| 9国产超碰| 亚洲乱妇p22| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 久久伊人青青草| 人人爽天天爽| 男人天堂久久精品| 91精品丝袜久久久久久| 黄片aaaaa一区| 成人无码在线视频网站| 免费操逼91| 婷婷激情四射| 台湾佬大香蕉| 精品国产99999| 亚州高清AV| 91热色| 久久久草草精品| 91国内外在线| 精品综合久久久久久97| 久久草视频污视频| 亚洲综合九| 性爱AV天堂| 极品后入免费视频| 东京热精品97综合网| 97视频在线观看高清资源| 麻豆婷婷成人一二三| 宅男91视频在线播放| 91丨国产丨白浆| 嗯啊免费视频| 麻豆久久久久久久久丝袜 | 校园春色 欧美| 欧美天天射| 97久久超碰| 1769一区| 成人麻豆av电影网站| 亚州免费啪啪视频| A片 AV一级在线播放观看免费| 天天日B夜夜干B时时操B| 粉嫩av在线一区二区| 亚洲第一成人影院色播| 91精品久久综合熟女| 99天堂网| 国产伊人自拍| 精品97精品97| 四虎免费视频| 麻豆视频一区二区| 精品无码欧美三级| 又粗又长又爽在线观看| 日本欧美亚洲高清在线看| 黄色av一区二区在线| 日本综合色图| 中文字幕在线观看AV| 国产精品欧美激在线| 老司机午夜精品福利视频一区二区| 国产AV线| 国产精品视屏| 一级毛片久久久久久久女人18| 大香网站| 天天欧美欧美亚洲网| 欧美 综合| 欧美性五月| 大香蕉一级黄色片久久| 国产精品一区午夜福利| 五月天婷婷久久| 偷拍亚洲高清图片| 学生妹天天看| 久久超碰网| 久久东京伊人一本到鬼色| 国产亚洲国产超碰| 欧美一二三区四五区| 国产高清在线自在拍69| 国产性爱强奸乱伦大全| 中文字幕交换人妻| 97WW精品| 嗯~啊~轻一点 视频| a片久久久久久久久久久久 | 久久激情视频| 亚洲 中文字幕 精品| 5278欧美一区二区三区| 精品国产污一区二区三区| 蜜桃精品视频一区二区三区| 91人妻少妇| 肉嘟嘟www视频在线观看高清| 国产怡红院| 天天影视91看看| 亚洲欧洲综合成人av一区| 99国产人成精品| 欧美草草| 日韩国产不卡在线视频| 亚州宗合另类| 色97欧美| 国产www色在线观看| 日本不卡三级网在线播放| 色网亚洲人| 人干人人人操人人摸| 男人的天堂成人的社区| 一本色道综合久久欧美日韩精品| 在线中文字幕极品av| 91av天美性媒精品视频| 欧在线一二区| 嗯,啊。舔我逼| 97国产精品| 色婷婷丁香五月天| 青青久久久| 中文字幕乱在线伦视频中文字幕乱码在线| 久热69九色熟妇97| 天堂性色| 狠狠综合网| 欧美色老汉| 国产精品久久久三级无码| 色香伊人| 美女操逼福利视频| 日本中文字幕一区| 久久av成人无码免费| 亚洲天堂情色| 美国精品国产精品| 日本东京热大香蕉a片| 超碰精品国产无码| 欧美色图片91| 亚洲一区二区三区春色| 91肏屄网| 超碰97人妻免费在线| 爱干爱射网啊啊啊| 成人一二| 99啪啪| 日韩性爱1级片视频| 人妻在线大香蕉| 精品毛片av一区二区| 99色日| 无码日韩人妻av一| 亚洲自拍青操视频| 国内三级自拍小视频在线观看| 中出20p| 色综合久久久久| 97精品一区二区三区免费| 久久久蜜桃一区二区三区| 国产精品人妻无码久久久互動交流 | 精品人妻一区二区三区-国产精品| 超碰色综合| 天天综合欧美综合| 久久社区一区二区三区| 蜜桃臀AV在线| 99成人| 亚洲伊人久久综合97| 亚洲精品欧洲精品| 国产精品久久久久久久毛片1| 国产丝袜高跟美女av免费观看| 亚欧国产无码精品在线| 日本不卡一二区| 中文字幕视频2区| 93人人操人人| 啊啊啊啊好疼| 91美女视频在线| 久久婷婷综合国际产色怕| 亚洲熟女人妻中文字幕一区二区| 蜜臀AV一区二区三区激情综合| 在线综合 亚洲 欧美中文字幕| 欧美高潮| 混色激情av| 国产探花精品在线| 久久人妻熟女一区二区| 国产精品午夜成人福利| 簧片免费看视频| 白丝被操91| 天天干夜夜操一区二区| 丝袜内射| 91一起操| 一区二区三区亚洲| 一区二区三区麻豆| 亚洲AV不卡在线观看尤物| 激情综合亚洲| 午夜AV人气不卡| 日本大香蕉综合网| 四虎在线免费视频| 久久9亚洲| 在免费jIzzjIzz在线视频| 亚洲图片欧美色| 日韩色图 一区二区| 亚洲欧洲小说图片视频| 人、人、摸,人、人、草| 999久久久免费精品国产牛牛| 热G综合热G中文| www.高清无码诱惑一区.com| 五月丁香六月激情| 日本激情免费大片| 色欲天天婬色婬香WWW夜色| 亚州五月| 日日日大屁股骚女人精品| 欧美制服另类丝袜| 国产 三级自拍| 韩日性爱av| 强奸乱伦 亚洲一区| 97国产|免费| 操老熟女AV| 欧美综合制服在线| 97亚洲国产影视| 婷婷伊人綜合中文字幕| 午夜120视频在线观看| 永久电影三级在线观看| 91亚洲人| 大逼色网站| 欧洲一区二区三区四区在线观看| 岛国人妻少妇av在线观看| 大香蕉AV丝袜| 神马精品视频| 婷婷五月成人| 激情五月天视频| 亚洲精品乱码久久久久久蜜桃麻豆| 久久性生大片免费观看性| 天堂综合网| 999热这里只有精品| 91蜜臀人妻中文字幕在线| 嫩草黄页| 97国产伦理| 超碰97在线色男人??| 99黄页网站| 成人精品一区二区三区| 日韩ab网 | 日韩免费av片高清无码| 九七超碰| 午夜国产综合视频在线观看| 男人天堂电影院| 中文字幕后石码三区四区| 久久超碰97| 久久超碰网| 人妻另类 专区 欧美 制服| 97色网| 国产粉嫩蜜臀av一区二区三区| 超碰欧美| 免费αV在线视频| 久操操AV电影| 日韩人妻一二三区视频| 麻花豆传媒剧国产MV出差| 中文字幕一区二区在线日韩精品| 国产精品亚洲无码| 国产综合网站在线播放| 黄色高清无码无码破解免费暗网| 欧美自拍偷拍免费观看| 成人丁香五月| 嗯嗯啊啊视频在线看| 日本淫色网| 亚州久久9| 97草草| 易易A毛视频| 在线a亚洲视频播放在线| 色综合国产在线观看| 性爱视频无打码在线观看| 黄色网址在线免费观看| 中文字幕在线免费观看视频| 日韩乱码av| 国产青视频| 91在线一起| 97在线免费| 中国国产精品一区视频| 亚洲经典啪啪| 日韩97视频!在线| 91精品国久久久久久无码| 中文字幕av片| 精品一区二区三区国产| 久久一区二区高清免费| 日本色色网| 久久成年精品| 青草伊人久久| 国产成人亚洲精品无| 国产一区在线观看无码AV| 久久五月视频| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 妺妺跟我一起洗澡没忍住| 亚洲精品一区二区三区新线路| 男人把坤坤插入女人的下体| 91欧| 天天看天天在线精品| 六月色婷婷| 99精品高潮| 欧美亚洲中文| 婷婷AV一区二区三区| 肥臀熟女福利视频一区二区| 大屁股熟女一区二区三区| 91处女在线观看| 五月丁香社区婷婷日韩欧美精品影院| 久久久艹艹艹| 久久久精| 7777奇米影视久久| 色五月婷婷麻豆在| 嗯嗯啊啊的视频| 国产福利一区二| 婷婷精品| 天天干夜夜| 一二三四视频中文字幕在线看| 91美女丝袜诱惑视频| 4虎在线视频| 国产v片在线免费观看| 久久性爱视频| 天天综合,91入口| 亚洲一级性爱视频免费看| 美女露胸露屁股| 欧美se综合| 日韩性爱再线视频| 粉嫩AV一区夜夜嗨| 99婷婷一区二区| 校园春色 男人天堂| 亚洲脚交| 日韩欧美午夜视频在线| 欧美熟女妇同| 日本东京热久久久电影| 蜜桃臀av在线观看| 变态另类专区| 天天色综亚洲91污| 黄日韩| 热久久国产| 天天天乱色综合全| 人妻色偷色噜| 国产一区二区三区不卡手机在线| 酒色综合网| 淫妻综合网| 超碰人妻久久| 五月婷婷丁香| 亚洲丝袜少妇在线| 91狠狠色丁香婷婷综合久久| 亚洲做性| 欧美中出1| 欧美97网| 婷婷99| 欧州91高潮| 97视频在线观看播放与子乱对白在线……| 精品一级| 极品色社| 97久久网| 中文字幕在线观看网页| 成人性爱免费播放| 美女久久久久久久| 在线播放免费av福利片| 亚洲天堂人人妻| 国产亚洲中文不卡二区| www. 男人天堂成人在线| 可以在线观看AV的网站| 久久人体一区二区| 性色av婷婷久久一区二区点复制| 天堂网亚洲区手机版| 国产女人高潮视频| 国产女大学生AV| 国产丰满熟夫69mpp| 国产日韩欧美亚洲精品95| 久久精品99| 91操人| 精品亚洲国产成人AV制服丝袜| 99这里只有精品国产| 欧美综合自拍亚洲综合图| 4虎在线观看| 久久超碰亚洲人| 嗯啊啊啊轻点视频 | · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 国内自拍 日韩激情 99| 北野未奈加勒比av| 99色色网| 亚洲无码com| 精久久久91| 一,爱啪啪,在线免费视频| 后入人妻无码| 欧美一区二区在线资源| 亚州免费啪啪视频| 美女黄色91| 免费农村成人少妇人妻Aa一区二区视频| 中字幕人妻一区二区三区| 97超色| 91在线欧色| 女人被男人桶爽视频网站| chaopen97久久| 色狠狠综合噜一二三区| 强奸乱伦大香蕉网| 好爽免费视频| 日本久久综合| 免费观看有码高清视频| 亚洲欧美日韩免费电影| 亚洲无码一区成人免费午夜| 亚洲国成人情色好看电影| 国产麻豆一级精品视频| 综合伊人网12色| 国产怡红院在线| 97精品视频免费| 日日夜夜狠狠| 奇米狠999| 放黄片放3级黄片没穿衣服| 加勒比人妻综合| 丰满少妇一区二区三区专区| 日韩性爱再线视频| 欧美成熟性爱精品| 日本欧美不卡| 色哟哟av网址| 成人日本精品九区| 日本三级韩国三级99| 东京热男人的天堂精品| V A在线| 日韩三级av片| 国产情色第一第二页在线观看| 在现视频女上位好爽| 2020国产精品| 日韩国产在线观看av| av毛片aaaaa免费看| 少妇淫妇久久久久久久| 十八禁电影伊人网| 1二区9| 2019AV天堂| 97玖玖人妻| 国产精品交换一区二区| 久精品无码av一区二免费国产在线观看| 日韩操逼性鲍| 亚洲一区日韩精品中文字幕| 激情综合 婷婷五月 红杏| 色哟哟av网址| 九九热精彩视频| 97视频620| 东北女人的毛片| 精品国产一区二区三区久久久蜜臀 | 精品久久久亚洲AV成人网站| 国产 日韩 欧美高清| 老熟女乱伦一区| 亚洲伊人久久综合97| 中文字幕乱码在线| 美女黄站| 日本加勒比无码专区| 天天干人人乐| 久久αⅴ| 久操免费电影| 欧美视频一区二区三区| 大干人妻| 亚洲影视第一页| 97在线视频观看免费| 高清孕妇孕交 交孕妇| AV色五月天| 国产和美国毛片| 91女优在线观看| 天欧美在线| 夜夜嗨TV| 91精品导航| 精品久9| 欧美性爱第1 页| 午夜舔阴达高潮视频免费看| 17c嫩草51久久91嫩草| 欧美人人天天网| 中文乱码字幕观看| 白丝AV| 国产精品不卡高清在线观看| 亚洲色天| 免费av在线播放二区| 波多野结衣被操50分钟免费视频 |