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

ARTICLE DETAIL

資訊詳情

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

STM32H7 SPI從機DMA輸出0xFF?從物理層到寄存器逐層排查

STM32H7 SPI從機DMA輸出0xFF?從物理層到寄存器逐層排查 1. 初遇問題從機發(fā)給主機的數(shù)據(jù)全是 0xFF先說結(jié)論SPI 從機 DMA 模式下連續(xù)輸出 0xFF本質(zhì)上就是“從機根本沒把有效數(shù)據(jù)放到 MISO 線上”。這個問題不是 STM32H7 獨有的F1、F4、G4 系列也會遇到但在 H7 上更容易踩坑原因是 H7 的 SPI 和 DMA 架構(gòu)跟老一代芯片相比做了不少改動網(wǎng)上的老經(jīng)驗很多不能直接套用。我調(diào)試這塊板子時用的是 STM32CubeMX 生成工程SPI 從機配置為主機讀取外部傳感器數(shù)據(jù)的應(yīng)答端。主機 SPI 時鐘 4MHzCPOL Low、CPHA 1Edge數(shù)據(jù)幀 8bitMSB First。從機端開了 DMA 發(fā)送DMA 通道配置為內(nèi)存到外設(shè)方向數(shù)據(jù)長度 256 字節(jié)。結(jié)果一跑起來主機通過 SPI 讀回來的數(shù)據(jù)流是FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ...一眼望過去全是 0xFF而且是穩(wěn)定、連續(xù)、一個有效字節(jié)都沒有的 0xFF。這跟我預(yù)期的“偶發(fā)錯誤”完全不一樣——偶發(fā)錯誤一般會夾雜幾個正確字節(jié)而全 FF 是另一種信號從機根本沒在總線上驅(qū)動數(shù)據(jù)。為什么這么說因為 SPI 總線在沒有設(shè)備驅(qū)動 MISO 的時候線路默認電平取決于外部上拉/下拉電阻。多數(shù)板子的 MISO 線在空閑時是弱上拉主機讀到的就是高電平也就是 0xFF。換句話說MISO 一直是被動的“空”狀態(tài)而不是從機在主動發(fā)送有效數(shù)據(jù)。這個現(xiàn)象特別迷惑人的地方在于你明明配置了 DMA明明調(diào)用了HAL_SPI_Transmit_DMA()函數(shù)返回也是HAL_OK甚至HAL_SPI_TxCpltCallback都在跑——但總線上的數(shù)據(jù)依然全是 FF。這說明問題不在“DMA 有沒有搬數(shù)據(jù)”而在于SPI 外設(shè)的發(fā)送通道根本沒有把數(shù)據(jù)送到 MISO 上去。這一條思路如果能在一開始就建立起來排查方向就不會跑偏。下文按“先從物理層和配置層確認再深入?yún)f(xié)議層和 DMA 架構(gòu)最后結(jié)合軟件棧逐層排雷”的順序把這幾天踩過的坑和解決辦法完整梳理一遍。文章涉及的代碼均在 STM32CubeIDE 1.13 以上版本 STM32CubeH7 1.11 環(huán)境中驗證過SPI 時鐘最高測到 8MHzDMA 數(shù)據(jù)長度從 16 字節(jié)到 1K 字節(jié)都能穩(wěn)定工作。2. 先搞清楚 0xFF 是誰產(chǎn)生的物理層判斷與定位2.1 SPI 空閑電平和 MISO 的“懸空”狀態(tài)SPI 從機不驅(qū)動總線時MISO 引腳通常處于高阻態(tài)Hi-Z。主機側(cè)如果不帶下拉電阻讀到的電平就是不確定的。實際開發(fā)板上MISO 往往被主機內(nèi)部上拉或者板載電阻拉到了高電平于是讀到的字節(jié)就是 0xFF。這個推論可以用一個最簡單的實驗驗證把從機程序停掉或者干脆不初始化 SPI 外設(shè)主機依然能讀回 0xFF。如果停掉從機后主機讀到的還是 FF那就證明 0xFF 并非從機主動產(chǎn)生而是總線空閑電平被讀了出來。所以這里有一個很重要的調(diào)試習慣看到滿屏 0xFF先別急著查代碼邏輯先用“有沒有可能從機壓根沒驅(qū)動 MISO”這個角度去思考。我見過不少同事折騰 DMA 半天最后發(fā)現(xiàn)是 SPI 外設(shè)的 TXE 標志位就沒置位過數(shù)據(jù)根本沒往移位寄存器里送。2.2 如何用示波器確認從機到底有沒有動作排查這類問題強烈建議把示波器探針夾到從機的 MISO 引腳比如 Nucleo-H753ZI 板子的 PA6具體看你自己用什么引腳。觀察點在主機發(fā)起 SPI 傳輸時MISO 上有沒有電平翻轉(zhuǎn)動作。判斷邏輯很簡單觀察到的現(xiàn)象說明什么問題MISO 持續(xù)為高/低完全不翻轉(zhuǎn)SPI 外設(shè)或 DMA 完全沒有發(fā)送動作MISO 在時鐘啟動后有電平翻轉(zhuǎn)但數(shù)據(jù)符號不對數(shù)據(jù)是發(fā)出去了但字節(jié)內(nèi)容有誤MISO 只有 CS 拉低瞬間有電平變化SCK 來了之后沒變化從機沒有被正確選通或者 CS 檢測邏輯有問題MISO 翻轉(zhuǎn)頻率和 SCK 完全對應(yīng)但主機讀的還是 FF波形可能是對的主機側(cè)采樣參數(shù)不匹配如果示波器顯示 MISO 完全沒有翻轉(zhuǎn)那就說明問題出在從機側(cè)的發(fā)送鏈路里跟主機側(cè)怎么配置沒關(guān)系。這時候可以縮小范圍把“SPI - DMA - 內(nèi)存”這條鏈路的每個環(huán)節(jié)單獨拉出來測。2.3 最簡單的“寫寄存器”測試法在深入 DMA 之前建議先做一個最粗暴的試驗不走 DMA直接在 SPI 發(fā)送中斷或者輪詢模式下向 SPI 的發(fā)送數(shù)據(jù)寄存器寫幾個固定字節(jié)。如果這時 MISO 上能出來數(shù)據(jù)說明 SPI 外設(shè)本身沒問題如果還是不輸出那就是 SPI 配置的問題。這個測試在 H7 上特別有效因為 H7 的 SPI 用了新的寄存器組和 F1/F4 系列差異很大不能盲目參考老代碼。我當時的做法是在main()里初始化完 SPI 外設(shè)后把 DMA 相關(guān)代碼全部注釋掉直接調(diào)用一次HAL_SPI_Transmit(hspi1, testData, 8, 1000)。注意這個函數(shù)在從機模式下是“阻塞等待主機時鐘”的主機不發(fā)時鐘函數(shù)就一直卡在那里。如果你在調(diào)試器里看到程序停在函數(shù)內(nèi)部而主機那邊確實沒有發(fā)起讀操作那其實是正?,F(xiàn)象不是死機。當主機發(fā)起一次讀時序后如果 MISO 上能讀到0x01 0x02 0x03 ...這種有規(guī)律的數(shù)據(jù)說明 SPI 硬件鏈路是完全通的。這個時候再把 DMA 加回去如果數(shù)據(jù)又變回 FF那問題就鎖定在 DMA 配置和 SPI-DMA 交互這一層。說到這我想插一句網(wǎng)上很多帖子一上來就讓人查 DMA 的優(yōu)先級、FIFO 閾值、突發(fā)模式這些參數(shù)當然重要但如果物理層都沒通調(diào)這些參數(shù)純屬浪費時間。所以我的默認排查順序永遠是物理層 - 寄存器層 - 外設(shè)配置層 - DMA 層 - 軟件棧層逐層縮小范圍。3. SPI 從機配置的隱形雷區(qū)參數(shù)匹配與 NSS 管理3.1 CPOL/CPHA 主從不匹配數(shù)據(jù)移出但主機讀錯如果物理層已經(jīng)確認 MISO 有翻轉(zhuǎn)但主機的邏輯分析儀讀到的還是 FF那首先要懷疑的就是 CPOL/CPHA 主從不匹配。SPI 有四種模式組合主機和從機必須完全一致否則數(shù)據(jù)移位時機對不上從機發(fā)出去的數(shù)據(jù)主機根本采不到。H7 的 SPI 初始化結(jié)構(gòu)體中有SPI_InitTypeDef關(guān)鍵參數(shù)是hspi1.Init.CLKPolarity SPI_POLARITY_LOW; // CPOL 0 hspi1.Init.CLKPhase SPI_PHASE_1EDGE; // CPHA 0我這次用到的組合是 CPOL Low、CPHA 1Edge。如果你的主機是別的模式從機必須完全對應(yīng)。常見錯誤是把從機配置成 CPHA 2Edge導(dǎo)致主機在第一個邊沿采樣時 MISO 上的數(shù)據(jù)還沒穩(wěn)定讀到的就是 FF。這里有一個實操技巧把 CubeMX 里的 SPI 參數(shù)配置截圖發(fā)給主機的開發(fā)者兩個人對照著確認。因為“時鐘極性低電平”和“第一個時鐘邊沿采集數(shù)據(jù)”這種描述在不同文檔里叫法不太一樣有的叫“Mode 0”有的叫“CPOL0 CPHA0”對照確認可以避免雞同鴨講。3.2 數(shù)據(jù)幀格式位寬、MSB/LSB 和字節(jié)順序H7 的 SPI 支持 4bit 到 32bit 的數(shù)據(jù)幀長度從機和主機的DataSize必須一致。CubeMX 默認是 8bit這塊一般不容易錯。但有一個很容易忽略的點是FirstBit——如果主機是 MSB First從機配成了 LSB First那主機讀到的每一個字節(jié)都會是反序的。比如從機想發(fā) 0x01二進制 0000 0001LSB First 發(fā)出去變成 0x801000 0000主機如果按 MSB 解析讀到的就是 0x80 而不是 0x01。另外H7 的 SPI 還支持FIFO接收/發(fā)送緩沖FIFO 閾值可以通過HAL_SPI_Init()之后的底層配置寄存器調(diào)整。在 DMA 模式下FIFO 閾值會影響 DMA 請求的觸發(fā)時機。默認配置下一般沒問題但如果你的收發(fā)數(shù)據(jù)長度不是 FIFO 深度的整數(shù)倍尾部數(shù)據(jù)可能會卡住。這個后面在 DMA 章節(jié)詳細說。3.3 硬件 NSS 與軟件 NSS選通信號沒拉低從機永遠在“隱身”這是我從機場景里踩得最隱蔽的一個坑。Nucleo-H753ZI 的 SPI 從機如果使用硬件 NSS 模式NSS SPI_NSS_HARD_INPUT從機必須檢測到 NSS 引腳被拉低才會把 MISO 切換為輸出驅(qū)動狀態(tài)。如果你的主機和從機之間沒有連接 NSS 引腳——比如只接了 SCK、MISO、MOSI、GND 四根線——那么從機的 NSS 引腳就懸空或保持高電平從機永遠不會被選通MISO 一直處于高阻態(tài)主機讀到的自然全是 0xFF。解決辦法有兩個方案一使用硬件 NSS。確保從機的 NSS 引腳接到了主機的 CS片選引腳并且在 CubeMX 中把 NSS 配置為硬件模式。硬件 NSS 的優(yōu)點是片選信號完全由主機控制從機硬件自動檢測不需要軟件干預(yù)。缺點是需要多接一根線而且 SPI 外設(shè)的 NSS 引腳一般是固定映射的在 H753ZI 上是 PA4不能隨便換。方案二使用軟件 NSS。把 SPI 的 NSS 配置為軟件模式SPI_NSS_SOFT然后在發(fā)送數(shù)據(jù)前手動拉低 NSS 引腳。不過這里有個容易誤解的地方軟件 NSS 模式下很多教程讓你直接操作 GPIO 拉低 NSS 引腳電平但從機側(cè)真正起作用的是 SPI 外設(shè)內(nèi)部的一個SSIInternal Slave Select位而不是 GPIO 的外部電平。在 STM32H7 上軟件 NSS 的從機配置通常是這樣hspi1.Init.NSS SPI_NSS_SOFT; // ... 初始化 ... // 發(fā)送前使能內(nèi)部從機選擇 SET_BIT(hspi1.Instance-CFG1, SPI_CFG1_SSI);我實測過這個SSI位如果不置 1就算你把外部 GPIO 拉低SPI 從機照樣不會響應(yīng)。這也是很多人明明接對了線從機卻毫無反應(yīng)的原因之一。CubeMX 生成代碼默認不會幫你設(shè)置這個位需要手動加一行。注意軟件 NSS 模式下SSI位的置位時機要在使能 SPI 之前還是之后H7 參考手冊里沒有特別強調(diào)。我反復(fù)試過在__HAL_SPI_ENABLE(hspi1)之后設(shè)置同樣有效而且如果發(fā)送過程中 NSS 被拉高再拉低SSI位不會自動清掉所以不用擔心下次傳輸前要重新置位。3.4 從機模式下的通信時鐘缺失問題還有一個從機模式特有的現(xiàn)象值得單獨提出來從機發(fā)送數(shù)據(jù)是完全依賴主機時鐘的。也就是說即便你把從機的 DMA 配置得再完美如果主機不發(fā)起 SPI 時鐘從機的發(fā)送數(shù)據(jù)就永遠不會從移位寄存器里移出去。這一點在調(diào)試時容易產(chǎn)生誤判你從代碼層面看HAL_SPI_Transmit_DMA()返回了HAL_OK以為數(shù)據(jù)已經(jīng)開始發(fā)了實際上 DMA 只是把數(shù)據(jù)從內(nèi)存搬到了 SPI 外設(shè)的 TX 緩沖區(qū)真正的移位發(fā)送要等主機時鐘來了才會發(fā)生。如果你在從機代碼里打斷點查看 DMA 計數(shù)寄存器可能會發(fā)現(xiàn)計數(shù)從 256 變到了 0但這只代表數(shù)據(jù)進了外設(shè)緩沖不代表已經(jīng)發(fā)出去了。所以排查時一定要確認主機那邊確實在發(fā)起傳輸。我這次就是因為主機程序里讀操作被一個延時卡住了導(dǎo)致主機根本沒發(fā)時鐘從機也就一直在“等待”狀態(tài)看起來像是從機壞了。把主機那邊的邏輯理順之后數(shù)據(jù)馬上正常了。4. H7 的 SPI 與 DMA 交互被低估的架構(gòu)變化4.1 STM32H7 的 DMAMUX請求映射不再是固定綁定這是 H7 系列和老一代 STM32 在 DMA 方面最大的區(qū)別。F1/F4 的 DMA 請求是固定的比如 SPI1_TX 永遠連在 DMA1 的某個通道上你照著參考手冊配置就行。而 H7 引入了 DMAMUXDMA 請求多路復(fù)用器外設(shè)的 DMA 請求可以映射到任意一個 DMA 流stream上通過 DMAMUX 寄存器來指定。CubeMX 生成代碼時這個映射關(guān)系是自動配置的但如果你手動移植老代碼就很容易漏掉這一步。錯誤的表現(xiàn)就是 DMA 配置函數(shù)返回HAL_OK但 DMA 從不會真正被觸發(fā)——因為 DMA 不知道自己該監(jiān)聽哪個外設(shè)的請求信號。用 CubeMX 配置時注意看 DMA Settings 標簽頁里 Request 這一列比如DMA1_Stream0, SPI1_TX, MemoryToPeripheral, High Priority這里的SPI1_TX就是 DMAMUX 的請求源。如果你看到 Request 顯示的是0或者空白那多半是手動修改代碼時把 DMAMUX 配置弄丟了。正確的做法是重新通過 CubeMX 生成初始化代碼或者手動補上__HAL_LINKDMA(hspi1, hdmatx, hdma_spi1_tx); hdma_spi1_tx.Init.Request DMA_REQUEST_SPI1_TX;這句hdma_spi1_tx.Init.Request DMA_REQUEST_SPI1_TX;在 H7 上是必須的沒有它 DMA 就不會響應(yīng) SPI 的請求。而如果你看 F4 的代碼這個字段很可能不存在或者不需要指定。這個差異是移植老代碼時最大的坑。4.2 從機模式下 DMA 傳輸?shù)谋举|(zhì)數(shù)據(jù)先填充、時鐘再移出理解了 DMAMUX 之后再來看從機 DMA 的完整數(shù)據(jù)流調(diào)用HAL_SPI_Transmit_DMA()后HAL 庫使能 SPI 的 TX DMA 請求SPI 外設(shè)的 TXFIFO 空時向 DMAMUX 發(fā)出 DMA 請求DMA 響應(yīng)請求從內(nèi)存讀取一個字節(jié)/半字/字寫入 SPI 的 TXDR 數(shù)據(jù)寄存器TXDR 的數(shù)據(jù)進入移位寄存器主機產(chǎn)生 SCK 時鐘移位寄存器按位移出到 MISO 引腳TXFIFO 空時再次觸發(fā) DMA 請求循環(huán)往復(fù)注意第 2 步和第 5 步是異步的。從機側(cè) DMA 填充數(shù)據(jù)的速度可以比主機時鐘快只要 TXFIFO 里有數(shù)據(jù)SCK 來了就能移出去如果 TXFIFO 為空SCK 來了移出去的就是 0x00 或者 0xFF取決于移位寄存器里殘留的數(shù)據(jù)。在這個流程中有一個關(guān)鍵點經(jīng)常被忽視SPI 從機使能 DMA 發(fā)送之前TXFIFO 必須是空的否則老的殘留數(shù)據(jù)會被先發(fā)出去。H7 的 SPI 在每次傳輸完成后TXFIFO 里可能殘留上一幀的最后幾個字節(jié)。如果你不清理就直接開始下一次 DMA 發(fā)送開頭幾個字節(jié)可能是殘留數(shù)據(jù)然后才是新數(shù)據(jù)。排查時可以通過讀SPI_SR的狀態(tài)位來確認比如RXWNE、TXC這些位。更簡單粗暴的方法是每次發(fā)送前調(diào)用__HAL_SPI_CLEAR_OVRFLAG(hspi1)清除溢出標志同時確認TXC被置位表示上次傳輸已完成。4.3 FIFO 閾值與 DMA 請求觸發(fā)時機H7 的 SPI 內(nèi)部有一個 16 字節(jié)或 8 字具體看數(shù)據(jù)寬度的 TXFIFO。DMA 請求的觸發(fā)策略與 FIFO 閾值相關(guān)。CubeMX 默認配置下閾值為 1 字節(jié)這意味著 FIFO 空出一個字節(jié)的位置就會觸發(fā)一次 DMA 請求。這個配置在大多數(shù)場景下沒問題。但如果你傳輸?shù)臄?shù)據(jù)寬度是 16bit 或 32bit或者打開了 DMA 的突發(fā)模式FIFO 閾值和突發(fā)長度的配合就容易出岔子。比如 DMA 配置為突發(fā) 4 次每次搬 1 字節(jié)但 FIFO 閾值卻設(shè)置為 4 字節(jié)那 DMA 請求就永遠不會被觸發(fā)因為 FIFO 空出來的位置始終不夠 4 字節(jié)。這個問題的典型現(xiàn)象是第一次 DMA 傳輸可能正常之后的傳輸就卡死或者數(shù)據(jù)錯亂。因為第一次傳輸時 FIFO 是空的足夠觸發(fā)突發(fā)條件傳輸結(jié)束之后 FIFO 殘留了部分數(shù)據(jù)下一次閾值判斷就不滿足了。解決辦法是把 DMA 的 FIFO 設(shè)置為 Disable或者把突發(fā)模式改為 Single。對于從機場景我測試下來最穩(wěn)定的配置是DMA 模式 Normal、FIFO Disable、MemDataAlignment Byte、PeriphDataAlignment Byte。這種配置雖然效率不是最高但兼容性最好出問題的概率最小。4.4 一個完整可用的從機 DMA 初始化代碼下面給出一份精簡但完整的配置代碼包含了上面提到的關(guān)鍵處理。CubeMX 生成的初始化用戶代碼區(qū)可以照這個思路調(diào)整/* SPI1 從機配置 */ hspi1.Instance SPI1; hspi1.Init.Mode SPI_MODE_SLAVE; hspi1.Init.Direction SPI_DIRECTION_2LINES; hspi1.Init.DataSize SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity SPI_POLARITY_LOW; hspi1.Init.CLKPhase SPI_PHASE_1EDGE; hspi1.Init.NSS SPI_NSS_SOFT; hspi1.Init.FirstBit SPI_FIRSTBIT_MSB; hspi1.Init.TIMode SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation SPI_CRCCALCULATION_DISABLE; hspi1.Init.CRCPolynomial 7; hspi1.Init.CRCLength SPI_CRC_LENGTH_8BIT; hspi1.Init.NSSPMode SPI_NSS_PULSE_DISABLE; HAL_SPI_Init(hspi1); /* DMA 發(fā)送配置 */ hdma_spi1_tx.Instance DMA1_Stream0; hdma_spi1_tx.Init.Request DMA_REQUEST_SPI1_TX; hdma_spi1_tx.Init.Direction DMA_MEMORY_TO_PERIPH; hdma_spi1_tx.Init.PeriphInc DMA_PINC_DISABLE; hdma_spi1_tx.Init.MemInc DMA_MINC_ENABLE; hdma_spi1_tx.Init.PeriphDataAlignment DMA_PDATAALIGN_BYTE; hdma_spi1_tx.Init.MemDataAlignment DMA_MDATAALIGN_BYTE; hdma_spi1_tx.Init.Mode DMA_NORMAL; hdma_spi1_tx.Init.Priority DMA_PRIORITY_HIGH; hdma_spi1_tx.Init.FIFOMode DMA_FIFOMODE_DISABLE; HAL_DMA_Init(hdma_spi1_tx); __HAL_LINKDMA(hspi1, hdmatx, hdma_spi1_tx); /* 使能 SPI 內(nèi)部從機選擇軟件 NSS 必須 */ SET_BIT(hspi1.Instance-CFG1, SPI_CFG1_SSI); /* 啟動 NVIC 中斷 */ HAL_NVIC_SetPriority(SPI1_IRQn, 5, 0); HAL_NVIC_EnableIRQ(SPI1_IRQn); HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 5, 0); HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);發(fā)送數(shù)據(jù)時調(diào)用HAL_SPI_Transmit_DMA(hspi1, txBuffer, bufferLen);如果使用了環(huán)形緩沖區(qū)持續(xù)發(fā)送可以選擇HAL_SPI_Transmit_DMA在傳輸完成后再次調(diào)用或者在HAL_SPI_TxCpltCallback里重新啟動下一次傳輸。這里的注意事項是在回調(diào)里重新調(diào)用前一定要確認上一次傳輸已經(jīng)完全結(jié)束否則會觸發(fā) HAL 庫的狀態(tài)機斷言。5. HAL 庫狀態(tài)機與回調(diào)機制程序“看起來在跑”其實啥也沒干5.1 HAL_SPI_Transmit_DMA 內(nèi)部到底做了什么很多人在排查 DMA 問題時忽略了 HAL 庫本身的狀態(tài)機設(shè)計。HAL_SPI_Transmit_DMA()并不是簡單地“把地址和長度塞給 DMA”它內(nèi)部做了一堆狀態(tài)判斷if (hspi-State HAL_SPI_STATE_READY) { // 設(shè)置狀態(tài)為 BUSY_TX // 配置外設(shè)地址、內(nèi)存地址、數(shù)據(jù)長度 // 使能 SPI 的 TX DMA 請求 // 使能外設(shè)中斷 } else { return HAL_BUSY; }如果 SPI 的狀態(tài)機不在HAL_SPI_STATE_READY函數(shù)會直接返回HAL_BUSY而不會啟動任何 DMA 傳輸。常見的導(dǎo)致狀態(tài)機卡住的原因包括上一次 DMA 傳輸沒有正常完成hspi-State還停在HAL_SPI_STATE_BUSY_TX某個回調(diào)返回了錯誤代碼導(dǎo)致 HAL 庫認為傳輸失敗SPI 發(fā)生 OVR溢出錯誤后沒有調(diào)用HAL_SPI_ErrorCallback狀態(tài)機沒有被重置更隱蔽的情況是你調(diào)用了HAL_SPI_Transmit_DMA()返回HAL_OK但因為之前清除狀態(tài)時沒有正確復(fù)位hspi-ErrorCode導(dǎo)致后續(xù) HAL 庫內(nèi)部檢查到錯誤標志自動中止了 DMA。這種問題從外部看你只會看到“DMA 啟動了但沒有數(shù)據(jù)”查起來特別費勁。5.2 恢復(fù) HAL 狀態(tài)機的標準操作如果你懷疑狀態(tài)機卡住最簡單的辦法是在啟動 DMA 之前手動復(fù)位狀態(tài)hspi1.State HAL_SPI_STATE_READY; hspi1.ErrorCode HAL_SPI_ERROR_NONE;但這個方法只能作為調(diào)試時的臨時手段正式代碼里不建議頻繁手動操作狀態(tài)機字段因為 HAL 庫內(nèi)部有可能有自己的緩存狀態(tài)手動修改容易引起其他字段不一致。更穩(wěn)妥的辦法是調(diào)用HAL_SPI_Abort(hspi1)來中止當前傳輸并復(fù)位狀態(tài)機。注意HAL_SPI_Abort()是阻塞式的如果 DMA 正在傳輸大塊數(shù)據(jù)它會等待 DMA 停止完成才返回。在中斷服務(wù)函數(shù)里調(diào)用要格外小心不要造成死鎖。5.3 中斷優(yōu)先級與回調(diào)執(zhí)行時機另一個容易出問題的點是中斷優(yōu)先級配置。H7 的 NVIC 中斷分組默認是 4全部用于搶占優(yōu)先級SPI 中斷和 DMA 中斷的優(yōu)先級需要合理設(shè)置。如果 DMA 中斷優(yōu)先級設(shè)置得太低而主循環(huán)里的某個高優(yōu)先級中斷頻繁打斷 DMA 傳輸就可能導(dǎo)致 DMA 的傳輸完成中斷延遲響應(yīng)進而影響 HAL 庫狀態(tài)機的更新。從機模式下還有一點特殊SPI 的 RX 溢出中斷OVR和 TX 完成中斷TXC在從機模式下觸發(fā)時機和主機不同。主機是主動控制時鐘的中斷只在特定時刻出現(xiàn)從機是被動響應(yīng)的主機隨時可能發(fā)起時鐘所以中斷有可能在任何時刻觸發(fā)。如果中斷服務(wù)函數(shù)處理時間過長或者優(yōu)先級配置不當就可能丟失中斷事件。我的建議是從機場景下SPI 全局中斷優(yōu)先級不低于 DMA 中斷優(yōu)先級保證事件按順序處理。比如兩個都設(shè)為 5同優(yōu)先級下按自然懸空順序處理也可以接受。但不要把 SPI 中斷優(yōu)先級設(shè)得比 DMA 低否則 DMA 完成后 SPI 的完成標志沒人處理HAL 庫狀態(tài)機就會一直卡在 BUSY。5.4 關(guān)于HAL_SPI_TxCpltCallback的一個容易忽略的細節(jié)很多人在這個回調(diào)里寫了發(fā)送完成后的處理邏輯比如翻轉(zhuǎn)一個 GPIO 指示燈。但注意一個細節(jié)從機模式下TXCTransfer Complete標志是在“SPI 外設(shè)的移位寄存器發(fā)送完畢”時設(shè)置的而不是在“數(shù)據(jù)從內(nèi)存搬運到 SPI 外設(shè)”時設(shè)置的。也就是說即使你看到HAL_SPI_TxCpltCallback被調(diào)用了也不代表 SPI 時鐘已經(jīng)全部結(jié)束——在從機模式下主機的時鐘可能還在繼續(xù)。如果這時候你在回調(diào)里修改了發(fā)送緩沖區(qū)的內(nèi)容可能會影響下一幀數(shù)據(jù)。這個問題在調(diào)試時有一個很典型的表現(xiàn)主機連續(xù)讀多個字節(jié)從機用 DMA 發(fā)送固定緩沖區(qū)前幾個字節(jié)是對的后面的字節(jié)全是 FF。原因就是從機在回調(diào)里提前修改了發(fā)送緩沖區(qū)導(dǎo)致后續(xù) DMA 搬運到的數(shù)據(jù)已經(jīng)被改掉了。解決辦法如果需要更新發(fā)送內(nèi)容只在回調(diào)里設(shè)置一個標志位然后在主循環(huán)里再更新緩沖區(qū)不要直接在回調(diào)里操作。6. 從現(xiàn)象到結(jié)論的完整排查清單與故障速查表6.1 一次完整的診斷走查流程結(jié)合我這幾天排查 H753ZI SPI 從機 DMA 的經(jīng)驗整理一個可以直接照著做的排查清單。這個清單的順序是我實踐后確定的從“看燈”到“摳寄存器”都有覆蓋每一步都有明確的結(jié)論判定不會讓你白干。第一步物理層確認。用示波器或邏輯分析儀同時抓 SCK、CS、MISO 三個信號。觀察主機發(fā)起讀操作時從機的 CS 是否被拉低、SCK 是否持續(xù)翻轉(zhuǎn)、MISO 是否有對應(yīng)的數(shù)據(jù)輸出。如果 MISO 完全不動直接跳轉(zhuǎn)到第三步如果 MISO 有數(shù)據(jù)但主機讀回來的不對跳轉(zhuǎn)到第二步。第二步配置參數(shù)核對。確認主從機的 CPOL、CPHA 一致數(shù)據(jù)幀寬度一致MSB/LSB 順序一致。這兩組參數(shù)只要有一個不匹配就會導(dǎo)致數(shù)據(jù)錯位或者全 FF??梢越⒁粋€簡單的測試用例從機發(fā)送固定序列0x01 0x02 0x03 0x04...主機讀回來對比能快速定位是位序問題還是電平時序問題。第三步從機選通信號確認。確認 NSS 模式是硬件還是軟件硬件模式檢查接線是否連接正確、主機是否配置了推挽輸出軟件模式檢查CFG1寄存器中的SSI位是否置位。這一步排查完后MISO 應(yīng)該有動作了。第四步DMA 配置確認。打開dma.c或 CubeMX 的 DMA 設(shè)置界面確認 DMA 請求源選擇的是SPIx_TXH7 必須方向是MemoryToPeripheral外設(shè)地址是 SPI 的 TXDR 寄存器。如果這些都對在HAL_SPI_Transmit_DMA()調(diào)用處打斷點觀察hspi-State是否成功從 READY 轉(zhuǎn)為 BUSY_TX。第五步測試“阻塞模式發(fā)數(shù)據(jù)”與“DMA 模式發(fā)數(shù)據(jù)”的差異。如果阻塞模式能正常發(fā)數(shù)據(jù)、DMA 模式全是 FF那問題就鎖定在 DMA 與 SPI 外設(shè)的交互上。這時候可以檢查 DMA 傳輸?shù)挠嫈?shù)寄存器LIFCR、NDTR 等確認 DMA 是否真的把數(shù)據(jù)傳輸?shù)搅?SPI 外設(shè)。第六步禁用所有無關(guān)的中斷優(yōu)先級和 FreeRTOS 調(diào)度使用最簡環(huán)境測試。很多從機問題在裸機環(huán)境下能復(fù)現(xiàn)但加上 RTOS 后行為就變了原因往往是中斷優(yōu)先級和調(diào)度時序發(fā)生了變化。用最簡環(huán)境把問題復(fù)現(xiàn)出來再逐步加入軟件組件能更準確地定位。6.2 這篇文章踩過的坑問題現(xiàn)象、原因、解決方式速查表問題現(xiàn)象根本原因解決方式/調(diào)試要點MISO 完全無翻轉(zhuǎn)主機讀全 FF軟件 NSS 模式下SSI位未置位確認SPI_CFG1_SSI為 1硬件 NSS 模式下檢查連線MISO 無翻轉(zhuǎn)但寄存器配置看似正常DMA 請求源未配置為SPIx_TX檢查hdma.Init.Request確認是 DMAMUX 的正確請求 IDMISO 有翻轉(zhuǎn)但數(shù)據(jù)是錯的CPOL/CPHA 主從不匹配或位序不對主從機參數(shù)逐項對照用0x01 0x02序列測試定位是位序還是電平時序問題前幾個字節(jié)正確后面全是 FF發(fā)送緩沖區(qū)在HAL_SPI_TxCpltCallback里被提前修改回調(diào)中只置標志位數(shù)據(jù)更新移到主循環(huán)主機讀到的不是 FF而是全 0x00MISO 被下拉從機未驅(qū)動總線和全 FF 屬于同類問題只是外部引腳電平不同DMA 第一次傳輸正常后續(xù)不穩(wěn)定FIFO 閾值與突發(fā)傳輸長度不匹配關(guān)閉 DMA FIFO或把突發(fā)模式改為 SingleHAL_SPI_Transmit_DMA 返回 HAL_BUSYSPI 狀態(tài)機卡在 BUSY_TX 未恢復(fù)調(diào)用HAL_SPI_Abort()復(fù)位狀態(tài)機檢查錯誤標志并清除FreeRTOS 環(huán)境下程序卡死DMA 中斷優(yōu)先級設(shè)置過高導(dǎo)致調(diào)度異常合理設(shè)置 NVIC 優(yōu)先級SPI 與 DMA 中斷優(yōu)先級不差兩級以上主機發(fā)時鐘但從機沒數(shù)據(jù)從機 TXFIFO 為空沒有數(shù)據(jù)可移出確認HAL_SPI_Transmit_DMA()已經(jīng)調(diào)用檢查 DMA 計數(shù)是否變化數(shù)據(jù)里有偶發(fā)的錯亂字節(jié)從機被非預(yù)期地重新選通或 NSS 抖動檢查 CS 線上是否有毛刺硬件上可適當加濾波電容6.3 從“全是 FF”到“調(diào)試工具怎么選”調(diào)試 SPI 從機 DMA 這類問題工具選擇直接決定排查速度。我這次用到的工具按優(yōu)先級排列示波器或邏輯分析儀必須要有而且?guī)挷恍枰芨?00MHz 就夠用SPI 協(xié)議分析功能有最好沒有的話用 GPIO 翻轉(zhuǎn)來輔助判斷時序也行。示波器的用法有三個關(guān)鍵點一是抓圖時把 SCK、CS、MISO 三個通道同時打開這樣能整體判斷從機的響應(yīng)時序二是觸發(fā)方式設(shè)置為 CS 下降沿觸發(fā)而不是 SCK 觸發(fā)因為 CS 標志一次傳輸?shù)拈_始三是觀察 MISO 數(shù)據(jù)時要注意從機的數(shù)據(jù)是“在 SCK 上升沿或者下降沿采樣”的要在正確的沿上判斷數(shù)據(jù)電平。如果沒有示波器邏輯分析儀也能湊合但要注意采樣率不能太低。SPI 時鐘 4MHz 時邏輯分析儀的采樣率至少要 20MHz 以上越低越容易在邊沿處采到不確定電平造成誤判。6.4 移植中容易出問題的 GPIO 配置最后提一個很多人會忽略的細節(jié)GPIO 模式配置。SPI 從機的 MISO 引腳必須配置為復(fù)用功能推挽輸出AF Push-Pull而不是開漏輸出。這一點在 Nucleo 板上通常 CubeMX 已經(jīng)幫你配好了但如果你手動從 F1 代碼移植過來就容易把 MISO 配成開漏——因為 F1 的 SPI 從機在某些配置下 MISO 是開漏輸出的H7 的 GPIO 電氣特性不一樣直接照搬就會導(dǎo)致 MISO 電平驅(qū)動能力不足主機讀到的電平異常。另外從機的 SCK 和 NSS 引腳要配置為上拉輸入或者帶上拉的復(fù)用輸入避免引腳懸空時電平抖動導(dǎo)致誤觸發(fā)。CS 引腳如果有長線連接建議在從機端加一個 10kΩ 左右的上拉電阻確保主機未拉低時 CS 保持高電平從機不會被意外選中。7. 寫在最后SPI 從機調(diào)試永遠先問“總線上的電平是誰產(chǎn)生的”這次排查 H753ZI 從機 DMA 全 FF 問題最大的心得可以用一句話總結(jié)調(diào)試 SPI 從機永遠先問“總線上的電平是誰產(chǎn)生的”而不是先問“我的代碼哪里錯了”。0xFF 本身不是錯誤它是總線空閑時 MISO 的自然狀態(tài)真正的問題是你期望從機去驅(qū)動總線但總線沒有被驅(qū)動。所以每當你看到數(shù)據(jù)全是 0xFF先別急著查 DMA 參數(shù)和 HAL 函數(shù)按照“物理層有沒有動作 - 從機選通有沒有生效 - SPI 參數(shù)是否匹配 - DMA 是否真的搬運了數(shù)據(jù) - HAL 狀態(tài)機是否正?!边@個順序逐一排查大部分問題都能在兩小時內(nèi)定位。從技術(shù)演進的角度看H7 的 DMAMUX 架構(gòu)讓 SPI 與 DMA 的搭配更加靈活但也帶來了新的配置門檻。如果你是從 F1/F4 老工程遷移過來的建議先完全刪除 CubeMX 生成的 DMA 配置重新按 H7 的方式生成一次不要手動改老代碼這樣能避免 DMAMUX 請求映射丟失這類隱蔽問題。另外調(diào)試這類問題的時候建議把 CubeMX 的配置文件、主機的 SPI 時序圖、從機的初始化代碼三份材料放到一起對照著看。很多時候主機和從機兩邊各自都覺得自己的配置是對的但就是參數(shù)沒有對齊把關(guān)鍵參數(shù)列成一張表逐項核對比一個人悶頭查快得多。最后再分享一個小技巧在HAL_SPI_Transmit_DMA()啟動之后、數(shù)據(jù)發(fā)送完成之前的這段窗口期從SPI_SR寄存器讀一下TXNP位。如果這個位為 0說明 SPI 外設(shè)正在等待數(shù)據(jù)被移出如果為 1說明 TXFIFO 還有數(shù)據(jù)沒發(fā)完。配合調(diào)試器實時監(jiān)視這個寄存器能非常直觀地看到 DMA 和 SPI 外設(shè)之間的配合是否正常。有時候看到的變化趨勢比任何日志都好用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天美传媒av一区二区| 爱妃国产亚洲视频中文字幕| 日韩AV片| 中文字幕一区二区韩| 2017天天拍大香蕉| 少妇久久久免费| 手机不卡视频不卡在线一二三区| 日本女人操逼| 一级黄色性爱A级片| 欧美Ⅴ性爱| 日韩无码服务区| 夜夜嗷嗷一区二区| 日本欧美韩国日产片片在线看免| 婷婷久久五月| 亚洲午夜福利视频| 99精品视频在线观看免费| 我想要 啊 啊 啊| 亚洲系列欧美| 四虎精品亚洲| 97伊人网| 久久男人的天堂| 欧美激情 一区| 日本熟妇精品九九| 欧美色图在线视频少妇| 91操人| 区一二区日韩亚洲乱码av电影| 亚洲情色 自拍| 97天天操天天干| 久久久人妻| 天美麻花大全视频| 92人人操人人| 在线观看精品国产免费| 凹凸视频在线观看伊人| 爱av免费| A片三级无码| 岛国视频免费在线观看| 中文字幕在线观看AV| 3571色综合一区二区二区| 人妻-91porn| 五月婷婷五月天| 综合久久中文字幕综合日韩精品| 99热综合| 国模限制级电影| 久久思思热| 婷婷久草| 超碰爽人妻熟女Av| 综合网久久| 久久最新视频免费观看| 日日妻色网| 天天影视之亚洲综合网| 日韩精品人妻中文字幕不卡乱码| 日韩欧美女求操每天更新| 97日韩欧美亚洲| 97chaopengongkai| 97超碰磁| 午夜精品久久久久久久99蜜桃一| 人人色人人射人人妻| 欧美亚洲中文| 午夜亚洲WWW湿好大| 精品国产三级av韩国在线 | 欧美熟女操屄| 五月婷婷综合网| 超碰公开久久网| 内射中出日韩在线观看视频| 亭亭在线资源| 曰韩精品视频一区二区| 久久老子无码午夜伦不卡| 超碰在线成人| 97国伦国色| 久草综合网| 日本不卡一区| 五月激情影院| 国产盗摄美女如厕大神作品在线观看| 蜜臀AV午夜精品久| 噜噜噜在线视频| 欧美十八禁网站| 天天日天天插| 超碰98综合网| 欧美人妻少妇| 婷婷色播婷婷| 97天天操天天干| 骚货操死你| 欧美大波激情xxxx| 欧美顶级黄片AAAAA在线免费看| 久久精品国产精品亚洲艾通辽熟妇| 麻豆久久久久久久久丝袜| AV色五月天| 中文字幕三四区| 亚洲图片欧美另类综合免费视频大大香| 999国产精品999久久久久久| 看大黄色大片原件| 这里是精品| 日韩青久久| www.亚洲成人一区| 青青11操操操操操操操操| 国产欧美黑人丰满在线| 亚洲国产av中文字幕久久 | 日骚逼视频| 国产精品自拍xxxx| 欧美白嫩在线放| 日本视频在线中文字幕| 六月丁香五月婷婷| 99re99在线视频| 无码逼| 红桃视频高潮| 97色网| 中文一区二区婷婷视频| 福利视频香蕉免费一区二区在线| 天天干天天干天天| 东京热,男人的天堂| 加勒比在线观看一区二区| 99精品丰满人妻无| 国产一级137片内射麻豆| av天堂影视中文在字幕在线中文| 亚洲欧美综合网| 人、人、摸,人、人、草| 自拍二页| 亚洲国产尤物yw在线观看| 免费人人搞97| 精品成人亚洲午夜电影| 婷婷15月天青娱乐| 精品国产丝袜一区二区三区乱码| 粉嫩AV输入| 国产精品久久天天干| 美欧色综合| 艹我哪美一区无码| 好吊色综合| 日韩精品一区二区三区四虎影视| 三上悠亚在线毛片91| 久久黄黄| 精品日韩人妻视频| 91九九九小逼| 99精品久久久久久久婷婷蜜桃| 人妻黑丝袜电影| 欧美aaaaaaa| 影音资源男人日韩| 99re这里只有精品3| 97在线观看免费视频| 日产中文字幕2020| 熟女人妻一区二区三区| 天天摸天天操视频| 久久发布国产伦子伦精品| 国产性爱强奸乱伦大全| 久久久精品中文字幕麻豆| 欧美大香蕉专区网| 91热| 欧色综合| 天天干天天做| 少妇一区二区三区高速| 精品久久97| 亚洲欧美综合色| 能在线播放的国产三级| 久久久久99精品成人片蜜臀| 亚洲美欧999| 五月天玖玖资源站| 日产操逼| 黄站在线免费观看| 91最新综合| 亚洲αv一区二区三区| 久久久啊啊啊| 97人人操人人摸| 日韩射图| 欧美性综合| 亚洲av夫妻操穴网| 日本性爱网址| 亚洲自拍偷拍视频在线| 啊啊啊轻点在线观看| 日韩三级久久久| 超碰在线观看av不卡| 亚洲综合伊人无码久久| 人妻熟女一区二区| 久久伊人网视频一区二区三区| 亚洲AV成人无码一区二区三区在线观看| 欧美精品97| 熟女久久久| 日韩一999精品| 99精品热| 综合一区中亚洲国产成人综合精品| 99无码狠狠久久| 热热色AV| 国产乱码久久久久久| 天综合中文| 亚洲一区二区精品福利| 涩综合导航| 少妇淫妇久久久久久久| 久久久久幕乱码| 韩国女主播青草在线| 久久欧美按摩999| 福利在线观看一区二区| 国产性久久久| 嫩呦国产一区二区三区AV| 日韩在线电影| 酒色综合网| 91痴汉| 亚洲美女黄色| 久久综合久色欧美综合狠狠 | 91搡老女人老妇女老熟女歌词翻译| 亚州九九九精品视频| 久久色一区二区| 亚洲情色婷婷五月天| 夜夜一区二区| 色99色| 欧美日韩国产色图在线| 亚洲一区二区性爱电影| 伊人女女资源在线观看| 久久精品色欧美aⅴ一区二区| 岛国激情视频软件| 制服乱伦| 91粉芽高清在线一区二区| 欧美,日韩,亚洲视频| 久久成人午夜精品影院| 福利伊人玖玖国产| 67914亚洲精品| 美女尤物福利视频| 熟妇人妻一区二区| 精品九九九九九九九九九| 亚洲精品天天影视综合网| 第二页中文字幕| 免费人人搞97| 96精品一区| 91天天综合在线| 97超碰伊人| 亚洲精品电影| a一区二区三区乱码在线| 国产高清精品一区二区三区毛片| 无码WWW免费视频网站| 欧美性爱日韩性爱| 综合久久欧美| 美女尤物福利视频| 日本性一区| 久久久日本电影| 成人线上超碰| 97天堂| 台湾佬中文娱乐自偷自拍| 丝袜喷水在线| 人妻无码一区二区三区久久99| 国产麻豆一区二三区| 天天日骚逼熟女| 一区二区三区机械有限公司| 中文AV制服乱伦| 天天综合色电影| 乱伦一区二区三区‘| 国产av白丝| 欧在线一二区| 91国产美女丝袜足交精品视频| 日韩啪啪视频| 夜夜嗨一区| 极品AV网站在线观看| 国产后入精品| 日韩成人精品中文字幕| 国产AV久久久蜜爱影集| 激激五月| 天天操福利视频综合网站| 91丨人妻丨国产丨丝袜| 久久久亚洲欧美综合| 婷婷综合久久| 强奸熟女一区二区三区| 欧美十八禁视频| 思思热免费视频观看| 丁香五月激情网| 色综合20p| 秋霞Av理论一级在线| av在线免费一区二区| 七久久久| 中文字幕色AV| 亚洲中文一区二区三区| 日韩AV一区二区三区三州三州| 爱丝福利| 国产AV毛片| 欧美精品在线观看| 亚洲国产97| 一个人免费HD91视频| 狠狠搞 亚洲91| 中文三一区| 综合欧美日韩在线观看| 夜夜 中文视频rt| 男人天堂电影院| 欧亚在线视频| 91亚洲最新在线| 操逼视频亚洲| 亚洲男人天堂2016| 一级@啪啪视频| 老熟女区| 成人a级高清视频在线观看| 久久久草成人网站久久久草成人久久久草久久久 | av大香蕉网站| 欧美色999| 五月婷婷六月色| 伊人性在线视频| 黑人嘿嘿嘿超爽免费视频| 激情欧美日韩女同久久| 久久无码电影| 国产AV线| 久9热| 啊啊啊轻点在线观看| 色就色综合| 绑缚麻绳人妻寝取完整版| 东北女人操逼| 欧美最婬乱婬爆婬性视频 | 一线黄色免费性爱片| 亚洲图片 激情小说| 99re国产精品视频| 人人操人人射人人干| 波多野结衣被操50分钟免费视频 | 神马久久久久久| 国产精品老熟女一区二区| 超碰97护士| 91女人的网站| 在线无码操| 欧美线天码中字| 国产亚洲综合欧美一区| 69精品| 免费农村成人少妇人妻Aa一区二区视频| 亚洲欧美日韩激情不卡| 欧美高清性猛交| 国产精品国产自产高清AV| 加勒比海成人视频网| 日韩人成网站在线播放| 九九热精品视频六| 91n美女视频| 国产真乱mangent| 亚熟hd视频在线| 欧美人妻一区| 超碰地址久久| 国产视频小说| 91精品人妻一区二区三区蜜桃臀| 国产精品久久久久久照片| 屁股久久久久久久久| 五月天色色色| 人人操人人摸人| 91爱啪| 啊啊啊不要啊啊受不了了视频在线 | 高清国产无码av| 人妻黑丝袜电影| 色婷婷基地| 国产AAAAAABBBBB| 91老熟女91老女人| 久久久久久久国产| 99精品久久| 韩国手机不卡无码三级视频| 91亚洲欧美激情| 欧美精品91| 五月婷婷激情综合| 亚洲精品无码成人久久久99| 一级AV性爱| 理论久久婷婷网8| 91在线色| 男人的天堂网免费| 亚洲欧美日韩夜夜| 伊人久久大香线蕉无码| 人人么人人操| 超碰吊日色| 亚洲视频,小说| 久久9精品视频| 天天躁日日躁XXXXYY| 亚洲婷婷丁香在线| 精品对白久久不卡| 超碰欧美97资源| 日韩精品高清资源在线| 亚洲日韩一区电影| 免费毛片在线播放| 欧美日本中字另类在线| 人妻9117c| 少妇天堂| 欧美性爱超碰97| 大香蕉伊然在亚洲91| 久久超碰免费的| 欧美中文字幕男人天堂久久精品| 色色色热| 九九Av| 熟女被操视频网址| 亚洲高清在线| 亚洲 欧美 中文 日韩超碰| 中文字幕免费看大片| 国产亚洲精品无码三区| 婷婷色色五月天福利| 亚洲精品91| 欧中美三级一区二区三区| 蜜臀av网址| 91精品国产乱码| 人妻丝袜肏逼| 91 丝袜在线观看| 色悠久久久av| 人乳av| 亚洲久草AV色图| 久久超碰天天| 久久午夜色播影院免费高清| A级片日韩欧美国产欧美视频精选观看| 国产精品一区二区三| 九九九九九九九九九国产精品 | 男人天堂2017| 精品蜜乳AV免费观看| 91黑人狂躁丰满熟妇| 色汉综合| 欧美亚洲国产91在线| 国产一区二区三区高清视频| 黄色免费网| 草莓精品视频在线免费观看| 日韩不卡毛片Av免费高清| 3P乱轮视频| 免费a在线播放v| 操人91| 亚洲夜色在线| 性色国产东北露脸精品视频| 天天日美女的B| 欧美日韩97在线| 97精品全部| 欧美91在线| 乱伦一二三区| 国产动漫操逼视频| 97视频在| 综合亚州欧美| 99久久精品无码一区二区毛片免费 | 九九AV| 欧美美女在线高潮999| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 日韩偷拍色图| 超碰夫妻97| 蜜臀va69| ,成人免费啪啪视频| 色爱三区| 超碰这里只有精品| 久久粉色| 一级久久性爱视频| 欧美熟妇精品黑人巨大一二三区| 丰满熟妇大乳做爰| 久久久久亚洲熟妇熟女| 粉嫩av在线一区二区| 老色69| 久久华人网| 国产老太乱伦一区| 亚洲av无码成人精品国产| 精彩国产视频播放1区2区| 人妻偷拍一区二区三区| 夜夜草网站| 60秒免费小视频| 国内伊人久久久久久网站视频| 日本成人A片网站| 天天日天天舔天天喷天天射| 91精品久久久久久77777| 国产强奸无码乱伦| 日本色婷婷| 久久精品国产久精国产| 麻豆国产97在线| 久久久久久久久久8888| 婷婷五月天无码| 黄片免费日韩| 久久久噜噜噜久久久| 性高潮久久久| 日本一级性爱| 91久久伊人婷婷青青草| 91 丝袜在线播放| 亚洲精品丝袜-不卡成人免费……| 亚洲精品不卡一二三区| 国产又黄又粗的视频| 99久久com免费视频′| 久久大香蕉97| 十八禁视频网站| WWW美腿丝袜香蕉中文| 国产精品永久免费10000| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 麻豆天美国美国产| 精品一区二区三区麻豆| 色色婷婷五月天| 9久9久| 天天色播亚洲综合网站| 亚洲AV在线资源| 中文字幕精品一区二区精| 欧美色997| 国内亚洲高清无码| 日本日日色视频| 日本在线观看网址| 大香蕉十区| 韩日色费| 天天色怡春院| 国产AV超爽| 九九久久国产精品怡红院| 黄片直播三级黄片两女一男| 欧美色图99| 色五月综合| 久久久不卡| 999狠狠综合| 2017av无码免费无线播| 99在线观看无大码| 国产 热久久久久国产精品| 嫩草 我啊~嗯~在线| 欧美劲爆视频一区二区| 97操碰| 久久极品伊人| 八戒无码国产午夜福利| 日韩中文9| 少妇3P性爱自拍| 欧美激情欧美精品| 精品偷拍13p欧美dodk视频| 欧美色图自拍| 九九久久一区二区三区| 国产一级不卡在线观看| 91国产丝袜白虎| 97视频观看| 国产性爱在线视频一区二区| 久久久999国产精品| 色色色色色色色色色色色色色色综合| 岛国福利在线精品播放| 伊人四虎综合| 密臀在线免费观看| 久久久免费一级黄片| 91精品国产一区三一| 啊啊啊啊啊啊好湿好爽视频| 久草视频分类在线| 中国操逼无码| 亚洲精品熟妇1区2区3区。| 国产精品对白内射| 亚洲女毛多水多21P| 九九热九九| 校园春色中文字幕AV| 婷婷99狠狠| 国产一区免费午夜视频| 欧美色图综合网| 在线情色电影 91大| 婷婷亚洲综合| 天堂8在线新版官网| 国产无码精品无码| 精品美女少妇一区二区| 9久精品视频在线观看| 人人爱操| 思思热免费视频观看| 久久久精品中文字幕爱豆| 亚洲情色 自拍| 日韩精品第3页| 蜜臀久久一区二区| 九九99精品视频在线观看| 亚洲密乳AV| 91精品国产一区三一| 色综合1991| 91天美传媒精品| 青青草密桃在线播放| 国产成人自拍视频在线| 亚洲AV噜噜狠狠网址蜜桃动漫| 偷拍精品一区二区三区| 国产精彩女在线观看视频| 久久久久国产无av| 亚洲成人美女无吗| 精品国产乱码| 欧美性生活男人的天堂| 男女无套 免费网站| 91色欧美| 九九九久久久W精品| 九九九九九九九| 欧美韩国你懂得在线 | 草草草视频在线免费看| 欧美春色| 天天综合色图| 色妺妺AⅤ| julia国产在线| 亚洲不卡一| 亚洲久久东京热一二三四五区视频| www.高清无码诱惑一区.com| 久久一二三四不卡| 日韩懂色网| 欧美精品 - 91爱爱| 日少妇亚洲版| 思思久热在线精品66| 夜夜爽夜夜高潮夜夜爽| 天天综合欧美| 91春色| 国产亚洲深夜激情| 欧美日韩免费性爱| 国产精品久久久久久久黄无码 | 国产小炒后入式| 亚洲黄色网址| 97色操| 日日骚中文字幕| 操逼操逼操| 俺去啦俺来也久久综合| 九九综合久久中文字幕| 中国国国产一级特黄毛片| 久久99午夜精品一区人妻| 自拍鲍鱼一区在线高清观看免费| 99热这里| 亚洲色9| 欧美国产操逼| 丰满人妻-区二区三区| 国产精品美女久久久久久网站| 欧美狠狠狠| 性欧美第一页| 综合亚洲欧美精品日韩?v| 51久久夜色精品国产麻豆| 亚洲国产精品无码AV在线| 精品超碰国产| 熟妇人妻一区二区三区| 久久久熟女一区| 亚洲色交| 人妻 中文 日韩| 五月天激情四射| 老熟女区| 久久久精品,3| 久久久久久久九九九九九九| 久久这里只精品99re66图| 欧洲综合视频| 208天天久久九九九| 欧洲特黄毛片免费看欧洲毛片| 粉嫩粉嫩一区性色AV片| 九色97| 97国产精品久久久久 | 亚洲中文字幕乱码无码一区二区| 亚洲天堂久| 欧美v亚洲v综合v国产v妖精| 亚洲中文字幕三级在线| 国产白领连续中出在线播放| 亚洲天天自拍| 亚洲无码?第一页| 无码heyzo高清一区| 蜜桃视频成a人v在线| 九九热精品视频在线观看| 素人无码中文字幕| 五月亭亭六月丁香| 亚洲精品亚洲人成人网| 亚洲熟女一区| 性饥渴少妇av无码毛片| 少妇二级| 91欧美网| 97色色婷婷| 日韩精品人妻中文字有码在线| 亚州欧美色图| 久久五月综合| 一区二区三区男人的天堂| 夜夜操青青草| av情色影音| 在线观看中文字幕| 久久精品小视频| 亚洲色图8| 欧美性巨大╳╳╳╳╳高跟鞋| 亚洲精品 超碰| 天天干人人看综合| 69精品少妇一区二区三区蜜桃| 人妖欧美一区二区| 殴美大黄片| 久久是精品| 人人人人插| 美女91色黄18| 中文字幕123| 动漫av中文| 波多野42部无码喷潮在线观看| 啊啊啊啊啊啊好湿好爽视频| 秋霞免费无码视频日韩A片| 久久9精品视频| 国产精品com| 爱欲AV| 国产v片在线免费观看| 在线视频一区二区传媒| 影音先锋日本一区二区| 91l欧美在线| 久草国产在线视频| 人人妻天天做天天爽| 国产三区免费在线观看| 免费A V在线播放| 欧美熟妇色| 亚洲精品97久久中文字幕| 91 亚洲 欧洲| 欧美在线色| 天天操熟妇| 国产日韩久久| 中国乱伦一区二区| 日韩情色AV| 老鸭窝亚洲毛片| 超碰538| 亚洲一区二区久久久久| 少妇色综合| 欧美一区二区三区日韩| 91bbbbbb| 红桃视频高潮| 美女一区二区国产精品| 肥佬影院91| 欧美专利1区2区3区4区5区免费| 无遮挡男女激烈动态图| 黄色不卡视频| 色情五月综合婷婷| 国产v亚洲v日韩v欧美v片另类| 干b在线性社区| 美國A片| 久草午夜| 伊人久久亚洲色欲综合网站| 综合网,亚洲,欧美| 亚洲AV噜噜狠狠网址蜜桃动漫| 午夜九九| 欧美天天谢综合网| 国内自拍 日韩激情 99| 中文操逼字幕| 啊啊啊轻点在线观看| 嗯啊啊啊轻点视频 | 很很很很操| 男人天堂一区二区| 美国人人操人人操| 2017亚洲天堂| 熟女久久久| 国产精品对白内射| 精品少妇一区二区三区在线视频| 97超碰人人操人人操| 91激情国产| 色婷婷成人综合| 色欲久久综合| 国产白嫩漂亮KTV在线| 欧美亚洲小说| 精品大全99999| 亚洲永久永久永久永久一级一级一级精品| 久久艹逼视频| 最好看的中文字幕在线2018| 日本不卡五区| 亚洲做性| 亚洲精品久久一区二区三区蜜桃臀| 丰满人妻一区二区三区在线| 亚洲天堂99| 欧美不卡二区| 九月激情婷婷| 激情小说图片亚洲首页| 青青在线视频免费| 91欧洲入口| 九区国产| 色超碰综合| 久久欧洲| 日本女厕偷拍| 大香蕉手机在线视频| 激情综合五| 丁香五月综合| 熟女六十路| 久久精品中文字幕无码l| 激情抓乳插进去啪啪啪日韩| 日韩一级性爱无码| 亚洲本色精品一区二区久久| 啊v在线观看视频| 日本布卡一区二三区| 日韩成人人妻网站| 大屁股熟女一区二区三区| 97爱b| 伊人aaa| 中文字幕精品久久久久人妻红杏ⅰ| 欧美久久毛片基地| 99re不伦| 91丝袜激情在线| 色婷婷久久综合超碰| 久久超碰免费的| SS久久| 日韩精品大香蕉伊人在线| 青娱乐手机日韩在线视频| 欧洲精品一区二区三区| 欧美亚洲涩涩| 东京热大香焦| 加勒比综合在线| 欧美日韩人妻精品系列一区二区三区| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 天美精品原创av片国产| 免费观看日本操逼视频| 999久久久免费精品国产牛牛| 国产偷人伦激情在线观看| 五月天婷婷在线看| 国产女人高潮嗷嗷嗷叫小说| 国产真实野战在线视频| a在线观看| 男人的天堂在线有码| 中文字幕国产精品1区| 91亚洲欧美色图| 日日骚精品视频| 日韩无码服务区| 日韩综合97p| 亚洲自拍偷拍视频在线| 中文字幕奈奈美被公侵犯| 日韩性爱小视频在线观看| 丁香啪啪| 青青草精品| 蜜桃臀一区二区三区久久| 中国91AV| 麻豆国产视频精品观看| 欧美亚洲日本视频久久久| 99热综合| 色欲人妻一区二区在线| 五月天九九日国产精品一区二区三区| 亚洲在饯| 国产精品熟女九色九色蜜臀| 十八禁视频网站| 江都AV在线| 91亚洲色人| 在线观看精品国产免费| 日本久操视频| 人妻少妇久久中文| 97在线看| 911粉嫩人妻| 嗯嗯嗯啊啊啊操的我好爽 | 日本午夜久久电影| 色盈盈影院| 国产精品农村妇女精品| 色欲三区| 婷婷久草一区二区三区| 超碰97在线中文| 亚洲色图图片| 亚欧国产无码精品在线| 日本999精品视频| 久久香蕉国产线看观看亚洲女人 | 超碰欧美97资源| 尹人免费观看视频在线| 婷婷久久大香蕉| 久久99草| 欧美十八禁视频| 最新欧洲欧美日本激情网站| 99re综合伊人| 国产精品亚洲无码| 最新加勒比丝袜在线| 亚洲在线观看| 久久直播国产| 91美女在线视频| 日本不卡五区| 免费视频无码| 国产一区二区在线看| 黄骗免费| 欧美 日韩 婷婷 五月| 日韩免费a级毛片无码a∨| 久久99久久99久久99人受| 亚洲精品不卡一二三区| 吖在线不卡一区二区国产剧情| 97干日韩| 91少妇人妻| 九九伊人网| 日本二区不卡| www色日本| 97情超碰色| 国产精品欧美日韩久久| 久久日本熟女精品一区| 人人贴人人摸| 东北老女人的激情视频| 草草草视频在线免费看| 91原创在线观看| 久久男人天堂| 久久人妻97久久久久久久| 青娱乐啪啪视频| 久久久久久午夜男人的天堂| 欧美劲爆第一页| 欧美操逼一二三区| 日韩十八禁| 极品色社| 日韩免费a级毛片无码a∨| 久久久工口| 中文字幕精品免费一区二区| 国产精品午夜成人福利| 国产精品爱欲| 日日噜噜夜夜久久亚洲一区二区 | 人人搡人人肉久久精品| 岛国色情视频在线观看| 校园春色宗合网| 另类小色呦| 九久久九九久视频| 九九热re99re6在线精品| 美女自卫慰黄网站免费| 中文字幕三四五区| 成 人 影视 一区 二区 三区 四区| 不卡av免费在线网址| 日韩激情视频| 亚洲欧美日韩精品久久久一区二区 | 九九九九九九综合| 深爱激情五月天| 91精品人| 欧美日韩亚洲五月天婷婷| 日韩,欧美,中文在线| 一二区在线观看视频| 九九热视频在线观看| 久久久久久久精| 超碰97色色| 日韩精品亚洲专区在线影视| 国语精品av| 任我爽视频在线观看| 国产性久久久| 午夜噜噜噜| 欧美色图私拍91| 亚洲成熟国产精品美女| 亚洲丝袜在线观看| 超碰爽人妻熟女Av| 欧美十八禁导航成人| 精品日日人妻| 亚洲成人色情五月天丁香花| 激情综合婷婷| 亚洲精品一区二区精品| 情色大香蕉| 国产精品久久久777| 一块操欧美| 黄色香蕉视频网站一区| 九九九九一区| 青娱乐蜜桃臀AV色婷| 五月婷婷啪啪| 乱伦1色页| 色臀av| 蜜桃臀一区二区三区久久| 久久亚洲不卡| 91天堂色男人的天堂| 亚洲无码视频免费在线观看网址! J?P?NESEHD熟女熟妇伦 | 一区e区三| 97超碰逼| 五月天色综合| 91成人久久| 毛片久久| 搡老女人老熟女91老熟女综合网| 亚洲国内精品成人不卡| 中文字幕在线24| 日本高清有码网址视频| 一级片视频啪啪| 亚洲男人天堂网站| 亚洲国产蜜臀系列在线观看| 欧美一区二区情色| 五月天激情视频| 免费作爱一级视频| 色色网91| 韩日色费| 亚洲自拍偷拍视频在线| 国内一级精品| 国产AB视频| 日韩八十路老熟女| 日韩情色AV| 香蕉一区二区三区在线视频| 日韩精品99999| 91人妻Pr| 国产成人bd在线观看| 欧美老妇曰批的视频| 成人五级久久| A片大香蕉在线| 亚洲天堂一区| 东京热双插| 欧美碰碰综合色| 久热精品在线| av2014 日韩在线中文字幕| wwe 天天干.com| 综合网~91综合网| 欧美综合色站| 色综合一本| 亚洲毛片基地专区| 久久久久久久91| 色97干| 精品国产乱码久久久久久网站入口| 亚洲 日本 不卡| 天天操天天舔| 特污精品女优骚货黄色视频在线免费观看| 色噜噜人妻av中文字幕| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 乱伦熟女区| 国产大学生高潮在线播放| 乱伦熟女区| 99视频内射三四| 视频二区美腿丝袜制服人妻欧美| 嗯嗯啊啊视频在线看| 久操黄色视频| 人妻出轨一区二区三区| 屌妞视频久久久久久久 | 日韩人成网站在线播放| 一级久久性爱视频| 九九色色| 中文字幕视频2区| 大香蕉综合久久| 啊啊啊啊好疼视频| 日韩97超碰| 精品久久久久久中文字幕视频免费| 一级一性爱免费视频| 国产精品 久久久精品一牛| 日本欧美一区二区三区免费| 婬女免费一二三区A片| 青青操青娱乐| 久草婷婷| 一本一道久久综合久久| 亚洲久久久| 亚洲国产成人精品999| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 91亚洲欧美激情| 澳门黄片一香蕉视频| 伊人五月天激情| 91视频国品一二三区| 四虎免费看黄| 就去色综合| 91视频伊人| 欧美亚洲日本激情在线| 国产精品天美传媒| 日本男人插女人的逼黄色| 久久久久久裸体| 男人久久天堂| 日本视频一区二区三区| 91 手机在线播放 绯色| 日日做夜狠狠爱欧美黑人| 98超碰欧美| 欧美综合娱乐久久| 人人操AV| 欧美在线 亚洲| 精品视频在线观看| 国产精品视频一区二区三区八戒| 天天日天天操心| 青草影院内射高潮| 成人线上超碰| 国产乱伦一二三区| 亚洲日韩青青草色月| 综合少妇网| 精品午夜福利国产一区二区在线观看| 五月激情天| 搡老女人老91妇女熟女| J?P?NESEHD熟女熟妇伦| 伊人婷婷五月天| laoshunv91| www.99热| 精品9999| 国产女人和拘做爰视频 | 一区 欧美 日韩 麻豆| aV中文麻| 国产精品香蕉热久久新品| 97国产亚洲中文在线| 天啪| 日本在线不卡一二区| 91超碰碰在线| 自拍内地三级在线观看| 亚洲 日韩 欧美 国产综合体| 人妻熟女一区二区| 人妻献身系列第54部| 色一射色一射| 亚州男人天堂| 天天日天天爽| 玖色av| 日本一本道A级黄色毛片试看60分钟| 夜夜操av亚洲一区二区| 四虎免费在线观看| 99热这里只有精| 抽插一区二区视频| 亚洲第一无码播放立川理惠| 综合91网| 九色精品视频导航1| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 久艹伊人精品综合在线| 欧美第二页| 嗯啊不要啊在线 | 97在线精品观看视频| 伊人成人情色综合| yw尤物av无码点击进入麻豆| 美女诱惑1区2区| 亚洲色图图片| 78综合网| 色吧5亚洲| 超碰97资源中文字幕| 午夜男女爽爽大片免费观看| 亚洲熟妇丝袜在线观看| 韩国免费播放一级毛片| 久久e6只有精品| 天天看天天干| 97超碰巨乳| 日韩中文字幕人妻视频| 亚州欧美总和| 国产成人无码高清| 97资源站国产精品| 成人精品在线观看| 精品日韩| 亚州再线| 视频黄色国产一级| 91日日夜夜| 色综合婷婷| 免费试看60秒| 99热导航| 天天干天天操天天干天天操| 亚洲人精品久久久| 天天干少妇| 欧美高清18A片| 人人噜夜夜操| 亚洲AV无码乱码在线观看性色| 亚洲高潮影院| 毛片视频白嫩| 亚洲免费在线探花| 我爱操| 99久久com免费视频′| 欧美18 在线观看| 欧美亚州色的图| 国产成人网址| 自拍内地三级在线观看| 亚洲欧洲无码一区夜| 亚洲av强奸乱伦| 日韩视频中文字幕| 亚av顶级裸体一区二区三区四区五区 | 人人妻人人爽 97人人看碰人免费公开视频| 天天干天天燥| 91国产丝袜美女| 玖玖综合.com| 精品国产一区二区三区四区在线看| 97久久精品不卡| 精品夜夜澡人妻无码| 美国一区二区三区视频| julia国产在线 | 人人 操人人 操人人| 啊啊啊 在线| 亚洲天堂第一页| 熟女乱伦二区| heyZO天然素人无码AⅤ专区| 狠狠躁久久躁| 超碰97玖玖爱| 任你艹| 久操凹凸视频| 七月婷婷综合| 亚州五月| 婷婷另类小说| 美女诱惑爱爱| 韩日无码在线观看| 97超碰人人模人人拍人人| 九99久久| 久久亚洲不卡一区二区三区| 二色av| 中国女人内射6XXXXX| 国产在线观看一区二区三区| 欧美色老汉| 麻豆一区二区三区精品| 亚洲日本加勒比在线| 久久AV无码网址| 伦激情人妻另类人妻| 国产精品乱码久久久久| 久久亚州大香蕉| 大香蕉综合久久| 四虎永久在线精品免费网址 | 欧美日韩欧美| 亚洲色图第四色| 97欧美色资源| 天天综合香 ld视频| 久久久久精| 日韩成人网址| 欧美专区日本专区| 日韩黄色av中文字幕| 91色色网站| 在线中文字幕视频| 97色操| 欧美天天影院| 啊啊啊啊啊舒服| 日本一久是| 牛牛久久国产精品视频一二三| 蜜桃久久久久久久| 熟女熟妇伦久久影院毛片一区二区| 成人免费在线网站| 在线有码中文字幕| 人人模人人看| 精品999999| 欧美日韩在线小说 | 少好三P| 极品色电影院| 欧美亚洲激情一二三| 东京热av男人的天堂| 久久偷拍人| 老熟女熟妇| 女一区二区| 美女的肌被草喷水视频| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 天无日色综合| 久久久工口| 欧洲中文字幕| 东北女人的毛片| 青青草大香蕉在线视频| 91挑色欧美| 久久久成人精品| 亚洲自拍青操视频| 亚洲成人在线资源| 国产精品伦理| 国产一二三在线视频五十路| 蜜桃久久一区二区| 久久久久97| 国产又黄又粗的视频| 日本熟女中文字幕一区| 亚欧性爱ab| 五月开心网|