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

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
返回資訊列表
91视频伊人| 超碰在线人人射| 99无码狠狠久久| 日本高清有码网址视频| 国产老熟女| 欧美草草高清日韩视频| 狠狠激情综合狠狠操中文字幕| 亚洲五区熟女| 国产精品96久久久久久| 天天性射网| 欧美探花网| 99热久| 久久视频,这里只有精品| 99热| 日韩亚洲美女一区久久| 国产精品诱惑| 色综合美国| 大香蕉视频啪啪啪啪| 国产成人无码a| 插入综合网| 精品久久99| 日本久久久久久久久久| 婷婷五月天av| 蜜臀AV一区二区三区| 久久久一区二区三区三州| 大香蕉520| 99999这里都精品| 啪啪免费| 超碰天天去日穴| 9久久精品| 啊啊啊啊无码| 97香焦色区| 精品视频在线观看精品| 啊嗯好大视频在线观看| 亚洲午夜福利在线影院| 精精品人妻一区二区三区| 日韩黄色成人性爱| 国产色综合亚洲色综合吹潮| 嗯嗯啊啊日韩精品| 欧美在线视频99| 日韩精品影视| 亚洲AV秘 精品久久老牛影视| 超碰人妻中文在线| 91九九| 69麻豆天美| 情色av电影| 国产91亚洲精品一区二区三区| 亚洲欧洲偷拍一区| 精品国产91av一区二区三区 | 亚洲性高潮| 国产精品欧美日韩久久| 96国产精品| 99啪啪视频| 成人AV超碰免费在线| 男人的天堂2000| 久久婷婷伊人| 97综合久久| 亚洲熟女中文字幕在线| 精品999999| 欧美国产一区二区三区麻豆传媒| 青青操狠狠撩| 亚洲欧美日韩偷拍色图| 欧美极品少妇| 啊啊啊不要啊啊受不了了视频在线 | 高潮综合网| 99在线免费公开视频| 丰满欧美放荡少妇在线| 2025亚洲男人天堂| 日韩精品亚洲专区在线影视| 亚洲精品国语在线播放| 国产女人9999| 国产欧美一区二区| 国产不卡免费在线视频| 国产乱伦亚洲色图高清无码| 欧美亚洲清纯| 国产久久久久影院老熟女| 91啪啪| 免费久久一级毛片大黄| 国产精品一区二区三| 北京美女一区二区| 丝袜狠狠草尤物人妻av91| 日韩亚洲国产视频| 欧美高清18A片| 九九精品无码专区免费| 亚洲人人夜夜澡人人爽| 中文字幕在线观看第二页| 久久久精品中文字幕爱豆| 国产偷仑| 欧美成人黄网色网站| 日韩福利综合一区| 超碰95| 成人在线午夜视频一区| 欧美性色综合网| 97人人模人人爽人人| 中文字幕在线观看永久| 欧美另类精品xxxx| 欧美一级特黄淫片在线观看| 日B操| 久久久久婷婷精品av电影| 国产美女91视频| 国产农村妇女一区二区| 丁香五月成人| 操狠狠| 顶级丝袜熟女一区二区三区 | 久久久熟女一区| 99999精品视频| 亚洲少妇色| 婷婷综合在线| 五月丁香影视| 九九Av| 精品性爱一二三区| 国产专区第一页| 日本高清视频xxxx| 370p日韩欧美亚洲精品| 人人操人人色人人摸| 超碰日韩人妻| 免费AV中文网在线观看| 97色操| 午夜亚洲| 超碰91在线| 啊啊啊啊啊啊在线观看| 国产91亚洲精品一区二区三区| 水多多映视AV| 人人干黄色| 大香蕉久久| 天久久久噜噜噜久久国产精品爽爽| 久热精品在线| 91高清欧美| 日韩大香蕉AV影片| 尤物视频视频官网| 黄色人人| 午夜福利视频在线一区| 97人人操人人干| 超踫中文字幕| 久久久久久中文版| 91在线/欧洲| www.av不卡中文字幕| 国产自偷| 久久久久久9| 五月丁香六月综合缴清无码 | 国产精品一区二区三区在线| 九九九九久久久久| 91丨九色丨国产丨人妻在线| 精品亚洲黄色片 国产精品导航一区二区| 久久国产热视频97电影| 国产成人自拍视频在线| 久久久久久大| 超硑97精品| 亚州情色j区| 91九九九逼| 欧美影音在线| 国产97在线视频| 精品国产91内射久久| 亚洲免费人妻在| 人人人人人人少妇| A啊啊在线观看| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 久久男人的天堂国产| 久久九七| 天天天肏屄肏屄肏屄欧美欧美| 亚洲男人天堂网| 尤物黄色在线观看网站| 又大又白奶子| 9Ⅰ超碰| 家庭乱伦国产精品| 91呆哥人妻| 日韩99神马视频片| 91老司机视频| 人妻熟女av国产网站| 欧美日韩国产传媒在线精品| 久久亚洲天堂| 日本欧美一区二区三区视频麻豆| 亚洲人妻一区二区三区| 欧美在线综合| 成人午夜高潮av猛片| 中国国产精品一区视频| 97视频在线免费看| 91综合天天看| 国产理论视频在线播放| 暖暖精品二区三区观看| 易易A毛视频| 性开放中文AV高清无码免费看| 日日爽夜夜爽| 99热这里只有精品1| 一区二区视频你懂的| 亚洲无 码A片在线观看麻豆| 丁香色五月 97干| 色五月天AV| 国产97在线视频| 大香网伊人久久综合| 青娱乐蜜桃臀AV色婷| 欧美性爱中文字幕无线码| 久久久久人妻| 久久久78| 精品色色| 大象AV在线| 天天摸,夜夜摸| 日韩人人精品| 蜜臀操逼黄色视频操的好爽| 久操免费电影| 国产剧情一区在线观看| 60秒不遮不挡| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 综合免费无码中文| 国产第11页| 老子午夜伦不卡影院| 九九九九九九亚洲| 亚洲精品白浆高清久久久久久 | 91精品人妻电影| 区二区亚洲婷| 欧美性爱三区二区| 啊嗯嗯啊好大好爽| 欧日a| 欧亚韩国999| 极品后入免费视频| 免费国产电影一区二区| SS久久| 永久免费av无码网站国产app| 九九热免费国产视频婷婷伊人五月| 婷婷8月天青娱乐| 五月婷婷丁香| 中国人高清www色视频免费| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 国语av狠狠色丁香婷婷综合激情| 这里有精品| 亚洲骚逼少妇| 国产精品情侣啪啪| 天天摸夜夜添无码小视频| 久久久久亚洲一区女同性恋中文字幕| 免费精品中文字幕| 久久婷婷成人综合色怡春院| 蜜臀久久99精品久久综合| 久久久久久999| 男人的天堂亚洲| 蜜臀久久久99久久久久 | 黄片免费看黄片免费看| 亚洲图片欧美偷拍| 99热综合| 男女激烈网站最新| 青青草一区二区三区四| 91色艳| 国产家庭乱伦性爱视频| 嗯嗯嗯啊啊啊干死我吧| AV综合中文字幕干| 亚洲欧美电影| 男人的天堂com| 国产无遮挡| 久久久亚洲欧美综合| 竹菊一区二区三区AV线| 少妇同性| 婷婷五月天av| 国产黄色影片在线观看| 91中出视频| 亚洲精品天天影视综合网 | 日韩一级二级三级在线不卡观看完整| 插老姨肥穴| av天堂5| 2020久久免费视频| 淫荡少妇免费| 国产免费小视频| 岛国AV一区二区电影| 在线中文字幕| 成人一二三区| 国产热av| 97视频在| 久操高青| 伊人色综合网电影| 九九精品无码专区免费| 97欧美超碰| 亚洲AV色图一区| 人人手机欧洲亚洲国产人妻| 色色国产| 国产精品嫩草影院免费| 2017天天插| 91激情综合| 男人的天堂成人的社区| 人妻久久久久久| 秋霞久久亚洲精品成人| 欧美性爱免费短视频| 亚洲国产精品无石码久久| 免费看国产大AB| 搞中出视频在线观看| 久久精精区一区二区一蜜桃一区二区| 欧美人人AAA| 最新国内自拍av免费| 中文字幕99999| 美女天天干| 国产精品丝袜久久亚洲不卡| 亚洲色情在线影视| 操b网站亚洲无码| 欧美日韩国产色五月综合在线| 色五月婷婷在线| 搡老熟女老女人老熟妇免费视频| 色在线亚洲视频www| 91AV入口| 亚洲av综合伊人久久| 精品久| 偷偷人人精品女女久久| 午夜操操操| 91男人天堂网| 91精品操美女| 亚洲图片 欧美电影| 亚洲综合色在线| 亚洲AV在线资源| 亚洲图片在线| 中美日韩毛片| 成人综合网 欧美| 亚洲五月天激情| 日日噜噜夜夜狠狠视频无| 久久精品国产亚洲AV先锋| 日韩欧美女求操每天更新| 欧美se综合| 综合久久2017| 成人26uuu| 亚洲天天做日日做天天谢日日| 日韩偷拍一区二区三区| 国产特级毛片AAAAAA高潮流水| 亚洲欧美91| 久久啊啊| 麻豆视频国产一区二区| 男女啪啪啪18禁网站| 久一区久久蜜桃| 屁股久久久久久| 精品人妻一二三| 欧美爱爱97| 日韩三级伦理中文字幕| 免费一级黄色录像影片| 国产视频一区二区免费| 天天爽天天爽| 国产白嫩精品久久| 伊人久久亚洲色欲综合网站 | 国产美女mm131爽爽爽爽| 五月丁香婷婷综合| 成人影 天天操 亚洲| 亚洲情色第一页| 97超碰色屌| 99综合自拍| 日韩啪啪啪视频| 日夜尻逼网| 午夜在线播放| 亚洲超碰AV| 1024人妻熟女一区二区三区| 无码免费一区二区三区啪啪| 东京热av男人的天堂| 天天综合网合集91| 成人性生活高清视频在线播放| 欧洲亚洲少妇| 人妻乱仑一区二区三区| 性爱乱伦一区| 99热精品青草在线 | 伊人热综合| 国产精品久久久久中文字幕| 一二三四免费视频| 中文字幕熟女人妻丝袜丝| 大香久久| 黄色高清无码无码破解免费暗网| 日本三级日本三级三级人妇四虎| 97精品一区| 欧美日韩国产一区二区小黄片大全| 性爱视频啪啪啪啪| 一道本久久棕合爱| 加勒比性爱成人在线| 日韩一级二级三级免费看完整版| 成人免费在线网站| 美日韩一二三区| 91肉丝| 一级免费啪啪片| 亚洲永久永久永久永久一级一级一级精品| 综合熟妇一区二区三区| 影音先锋少妇| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 久草久热| 欧美日韩国产精品久久色婷婷| 在线视频免费观看午夜| 日本成人电影资源网| 高清不卡视频| 国产久久久久影院老熟女| 欧美极品美女aaaaaa级黄片| 男人的天堂啪啪啪啪啪蜜桃不卡| 日本黄色XXX| 欧美探花网| 日本精品第一视频在'| 99综合自拍| 超清中文乱码字幕| 欧美1727免费观看视频| 欧美性Fer办公室秘书| 天天日天天干天天色| 啊啊啊用力在线观看| 夜夜做夜夜爽精品视频| 亚洲二区精品在线观看| 欧美国产有色电影| 国产一区二区三区白丝| 亚洲色图亚洲无码强奸乱伦| 天美91| 日本欧美国内在线| 91精品少妇搡搡搡| 亚洲一区二区精品福利| 色九九综合AV| 日韩性爱小视频在线观看| 桃色人妻在线视频| 人人弄人人摸| 成人AV素股で擦久久| 欧美日韩久久精品爱爱| 日本久久久久久久久| 97Ai亚洲| 熟女视频久久| 亚欧美综合网| 麻豆国产原创AV色哟哟| 天天综合官网| 国产97视频免费观看| 99热国产精品| 久久久精品国产亚洲AV无码| 色欲久久99国产精品久久久久久| 超碰爽人妻熟女Av| 丁香九月 婷婷| 中文字幕艹艹| 综合久久久久久久久91| 小骚逼被操的爽不爽| 亚洲国产一区二区入口| 少妇激情AV| 亚洲激情av| 欧美色视| 97香蕉人人乳| 18禁超污无遮挡无码免费网| 97久久久久| 狠狠久久四虎| 久久精品久久九九精品| 亚欧美色图| 亚欧高清在线| 国产60页| 久久亚洲色图中文字幕| 九九色婷婷| 国产又粗又长的视频| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 国产青视频| 亚洲性爱成人| 加勒比性爱成人在线| 亚洲少妇中文字幕网址| 男人久久天堂| 欧美韩日精品资源| 天天干天天爽| 欧美一级久久久丰满| 亚州Av天美传媒| 久久AV无码网址| 操东北女人| 久久人妻无码毛片A片麻豆| 九九伊人网| 色综合V| 羞答答AV中文字| 伊色综合天堂色97| 国产三级日产三级韩国三级| 天天澡天天爽日日AV| 欧美亚洲丝袜美女电影| 欧美国产伊人久久久久| yazhououmeizongya| a男人的天堂| 亚洲综合九九| 国产成年免费大片黄在线观看| 精品国产乱码久久久久久久| 亚洲一区深夜| 成人av动漫在线观看| 日韩精品中文字幕人妻| 九九热只有精品| 中文字幕丝袜美腿| 日韩人妻少妇 一区二区三区| 操逼免费视频无码国产| 欧美天天| 色网亚洲人| 久久久99999久网站| 丝袜熟女2P| 最新日韩黄片| 太久视频| 蜜乳av一区二区| 精品一区二区三区国产| 熟妇色99| 五月天伊人网| 熟女熟妇伦久久影院毛片一区二区 | 欧美色图91| 亚洲色图 图片| 丝袜六区| 美国一区二区免费视频| 激情 欧美 亚洲 小说| 色97干| 综合网亚洲1| 丝袜天堂| 欧美 亚洲 另类 综合| 婷婷色香| 性色av一区二区| 精品v1区| 91在线限制级| 好爽,再快点啊哈嗯嗯嗯嗯| 婷婷色婷婷| 成人看片网站| 国产精品麻豆成人AV艾秋| 色色色色网站| 超碰在线人妻| 久久精彩视频| 99re9在线| 一级性爱aaaa| 97精品综合久久| 亚洲古典另类欧美在线| 久久久免费一级黄片| 乱欲一区二区| 亚洲AV永久无码一区仙野| 免费视频在线一区二区不卡| 超碰免费97| 992视频一区| 超碰色大香蕉| 黄色成年| 怡红院成人视频| 免费男人的天堂| 亚洲 欧美 日本 国内 首页| 唯美清纯 妖精视频| 久草午夜| 国产高清26uuu| 成人性爱全视频观看| 国产欧美一区激情交| 欧洲色| 五月天伊人| 欧美在线伊人色| 欧美老妇女内射网址| 91久精品| 久久久久亚洲一区女同性恋中文字幕| 午夜呻吟欧美| 91色鬼| 日日干夜夜欢| 欧美不在线| 人人操人人摸avav| 大香蕉久| 国产www色在线观看| 亚洲精品三| 欧亚乱色熟一区二区三四区| 五月天亚洲网| 水多多映视AV| 日韩精品色呦呦| 国产三级日产三级韩国三级| 91操操操操| 午夜理论片在线观看免费| 99热色精品| 国精综合一二三区影视| 超碰天天去日穴| 欧美中文字幕日韩在线| 中文字幕jul-617人妻熟女| 中文字幕二区日韩天堂| 少妇丝袜在线观看AV| 天天久久| 熟女人妻一区二区三区| 色 婷97| 91美女视频直播| 日韩啪啪视频| 国产成人亚洲精品无码古代早漏男 | 国语对白在线播放视频| 亚洲情色五月天 | 国产无码精品高清| 大香蕉啪啪啪| 午夜无码熟妇丰满人妻| 性色AV蜜色av色欲av| 精品-91人妻子系列| 青青草在线视频欧美| 大鸡巴久久| 青青草一区二区高清无码视频| 日韩精品在线视频,日韩精品……| 岛国在线一区二区三区| 少妇同性| 亚洲97在线观看| 九九综合久久| 日韩 欧美 国产 麻豆| 尤物视频视频官网| 欧美国产精品| 99九九久久| 男人的天堂com| 国产亚洲精品A在线观看下载| 久久精品三级影视| 影音综合网| 91欧| 污色区网站| 亚洲激情久久| 久久精品99久久久久久| 日本十八禁免费看污网站| 天天综合精品| 久色99999| 九九精品无码专区免费| 色婷婷综合久久中文字幕雪峰| 欧美+日产+中文| 99精品久久| 欧日韩一二三f区| WWW黄片COM| 蜜奶av| 91在线精品一区二区三区| 特污免视频| 酒色综合网| 色色色综合网| 久久97超碰| AV天天综合| 日韩一级二级三级免费看完整版| 神马福利久草| 91丨国产丨白浆秘 洗澡动漫| 天天插天天射| 欧美色图 色综合图| 久久人妻办公室视频| 久久中文字幕在线观看| 久久草视频污视频| 亚洲人妻中文高清| 一本色道久久综合亚洲二区三区| 亚洲精品xxx| 色香伊人| 丁香成人五月天| 97Ai亚洲| 特级大荫道BBwBBwBBW| 91老熟女| 蜜臀人妻少妇久久在线观看| 国产日韩区| 久久网亚洲| 玖玖资源综合在线视频| 夜夜夜夜久久久久| 最新加勒比丝袜在线| 欧美综合网在线| 国产精品麻豆视频网站| 热热色青青草| 亚洲情色第一页| 超碰天天操| 精品无码久久久久久久杏吧| 五月丁香婷婷色| 伊香蕉综合久久久久久久噜噜噜| 综合日本女人伊人| 国产无码高清操逼视频| 91亚.色| 五月天婷婷基地| 美女裸体无遮挡永久免费观看网站| 少妇天堂网络| 人妻中文字幕日韩电影| 国产精品久久泡妞网站| 97久久超碰国产网站| 八戒午夜福利理论片| 国产天天噜一噜久久久| 激情五月天婷婷| 久艾草在线精品视频在线观看| ...日韩成人一区二区三区字幕| 国产小u女在线观看| 五月婷亚洲精品天堂| 久草热制服丝袜在线观看| 日本三级中国三级99人妇网站| www久久国产精品| 黑人干亚洲| 久久99黄色卞西瓜| 国产99久久99热这里只有精品15| 91麻豆天美传媒在线| 伊人久久亚洲中文字幕不卡| 精品一区二区啪啪啪| 中文字幕在线观看永久| 日韩大香蕉| 国产和美国毛片| 97亚洲综合电影| 人看人人摸人人操| 日本色色视频网站| 91爱| 老熟妇一区二区三区| 国产黄色动态精品| 国产成人亚洲精品自产在线 | 天天干天天燥| 人人摸人人舔一区二区| 午夜120视频在线观看| 歐美性天天| 丁香六月婷婷综合| 亚洲黄色a级片| 久夜操| 熟女欧美日韩综合婷婷| 天天干天天干天天| 日韩簧片免费看| 高清孕妇孕交 交| 任我爽在线视频免费观看| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 97露脸精品丝袜| 天天天天操| 人人操人人大香蕉| 日韩三A大片在线观看| 久久久久夜夜夜夜| 亚洲中文sv| 亚州欧美综合| 亚洲国内精品成人不卡| 久久久久久久久久久久久久久乱码| 国产精品色| 2024人人操人人摸| 婷婷中文网| 少妇三p| 骚货人妻偷情自拍在线视频| 日本午夜久久电影| 婷婷中文网| a片在线播放| 91美女视频直播| 综合网欧| 欧美综合骚| 操99| 日韩精品一区的| 性在久久久久久| 五月丁香六月综合缴清无码| 久久男人的天堂| 日韩欧美女求操每天更新| 9999亚洲精品| 欧美久久毛片基地| 大鸡巴久久久| 屌色在线97视频| 久9热| 欧美成人性爱视频大全| 秋霞免费AV| 少妇xx精品| a一区二区三区乱码在线| 亚洲乱码精品一区二区| 青娱乐91| 熟女人妻一区二区三区| 亚洲Av诱惑| 96超碰网| 67914在线兔费成人视频| 欧美日日人人天天| 中日韩久久久免费看| 后入综合久久| 一二区在线观看视频| 啊啊啊好大好深| 日韩在线观看三级电影| 精品人妻1区| 亚欧日韩成人| 婷婷午夜| 91偷拍欧美亚洲| 精品性爱久久视频| 亚洲人精品久久久| 亚洲欧美高清| 人人摸.人人色| 久久久久国产精品喷潮免费观看臀 | 巨爆乳肉感一区二区三区竹菊影视| 久操网线| 日韩成人精品| 一区二区三| 一本色道久久天天射天天干| 太久视频| 亚码激情| 97爱碰| 高颜值美女口爆高潮浪叫| 99久久久| 熟女这里只有精品6| 亚洲色图殴美色图激情乱伦| 久久免费精彩视频| 97香蕉人人乳| 欲综合网| 成人av福利在线观看| 亚洲成人av电影在线| 丁香五月婷婷色| 97超久碰| 91精品人妻一品二品三品| 98人妻精品一区二区色欲| 国语av最新自产拍在线观看| 精品久久久av| 亚洲爱爱视频一区二区| 久久久久白虎| 污污汅18禁网站在线永久免费观看 | 欧美成人黄网色网站| 青娱乐亚洲热| 夜夜高潮夜夜爽国产伦精品| av网站国产主播在线| 777奇米影视777四色| 欧美综合色站| 狼人狠干| 久久久精品成人国产| 神马午夜久久久| 一二三区精品视频| 久久精品国产亚洲AV嘿嘿| 97资源超碰| 精品无av| 黄色小视频日本txt| 超碰午夜在线| 東南亚性呦成人伦理资源在线视频| 欧美一区二区三区互相| 一区二区三区精品黑丝白丝酒店对鸡| 色www精品视频在线观看| 日本精品999| 久久久久9| 91精品免费| 秋霞成人做爱| 丝袜六区| 大鸡巴久久| 综合自拍| Aa东京男人的天堂| 久久久久亚洲三级电影| 人妻夜夜爽天天爽麻豆三区网站 | GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 99久久精品无码一区二区毛片免费| 婷婷六月色| 丰满熟女人妻一区二区三五十一路| 欧美性生活男人的天堂| 久久综合九九| 亚洲第一视频 欧美风情 日韩| 亚洲暴力强奸AV| 手机久操欧美综合色码| 国产狂喷潮在线精品| 久热69九色熟妇97| 亚洲成人贴图| 中文字幕人妻丝袜| 久这精品中文在线观看视频| 久久99视频| 大香蕉2017| 青青草天天亲夜夜操网| 久久禁| 欧美久久伊人| 日韩BBN| 婷婷五月天激情网| 夜夜高潮夜夜爽夜夜爱爱一区| 2024人人操人人摸| 蜜臀99久久国产| 日韩高潮一区| 免费视频观看60秒| 五月丁香六月激情综合| 超碰色老头| 婷婷香蕉欧美在线一区二区三区| 96久久久| 91久久午夜无码鲁丝片久久人妻| 强奸乱伦免费网站| 欧美少妇第一页| 最新日日夜夜天天干干| 欧美天天综| 91人妻精华帖| 午夜精品久久久久久久99| 国产精品无码AV网站| 超碰97久| 欧美大香蕉卡久久| 天天躁日日躁AAAAXXXX国产| 人人摸人人干| xxx0国产在线播放| 亚洲AV永久无码精品成人调教| 天天操综合网| 国产中出内射一区二区| 日韩久久艹| 7777欧美成是人在线观看| 超碰97人妻自拍| 一区久久久二区| 国产视频一区二区三区在线免费观看 | 欧美日韩人妻婷婷一区| 欧美一级黄片免费播放| 亚洲天堂男人天堂网| 超碰97网址| 操逼逼福利视频| 9久久精品| 人妻大相焦在线| 99热只有这里有精品| 97久久国产| 日日夜夜青青草母狗| 国产精品久久久久久片| 超碰97网站| 乱久久久| 91色艳| 夜夜爽夜夜| 韩日精品福利视频一区不卡在线免| 人人操,操人人| 九色黄站| 啊啊啊啊啊啊啊在线| 嗯嗯啊操我| 成人亚欧免费视频| 九久9精品| 成熟熟女国产精品一区二区| 后入美女国产| 蜜臀AV网站| 午夜国产综合视频在线观看 | 青青草视频在线观看一区二区| 九九九九九九亚洲| 永久免费观看的毛片的网站| 热的中文 热的有码 热的国产| 丁香五月成人| 国产三级多多影院2022国产AA一级毛片无码 | 久欲AV| 欧美亚州色的图| 欧美96交| 青青草视频久久久久| 久久婷婷亚洲| 韩国黄片aaaa| 欧美人与动性人交a| 日本一卡二区在线| 国产视频大全| 秋霞男人网| 日产狠狠干| 亚洲一区二区中文字幕| 豆花视频操逼网址| 婷婷午夜清品久久久久久久性色视频观| 久草婷婷| 久久久工口| 五月婷婷影院| 亚洲第2页| 黄片免费视频2019| 欧美第一页| 久久高潮妇女视频| 96国产精品| 在线色资源| 欧美在线色| 免费网色网站| 免费9 1久久| 丰满翘臀美女影院视频| 久久99热这里只频精品6学生| 看日韩操逼| 欧美日产国产在线成人第一区| 精品美女久久久久| 97精品视频网站| 老子午夜伦不卡影院| 神马久久免费电影观看| 久久夜夜夜夜| 久久精彩视频9| 91九久| 欧美拳交在线播放| 69人妻精品一区二区绯色| 天天懆天天日| AV有码在线| 欧美日韩狠狠爱| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 亚洲精品99| 国产乱人伦AVA麻豆软件.| 性在久久久久久| 18禁美女裸体无遮挡啪啪| 一本久道在线综合视频| 国产av波波国产精品| 人人操肉肉| 黄色一区二区秘书性感| 操逼不卡中文字幕| 国产浮力影院第1页| 国产伦乱91| www.91久久| 亚洲操操| 亚洲春色激情小说| 爱爱动态120秒| 国产馆极品诱惑| 手机不卡视频不卡在线一二三区| 手机不卡视频不卡在线一二三区| 中文字幕乱码人妻一区二区三区,99精品| 刺激性视频黄页| 日本一天色道久久久精品视频| 天天综合AV| 97精品视频免费| 久久久久久久9最新免费视频观看| 亚洲丰满很很操| 密臀在线视频| 亚洲欧美日韩偷拍色图| 精品美女久久久久| 日韩中文字幕人妻视频| 黄色高清无码无码破解免费暗网| 成人免费福利在线观看| 国产午夜无码片在线观看影视| 在线综合 亚洲 欧美中文字幕| 天天懆天天日| 亚洲国产奇米影视久久| 在线国产福利网址导航| 另类小说综合网| 操逼不卡中文字幕| 国产免费一区二区在线A片视频| 欧美综合骚| 大乔未久88一区| 97碰碰色| 色在线亚洲视频www| 久操婷婷| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 日韩78m视频| 精品无av| 久久久亚洲Av| 99热官网| 九九九九免费高| 欧美 亚洲 在线| se01国产在线视频| 99国产人成精品| 亚洲综合69| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 久久久久久九九九九九| 囯戸精品高潮呻吟旡码| 99操视频| 91少妇香蕉久久精品| 啊啊啊免费视频| 国产成人欧美一区二区三区的国产| 五月丁香六月激情| 高清肉丝中文无码| 久久精品国产亚洲AV先锋| 国产亲戚伦亲在线| 亚洲限制级在线| 欧美人妻制服| 在免费jIzzjIzz在线视频| 九九视品黄色| 91天天综合在线观看| 久热影视| 97AV爱| 97久操| 大香蕉强奸乱伦| 婷婷五月天久久精品视频一区二区三区| 偷拍99| 久久精品中文字幕无码l| 五月婷婷激情网| 黄色高清久久无码依人| 精品一区二区三区18| 性色AV蜜色av色欲av| 国产成人免费观看在线视频 | 91精品微拍福利| 亚洲天堂区| 亚洲资源吧| 天天看,天天做| 精久久久| 国产亚洲精品第一最新| 青女在线| 欧美,日韩,中文,另类| 免费簧片在线观看| 牛牛久久国产精品视频一二三| 九九九九一级| 国产精品久久久久久 百度| 伊人精品视频| 天天色天天干天天爱| 日韩精品怡红院| 国产在线综合网| 精品久久久久成人码免| 亚洲国产ⅴ高清在线观看| 超碰97精品在线| 青青操日韩| 色爱综合网| 97欧美精品| 欧美碰碰综合色| 一级AV性爱| 强奸乱伦大香蕉| 神马久久69| 欧美性爱91| 91欧美美女日韩国产婷婷| 91啦人妻| 日韩ab网| 无码137片内射在线影院| 精品久久大胆人体| 人妻中文字幕日韩电影| 亚洲中文字幕熟女少妇一区二区| 熟女一区二区| 免费伦费视频在线观看| 性生活无遮挡纯毛片在线看| 亚州伊人色综台| 久久草草亚洲蜜桃臀| 久久久久久久| 色色色99| 亚洲人精品午夜不卡| 日本在线视频导航| 揉揉揉夜夜| 国产精品久久久久综合| 婷婷九月丁香| 国产亚洲在线观看| 欧美极品少妇| 亚洲砖码砖专无区2023| 欧美日韩亚洲少妇寂寞影院正在播放 | 久久久无码av精| 亚欧美无遮挡| 多乙久久久久久| 在线视频资源| 大香蕉免| 久久婷婷综合国际产色怕| 精品免费囯产一区二区三区| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 人人妻人人爽一区二区三区| 国内精品999| 成人无码在线超碰网| 免费99精品国产自在在线| 大香樵伊人网| 2018天天日天天日| 最新亚洲风情电影| 精品区国产区一区二区三区| 91超碰丝袜制服| 熟女在线视频| 国产69精品久久久久99尤物| 欧美精品97| 美日韩在线不卡人妻| www色婷婷| 国产辣妈在线视频福利| 国产AV中文| 精品在线78| 97人人爱人人乐| 欧美激情精品| 97久久超碰| 中文字幕免费看大片| 亚洲成a人在线观看久| 久久肏大逼| 亚洲欧美精品一区天堂久久 | 亚洲欧美大香蕉| 亚洲人体视频在线观看| 蜜臀在线网站| 少妇精品久久| 美女啊啊啊啊pc| 岛国艾薇凹凸视频天堂| 欧美黑人猛交春色影视大全| 一线黄色免费性爱片| 无码人妻一区二区三区免费九色| 中文字幕人妻色偷偷久久皮 | 国产精品色色| 一区二区中文| AⅤ片水多多| 亚洲精品97| av日韩国产一区二区| 亚欧性爱在线无码| 色 婷97| 天天影视之亚洲综合网| 91精品国产91久久久久久久久久久久| 天天干天天操天天拍| 97色色视频| 99国产精品久久久久久久成人热| 人人搞人人插人人操| 亚洲乱熟女一区二区三区大香蕉| 日韩在线国产字幕| 一区二区三区一亚洲中文字幕、综合区灬 | 国产精品suv一区| 日韩国产乱子伦App| 蜜乳AV免费观看| 91w欧美| 日韩91网| 懂色AV网| 久久久极品| 成人一级二级| 男人的天堂日韩| 久久大精品乱码视频人妻熟女| 67194无码不卡| 91暧暧| 毛片电影一区二区三区| 人妻日日干| 夜夜影视四色| 国产成年免费大片黄在线观看| 欧美色图20P| AV中文字幕三四五| 熟女熟妇伦久久影院毛片一区二区| 日韩欧美大力操| 日韩 女同 综合| 人妻天天爽夜夜爽爽| 美国日韩黄色片| 丰满人妻一区二区三区色-百度| 中文字幕诱惑制服人妻丝袜美丝袜美| 神马午夜久久久| 伊人国产av| 亚洲欧美爆| 美女黄页| 九九久久综合| 亚洲国产av中文字幕久久| 天天干天天日天天射黄色| 91成人亚洲色图| 91精品黄在线观看| 久久αⅴ| 亚洲色91C| 亚洲成a人在线观看久| 超碰97久| 在现视频女上位好爽| 亚洲日韩精品久久久久一区壹牛| 精品九九九九九九九| 人人操人人操草草| 97干97色| 精品人妻一区二区三区夜夜| 一级黄色牲爱A级片| 日欧毛片久久| 青青草操逼逼视频| 免费久久一级毛片大黄| 亚洲同性aV综合| 久久视频,这里只有精品| 91啪啪视频| 国产精品福利视频播放| 性色aV一区二区三区噜噜| 国产午夜精品一区二区三区牛牛| 91综合天天看| 亚洲A色| 极品美女福利在线观看| 91热色| 中文字幕色AV| 美女淫穴| 99热国产精品|