免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

STM32F103驅動VL53L0X激光測距:IIC驅動源碼詳解與避坑指南

STM32F103驅動VL53L0X激光測距:IIC驅動源碼詳解與避坑指南 簡介基于STM32F103單片機的VL53L0X測距傳感器IIC接口驅動源碼面向嵌入式開發(fā)者和STM32入門學習者解決激光測距模塊在Keil MDK環(huán)境下的快速集成與調用問題。工程在KEIL UV5下開發(fā)完成引腳與IIC配置后可直接運行主程序依次完成LED指示燈、SysTick定時器與USART串口初始化并調用vl53l0x_start_single_test執(zhí)行單次測距狀態(tài)判斷與串口輸出接口均已預留模塊劃分簡潔注釋清晰便于順著思路理解驅動架構。資源包共238個文件其中h頭文件47個、c源文件42個核心驅動代碼完整另附uvprojx工程文件可直接用Keil打開編譯、hex燒錄文件可快速驗證map映射文件與編譯中間產物也能輔助排查問題整體約8.28MB。已有1569人學習下載對熟悉IIC時序和傳感器驅動移植的初學者具有較好的參考價值。1. 從 IIC 波形臺階到 STM32F103 與 VL53L0X 的這場“硬仗”做嵌入式開發(fā)這幾年我上手過的測距方案不算少超聲波、紅外、激光三角都有各自的脾氣。但如果你手頭正好有一塊 STM32F103 最小系統(tǒng)板又想把測距精度做到毫米級VL53L0X 這顆激光測距傳感器幾乎是繞不開的選擇。它用的是 ToF飛行時間原理而不是靠反射光強度估距離所以在弱光、強光下都比紅外靠譜得多它和 MCU 之間走的是 IIC 接口也就是標題里那個“IIC 驅動程序源代碼”要解決的核心問題。我最早在 STM32F103 上調試 VL53L0X 時最大的感受是硬件連接十分鐘就能搞定真正耗時間的全在 IIC 時序、寄存器讀寫和那個復雜到讓人頭皮發(fā)麻的 API 初始化流程上。更別提用示波器看 SCL/SDA 波形時發(fā)現(xiàn)臺階、用邏輯分析儀抓到 ACK 丟失這類玄學問題。這篇筆記我就把基于 STM32F103 的 VL53L0X IIC 驅動從原理到源碼、再到排錯方法完整拆一遍給你一條能直接照著復現(xiàn)的落地路徑。2. VL53L0X 為什么非用 IIC 不可接口選型與上拉電阻的關鍵參數(shù)2.1 從 ToF 原理看 VL53L0X 的通信需求VL53L0X 內部集成了激光發(fā)射器、單光子雪崩二極管陣列和復雜的測距算法引擎。它對外暴露的接口只有一路 IICI2C而且芯片本身不帶地址線7 位地址是寫死的 0x29想在同一總線上掛多顆就得靠 XSHUT 引腳逐個上電復位來改地址。這顆傳感器不提供 SPI 或 UART 選項所以 IIC 驅動不是“選型之一”而是唯一路徑。這里要先糾正一個常見誤解很多人覺得 IIC 就是兩根線隨便接一接就能通但實際上 VL53L0X 的數(shù)據(jù)手冊明確規(guī)定 SCL 和 SDA 需要外部上拉電阻。我見過不少翻車案例都是直接把 STM32F103 的 PB6/PB7 接到模塊上忘了上拉結果讀寫寄存器時好時壞。IIC 是開漏協(xié)議沒有上拉電阻總線根本拉不至高電平波形會變成一條緩慢爬升的斜線通信時序自然一塌糊涂。2.2 上拉電阻阻值怎么定1.8k 到 4.7k 的取舍上拉電阻的取值直接影響 IIC 的上升沿時間。VL53L0X 支持標準模式100kHz和快速模式400kHzSTM32F103 的 IIC 外設跑 400kHz 完全沒問題但前提是上拉電阻要匹配。電阻太大RC 充電時間常數(shù)變大上升沿變緩400kHz 下可能觸發(fā) SCL 高電平時間不足電阻太小總線驅動電流過大雖然波形更陡但會增加功耗且對長線傳輸不友好。我一般會分兩種情況處理如果模塊和 MCU 在同一個 PCB 上、走線很短用 4.7k 上拉到 3.3V 就夠了這也是絕大多數(shù) VL53L0X 模塊的默認配置如果用了杜邦線連接線長超過 10cm或者周圍有電機、繼電器這類干擾源我會直接換成 2.2k 甚至 1.8k把上升沿壓下來。還有一個容易忽視的點STM32F103 的 PB6/PB7 如果配置成了開漏輸出片上沒有上拉必須靠外部電阻如果你圖省事把引腳配置成推挽輸出那總線就變成單端驅動了雖然短線上也能跑通但一旦掛多設備就會出現(xiàn)總線沖突這個后面講多設備掛載時再細說。// 標準外設庫方式初始化 IIC 引腳PB6SCLPB7SDA GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_OD; // 開漏輸出必須配合外部上拉 GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 高速模式下壓擺率足夠 GPIO_Init(GPIOB, GPIO_InitStructure);這里把引腳配置成開漏輸出邏輯上完全兼容 IIC 協(xié)議因為開漏模式下器件只能拉低總線拉高靠外部上拉電阻這正是 IIC 總線仲裁機制的基礎。50MHz 速度等級是為了保證 GPIO 翻轉速率不成為 400kHz 時序的瓶頸雖然實際 IIC 翻轉頻率遠低于 50MHz但 STM32F103 的 GPIO 輸出驅動能力配置在高速檔時邊沿更陡抗干擾能力更好。2.3 5V 轉 3.3V 電平與 VL53L0X 的兼容性邊界熱詞里提到“stm32f103 5v轉3.3v電路”這背后是一個關鍵約束VL53L0X 的絕對最大額定電壓是 3.6V供電必須用 3.3V不能接 5V。很多 STM32F103 最小系統(tǒng)板是 3.3V 供電的這部分不難難的是如果周圍還有其他 5V 器件、或者你手上的模塊是 5V 邏輯的舊器件就得小心電平轉換。VL53L0X 模塊上一旦接了 5V大概率直接燒毀內部的 LDO 和傳感器核心。我自己的習慣是不管模塊上有沒有板載穩(wěn)壓一律外部供 3.3V并且用萬用表確認模塊 VIN 引腳電壓不超過 3.45V。如果系統(tǒng)里確實只有 5V 電源就得先過一個 AMS1117-3.3 或更低壓差的 LDO再給 VL53L0X 供電同時 STM32F103 的 IIC 引腳如果被外部上拉到 5V也要通過電平轉換芯片如 TXS0102或分壓電阻把高電平鉗位到 3.3V否則 VL53L0X 的 IIC 引腳可能因為過壓進入閂鎖狀態(tài)。3. 驅動源碼的核心骨架從寄存器讀寫到 API 移植的完整鏈路3.1 IIC 底層驅動用 GPIO 模擬還是用硬件 IIC這是 STM32F103 上做 VL53L0X 驅動最糾結的一個選擇。STM32F103 有硬件 IIC 外設但老工程師都知道這塊芯片的硬件 IIC 在早期批次里有著名的 Bug雖然實際上大部分場景能用但總有一些超頻、總線繁忙、多主沖突的邊界情況會莫名其妙卡死。我自己的血淚經驗是VL53L0X 的驅動本來就復雜初始化要讀寫上百個寄存器而且官方 API 里有一些地方會連續(xù)做多次沒有 STOP 的重復起始條件這時候硬件 IIC 如果配置不對就可能等 BUSY 位一直不釋放卡死在 while 循環(huán)里。所以常見的從業(yè)方案是直接用 GPIO 模擬 IIC。兩條 GPIO 線用延時函數(shù)控制翻轉雖然會占用 CPU但對 VL53L0X 這種單次測距才幾十毫秒的傳感器來說完全夠用。而且 GPIO 模擬 IIC 的時序完全可控出了問題用邏輯分析儀一看就知道是哪一步不對比對著數(shù)據(jù)手冊查硬件外設寄存器狀態(tài)快得多。// GPIO 模擬 IIC 的起始條件 void VL53L0X_I2C_Start(void) { VL53L0X_SDA_H(); VL53L0X_SCL_H(); delay_short(10); // 保持時間確保 SDA 建立 VL53L0X_SDA_L(); // SDA 先拉低 delay_short(10); VL53L0X_SCL_L(); // SCL 再拉低完成起始條件 delay_short(10); }這里的關鍵是時序順序IIC 起始條件是 SCL 為高時 SDA 產生下降沿。如果 SDA 拉低后沒有等 SCL 也拉低就開始傳數(shù)據(jù)從機可能會誤判起始條件。delay_short 是微秒級延時我建議直接在 startup 文件或 systick 上做一個簡易延時函數(shù)不要用 for 循環(huán)空轉因為編譯器優(yōu)化等級不同for 循環(huán)的空轉時間會變驅動在 -O0 下能跑到 -O2 下就亂套了。// GPIO 模擬 IIC 寫一個字節(jié)返回 ACK 狀態(tài) uint8_t VL53L0X_I2C_WriteByte(uint8_t data) { uint8_t ack 0; for (uint8_t i 0; i 8; i) { if (data 0x80) VL53L0X_SDA_H(); else VL53L0X_SDA_L(); data 1; VL53L0X_SCL_H(); delay_short(5); VL53L0X_SCL_L(); delay_short(5); } VL53L0X_SDA_H(); // 釋放 SDA準備讀 ACK VL53L0X_SCL_H(); delay_short(5); ack VL53L0X_SDA_READ(); // 在第 9 個時鐘讀取從機 ACK VL53L0X_SCL_L(); delay_short(5); return ack; }這段代碼是整套驅動的底層地基。寫字節(jié)時從高位開始每發(fā)一位拉高 SCL讓從機在 SCL 高電平期間采樣 SDA 上的電平然后拉低 SCL 準備下一位。發(fā)送完 8 位后主機釋放 SDA在第 9 個時鐘周期讀取從機的應答信號。有一個細節(jié)容易被忽略讀 ACK 之前必須把 SDA 引腳模式從輸出切換為輸入或者至少把輸出寄存器寫 1 讓它呈現(xiàn)高阻態(tài)。我用的是開漏輸出加外部上拉的方案所以直接寫 1 就能釋放總線但如果你的引腳配置成了推挽輸出這一步就會把 SDA 死死拉高永遠讀不到 ACK。3.2 官方 API 的移植套路從 ST 官網 SDK 到 Keil MDK 工程VL53L0X 的官方驅動包是一整套 API包含約 20 個 C 源文件核心文件是 vl53l0x_api.c、vl53l0x_i2c.c 和 vl53l0x_platform.c。這些文件不要求你全部讀懂但需要把平臺相關的接口對接上。最省事的做法是只保留 API 目錄下的必要文件然后把 vl53l0x_i2c.c 里的讀寫函數(shù)替換成你自己的 GPIO 模擬 IIC。// 在 vl53l0x_platform.c 中對接底層 IIC 讀寫 int32_t VL53L0X_WriteMulti(VL53L0X_Dev_t *dev, uint8_t index, uint8_t *pdata, uint32_t count) { VL53L0X_I2C_Start(); VL53L0X_I2C_WriteByte((dev-I2cDevAddr 1) | 0); // 從機地址 寫標志 VL53L0X_I2C_WriteByte(index); // 寄存器地址 for (uint32_t i 0; i count; i) { VL53L0X_I2C_WriteByte(pdata[i]); } VL53L0X_I2C_Stop(); return VL53L0X_ERROR_NONE; } int32_t VL53L0X_ReadMulti(VL53L0X_Dev_t *dev, uint8_t index, uint8_t *pdata, uint32_t count) { VL53L0X_I2C_Start(); VL53L0X_I2C_WriteByte((dev-I2cDevAddr 1) | 0); // 先寫寄存器地址 VL53L0X_I2C_WriteByte(index); VL53L0X_I2C_Start(); // 重復起始條件 VL53L0X_I2C_WriteByte((dev-I2cDevAddr 1) | 1); // 從機地址 讀標志 for (uint32_t i 0; i count; i) { if (i count - 1) pdata[i] VL53L0X_I2C_ReadByte(1); // 最后一個字節(jié)前返回 ACK else pdata[i] VL53L0X_I2C_ReadByte(0); // 最后一字節(jié)返回 NACK } VL53L0X_I2C_Stop(); return VL53L0X_ERROR_NONE; }這段移植代碼里最講究的是讀多字節(jié)時的 ACK/NACK 處理讀倒數(shù)第二個字節(jié)之前返回 ACK告訴從機繼續(xù)發(fā)讀到最后一個字節(jié)時返回 NACK然后再發(fā) Stop 條件從機就知道數(shù)據(jù)傳輸結束了。如果順序反了要么多讀一個字節(jié)造成后續(xù)時序錯亂要么少收一個字節(jié)導致數(shù)據(jù)不完整。這也是很多新手移植時只改底層不處理 ACK導致測距數(shù)據(jù)忽大忽小的原因之一。3.3 初始化流程里那些繞不開的“黑匣子”寄存器VL53L0X 的初始化不像普通傳感器那樣寫幾個配置寄存器就能用。官方 API 的初始化過程會執(zhí)行校準、設置參考 SPAD、寫入 NVM 數(shù)據(jù)等一系列操作整個流程下來要寫幾百個寄存器。這些寄存器的含義大部分沒有公開詳細說明驅動里把它們當作黑匣子處理你只需要保證每個 API 調用順序正確。// VL53L0X 初始化的標準調用順序 VL53L0X_Dev_t dev; dev.I2cDevAddr 0x52; // VL53L0X 的 7 位地址 0x29 左移一位后的 8 位地址 dev.comms_speed_khz 400; VL53L0X_Data_Init(dev); // 寫入基礎配置 VL53L0X_Static_Init(dev); // 加載 NVM 校準數(shù)據(jù) VL53L0X_Perform_RefCalibration(dev); // 執(zhí)行參考校準 VL53L0X_Set_DeviceMode(dev, VL53L0X_DEVICEMODE_SINGLE_RANGING); // 單次測距模式 VL53L0X_SetGpioConfig(dev, 0, 0, VL53L0X_REG_GPIO_HTR_GPIO_INTR_SOURCE_GPIO_NEW_SAMPLE_READY, VL53L0X_REG_GPIO_HTR_GPIO_INTR_POLARITY_HIGH, VL53L0X_REG_GPIO_HTR_GPIO_OUTPUT_ACTIVE_HIGH, VL53L0X_REG_GPIO_HTR_GPIO_OUTPUT_ACTIVE_HIGH);這里有一個新手容易踩的坑dev.I2cDevAddr 不是 0x29而是 0x52。因為 IIC 地址是 7 位0x29 是芯片的 7 位地址但驅動里函數(shù)的入?yún)⑼ǔJ?8 位地址也就是 7 位地址左移一位加上讀寫位。0x29 1 0x52如果你直接填 0x29驅動會把地址當成 0x14因為 0x29 的最高位被當成讀寫位丟掉了IIC 總線上根本找不到從機。這個地址換算問題我見過至少不下五次每次都是找不到傳感器時排查半天才發(fā)現(xiàn)的。4. 在 STM32F103 最小系統(tǒng)上跑通測距工程搭建與最小可復現(xiàn)流程4.1 Keil MDK 工程搭建Pack 包、芯片選型和 ST-Link 調試熱詞里提到“stm32f103 keil mdk工程搭建與st-link調試全流程”這里就把完整流程濃縮成可執(zhí)行步驟。第一步是裝芯片支持包STM32F103 對應的 Pack 包在 Keil 的 Pack Installer 里直接搜 STM32F1xx_DFP 安裝即可。裝完后新建工程芯片型號選 STM32F103C8這里注意如果你的板子是 C8T6 最小系統(tǒng)板Flash 是 64KB如果代碼編譯后超過這個容量鏈接器會報錯需要裁剪調試信息或換用 CB/RC 等更大 Flash 的型號。工程文件結構我一般這么組織user 目錄放 main.c 和中斷服務函數(shù)driver 目錄放 GPIO、USART、IIC 的底層驅動vl53l0x 目錄放從官方 SDK 拷過來的 API 文件。編譯前要檢查一個關鍵設置C/C 編譯選項里的 C99 Mode 必須勾上因為 VL53L0X 的源碼里大量使用 C99 的變量聲明方式不勾這個編譯會報一堆“identifier”錯誤。// main.c 中最簡測距主循環(huán) int main(void) { uint16_t distance_mm 0; VL53L0X_RangingMeasurementData_t measure_data; delay_init(72); // 在 72MHz 主頻下初始化微秒延時 uart_init(115200); // 串口打印用 I2C_GPIO_Init(); // 初始化 PB6/PB7 開漏輸出 VL53L0X_Data_Init(dev); VL53L0X_Static_Init(dev); VL53L0X_Perform_RefCalibration(dev); VL53L0X_Set_DeviceMode(dev, VL53L0X_DEVICEMODE_SINGLE_RANGING); while (1) { VL53L0X_PerformSingleRangingMeasurement(dev, measure_data); distance_mm measure_data.RangeMilliMeter; printf(distance: %d mm\r\n, distance_mm); delay_ms(200); } }這段代碼就是一個能跑通的最小框架。delay_init(72) 這個 72 是關鍵它告訴延時函數(shù)系統(tǒng)主頻是 72MHz如果這里填錯所有微秒延時都會按錯誤的主頻縮放IIC 時序會變得極其詭異。VL53L0X_PerformSingleRangingMeasurement 是阻塞式測距內部會等測量完成單次耗時大約 23ms 到 50ms 不等取決于測距模式和精度設置。如果不需要等結果可以改用中斷模式讓傳感器測量完成后通過 GPIO 中斷通知 MCU。4.2 VL53L0X 與 STM32F103 之間的關鍵上拉電路實測你可以做一個非常簡單的實驗來驗證上拉電阻的作用先把 4.7k 上拉接好用示波器看 SCL 波形上升沿大約是幾十納秒然后拔掉上拉電阻再看波形上升沿會變成一條幾微秒的緩慢爬升曲線而且高電平可能根本到不了 3.3V 就會被下一幀的下降沿打斷。如果你沒有示波器用邏輯分析儀抓也能看出明顯的“臺階”。上拉電阻的這個“臺階”在 SCL 和 SDA 上表現(xiàn)形式略有不同。SCL 上的臺階會讓從機在每個時鐘周期的高電平時間不足嚴重時芯片直接不響應SDA 上的臺階會影響數(shù)據(jù)采樣窗口表現(xiàn)為讀回來的寄存器值偶爾是錯的。所以熱詞里“iic波形出現(xiàn)臺階”這個問題八成不是信號反射而是上拉電阻失效或阻值過大導致的充放電時間過長。遇到這種問題第一件事不是換主控、調延時而是檢查上拉電阻的阻值和供電軌。// 用 STM32F103 的 ADC 簡單驗證 VL53L0X 供電電壓可選步驟 // 將 VL53L0X VIN 經過 10k10k 分壓后接入 PA0 ADC_InitStructure.ADC_Mode ADC_Mode_Independent; ADC_InitStructure.ADC_Clock ADC_PCLK2_Div8; ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right; ADC_Init(ADC1, ADC_InitStructure); ADC_Cmd(ADC1, ENABLE); uint16_t read_vin_voltage(void) { ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)); return ADC_GetConversionValue(ADC1); // 實際電壓 ADC值 * 2 * 3.3 / 4096 }注意我在 ADC 采樣時間上選了最長的 239.5 個周期這是因為測量對象的電源線可能有紋波短采樣時間下采樣到尖峰會被誤判為過壓。分壓電阻的精度也要注意10k10k 分壓后ADC 讀到的是 VIN 的一半如果 VIN 是 3.3VADC 讀到約 1.65V對應 ADC 值約 2047。這個驗證手段是為了排除供電不足導致傳感器初始化失敗的問題。4.3 第一次上電如何判斷驅動是真的通了驅動移植完上電后先不要急著看測距數(shù)據(jù)先做一個最簡單的自我檢查通過 IIC 讀 VL53L0X 的 ID 寄存器。0xC0 和 0xC1 這兩個寄存器分別存儲芯片型號 ID 和版本號固定值分別是 0xEE 和 0xAA。如果讀出來這個值說明 IIC 鏈路是通的地址換算沒錯上拉電阻也夠用如果讀回來全是 0xFF說明總線根本沒有從機應答大概率是地址填錯或 SDA/SCL 接反了如果讀回來是隨機跳變的數(shù)說明時序有問題可能是延時不匹配或上拉電阻偏大。// 讀 VL53L0X ID 寄存器的自檢代碼 uint8_t id_0 0; uint8_t id_1 0; VL53L0X_I2C_Start(); VL53L0X_I2C_WriteByte(0x52); // 8位地址 VL53L0X_I2C_WriteByte(0xC0); // ID 寄存器地址 VL53L0X_I2C_Start(); // 重復起始 VL53L0X_I2C_WriteByte(0x53); // 地址 讀標志 id_0 VL53L0X_I2C_ReadByte(0); VL53L0X_I2C_Stop(); if (id_0 0xEE) { printf(VL53L0X detected!\r\n); } else { printf(IIC comm failure, id0x%02X\r\n, id_0); }這段自檢代碼的精髓在于它繞開了整個官方 API只用最底層的 GPIO 模擬 IIC 讀寫一個寄存器把問題域縮到最小。如果這一步就失敗了不要急著深入 API先排查硬件連接如果這一步通過再跑完整初始化流程就能精準定位問題出在 API 配置還是硬件鏈路上。我每次移植一個新的 VL53L0X 模塊到某塊板子上都會先做這個 ID 自檢它能幫你至少省掉半天排查時間。5. IIC 驅動常見問題避坑指南現(xiàn)象、原因與解決5.1 波形里有臺階傳感器偶爾無響應現(xiàn)象邏輯分析儀抓 SCL/SDA 波形發(fā)現(xiàn)信號不是陡峭的方波而是有明顯的斜坡甚至臺階VL53L0X 有時能讀到 ID有時讀不到。原因上拉電阻阻值偏大加上總線電容線纜、模塊上的電容、芯片引腳寄生電容導致 RC 時間常數(shù)過大信號上升沿太慢。尤其在 400kHz 模式下高電平時間被壓縮從機采樣窗口落在上升沿中間導致時序違規(guī)。解決先把總線降速到 100kHz 試試如果問題消失就基本確認是時序邊沿問題。然后把上拉電阻從 4.7k 換成 2.2k或者把總線走線縮短。我自己的標準做法是杜邦線連接一律用 2.2kPCB 走線短距離再用 4.7k。還有一個小技巧是給 VL53L0X 模塊的 VIN 引腳并聯(lián)一個 100nF 和 10uF 電容減少電源紋波對 IIC 輸出的調制作用。5.2 地址換算錯誤導致設備無應答現(xiàn)象IIC 總線上用邏輯分析儀能看到波形但 VL53L0X 從不 ACK讀任何寄存器都返回 0xFF。數(shù)據(jù)手冊上明明寫著地址是 0x29。原因驅動代碼里 I2cDevAddr 字段填成了 0x29而 API 內部會把這個值左移一位作為 8 位地址發(fā)送或者反過來你直接填了 0x52 但 API 又做了一次左移。這類地址換算錯誤在多個廠商的驅動里都很常見因為有些驅動用 7 位地址有些用 8 位地址接口歸一化做得不好。解決直接看驅動源碼里發(fā)送地址的那一行確認它是把 I2cDevAddr 左移一位還是直接用。VL53L0X 官方驅動是直接用 I2cDevAddr 作為 8 位地址發(fā)送所以你要填 0x52。如果你不確定當前驅動是哪種約定用邏輯分析儀抓起始條件后的第一個字節(jié)數(shù)一下實際發(fā)送的地址值就能反推出應該填什么。5.3 初始化卡死在 while 循環(huán)里現(xiàn)象調用 VL53L0X_Data_Init 后程序進入死循環(huán)在調試模式下看到卡在某個 while (status BUSY) 類似的等待代碼。原因最常見的是 IIC 底層讀寫返回值恒為 0 或恒為 1導致 API 內部的狀態(tài)機反復重試還有一些情況是傳感器在初始化中途掉電或復位導致 API 后續(xù)讀取的寄存器值全部無效。解決在 IIC 讀寫函數(shù)里加入超時機制比如連續(xù)重試 3 次仍失敗就返回錯誤碼而不是無限死等。同時在 main 函數(shù)開頭加一個延時 100ms等 VL53L0X 上電穩(wěn)定后再初始化。另外注意 STM32F103 的 GPIO 模擬 IIC 引腳如果有第二個外設復用比如 PB6/PB7 默認是 USART1 的 TX/RX需要確認沒有外設搶占引腳否則總線會被 USART 的電平干擾。5.4 Keil 編譯報錯 peer 未定義或函數(shù)找不到現(xiàn)象移植官方驅動時編譯報錯提示找不到 VL53L0X_GetDeviceAddress 等函數(shù)或者在鏈接階段報一堆 undefined symbol。原因官方 SDK 里的源碼文件不是每個都需要編譯的有些文件是參考實現(xiàn)有些是平臺相關。編譯時如果缺少 vl53l0x_platform.c 或者包含路徑沒有覆蓋到 API 目錄鏈接器就找不到函數(shù)實現(xiàn)。解決檢查 Keil 工程的 Include Paths 是否包含 SDK 的 Core/inc 目錄確保所有以 vl53l0x 開頭的 .c 文件都添加到了工程中但要注意不要重復添加同一個文件Keil 會編譯兩次導致重復定義。如果還有問題在編譯選項里打開 “One ELF Section per Function” 可以減小未使用函數(shù)導致的鏈接誤差。這里提一下熱詞里“windows 無法驗證此設備所需的驅動程序的數(shù)字簽名”那是 PC 端 USB 驅動的問題和 MCU 工程無關但如果你用的 ST-Link 仿真器在 Win10/Win11 下無法連接可以臨時禁用驅動程序強制簽名后重新安裝 ST-Link 驅動。5.5 測距數(shù)據(jù)固定不變或全為 0xFFFF現(xiàn)象初始化明明成功了ID 也讀出來了但測距結果要么一直是同一個值要么是 65535。傳感器好像沒有真正開始測距。原因VL53L0X 測距需要先完成內部校準如果跳過 Perform_RefCalibration 直接測距結果可能會異常。另一種可能是傳感器正對的目標表面吸光太強比如黑色絨布返回光子數(shù)太少ToF 算法無法提取有效信號。解決嚴格按照 Data_Init → Static_Init → RefCalibration → SetDeviceMode → PerformSingleRangingMeasurement 的順序調用。如果目標表面是純黑低反射率材質可以把測距模式從單次改為連續(xù)模式并嘗試降低傳感器內部的 SPAD 閾值。另外檢查 XSHUT 引腳的電平如果被外部拉低傳感器會一直處于復位狀態(tài)測距自然無效。6. 進階技巧VL53L0X 連續(xù)測距模式與多設備掛載的 IIC 仲裁實戰(zhàn)到了最后這一層驅動已經能單點測距了但實際項目里往往要面對兩個更高頻的需求一是追求更低的測距延遲和更高的一致性二是單顆 STM32F103 要同時掛多顆 VL53L0X。這兩件事都繞不開 IIC 時序的深入理解和驅動層面的策略調整。連續(xù)測距模式是個關鍵技巧。單次模式每次調用 PerformSingleRangingMeasurement 都會完整地走一遍測距狀態(tài)機準備、測量、讀取結果時間開銷大而且測距間隔不均勻。改成 VL53L0X_DEVICEMODE_CONTINUOUS_RANGING 后傳感器會自己按內部節(jié)奏不停測距結果更新到內部的測量緩沖區(qū)里MCU 只需要在需要時讀取最新結果。這時 IIC 總線負載會明顯下降因為 MCU 不再需要頻繁地發(fā)起寫命令再讀數(shù)據(jù)。// 連續(xù)測距模式 中斷通知讀取IIC 只在需要時工作 VL53L0X_Set_DeviceMode(dev, VL53L0X_DEVICEMODE_CONTINUOUS_RANGING); VL53L0X_SetGpioConfig(dev, 0, 0, VL53L0X_REG_GPIO_HTR_GPIO_INTR_SOURCE_GPIO_NEW_SAMPLE_READY, VL53L0X_REG_GPIO_HTR_GPIO_INTR_POLARITY_HIGH, VL53L0X_REG_GPIO_HTR_GPIO_OUTPUT_ACTIVE_HIGH, VL53L0X_REG_GPIO_HTR_GPIO_OUTPUT_ACTIVE_HIGH); // 在 GPIO INT 外部中斷服務函數(shù)里做一次快速讀取 void EXTI0_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_Line0) ! RESET) { VL53L0X_GetRangingMeasurementData(dev, measure_data); distance_mm measure_data.RangeMilliMeter; EXTI_ClearITPendingBit(EXTI_Line0); } }這里我用了 GPIO 中斷而不是輪詢好處是 MCU 可以把時間片讓給其他任務只在 VL53L0X 真正完成一次測距時才讀取。注意中斷服務函數(shù)里不要做復雜計算或打印只復制測量數(shù)據(jù)到全局變量打印放到主循環(huán)里做避免外部中斷處理過長導致丟中斷。多設備掛載是另一個硬骨頭。VL53L0X 的固定 7 位地址是 0x29直接并聯(lián)在總線上會導致兩個設備同時 ACK數(shù)據(jù)完全錯亂。正確的做法是每顆 VL53L0X 的 XSHUT 引腳單獨連到 STM32F103 的一個 GPIO并且每顆的 XSHUT 引腳要有一個獨立的下拉或上電默認狀態(tài)。初始化流程是先把所有設備的 XSHUT 拉低讓它們全部處于復位狀態(tài)然后逐顆抬高某顆的 XSHUT等它啟動完成立刻通過 IIC 寫入一個新的 IIC 地址之后它就不會再響應 0x29 了再抬高二顆初始化并改地址依次類推。// 多設備改地址的典型流程先復位全部再逐個激活 void VL53L0X_Multi_Init(void) { // 假設有兩顆XSHUT 分別接 PB0、PB1 GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1); // 全部拉低復位 delay_ms(50); // 第一顆激活保持默認地址 0x29 GPIO_SetBits(GPIOB, GPIO_Pin_0); delay_ms(50); // 在這里完成第一顆的 Data_Init / Static_Init VL53L0X_Data_Init(dev1); VL53L0X_Static_Init(dev1); // 第二顆激活改地址為 0x308位地址形式 0x60 GPIO_SetBits(GPIOB, GPIO_Pin_1); delay_ms(50); VL53L0X_SetDeviceAddress(dev2, 0x30); // 內部會換算成 8 位地址 0x60 VL53L0X_Data_Init(dev2); VL53L0X_Static_Init(dev2); }改地址這個操作有個先后順序的講究必須先激活第二顆、再改地址因為如果先改了地址再激活傳感器在復位期間是不會響應任何 IIC 命令的。而且改地址操作后這顆傳感器會立即失去對 0x29 的響應所以改地址是瞬時生效的。如果你有第三顆、第四顆用同樣的流程逐個激活并分配地址即可。這個方案不需要額外的 IIC 多路復用器缺點是每顆傳感器占一個 GPIO對 STM32F103 這種 IO 豐富的芯片完全不是問題。最后再分享一個我自己的查錯習慣任何 IIC 問題第一反應不是看代碼而是用邏輯分析儀抓實際波形。把地址幀、寄存器地址幀、數(shù)據(jù)幀逐個對照數(shù)據(jù)手冊上的時序圖通常十分鐘內就能定位問題出在地址、時序、還是 ACK 處理上。這個習慣幫我排掉過無數(shù)個看似復雜的玄學故障也希望你能用上。希望這些基于 STM32F103 的 VL53L0X IIC 驅動經驗和避坑記錄能幫到你少走一點我當年走過的彎路。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
激情综合激情五月一起草| 9色在线视频| 色导航色婷婷五月天在线观看| 日韩无码乱轮| 色啦啦视频| 五月天综合在线观看视频| 婷婷六月色| 国产暴力强伦轩1区二区小说| 婷婷日日夜夜| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇| 无码激情| 九九热99熟女| 99热九九在线| 久久久久久婷| 99re8热精品免费视频| 亚洲精品国产成人AV在线| 天干干夜夜操| 情五月亚洲婷婷| 综合色色综合| www.91AV.com| 天天综合区| 九九99久久| 久久五月天色| 蜜乳av一级av| 99性爱视频| 色噜噜狠狠一区二区三区| 狠狠色婷婷7| 2017人人操| 丁香婷婷老熟女综合网| 欧美人与性动交CCOO| 色色丁香婷婷| 婷婷综合色| 激情丁香图片| www.夜夜操| 婷婷五月天在线综合| 久久久久亚洲A∨成人乱码电影| 丁香六月激情综合网| 色欧美一级| 色五月网址| 日韩成人电影AV| 激情综合一| 婷婷六月视频| 婷婷情爱五月天6| 五月涩涩网| 婷婷五月丁香在线观看| 久草xx性爱视频| 五月人人丁香婷婷五月人人丁香 | 久久sp免费视频| 亚洲精品久久久久久久久久飞鱼| 色狠狠色噜噜AV天堂五区| 大香蕉AV在线| 欧美97超碰| 香蕉97碰碰碰欧美| 日本少妇AA一级特黄大片| 天天爱天天天射AV| 五月天婷婷情色| 激情图片久久| 激情欧美婷婷| 99热只有精品在线观看| www.婷婷五月天.com| 蜜臀嫩草| 婷婷色操| 国产成人一区二区三区在线观看| 91/九色黑人| 亚洲超碰青涩| 久超超碰| 狠狠人妻久久久久久综合丁香| 99免费热在线精品| 色五开心五月五月深深爱| 国产热精品| 久久伊人日日夜夜| 日本99在线| 97婷婷狠狠| 玖玖综合网| 色播五月| 婷婷国产五月天17c| 曰本aaaaaa丈片| 激情五月婷婷啪啪| 69五月天视频| 成人婷99最新| 久久婷婷网址| 婷婷丁香五月av| 99色播| 亚洲 六月 综合| 另类激情中文| 国产成人精品一区二三区熟女在线 | 欧美大香蕉视频| 一本久道综合99| 婷婷五月色情天| 爱草视频在线观看| 婷婷操逼| 五月色情婷婷| 成人五月天在线视频在线观看| www.人人操人人看人人想人人摸 人人人人操,COM| 天天综合插插| 91久久婷婷| 国产69久久久欧美黑人A片| 蜜臀综合久草| 五月丁香视频在线观看| 成人av在线网站| 五月天激情小说| 亚洲欧美国产A片免费观看| AV成人在线播放| 99re思思在线视频| 乱码操操| 伦99热| 久1色色| 五月天激情婷婷| 在线观看国产高清视频免费网站 | 色婷五月天| 五月婷婷六月色| 婷婷五月丁香香蕉| 久久婷婷五月天蜜桃| 免费精品99| 7777久久亚洲中文字幕| 五月在在观看| 依人大香蕉| 久久婷婷五月综合啪| 天天在线久久综合| 99热91| 国产4P视频精品五区| 色婷五月天亚洲| 国产97色在线| 99碰网站| 久操综合| 大香蕉婷婷丁香天堂AV| 亚洲AV网址| 嫩草免费视频| 天天操夜夜爽| 97久久精品视频| 成人色情五月天婷婷丁香| 色香久久| 97人人操| 超碰激情网| 黄色激情网站在线观看| 色色网站免费| 色色色色区| 思思久日精品视频| 97超碰99热99| 噜噜视频| www.97碰碰com| 亚洲av骚货| 综合色色五月| 五月婷精品| 97五月婷| 久久视频在线| 亚洲操B视频| 日日夜夜爽| 久久久天堂国产精品女人| 久99| 九九99视频精品| 色色五月丁香婷婷| 婷婷综合网在线| 天天天天干| 乱码操操| 色综合色色| 精品国产va久久久久| 久久99婷婷| 六月婷婷激情图片| 五月丁香综合| 99r这里| 九九色网专区| 狠狠干无码| 色婷婷亚洲在线观看| 华人在线免费| 色五月激情综合| 色播播五月天| 亭亭玉立国色天香| 97超级啪啪在线观看| 蜜臀九九九九| 五月色情精品| 丁香婷婷色| 五月婷在线观看| 婷婷五月丁香五月| 很很干五月天| 婷婷激情在线| XX色综合| 操逼巨乳91| 伊人玖玖网| nvrentiantang av| wwW天天干| 五月天婷婷色| 新激情五月天天在线网| 五月天婷婷色播综合在线| 麻豆AV一区二区三区| 狠狠干五月丁香综合网| 爱操人妻| 综合激情四射一theav| 天天摸天天舔天天天天爽| 丁香婷婷黄网站| 成人做爰A片免费看视频| AAA亚洲AV| 国产4P视频精品五区| 久/久精品99看9| 久久奄也去色色网站| 大香蕉久久伊人网| 国产精品电影| 色婷婷超碰| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 激情綜合網址| 亚洲精品性色| 亚洲婷婷视频| av无码电影| 激情久久久| 日本色色视频| xxx综合在线| 五月天婷婷成人网| 精品国产va久久久久久久| 国av网| 婷婷五月激情欧美| 天天激情| 日韩六六久久电影| 热九九在线| a毛片二逼wwwwwwwwww| 99久久6| 深爱五月日韩| 思思热精品免费视频| 日韩精品一区二区亚洲AV观看| 狠狠操狠狠插| 亚洲人妻av| 丁香激情五月少妇| 人人操人av| 婷婷五月色| 超碰成人影视| 99丁香婷婷综合网| 99国产精品久久久久久久久久久 | 直接看的av| 色的色综合| 狠狠爱婷婷爱| 最新av在线观看| 激情影院69| 婷婷五月综合激情| 九色婷婷| 亚洲激情久久| 婷婷亚洲综合| 人妻久久久| 婷婷综合一二三| 婷婷香五月| 色综合色综合婷婷热| 狠狠爱婷婷色| 色婷婷女优有码五月亭| 91精品久| 超碰在线94| 激情AV综合| 丁香五月成人| 无码激情AAAAA片-区区| 99精品成人无码A片观看金桔| 91精品久久久久久综合五月天| 成人在线视频一区| 麻豆雪千夏| 五月花免费视频| 人人干Av| 色五月综合激情| 精久久色| 99性色| 五月花综合视频| 五月天激情婷婷丁香| 26uuu国产色| www.五月天婷婷.com| 久久婷五月天| 精品无码色欲AV| 亚洲 激情 中文| 久热这里只有精品3| 色综合色五月| 欧洲亚洲免费视频9| 欧美婷婷五月激情| 色色COm| 亚洲色爱综合| 超碰女人天堂| 天天插天天干| 碰人人97| 大香蕉久艹| 久久永久网址| 色五婷婷| 99热青青草| 91一起操| 亚洲狠狠终合停停终合| 丁香五月天天| 日本怕怕视频| 婷婷深爱五月丁香网| 五月婷婷在线观看| 性生活视频98791| 色播综合| 99爱操| 五月综合丁| 爆乳熟妇一区二区三区爆乳照片| 亚洲俩性性爱图片久久第六页| 色五月激情问网站| 婷婷五月婷| xx久久| 久热这里只有精品6| 久久99网站| 国产毛片操B| 操日本三片99| 人妻久久久久久久久妻久久久久| 五月丁香婷婷深深爱| yellow视频在线观看91| bbwcuckold精品熟妇| 亚洲综合碰| 国产91在线视频| 六月丁香六月婷婷欧美| 婷婷5月开心6月| 色婷婷五月天不卡| www.minyis.com【JT】实力收量可预付QQ2101460746 | 久久ww| 激情又色又爽又黄的A片 | 香蕉婷婷| 六月婷婷九月丁香| 99久久er| 天天精品视频免费观看| 午夜九九九九九九| 熟女五月天久久综合| 五月亭亭狠狠| 欧美色图片88| 五月婷婷色播视频| 色综合天天综合成人网| 色偷偷AV亚洲男人的天堂| 五月丁香六月婷婷激情四射| 色综合五月在线| 九九无码| 日本色超碰| 99噜噜噜在线播放| 99久久99久久| 五月天婷婷狠狠| 六月丁香五月亭亭| 丁香六月婷婷| 亚洲性受XXXX五月丁香| 在线成人网站| 99九九视频| 深爱五月天天| 亚洲精品V天堂中文字幕| 久久婷婷草| yazhouzonghesese| AA片在线观看视频在线播放| 噜噜狠狠| 99热最新网址| 午夜丁香婷婷| 99ri视频| 色狠狠综合| 日本婷婷色日| 91丨人妻丨国产丨丝袜| 色六月视频| 国产精品人成A片一区二区| 色五月色图| 亚洲色激情| 操碰色一区就去操| 青青草原99热| 一本到不卡高清DVD| 六月丁婷婷| 特黄三级片| 色蜜婷婷| 97色热| 中日韩狠狠色| 日韩成人电影在线播放| 久久婷婷网| 久久综合五月天| 99久久人人| 99精品久久久久久久婷婷久久| 婷婷99| 五月丁香美女| 国产乱子轮XXX农村| 五月丁香激情综合啪| 五月婷婷99热| 99re热视频这里只有综合亚洲| 激情六月天婷婷| 色综合偷拍| 天天久| 激情五月天福利| 五月天激情啪啪| 久777| 五月丁香狠狠地噜噜噜噜| 欧美性色A片免费免费观看的 | 激情五月婷婷开心网| 91综合视频丁香| 色色综合网络| 99色中文| 粉嫩AV久久一区二区三区| 婷婷五月天,影院| 婷婷五月花| 这里只有国产精品在线| 日本欧特黄色刺激一区影视久精品无码| 激情婷婷网| 亚洲成人AV在线| 国产激情在线| va婷婷在线| 激情综合丁香六| 五月婷婷五月天激情网| 丁香五月婷婷啪啪啪| 亚洲操人| 久久五月婷天天干| www.97碰碰com| 综合网亚洲| 丁香五月婷婷激情123| 伊人网色婷婷五月天| 思思久日精品视频| 国産精品| 蒲京久久无码视频| 色色色色色色色色五月先| 一起草无码视频| 99精品国产在热久久| 日日噜狠狠色| 婷婷月五天在线在线看| 欧美日本国产| 热久精品| 婷婷情爱五月天6| 东京热免费视频| 欧美叉叉叉BBB网站| 中文字幕乱轮| 激情五月天激情网| 天天综合久久| .青娱乐天天操B| 色爱综合网| 噜噜色五月| 9|在线观看视频| 久久9精品| 色婷婷色五月色丁香| 九九久久免费视频44| 国产在这里只有精品| 日日做夜夜爱| 亚洲综合新99视频| 99日在线视频| 丁香九月综合在线| 人妻日日日| 九月婷婷久久久| 激情婷婷五月基地| 五月丁香直播| 五月婷婷黄色| 人妻综合网| 五月天久久小说| 99久久婷婷| 超碰人人干| 久久只这里有精品| 久热2025无码| 五月天婷亚洲天综合网综合| 五月丁香 啪啪| 婷婷激情六月中文| 超级碰碰97在线| 激情五月丁香五月| 久久丝袜婷婷| 这里只有精品视频| 激情六月天婷婷| 激情五月丁香色婷婷| 婷婷五月激情图片| 91久久精品无码一区二区三区| ..真实国产乱子伦对白在线_欧| 婷婷激情在线| 婷婷另类小说| 婷婷成人视频| 深爱综合网| 视色综合| 婷婷五月天婷婷| 熟女乱论网| 日本久热| 久久精品婷婷| 国产亚洲色婷婷久久99精品91| 男人天堂 久久| 我淫我色婷婷五月天激情四射| 色色色网站| 99色天堂| 99操| 99精品免费| 丁香五月欧美| 99精品免费| 天天干天天拍| BBWCUCKOLD精品熟妇| 婷婷丁香六月| 亚洲精品国产熟女久久久| 婷婷久草| 亚洲激情四射色| 99ER热精品视频| 国外亚洲成AV人片在线观看 | 五月婷婷丁香六月| 99色视频在线观看最新| 九九热黄色| 婷婷五月天激情网| 激情六月下句是什么| 99热大全在线观看| 丁香五月天在线直播观看| 99热这里只有精品10| 婷婷5月色| 开心婷婷五月花| 色情一区二区播放| 色婷婷久久| 日韩在线视频网站| 国产成人网| 国外亚洲成AV人片在线观看| 亚洲欧洲一二| 97久久久| 色小说五月婷婷| 久久人妻久久| 99综合| 99精品偷自拍| 久99久视频精选| 亚洲综合在线播放| 人妻熟妇六区| 天天爱天天秀天天做| 色婷婷丁香五月| 亚洲久热| 91在线日本| 91婷婷丁香五月天免费视频网站| 欧洲综合色| 热久精品| 亚洲V国产V欧美V久久久久久| 91午夜婷婷狠狠久久综合9色| 国产黄色av| 自拍偷窥99热| 这里只精品热在线18| 久久婷婷综合国产| 琪琪布丁香社区激情五月天| 14色综合婷婷| 五月天激情久色| 98永久精品| 另类少妇人与禽zOZZ0性伦| 丁香婷婷激情四射五月| 99热这里只有99| 五月成人综合| 亚洲中文字幕在线观看| 久久婷婷夜| 狠狠久久婷五月综合色| 亚洲天堂啪啪| 色色图五月天| 婷婷在线五月天观看| 久久久噜噜噜久久人妻| 久久久国产精品黄毛片| 色婷婷久久综合| 永久AⅤ1| 亚洲妇女熟BBW| 中美日韩成人在线| 丁香五月在线播放| WWW色五月| 女人露出p毛视频www网站| 五月激情六月宗合| 亚洲色就是色色色| 天天日天天狠狠操| 成人在线网址| 激情久久久久久久久久| 综合五月网| 亚洲字幕AV一区二区三区四区 | 日日操夜夜操狠狠操| 五月婷视频在线| 4399啪啪视频| 丁香五月天天日| 亚洲天堂99| 丁香婷婷婷五月综合色情| 狠狠干狠狠干狠狠干狠狠干| 91丨九色丨43老版熟女| 九九伊人网| 亚洲综合另类| 五月婷婷婷| 99热只有精| 国产婷婷色综合AV蜜臀AV| 亚洲欧洲另类| 97婷婷色| 欧美日朝成人| 欧美精品99久久久| 久热伊人| 五月婷六月| 丁香色综合| 另类 在线| 色综合久久综合| 六月久久狠狠| 婷久久综合| 久久久精品色色色| 99热亚州综合| 99热激情| 人人性久久| 婷婷五月综合啪| 色天堂操| 91丨九色丨熟女丰满| 五月激情综合性爱| 人妻视频在线| 色欲av伊人久久大香线蕉影院 | www色色com| 色色色777| 51国精产品自偷自偷综合| 伊人久久婷婷| 97色色婷婷| 亚洲亚洲激情| 丁香五月天AV在线| 99re这里| 丁香五月天黄色片| 婷婷伊人| www色中色综合| 婷色综合| 97碰人人操| 婷婷中文无码| 激情丁香五月| 天天视频亚洲| av国产精品偷| 九九色精品| 人人天堂操| 亚洲成人电影在线免费观看| 久久色9| 丁香六月婷婷综合| 内射人妻视频国内| 亚洲色热| 综合五月丁香久久| 久久99精品久| 99热99在线| 激情婷婷丁香五月| 丁香五月天婷婷91| 丁香六月欧美| 五月婷色激情五月| 1024人妻| 九九色中文| 色色色色色色色色五月先| 久久亚洲色导航| 1024在线观看免费视频| 色五月婷婷综合| 操你av| 任你爽精品免费视频6| 欧美槡BBBB槡BBB少妇| 99re最新地址| www.婷婷| 亚州色综合| 色五月综合| 五月天婷婷色综合| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 操操操B| 亚洲AV人人操| 思思热久久爱| 五月激情婷婷图片基地| 热久69| 202丰满熟女妇大| 婷婷五月天网| 99秘 在线| 色五月成人| 嫩草视频。| 日本人妻A片成人免费看片| 五月天婷婷在线播放| 国产99热在线看| 亚洲 欧洲 国产 伦综合| 五月综合视频| 97福利视频| 欧州色色| 蜜乳国产网站| 激情美女五月天| 在线中文亚洲| 亚洲成人av在线观看| 婷婷成人视频| 伊人久久大香网| 激情五月天小说| 色综合xx| 丁香六月婷婷缴情欧美| 超碰com| 成人片在线免费看| 超碰人人在线观看| 久久AAAA片一区二区| 婷婷色五月天在线观看| 人人97碰| 超碰99热精品| 婷婷五月在线观看| 26uuu最新地址| 激情综合网亚洲色图| 狠狠看狠狠| 亚洲五月婷| 噜噜色五月| 青青草婷婷久久| 六月丁香婷婷爱| 91久久精品国产91性色TV| 色播播五月天| 亚洲综合五月天| 色人久久| 99亚州综合精品成人网| 操碰91| www.色99| 99爱视频在线观看| 五月天婷婷久久| 婷婷五月成人| 色色国产| 成人午夜天| 国外亚洲成AV人片在线观看| 国产肥白大熟妇BBBB视频| 91九九| 色五月激情五月| 九九热最新| 久久99国产综合精品免费 | 男人天堂亚洲综合| 日韩一区二区三区无码| 五月天性色| 色婷五月天网站| 色了色综合| 婷婷五月天男人影院色色网| 婷婷丁香成人五月天| 免费观看的婷婷五月视频在线| 欧美va在线| 激情综合网五月婷婷| 天堂综合久久 | 99热精品在线观看| 粉嫩AV久久一区二区三区| 国产欧美日韩综合精品一区二区| 日曰躁夜夜躁2026| 69人人操人人爽| 99久操| 亚洲av网站| 久久机热这里只有精品免费视频| 天天综合天天做天天综合| 亚洲婷婷乱乱丁香| 五月狠狠| 国产精品涩涩涩视频网站| 色综啪啪网| 九色地址91视频| 婷婷伊人五月天| 草草夜夜操| 99热 在线播放| 色色五月丁香| 日日撸日日操| 99久.| 中文字幕日产A片在线看| 99精品综合在线| 五月激情婷婷综合| 亚洲尤物在线| 激情亚洲婷婷| 午夜精品久久久久久久爽| 亚洲色五月婷婷| 婷婷五月小说色综合| 婷婷五月天激情综合深爱| 九九热在线观看视频| 99re6久热只有精品6在线直播| 亚洲精品无人区| 亚洲AV第二区国产精品| 亚洲色婷婷激情| 天天干电影| 天天做天天爱| 91九色国产熟女| 91视屏在线观看com.wwwvv| 激情图片婷婷丁香五月| 国产国产乱老熟女视频网站97| 中文字幕不卡视频| 婷婷色播综合五月| 亚洲激情综合网| 99热8在线| 99热在线观看免费中文| AV人人操| 亚洲精品一二三| 婷婷丁香五月天综合AV| 丁香婷婷激情六月五月开心| 嫩草AV久久伊人妇女超级A| 五月天婷婷社区久久综合| 婷婷激情区| 丁香五月婷婷啪啪| 在线99精品| 丁香六月天婷婷开心综合| 思思热视频| 综合色影院| 婷婷五月天成人网站| 亚洲五月婷婷| 婷婷丁香五月麻豆| 日日干夜夜干| 狠狠色噜噜狠狠亚洲A∨| 精品综合久久久久久五月天| 五月花激情| 色哟哟www| 五月天亭亭俺也| 欧美性爱丁香五月| 综合在线丁香五月| 97天堂| 玖玖国产视频一区| 91人人爽狠狠狠| 婷婷激情综合色五月久久图片| 99热这里只有精品1998| 被强行糟蹋的女人A片| 久久这里都是精品免费| 久久女人天堂| 在线观看欧美| 婷婷五月天网址| 99热很操老逼| mmm1717.6dbm人人爱人人操| 超碰AAAAAAV| 日本三级日本三级99| 婷婷五月丁香六月| 久久久久久激情| 综合色网站| 66成人网| 婷婷综合97| 91丁香五月| 超碰色婷婷| 中文资源在线a | 午夜激情四射影院| 成 人 色 色| 色婷婷精| 国产在这里只有精品| 天天操精品| 极品人妻VideOssS人妻| 久久一品区| 婷婷五月激情的图片| A在线观看| 成人视频一区| 日日干五月天婷婷| 五月丁香在线| 色五月婷婷啪啪五月| 伊人99久久| 丁香午夜天| 99九九在线视频| 色人久久| 管管補管管紱| 五月丁香色色色| 无码99| 天天爽人人综合免费7799| 99爱在线视频| 欧洲综合视频在线观看。欧洲,亚洲综合食品在线观看。 | 欧美激情五月天| 97视频.干com| 97干在线| www.色擼擼.com| 丁香五月天婷婷91| 操人91| 五月婷婷伊人网| 操比激情五月| 婷婷操逼| 五月丁花色综合网| 婷婷丁香社区| 天天做夜夜爽| 狠狠色 综合色区| 色婷婷女优有码五月亭| 久99热| 天天日,夜夜爽| 天堂久久大香蕉| 六月丁香婷| 婷婷五月天激情综合深爱| av在线观看网址| 久久久这里有精品| 开心五月深爱五月丁香五月激情五月| 综合九九中文字幕| 99综合免费视频| 日本va欧美va欧美va| 婷婷的99视频网站| 日韩艹比| 99热这里只有精品1025| 丁香婷婷啪啪啪| 色婷婷综合综合网| 激情内射人妻1区2区3区| 五月天成人综合| 99热久久这里只有精品| 丁香五月婷婷亚洲激情四射| 天天日天天摸| 天天爽免费视频| 五月天婷婷色在线视频免费观看 | 婷婷成人视频| 日韩AAAAA| 久久99热只有精品| 久久久久久18| 天天干天天拍| www.99热在线观看| 五月丁香无码| 思思久ren热| 日本久久人| 97丨九色丨国产丨PORNY| 91成人视频| av人人操| 99久久99热| 天天操天天曰天天射| 亚洲AV在线免费看| 色色色网站| 久9视频免费播放| site:publishdd.com| 日本三级中国三级99人妇网站| 欧在线一区| 777米奇影视第四色| 五月婷婷激情综合| 99视频只有精品| 五月激情综合深爱| 色月视频| 五月丁香网av| 成人精品在线| 久久99精品日本| 欧美碰碰碰| 天天色天天操天天射| 婷婷中文字幕| 久久婷婷五月天懂色| 99热综合| 开心激情综合| 激情五月,激情综合网| 青青草日本亚洲| 婷婷九月激情网| 乱女乱妇熟女熟妇综合网站| 久久9视频| 1024手机在线观看看片_日韩精品| 变天就操逼婷婷五月| 久久五月婷天天干| 97人妻超级碰碰碰碰碰| 99国产精品久久久久久久久久久| 色五月天婷婷| 26UUU精品一区二区| 久久98| 99综合视频| 婷婷色网| 日韩色色视频| 夜夜干天天操| 99热这里只有精| 五月婷婷激情网| 五月色综合| 激情综合五月| 99精品视频在线观看| 国产乱子轮XXX农村| 婷婷五月天影院| 中国女人做爰A片| 少妇搡BBBB搡BBB搡毛茸茸| 日韩丰满少妇无码内射| 97在线观视频免费观看| 国内一级片| 久9热视频在线| 91色色色视频| 婷婷五月丁香香蕉| 色5月婷婷色| 婷婷亚洲影院| 中文字幕丰满乱孑伦无码专区| 五月婷婷开心深| 深爱五月中文字幕| 五月婷婷丁香在线视频| 欧美色爱五月天| 亚洲美女网Va| 国产成人av在线播放| 亚洲日日日| 成人做爰A片免费看视频| 天天色天天操天天射| 久婷婷视平| 97性高潮久久久| 婷婷操超碰| 人妻久久久久久久久妻久久久久久久久| 久久五月天合网| 99成人无码| 26UUU精品一区二区| 99在线视频精品| 中文字幕在线免费观看视频| av中文字幕免费观看| 五月丁香视频色色| 亚洲免费看片| 久久婷婷亚洲五月天| 99热首页| 激情综合网激情五月天| 老师高潮流白浆喷水的A片| 婷婷玖玖丁香| 婷婷五月在线综合| 亚洲色情网站| 色五月婷婷影院| 婷婷丁香色五月天| 日韩99视频| 嫩草综合网| 蜘蛛女侠2003满天星免费观看| 97色婷婷成人综合在线观看| 亚洲乱码日产精品BD| 婷婷黄色五月| 安息电影在线观看完整版| 色色色免费视频| 99免费| 97色碰碰公开视频| 99久久婷婷国产综合精品青桔| 九九热这里只有精品9| 婷婷五月天亚洲综合| 九九视频在线观看视频6 | 九九九午夜视频| 五月婷婷六月丁香综合视频在线| 99热99热在线| 欧美日韩999| 激情丁香五月AV| 五月六月激情婷婷| 色婷婷88| 97成人丁香| 九九热这里有精品视频| 婷婷综合激情| 久久久国产精品黄毛片| 久久久五月五丁香| 99热这里只有精品最新| 99热免费| AV成人在线播放| 热99热9| 五月香婷婷| 久久婷网| 精品成人a v无码内射| 精品人妻伦九区久久AAA片| 久久综合色五月| 99黄色| 99在线免费观看| 九九亚洲综合| 夜夜骑夜夜操| 97人人操人人插| 九九这里只这里只有精品| 中文字幕视频在线播放| 9 1 A v久久久| 99热这里只有国产精品| 伊人久久婷婷| 成人看片网站| 久草性爱| 久久99大全| 九九这里都是精品| 亞洲自怕| 99色在线观看| 少妇AB又爽又紧无码网站| 婷婷色综合| 91美女被操| 婷婷久久性爱| 色色色热| 777久久久| 久久精品视频在这里有| 91色五月在线观看| 99.色| 无码一区精品一区视频| 五月天另类综合网| 五月丁香综合| 五月色丁香综合| 97精品综合久久| 7月婷婷六月丁香| 99久热| 99小视频在线| 五月丁香免费看| 色播五月丁香| 夜夜爽天天爽| 五月伊人综合| 91丨九色丨东北熟女| 青青草a在线| 噼里啪啦在线观看免费完整版视频| 大香蕉久久伊人婷婷五月丁香| 五月婷婷av| 激情色播| 婷婷色综合| 情五月亚洲婷婷| 日本不卡高字幕在线2019| 丁香色播五月天| 东京热五月婷婷| 99热视精品| 亚洲综合欧美色丁香婷婷888月图片| 天天干天天爽天天爽| 九九色中文| 久久综合五月天| 婷婷五月综合社区| 色优久久| 日日干综合| 9|人妻人人操| 色婷婷亚洲婷婷在线观看| 美女精品一级不卡视频| 怡红院视频| 六月激情婷婷综合| 超碰操日| 丁香五月婷婷五月天| 无码激情| 少妇高潮呻吟A片免费看软件| 五月丁香婷中文| 国产第99页| 丁香色五月 97干| 五月色亭丁香| 亚洲av电影网站| 99这里热| 噜综合| 久99久视频精品| 狠狠99| 99人这里只有精品| 久久99免费视频网站| 久草狼人| 丁香久久AV| 色播五月丁香综合| 无码操B| 五月激情网综合| 亚洲成人高清在线| 国产AV一区二区三区最新精品| 99热久久这里只有精品2010| 99九九热在线观看| 少妇性BBB搡BBB爽爽爽视頻| 色中色综合| 亚洲 综合中文| 九九色网| 九九婷婷网五月天| 五月开心深深爱激情综合| 9精品在线| 色五月婷婷777| 天天搡日日搡aaaaⅩ| 开心婷婷五月花| 91精产品自偷自偷综合| 成人国产欧美大片一区| 五月天激情综合网| 激情校园 亚洲| 久久五月天视频| 婷婷五月激情黄色| 色吧综合网| 色五月婷婷激情| 婷丁五月| 婷婷丁香社区| 成熟妇人A片免费看网站| www,色婷婷| 97好吊操| 丁香婷婷综合精品六月初| 婷婷久久在线| 亚洲国产精品VA在线看黑人| 色婷婷88| 五月丁香婷婷成人综合网| 五月婷六月综合在线观看| 五月丁香综合影院| 极骚大香蕉伊人| 丁香五月婷婷五月| 色欧美影院| 五月开行婷婷色五月| 色五月激情问网站| 爽极品色| 99热99| 久久久91精品| 精品一二三区久久AAA片| 久久99久久99精品免视看婷| 五月丁香六月综合激情无码软件亮点| 梁铮版《蜘蛛女侠》在线| 午夜爱爱网站| 99精品偷拍视频| 色啦啦视频| 少妇高潮A片无套内谢麻豆传| 色综合丁香婷婷| 久久婷婷五月天蜜桃| 六月婷婷激情小说网| ,99视频久久| 婷婷丁香色五月亚洲| 97人人搞| 久久免费丁香| 婷婷综合av| 色情婷婷久久五月天| 日本人人超碰| 99ER热精品视频| 思思久久精品| 91 九色 熟女| 狠狠久久婷五月| 欧美激情综合色综合啪啪五月| 一级操逼内射在线视频| 亚洲激情区| 狠狠狠狠狠狠狠狠草| 这里只有视频精品| 激情com| 成人五月天在线观看| 五月大香蕉| 九九99精品视频在线观看| 97人人做| 丁香婷婷基地| 婷婷在线免费| 色色五月丁香| 91中文在线| 久久这里这里有精品免费视频| 亚洲综合成人网| 97在线精品| 丁香六月婷婷激情综合| 成人做爰A片免费看网站找不到了| 亚洲午夜av| 久久久激情| 亚洲网站在线鸭子av| 精品人妻伦| 26uuu激情五月天| 爱婷婷五月| 天天色天天爱天天爱天天爱y| 亚洲va欧洲va国产va不卡| 色婷婷五月天视频网站| 五月丁香六月婷| 1024国产| 色婷婷香蕉| 日韩少妇内射免费播放| 91夫妻网站九色| 国产精品成人网站| 狼人婷婷久久| 快乐激情五月色婷婷| 思思热99er在线视频| 五月天成人手机在线视频| 六月婷婷久久大全| 色丁香五月婷婷| 五月婷在线| 成人精品视频99在线观看免费 | 五月婷婷9| 亚洲婷婷丁香| 五月天伊人av| 婷婷爱婷婷| 人人视频人人干人人做| 99在线视频精品| www.91色| 91人人爱| 超碰93在线观看| Xx色综合| 欧美激情凹凸丁香网| 人人摸人人澡人人| 可以看的av网站| 五月天激情色色| 九月激情综合婷婷| 五月天婷婷基地丁香| 99在线国| 97九色视频| 综合久久99| 丁香五月婷婷激情中文| 中文字幕在线免费观看视频| 五月丁六月香av| 国产va视频| 99色天堂| 9|在线观看视频| 91精品久久久久久77777| 婷婷色在线| 97碰免费视频在线| 日本激情五月| 久9热在线视频| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 99干日本| 农村熟妇高潮精品A片| 五月天激情综合网| 激情文学天天| 丁香五月伊人| 午夜精品人妻无码一区二区三区| 一级无码作爱片| 第二色AⅤ| 蜜臀99精品| 精品香蕉99久久久久网站 | 婷婷久久色| 国自产拍偷拍精品啪啪一区二区| 77777亚洲午夜久久| 色婷婷精品小视频| 色婷婷88| av免费在线观看0| 99er这里只有精品视频| 欧美Va日本Va| 国产FREESEXVIDEOS性中国| 美女精品一级不卡视频| 中文字幕色色色| 婷婷五月天影院| 国产精品色婷婷久久久精品| 亚洲综合婷婷| 亚洲激情五月天| 日本天堂免费99| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 激情五月综合六月丁香婷婷狠狠干| 五月丁香网站| 热日韩欧美| 中文人妻主播久久| 91viP在线看| 婷婷久久婷婷| 日韩久久这里只有精品| www.色婷婷.com| 色九月婷婷综合| 无套内射极品大美女| 五月丁香综合色婷婷| 婷婷色色综合激情| 天天干天天操天天拍| 婷婷色五月激情强奸四射| 天天色,天天日,天天做| 中字幕视频在线永久在线观看免费| 国产亚洲在线观看| 97久久精品| 色天堂97| 五月丁香六月婷婷姐| 婷婷六月香| 日本va视频| 成熟妇人A片免费看网站| 在线观看五月婷婷网| www.zbzhongsen.com| 99玖玖在线视频| 国产视频婷婷| 五月色情婷婷| 99热99热99热99热| 激情五月天久久| 婷婷狠狠五月综合| 大伊香蕉精品视频在线| 男人天堂亚洲综合| 激情久久久| 99丁香五月婷| 九九久久综合| 99极品视频| 免费无码毛片一区二区A片| 五月丁香怕啪啪| 中文字幕成人| 青青草a在线| 亚洲日韩乱码一区二区三区四区| 激情五月天激情网| 色玖玖| 丁香五月婷婷丫| 亚洲愉拍99热成人精品| 色色色色色色色色色999| 色婷婷色综合久久精品V| 五月天激情视频网站|