日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

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

STM32F103驅(qū)動VL53L0X激光測距:IIC驅(qū)動源碼詳解與避坑指南 簡介基于STM32F103單片機的VL53L0X測距傳感器IIC接口驅(qū)動源碼面向嵌入式開發(fā)者和STM32入門學(xué)習(xí)者解決激光測距模塊在Keil MDK環(huán)境下的快速集成與調(diào)用問題。工程在KEIL UV5下開發(fā)完成引腳與IIC配置后可直接運行主程序依次完成LED指示燈、SysTick定時器與USART串口初始化并調(diào)用vl53l0x_start_single_test執(zhí)行單次測距狀態(tài)判斷與串口輸出接口均已預(yù)留模塊劃分簡潔注釋清晰便于順著思路理解驅(qū)動架構(gòu)。資源包共238個文件其中h頭文件47個、c源文件42個核心驅(qū)動代碼完整另附uvprojx工程文件可直接用Keil打開編譯、hex燒錄文件可快速驗證map映射文件與編譯中間產(chǎn)物也能輔助排查問題整體約8.28MB。已有1569人學(xué)習(xí)下載對熟悉IIC時序和傳感器驅(qū)動移植的初學(xué)者具有較好的參考價值。1. 從 IIC 波形臺階到 STM32F103 與 VL53L0X 的這場“硬仗”做嵌入式開發(fā)這幾年我上手過的測距方案不算少超聲波、紅外、激光三角都有各自的脾氣。但如果你手頭正好有一塊 STM32F103 最小系統(tǒng)板又想把測距精度做到毫米級VL53L0X 這顆激光測距傳感器幾乎是繞不開的選擇。它用的是 ToF飛行時間原理而不是靠反射光強度估距離所以在弱光、強光下都比紅外靠譜得多它和 MCU 之間走的是 IIC 接口也就是標題里那個“IIC 驅(qū)動程序源代碼”要解決的核心問題。我最早在 STM32F103 上調(diào)試 VL53L0X 時最大的感受是硬件連接十分鐘就能搞定真正耗時間的全在 IIC 時序、寄存器讀寫和那個復(fù)雜到讓人頭皮發(fā)麻的 API 初始化流程上。更別提用示波器看 SCL/SDA 波形時發(fā)現(xiàn)臺階、用邏輯分析儀抓到 ACK 丟失這類玄學(xué)問題。這篇筆記我就把基于 STM32F103 的 VL53L0X IIC 驅(qū)動從原理到源碼、再到排錯方法完整拆一遍給你一條能直接照著復(fù)現(xiàn)的落地路徑。2. VL53L0X 為什么非用 IIC 不可接口選型與上拉電阻的關(guān)鍵參數(shù)2.1 從 ToF 原理看 VL53L0X 的通信需求VL53L0X 內(nèi)部集成了激光發(fā)射器、單光子雪崩二極管陣列和復(fù)雜的測距算法引擎。它對外暴露的接口只有一路 IICI2C而且芯片本身不帶地址線7 位地址是寫死的 0x29想在同一總線上掛多顆就得靠 XSHUT 引腳逐個上電復(fù)位來改地址。這顆傳感器不提供 SPI 或 UART 選項所以 IIC 驅(qū)動不是“選型之一”而是唯一路徑。這里要先糾正一個常見誤解很多人覺得 IIC 就是兩根線隨便接一接就能通但實際上 VL53L0X 的數(shù)據(jù)手冊明確規(guī)定 SCL 和 SDA 需要外部上拉電阻。我見過不少翻車案例都是直接把 STM32F103 的 PB6/PB7 接到模塊上忘了上拉結(jié)果讀寫寄存器時好時壞。IIC 是開漏協(xié)議沒有上拉電阻總線根本拉不至高電平波形會變成一條緩慢爬升的斜線通信時序自然一塌糊涂。2.2 上拉電阻阻值怎么定1.8k 到 4.7k 的取舍上拉電阻的取值直接影響 IIC 的上升沿時間。VL53L0X 支持標準模式100kHz和快速模式400kHzSTM32F103 的 IIC 外設(shè)跑 400kHz 完全沒問題但前提是上拉電阻要匹配。電阻太大RC 充電時間常數(shù)變大上升沿變緩400kHz 下可能觸發(fā) SCL 高電平時間不足電阻太小總線驅(qū)動電流過大雖然波形更陡但會增加功耗且對長線傳輸不友好。我一般會分兩種情況處理如果模塊和 MCU 在同一個 PCB 上、走線很短用 4.7k 上拉到 3.3V 就夠了這也是絕大多數(shù) VL53L0X 模塊的默認配置如果用了杜邦線連接線長超過 10cm或者周圍有電機、繼電器這類干擾源我會直接換成 2.2k 甚至 1.8k把上升沿壓下來。還有一個容易忽視的點STM32F103 的 PB6/PB7 如果配置成了開漏輸出片上沒有上拉必須靠外部電阻如果你圖省事把引腳配置成推挽輸出那總線就變成單端驅(qū)動了雖然短線上也能跑通但一旦掛多設(shè)備就會出現(xiàn)總線沖突這個后面講多設(shè)備掛載時再細說。// 標準外設(shè)庫方式初始化 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 總線仲裁機制的基礎(chǔ)。50MHz 速度等級是為了保證 GPIO 翻轉(zhuǎn)速率不成為 400kHz 時序的瓶頸雖然實際 IIC 翻轉(zhuǎn)頻率遠低于 50MHz但 STM32F103 的 GPIO 輸出驅(qū)動能力配置在高速檔時邊沿更陡抗干擾能力更好。2.3 5V 轉(zhuǎn) 3.3V 電平與 VL53L0X 的兼容性邊界熱詞里提到“stm32f103 5v轉(zhuǎn)3.3v電路”這背后是一個關(guān)鍵約束VL53L0X 的絕對最大額定電壓是 3.6V供電必須用 3.3V不能接 5V。很多 STM32F103 最小系統(tǒng)板是 3.3V 供電的這部分不難難的是如果周圍還有其他 5V 器件、或者你手上的模塊是 5V 邏輯的舊器件就得小心電平轉(zhuǎn)換。VL53L0X 模塊上一旦接了 5V大概率直接燒毀內(nèi)部的 LDO 和傳感器核心。我自己的習(xí)慣是不管模塊上有沒有板載穩(wěn)壓一律外部供 3.3V并且用萬用表確認模塊 VIN 引腳電壓不超過 3.45V。如果系統(tǒng)里確實只有 5V 電源就得先過一個 AMS1117-3.3 或更低壓差的 LDO再給 VL53L0X 供電同時 STM32F103 的 IIC 引腳如果被外部上拉到 5V也要通過電平轉(zhuǎn)換芯片如 TXS0102或分壓電阻把高電平鉗位到 3.3V否則 VL53L0X 的 IIC 引腳可能因為過壓進入閂鎖狀態(tài)。3. 驅(qū)動源碼的核心骨架從寄存器讀寫到 API 移植的完整鏈路3.1 IIC 底層驅(qū)動用 GPIO 模擬還是用硬件 IIC這是 STM32F103 上做 VL53L0X 驅(qū)動最糾結(jié)的一個選擇。STM32F103 有硬件 IIC 外設(shè)但老工程師都知道這塊芯片的硬件 IIC 在早期批次里有著名的 Bug雖然實際上大部分場景能用但總有一些超頻、總線繁忙、多主沖突的邊界情況會莫名其妙卡死。我自己的血淚經(jīng)驗是VL53L0X 的驅(qū)動本來就復(fù)雜初始化要讀寫上百個寄存器而且官方 API 里有一些地方會連續(xù)做多次沒有 STOP 的重復(fù)起始條件這時候硬件 IIC 如果配置不對就可能等 BUSY 位一直不釋放卡死在 while 循環(huán)里。所以常見的從業(yè)方案是直接用 GPIO 模擬 IIC。兩條 GPIO 線用延時函數(shù)控制翻轉(zhuǎn)雖然會占用 CPU但對 VL53L0X 這種單次測距才幾十毫秒的傳感器來說完全夠用。而且 GPIO 模擬 IIC 的時序完全可控出了問題用邏輯分析儀一看就知道是哪一步不對比對著數(shù)據(jù)手冊查硬件外設(shè)寄存器狀態(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); }這里的關(guān)鍵是時序順序IIC 起始條件是 SCL 為高時 SDA 產(chǎn)生下降沿。如果 SDA 拉低后沒有等 SCL 也拉低就開始傳數(shù)據(jù)從機可能會誤判起始條件。delay_short 是微秒級延時我建議直接在 startup 文件或 systick 上做一個簡易延時函數(shù)不要用 for 循環(huán)空轉(zhuǎn)因為編譯器優(yōu)化等級不同for 循環(huán)的空轉(zhuǎn)時間會變驅(qū)動在 -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; }這段代碼是整套驅(qū)動的底層地基。寫字節(jié)時從高位開始每發(fā)一位拉高 SCL讓從機在 SCL 高電平期間采樣 SDA 上的電平然后拉低 SCL 準備下一位。發(fā)送完 8 位后主機釋放 SDA在第 9 個時鐘周期讀取從機的應(yīng)答信號。有一個細節(jié)容易被忽略讀 ACK 之前必須把 SDA 引腳模式從輸出切換為輸入或者至少把輸出寄存器寫 1 讓它呈現(xiàn)高阻態(tài)。我用的是開漏輸出加外部上拉的方案所以直接寫 1 就能釋放總線但如果你的引腳配置成了推挽輸出這一步就會把 SDA 死死拉高永遠讀不到 ACK。3.2 官方 API 的移植套路從 ST 官網(wǎng) SDK 到 Keil MDK 工程VL53L0X 的官方驅(qū)動包是一整套 API包含約 20 個 C 源文件核心文件是 vl53l0x_api.c、vl53l0x_i2c.c 和 vl53l0x_platform.c。這些文件不要求你全部讀懂但需要把平臺相關(guān)的接口對接上。最省事的做法是只保留 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(); // 重復(fù)起始條件 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é)束了。如果順序反了要么多讀一個字節(jié)造成后續(xù)時序錯亂要么少收一個字節(jié)導(dǎo)致數(shù)據(jù)不完整。這也是很多新手移植時只改底層不處理 ACK導(dǎo)致測距數(shù)據(jù)忽大忽小的原因之一。3.3 初始化流程里那些繞不開的“黑匣子”寄存器VL53L0X 的初始化不像普通傳感器那樣寫幾個配置寄存器就能用。官方 API 的初始化過程會執(zhí)行校準、設(shè)置參考 SPAD、寫入 NVM 數(shù)據(jù)等一系列操作整個流程下來要寫幾百個寄存器。這些寄存器的含義大部分沒有公開詳細說明驅(qū)動里把它們當作黑匣子處理你只需要保證每個 API 調(diào)用順序正確。// VL53L0X 初始化的標準調(diào)用順序 VL53L0X_Dev_t dev; dev.I2cDevAddr 0x52; // VL53L0X 的 7 位地址 0x29 左移一位后的 8 位地址 dev.comms_speed_khz 400; VL53L0X_Data_Init(dev); // 寫入基礎(chǔ)配置 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 位地址但驅(qū)動里函數(shù)的入?yún)⑼ǔJ?8 位地址也就是 7 位地址左移一位加上讀寫位。0x29 1 0x52如果你直接填 0x29驅(qū)動會把地址當成 0x14因為 0x29 的最高位被當成讀寫位丟掉了IIC 總線上根本找不到從機。這個地址換算問題我見過至少不下五次每次都是找不到傳感器時排查半天才發(fā)現(xiàn)的。4. 在 STM32F103 最小系統(tǒng)上跑通測距工程搭建與最小可復(fù)現(xiàn)流程4.1 Keil MDK 工程搭建Pack 包、芯片選型和 ST-Link 調(diào)試熱詞里提到“stm32f103 keil mdk工程搭建與st-link調(diào)試全流程”這里就把完整流程濃縮成可執(zhí)行步驟。第一步是裝芯片支持包STM32F103 對應(yīng)的 Pack 包在 Keil 的 Pack Installer 里直接搜 STM32F1xx_DFP 安裝即可。裝完后新建工程芯片型號選 STM32F103C8這里注意如果你的板子是 C8T6 最小系統(tǒng)板Flash 是 64KB如果代碼編譯后超過這個容量鏈接器會報錯需要裁剪調(diào)試信息或換用 CB/RC 等更大 Flash 的型號。工程文件結(jié)構(gòu)我一般這么組織user 目錄放 main.c 和中斷服務(wù)函數(shù)driver 目錄放 GPIO、USART、IIC 的底層驅(qū)動vl53l0x 目錄放從官方 SDK 拷過來的 API 文件。編譯前要檢查一個關(guān)鍵設(shè)置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 是關(guān)鍵它告訴延時函數(shù)系統(tǒng)主頻是 72MHz如果這里填錯所有微秒延時都會按錯誤的主頻縮放IIC 時序會變得極其詭異。VL53L0X_PerformSingleRangingMeasurement 是阻塞式測距內(nèi)部會等測量完成單次耗時大約 23ms 到 50ms 不等取決于測距模式和精度設(shè)置。如果不需要等結(jié)果可以改用中斷模式讓傳感器測量完成后通過 GPIO 中斷通知 MCU。4.2 VL53L0X 與 STM32F103 之間的關(guān)鍵上拉電路實測你可以做一個非常簡單的實驗來驗證上拉電阻的作用先把 4.7k 上拉接好用示波器看 SCL 波形上升沿大約是幾十納秒然后拔掉上拉電阻再看波形上升沿會變成一條幾微秒的緩慢爬升曲線而且高電平可能根本到不了 3.3V 就會被下一幀的下降沿打斷。如果你沒有示波器用邏輯分析儀抓也能看出明顯的“臺階”。上拉電阻的這個“臺階”在 SCL 和 SDA 上表現(xiàn)形式略有不同。SCL 上的臺階會讓從機在每個時鐘周期的高電平時間不足嚴重時芯片直接不響應(yīng)SDA 上的臺階會影響數(shù)據(jù)采樣窗口表現(xiàn)為讀回來的寄存器值偶爾是錯的。所以熱詞里“iic波形出現(xiàn)臺階”這個問題八成不是信號反射而是上拉電阻失效或阻值過大導(dǎo)致的充放電時間過長。遇到這種問題第一件事不是換主控、調(diào)延時而是檢查上拉電阻的阻值和供電軌。// 用 STM32F103 的 ADC 簡單驗證 VL53L0X 供電電壓可選步驟 // 將 VL53L0X VIN 經(jīng)過 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對應(yīng) ADC 值約 2047。這個驗證手段是為了排除供電不足導(dǎo)致傳感器初始化失敗的問題。4.3 第一次上電如何判斷驅(qū)動是真的通了驅(qū)動移植完上電后先不要急著看測距數(shù)據(jù)先做一個最簡單的自我檢查通過 IIC 讀 VL53L0X 的 ID 寄存器。0xC0 和 0xC1 這兩個寄存器分別存儲芯片型號 ID 和版本號固定值分別是 0xEE 和 0xAA。如果讀出來這個值說明 IIC 鏈路是通的地址換算沒錯上拉電阻也夠用如果讀回來全是 0xFF說明總線根本沒有從機應(yīng)答大概率是地址填錯或 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(); // 重復(fù)起始 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 驅(qū)動常見問題避坑指南現(xiàn)象、原因與解決5.1 波形里有臺階傳感器偶爾無響應(yīng)現(xiàn)象邏輯分析儀抓 SCL/SDA 波形發(fā)現(xiàn)信號不是陡峭的方波而是有明顯的斜坡甚至臺階VL53L0X 有時能讀到 ID有時讀不到。原因上拉電阻阻值偏大加上總線電容線纜、模塊上的電容、芯片引腳寄生電容導(dǎo)致 RC 時間常數(shù)過大信號上升沿太慢。尤其在 400kHz 模式下高電平時間被壓縮從機采樣窗口落在上升沿中間導(dǎo)致時序違規(guī)。解決先把總線降速到 100kHz 試試如果問題消失就基本確認是時序邊沿問題。然后把上拉電阻從 4.7k 換成 2.2k或者把總線走線縮短。我自己的標準做法是杜邦線連接一律用 2.2kPCB 走線短距離再用 4.7k。還有一個小技巧是給 VL53L0X 模塊的 VIN 引腳并聯(lián)一個 100nF 和 10uF 電容減少電源紋波對 IIC 輸出的調(diào)制作用。5.2 地址換算錯誤導(dǎo)致設(shè)備無應(yīng)答現(xiàn)象IIC 總線上用邏輯分析儀能看到波形但 VL53L0X 從不 ACK讀任何寄存器都返回 0xFF。數(shù)據(jù)手冊上明明寫著地址是 0x29。原因驅(qū)動代碼里 I2cDevAddr 字段填成了 0x29而 API 內(nèi)部會把這個值左移一位作為 8 位地址發(fā)送或者反過來你直接填了 0x52 但 API 又做了一次左移。這類地址換算錯誤在多個廠商的驅(qū)動里都很常見因為有些驅(qū)動用 7 位地址有些用 8 位地址接口歸一化做得不好。解決直接看驅(qū)動源碼里發(fā)送地址的那一行確認它是把 I2cDevAddr 左移一位還是直接用。VL53L0X 官方驅(qū)動是直接用 I2cDevAddr 作為 8 位地址發(fā)送所以你要填 0x52。如果你不確定當前驅(qū)動是哪種約定用邏輯分析儀抓起始條件后的第一個字節(jié)數(shù)一下實際發(fā)送的地址值就能反推出應(yīng)該填什么。5.3 初始化卡死在 while 循環(huán)里現(xiàn)象調(diào)用 VL53L0X_Data_Init 后程序進入死循環(huán)在調(diào)試模式下看到卡在某個 while (status BUSY) 類似的等待代碼。原因最常見的是 IIC 底層讀寫返回值恒為 0 或恒為 1導(dǎo)致 API 內(nèi)部的狀態(tài)機反復(fù)重試還有一些情況是傳感器在初始化中途掉電或復(fù)位導(dǎo)致 API 后續(xù)讀取的寄存器值全部無效。解決在 IIC 讀寫函數(shù)里加入超時機制比如連續(xù)重試 3 次仍失敗就返回錯誤碼而不是無限死等。同時在 main 函數(shù)開頭加一個延時 100ms等 VL53L0X 上電穩(wěn)定后再初始化。另外注意 STM32F103 的 GPIO 模擬 IIC 引腳如果有第二個外設(shè)復(fù)用比如 PB6/PB7 默認是 USART1 的 TX/RX需要確認沒有外設(shè)搶占引腳否則總線會被 USART 的電平干擾。5.4 Keil 編譯報錯 peer 未定義或函數(shù)找不到現(xiàn)象移植官方驅(qū)動時編譯報錯提示找不到 VL53L0X_GetDeviceAddress 等函數(shù)或者在鏈接階段報一堆 undefined symbol。原因官方 SDK 里的源碼文件不是每個都需要編譯的有些文件是參考實現(xiàn)有些是平臺相關(guān)。編譯時如果缺少 vl53l0x_platform.c 或者包含路徑?jīng)]有覆蓋到 API 目錄鏈接器就找不到函數(shù)實現(xiàn)。解決檢查 Keil 工程的 Include Paths 是否包含 SDK 的 Core/inc 目錄確保所有以 vl53l0x 開頭的 .c 文件都添加到了工程中但要注意不要重復(fù)添加同一個文件Keil 會編譯兩次導(dǎo)致重復(fù)定義。如果還有問題在編譯選項里打開 “One ELF Section per Function” 可以減小未使用函數(shù)導(dǎo)致的鏈接誤差。這里提一下熱詞里“windows 無法驗證此設(shè)備所需的驅(qū)動程序的數(shù)字簽名”那是 PC 端 USB 驅(qū)動的問題和 MCU 工程無關(guān)但如果你用的 ST-Link 仿真器在 Win10/Win11 下無法連接可以臨時禁用驅(qū)動程序強制簽名后重新安裝 ST-Link 驅(qū)動。5.5 測距數(shù)據(jù)固定不變或全為 0xFFFF現(xiàn)象初始化明明成功了ID 也讀出來了但測距結(jié)果要么一直是同一個值要么是 65535。傳感器好像沒有真正開始測距。原因VL53L0X 測距需要先完成內(nèi)部校準如果跳過 Perform_RefCalibration 直接測距結(jié)果可能會異常。另一種可能是傳感器正對的目標表面吸光太強比如黑色絨布返回光子數(shù)太少ToF 算法無法提取有效信號。解決嚴格按照 Data_Init → Static_Init → RefCalibration → SetDeviceMode → PerformSingleRangingMeasurement 的順序調(diào)用。如果目標表面是純黑低反射率材質(zhì)可以把測距模式從單次改為連續(xù)模式并嘗試降低傳感器內(nèi)部的 SPAD 閾值。另外檢查 XSHUT 引腳的電平如果被外部拉低傳感器會一直處于復(fù)位狀態(tài)測距自然無效。6. 進階技巧VL53L0X 連續(xù)測距模式與多設(shè)備掛載的 IIC 仲裁實戰(zhàn)到了最后這一層驅(qū)動已經(jīng)能單點測距了但實際項目里往往要面對兩個更高頻的需求一是追求更低的測距延遲和更高的一致性二是單顆 STM32F103 要同時掛多顆 VL53L0X。這兩件事都繞不開 IIC 時序的深入理解和驅(qū)動層面的策略調(diào)整。連續(xù)測距模式是個關(guān)鍵技巧。單次模式每次調(diào)用 PerformSingleRangingMeasurement 都會完整地走一遍測距狀態(tài)機準備、測量、讀取結(jié)果時間開銷大而且測距間隔不均勻。改成 VL53L0X_DEVICEMODE_CONTINUOUS_RANGING 后傳感器會自己按內(nèi)部節(jié)奏不停測距結(jié)果更新到內(nèi)部的測量緩沖區(qū)里MCU 只需要在需要時讀取最新結(jié)果。這時 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 外部中斷服務(wù)函數(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 可以把時間片讓給其他任務(wù)只在 VL53L0X 真正完成一次測距時才讀取。注意中斷服務(wù)函數(shù)里不要做復(fù)雜計算或打印只復(fù)制測量數(shù)據(jù)到全局變量打印放到主循環(huán)里做避免外部中斷處理過長導(dǎo)致丟中斷。多設(shè)備掛載是另一個硬骨頭。VL53L0X 的固定 7 位地址是 0x29直接并聯(lián)在總線上會導(dǎo)致兩個設(shè)備同時 ACK數(shù)據(jù)完全錯亂。正確的做法是每顆 VL53L0X 的 XSHUT 引腳單獨連到 STM32F103 的一個 GPIO并且每顆的 XSHUT 引腳要有一個獨立的下拉或上電默認狀態(tài)。初始化流程是先把所有設(shè)備的 XSHUT 拉低讓它們?nèi)刻幱趶?fù)位狀態(tài)然后逐顆抬高某顆的 XSHUT等它啟動完成立刻通過 IIC 寫入一個新的 IIC 地址之后它就不會再響應(yīng) 0x29 了再抬高二顆初始化并改地址依次類推。// 多設(shè)備改地址的典型流程先復(fù)位全部再逐個激活 void VL53L0X_Multi_Init(void) { // 假設(shè)有兩顆XSHUT 分別接 PB0、PB1 GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1); // 全部拉低復(fù)位 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); // 內(nèi)部會換算成 8 位地址 0x60 VL53L0X_Data_Init(dev2); VL53L0X_Static_Init(dev2); }改地址這個操作有個先后順序的講究必須先激活第二顆、再改地址因為如果先改了地址再激活傳感器在復(fù)位期間是不會響應(yīng)任何 IIC 命令的。而且改地址操作后這顆傳感器會立即失去對 0x29 的響應(yīng)所以改地址是瞬時生效的。如果你有第三顆、第四顆用同樣的流程逐個激活并分配地址即可。這個方案不需要額外的 IIC 多路復(fù)用器缺點是每顆傳感器占一個 GPIO對 STM32F103 這種 IO 豐富的芯片完全不是問題。最后再分享一個我自己的查錯習(xí)慣任何 IIC 問題第一反應(yīng)不是看代碼而是用邏輯分析儀抓實際波形。把地址幀、寄存器地址幀、數(shù)據(jù)幀逐個對照數(shù)據(jù)手冊上的時序圖通常十分鐘內(nèi)就能定位問題出在地址、時序、還是 ACK 處理上。這個習(xí)慣幫我排掉過無數(shù)個看似復(fù)雜的玄學(xué)故障也希望你能用上。希望這些基于 STM32F103 的 VL53L0X IIC 驅(qū)動經(jīng)驗和避坑記錄能幫到你少走一點我當年走過的彎路。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久岛国| 亚洲欧美清纯| 国产浮力影院第1页| 亚洲国产日韩精品久久久| 久久国产精品一级二级三级| 欧美顶级黄色大片免费| 97干日韩| 日韩av影片在线观看| 七月婷婷综合| 久久岛国| 极品美女嘿咻| 超碰在线综合97| 亚洲最大黄网| 久久久久久久久久久六六| 特级特黄一级毛片免费| 久久97| 97人妻人人躁人人玩人人| 97色涩| 99999精品视频| 色五月婷婷五月天| 午夜一区| 人人色人人操在线| 国产操偷| 精品亚洲黄色片 国产精品导航一区二区| 麻豆久久精品亚洲精品88| nuu12国产麻豆精品| 亚洲暴力强奸AV| 超清中文乱码字幕| 另类图片五月天| 九九夜精品九九在线| 操碰97| 久久亚洲AV无码专区首页| 天天综合网日韩| 不卡六六在线91| 无码久| 青青草亚洲一区 | 日韩高潮一区| 亚洲 日本 一 二 三| 欧美日韩激情无码专区| 久久av一级av少妇av高潮| 天天综合网在线观看| 久久综合久色欧美综合狠狠| 青久久| 夜夜骑天天燥| 中文字幕第95页| 精品十三区| 色综合久久夜色精品国产天堂| 青青操在线亚洲视频观看欧美在线| 精品 码产区一区二-1080P高清在线www-B029AV | 精品二999| 美日韩一卡二卡三卡免费人妻精品| 伊人久久艹| 手机看片1025| 日日骚av| 免费农村成人少妇人妻Aa一区二区视频 | 懂色av中文字幕一区二区三区天美| 日本精品免费一区二区三区四区| 四虎884a| 大香蕉一级黄色片久久| ,成人免费啪啪视频| 免费久久一级毛片大黄| 欧美日韩操操操| 风流老熟女一区二区三区l| 在线观看无码三级少妇| 无码精品一区二区三区潘金莲| 人妻天天操天天爽视频免费| 丁香五月成人| 中文乱码99| 久久精品老司| 欧美丝袜91| 欧美日韩中文字幕不卡| 欧美日韩*字幕一区| 波多野结衣被操50分钟免费视频| 丝袜剧情| 97国产精品国| 国产精品久久久久久9999| 女同性恋中文字幕| 午夜操一操| 曰韩操B| 91AV入口| 国产高清免费不卡av| 婷婷五月天伊人| 又大又白奶子| 999精品乱码| AV乱伦国产| 无码国产Av| 丰满的三级少妇欧美久久久| 亚洲棕合电彰| 东京热,男人的天堂| 亚洲91色| 亚洲av影音先锋| 成人看片网站| 夜夜骑天天燥| 亚洲九九九| 美中日韩无码| 色诱中文字幕| 蜜桃久久一区二区三区| 天天天天天超碰| 粉嫩av一区二区三区天美传媒 | 做爱A级亚欧| 久久一二三四五六七八九区区区 | 欧美最婬乱婬爆婬牲视频| 成年人网站在线免费观看| 综合自拍| 囯产精品强| 国产真实子伦对白| 午夜色婷婷| 极品后入免费视频| 久操网无码在线| 日韩啪啪啪啪啪| 中文字幕精品亚洲熟女| wwwcaobibi| 欧洲射精91| 97超级久久| 日韩精品 视频一区二区| 久久综合精品一区二区三区| 欧美欧美少妇| 国产97色在线| 国产精品69久久久久孕妇欧美| 欧美成熟性爱精品| 精品久一区免费| 97 国产精品| 2017人人操,人人摸| 久久日韩毛| 国产一区二区在线看| 欧美αv.com| 91成人社区| 男女日B国产| 亚洲人在线成线成人| 久久区| 久久极品一区二区| 欧美一级黄色免费专区| 亚洲综合网电影91| 99久久久无码国产精品性啊聊| 色色色网站| 亚洲色婷婷综合久久久久中文| 一级久久久久久久久久久| 91欧美另类| 91东京热男人的天堂| 夜夜国产一区| 多乙久久久久久| 亚洲综合色在线| 亚洲AV成人无码一区二区三区在线观看 | 国产熟码AV| 国产AV激情无码久久无码| 夜夜影视四色| 免费一级黄色录像影片| 操美女人妻| 亚洲视频1区| 国产精品大屁股999| 操www| 欧美视频第二页| 蜜乳AV免费观看| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 在线观看黄色电话| 青青久久艹| 97这里都是精品| 九九九九热| 97 亚洲 日韩 欧美 在线| 久久精品国产亚洲妲己影视| 9久久9综合| 一区二区三区黄色片a| 四季AV一区二区凹凸精品小说| 日韩有码 一区二区三区| 成人熟女视频一区二区三区| 性色av网站| 色网1| 激情五月天色色网| 91亚洲色人| 天天躁日日躁狠狠狠躁| 亚熟hd视频在线| 国产AV毛片| 五十路一区无码| 日少妇亚洲版| 久草精品热视| 日本熟妇一区二区三区| 婷婷色在线| 日韩国产精品人妻无码久久久| 中出789在线视频| av在线资源| 欧亚在线视频| 国产视频一区二区在线观看| 久久久久精| 综合啪啪| 久久久久久91香蕉国产| 看看日B真人视频| 夜夜做夜夜爽精品视频| 国产无码三级视频在线观看| 色99在线| 素颜老阿姨乱情色| 神马久久久久久| 日韩一级欧美一级国产一级台湾 | 九九热只有精品| 精品一区二区三区蜜桃| av一区二区三区不卡| 黄片免费视频2019| 一区二区三区精品视频| 97中文字幕色| 高清无码人妻久久久一区二区三区aⅴ| 69一区二区| 久久精品人妻一区| 97国产精品| 欧美午夜熟妇黑人精品91| 欧洲色综合| 欧美性生活内射| 免费亚洲国产精品久久一区| 四虎视频在线观看| 亚洲日韩黑丝| 大逼色网站| 日韩97P| 免费观看日本操逼视频| 变态乱伦伪娘灌肠一区二区| 91色色色| 大香蕉天天看妹子| 88在线一区二区三区| 青青青青操国内视频在线| 欧美成人性活片| 少妇熟女1区2区3区| 色网在线视频观看免费| 中文字幕视频2区| 黄站在线免费观看| 人干人人人操人人摸| 美日韩成人| 宗合情欲网| 成人精品一区二区三区| 欧美春色| 色色五月天激情| 亚洲伊人久久精品影院| 校园春色欧美| 岛国AB视频| 发朗少妇买婬全视频中文| 性生活无遮挡纯毛片在线看| 又大又大又大又粗爽高潮观看| 乱伦av国产| 欧洲无码一区二区| 性色生活片久久毛片婬片免费放女人一级毛片| 国产精品网站免费| 亚洲男人天堂av| 99热这里只有精| 天天综合站| 能在线播放的国产三级| 国产日韩中文字幕欧美| 桃色五月天| 97在线免费| 91暧暧| av无线看| 国内精品久久人妻性色av| 久久久久久99999国产精品| 久久大香蕉手机高清视频| 91人妻最真实刺激绿帽| 亚洲情色一区二区三区| 美國A片| 久久精品国产97欧美精品亚洲 | 蜜臀99久久| 熟女欧美日韩综合婷婷| 国产精品久久久久综合| 午夜男人的天堂| 国产精品suv一区| 中文久久爆乳| 久久AV无码AV| 亚洲欧美setu| 天天综合网一91网| 大香蕉黄色一级片免费看| 久久精品国产亚洲粉嫩| 北野未奈加勒比av| 亚洲欧美国产日本一区二区三区| 91大神精品长腿在线观看网站| 黑白配性爱AV成| 中文字幕日韩人妻视频一区二区三区交换夫妻 | 99久久久| 亚洲色图片区| 国产第二页| 91麻豆天美国产| 丝袜美腿制服人妻二区中文字幕| 亚洲双插| 啊啊啊不要好爽日韩无码一区| 不卡免费av在线播放 | 日本二三四区| 在线视频免费观看午夜| 亚洲精品黄码久久久久| 91色射| 久久国语| 翘臀vidoes| aⅴ日韩成人电影av在线免费看av大全| 91精片| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 天天看人人操屄犊摸阴| 欧美精品第四五页中文字幕在线观看| 久久婷婷国产一区二区色| 九九热九九| 国产成人自拍视频在线| 亚洲精品精品一区二区| 五月天婷婷基地| 动漫爆乳3D奶水一区在线观看| 国产精品午夜高潮呻吟久久av| 亚洲av无线观看| 日本综合色图| 亚洲第一成人影院色播| 91N欧美| 欧美熟妇视频| 亚洲日韩东京热一区| 97超碰精品成| 97天天摸天天爽| 亚洲精品成人动漫在线| 91色婷婷综合久久中文字幕二区| 67914在线精品观看| 熟女自慰久久久| 超碰中文字幕人妻草一区| 亚洲熟妇乱女区二区三区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲激情av| 天堂涩涩| 多乙久久久久久| 欧洲亚洲综合| 日人妻视频91| 国产精品经典一卡久久久| 久久9久9久99久9久9| 欧美日韩不卡传媒| 日本免费一级AAA大片器| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 久久久亚洲Av| 丝袜性亚洲| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 欧美熟女少妇| 最新AV在线| 亚洲最大无码中文字幕网站| 免费99精品国产自在在线| av天堂天堂av日韩| 色偷偷色偷偷欧美日韩| 久久久久久网址| 在线观看一卡二卡| 视频一区二区免费在线| 日韩 欧美 校园一区| 色婷婷激一区二区三区 | 男人的天堂在线有码| 欧美色欧美| 欧美亚洲日韩16色| 插欧洲美女欧美精品| 国产无套粉嫩白浆在| 性老妇一区二区三区| CCYY草草影院地址入口| 嗯……啊…嗯嗯…啊…好舒服| 后入式免费视频| 丁香五月天社区| 国产国产亚洲一二三久久| 日本午夜精品理论片A级APP发布| 亚洲欧美综合图片| 免费网站观看www在线观| 欧美日韩亚洲天堂| 97这里只有精品| 日本青青草在线| 97综合日韩| 青苹果影院男人的天堂| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 99婷婷| 亚洲欧美精品91| 精品视频97| 麻豆黄四叶草网站| 国产精品宅男免费| 亚洲 欧美都市激情| 亚州久久9| av东京热男人的天堂| 男人的天堂一区| 噜噜噜在线视频| 色婷婷丁香五月| 久啪| 视频一区二区三区精品| 91狠狠综合久久久久久| 亚洲视频二区 | 91东北熟女| 青娱乐福利99| 人人插人人搞人人操| 欧美无圣光在线| 天天综合网~91入口| 日韩精品人妻中文字幕不卡乱码| 大色综合| 亚洲综合网电影91| 国产亚洲精品美女| 极品另类| 婷婷五月天伊人| 级品肉射| 亚洲无码com| 蜜臀少妇一区二区| 青青操日韩| 五月天丁香婷婷综合网站| 久久最新免费视频23| 亚洲人妻精品一区二区| 国产综合网站在线播放 | 国产成人在线观看网址| 久99热| 99青青草国产视频| 亚洲一区日韩精品| 亚洲欧美中日韩| 激情小说亚洲| 人妻啊啊人妻啊| 中文字幕第7页| 免费A V在线播放| 天天操av懂色| 蜜臀久久99精品久久久| 99色在线| 麻豆久久精品亚洲精品88| 亚洲 日本 一 二 三| 久久精品成人| 91chinese在线| 不卡六六在线91| 黄片www.| 伊人国产AV| 久操婷婷| 美女91| 黑操B| 懂色Av| 婷婷国产精品九区| 亚洲精品尤物yw在线影院| 久久久久久大| 新久久AV| 中国91AV| 91在线综合网| 日韩人妻有码免费视频| 欧美熟女丝袜| 亚洲AV无码久久久国产精品| 啊啊啊啊免费视频| 男人的天堂不卡一区二区| 亚洲加勒比| 中文字幕人妻丝袜| 色吊丝 日日骚 清纯唯美| 亚洲精品精品一区二区| 国产馆| 超碰亚洲欧美日韩无| 日B操| 欧美人妻另类在线| 婷婷成人五月天| v91av| 国产性感在线观看| 蜜乳AV网址| 欧美草草高清日韩视频| 欧美一二三区四五区| 青娱乐亚洲自拍| 91白嫩| 欲色影视综合吧| 久久久久九九九| 777超碰| 九九九久久久久| 日本日皮视频逼| 亚洲九九九| 操淫穴亚洲五月丁香 | 国产超碰欧美| 97香蕉人人乳| 91精品伊人久久久大香线蕉91| 香蕉视频精品亚洲一区二区三区在线播| 欧美三级一级| 国产日本久久免费精品| 欧美在线永久天堂| 亚洲男人天堂视频| 一区二区激情国产熟女 | 全国男人天堂网| 亚洲s在线观看| 国产h片在线观看视频| 91中文字幕制服丝袜免费视频| 少妇69中文| 婷婷五月天影院| 亚洲春色欧美激情自拍| 精品人妻一区二区三区四区| 少妇内射www在线观看视频| 婷婷综合网| 亚州熟女乱伦| 麻豆尤物视频网| 成人精品视频| 插老姨肥穴| 强歼乱伦资源网| 亚洲人成在线放东京热| 91色香| 欧美日日人人天天| 是还免费视频1727我| 精品夜夜澡人妻无码| 国产1769在线| 91强热人妻| 国产黄色影片在线观看| 国产精品视频内谢女人| 亚洲色阁| 天天日天天看| 校园春色美腿丝袜| 日韩av电影网站| 久久中出在线| 人人爱夜夜爱| 亚洲天堂女优在线| 欧美性爱97超碰| 俺去俺来也在线www| 免费精品无码一级毛片牛牛影视| 九九九久| 91 国产丝袜在线播放-百度| 老司机免费视频在线91| 97色涩| 国产精品久久久久久久久久久久久久久久久久 | 男人天堂网手机版婷婷| 欧美特黄视频网站| 91色亚洲| 俞拍久久国应视频| 亚洲日韩电影| 97aiaiai| 欧美日韩国产成人高清| 国产精品爱欲| 91精品久久久久五月天精品| 99国产在线 精品 视频| 亚洲小电影免费涩涩成人在线高清| 日本成熟少妇A∨网站| 中文AV制服乱伦| 襙一襙| 影音先锋新男人| 夜夜操青青草| 国产 亚洲 丝袜 制服| 精品区国产区一区二区三区| 高清成年美女黄网站免费大全| 欧美亚洲一级在线观看| 日韩熟女操逼| 国产精品无码av| 在线人人人人人人精品超| 日本一级二级三级网站| 丁香色婷婷| 中文字幕aⅴ在线视频| 日本熟女不卡视频| 国产人妖的免费的视频| 熟女五十路一区二区三| 丁香六月婷婷综合| 日韩欧美亚洲国产日韩| 二级久久网| 免费看国产大AB| 人人操超碰在线| 亚洲成人贴图| 亚洲欧洲综合成人av一区| 国产一区二区精品久久99| 不卡啪啪视频| 日韩紧密久久| 99热国产| 亚洲中文字幕熟女| av在线免费一区二区| 欧美另类精品xxxx| 99视频只有精品| 亚洲乱色视频一区、二区在线| 男人的天堂日本东京热| 久久久精精精| 亚洲,日韩,欧美,成人播放| 久精品无码av一区二免费国产在线观看| 99热官网| 青青伊人加勒比海| 久久久青青草| 亚州中文字幕超碰97| q2午夜理论片夜色av| 亚洲精品97久久| 亚洲图片激情综合另类| 欧美一级三级| 91丨精品丨国产丨丝袜| 亚洲九九九九| 色婷婷电影| 精品久久九| 精品国产乱码久久久久久蜜臀| 欧美国产精品| 亚洲五月天激情| 人妻出轨一区二区三区| 国产搭汕a级片| 免费黄色片。| 嗯~啊~快点 死我视频| 亚洲丝袜二区在线| 精品欧美А∨无码黑人大荫蒂| 狠狠综合网| 啊啊啊啊啊啊啊啊啊在线观看| 亚洲色图欧美色18直播在线| 久久精品福利影院| 欧美性猛交美女自慰91| 亚洲日韩狠狠撸视频| 久久精品欧美一区二区三区不卡| 97国产色综合| 美女久久久久久久久久久| 午夜理论片在线观看免费| 99啪啪视频| 91美女在线观看| 色爱国产| 亚洲欧美校园| 欧美黄色大片在线观看| 中文乱码99| 天天综合91| 五月天激情网图片| 婷婷人妻激情| 无套内射性感少妇视频| 国产成人啪一区二区| 国产精品视频91久久| 怡红院视频在线| 熟妇女伦乱视频| 日韩亚洲国产视频| 色麻豆AV| 天天日B夜夜干B时时操B| 91性高| 人妻一区视频| AV久日| 久久久久久久亚洲Av无码| 夜精品久无码| 亚洲精品无码成人久久久99| 吉川爱美亚洲二区在线 | 色嗨嗨在线| 久操在97| 岛国在线免费视频| 日韩78m视频| 超碰国产精品久| 日韩中文字幕宗合在线| 岛国艾薇凹凸视频天堂| 97超碰伊人| 女人喷水视频在线观看| 亚欧美色| 精品91摸| 亚洲国产精品成人综合| 国产伊人自拍| 好属操| 在线人妻熟女一区二区三区四区五区| 色哟哟 日韩精品| 国厂麻豆77q4| 国产黄片在线免费观看| 久久超碰天天| 嗯啊不要啊在线 | 日本片日本片祼观看网站在线看中文版网页在线看 | 亚洲无码com| 欧美日韩一干二干| 强奸乱伦中文字幕AV| 日本中文字幕在线视频 | 手机av天堂久久久久| 欧美色图亚洲激情| 大香蕉伊人在线成人AV在线观看| 久久av成人无码免费| 新视频sss国产| 色呦呦呦在线观看视频| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 国产精品自拍xxxx| 91色亚洲| 自拍盗摄一区| 操逼逼一区视频| 肉丝中文无码高清| 日韩亚洲美女一区久久| 亚洲欧美自拍偷拍| 天天干夜夜鈤| 青青国产在线拍揄自揄拍| 欧美黄片视频在线观看免费| 日韩欧美天堂| 中文字幕一二三区| 日韩丝袜二区| 秋霞一级鲁丝片A片| 超碰9 7女人| 免费看污网站| 老熟妇一区二区三区…| 久久精品熟妇丰满人妻99| 亚洲色资源| 18禁的网站在线| 美女天天干| 91网站18在线| 夜夜爽33333| 久久黄色视频一区二区三区 | 色色色综合网| 久久国产乱子伦精品免费女人| 屁股久久久久久久久| 日本不卡高清免v欧美日韩在线观看| 熟女精品va中文字幕| 亚洲国产综合图区中文字幕| 欧洲一区二区三区四区在线观看| 亚洲网自拍| 天天干一干| 日韩国产成人自拍视频| 国产强奸乱伦无码视频| 日韩欧美麻豆 | 操逼操逼逼操操逼91| 成年无码动漫av片无尽在线 | 色婷婷电影网| 日美免费黄片| 久操网视频| 亚洲图片另类| 国产精品久久久久婷婷二区次| 欧美日韩天堂| 97久久久精品| 日少妇亚洲版| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 校园春色美腿丝袜| 日韩99神马视频片| 亚洲AV无码| 精品超碰中文在线| 五月天丁香网| 少妇一区二区三区高速| av毛片aaaaa免费看| 啊v在线观看视频| 人妻蜜桃臀| 综合色久欲| 国产AV人人夜夜澡人人爽麻豆| 精品十三区| 91+欧美| 天天插天天舔舔天天干| 熟女人妻久久中文字幕一二区| 97色婷婷| 98色网| 蜜臀少妇一区二区| 中文字幕第页| 国模精品娜娜一二三区| 一本久道在线综合视频| 国产Aα| 操逼片中文| 日韩激情啪啪| 黄网在线播放| 色色操| 中文字幕 人妻不满 在线视频| 九九成人| 国产人伦精品一区二区三区| 日韩草久视频| 激情文学网伊人| 日本熟妇熟色97一本在线观看| 久久精品欧美一区蜜桃| 狠狠躁AV| 东京热一区二区三区四区五区六区| 久久一留热品黄| 久久久久久九九九九-美女久久久久久久-成人AV| 97香蕉人人乳| 欧美玖玖爱免费玖玖| 日韩久久艹| 尤物视频偷拍免费| 久久香蕉国产线看观看亚洲女人 | 久久首页| 中文字幕一区二区免费在线| 91成人精品在线播放| 在线99热| 偷拍亚洲高清图片| 中出后入| 超碰97国产欧美| 亚洲 无码 偷拍| 国产高清在线观看欧美| 99综合视频一体| 亚洲、日韩、综合、另类| 丰满人妻一区二区三区四| 超碰在线91| 日韩人妻操B| 素人无码中文字幕| 久艹99| 999精品乱码| 国产一区二区a毛片| 97干在线视频| 成人无码专区精品视频| 超碰综合97在线| 啊啊嗯嗯好爽| 日操粉逼逼| 91neishe| 骚货 中文字幕 av| 91丨国产丨白浆秘 洗澡动漫| 超碰在线欧美性爱激情| 99久久久久久久久| 97亚洲综合电影| 91欧美偷拍| 黑白配性爱AV成| 亚洲乱色熟女一区| 色99视频| 亚洲精品天天影视综合网| 欧美综合亚洲| 日韩免费三级黄片电影| 色优久久| 久久色AV线| 国产无码精品无码| 色婷婷狠狠18禁| 大香蕉宅男伊人| 亚洲乱妇p22| 特级丰满少妇一级AAAA爱毛片| 丁香五月天社区| 欧洲乱码一区二区| 人人妻天天做天天爽| 富女玩鸭子一级毛片| 精品久久久久av影院| 91五月天| av草草在线电影| 99色网| 色情五月丁香| 精品一区二区三区四区外站| 欧美色另类| 亚洲精品日韩国产欧美| 欧美激情欧美精品| 九九九免费视频| 丁香六月激情综合| 国产亚热在线久久| 无码国产Av| 高凊专区人人操| 久久精品无码不卡| 亚洲欧洲中文日韩女优乱码| 久久婷婷视频| 91热热色| 成人亚欧免费视频| 国产一区二区久久| 亚洲h片在线免费观看| 欧美日韩淫加| 日产操逼| 东京太热久久久| 丁香九月婷婷| 九九热精品在线| 国内一区二区免费| 国产精品一二三免费网站| 欧美日韩久久精品爱爱| 99久在线精品99re8热| 啊啊啊啊在线播放| 人人操人人摸人 | av强奸乱轮| 国产怡红院| 欧美色图电影| 色嘟嘟人妻天堂网| 日韩一级二级三级免费看完整版| 综合网,亚洲,欧美| 无马一区二区| 一级A片女人高潮叫床| 97亚洲国产| 午夜男人一级A片7777| 丰满少妇精品一区二区| 国产在线精品偷| 久久视频,这里只有精品 | 丁香五月色| 俺也射| 丁香六月啪| 啊啊啊啊啊啊在线| 蜜臀久久99精品久久久久久久久| 亚洲情色 无码专区| 亚洲熟女av日韩熟女| 亚洲国产天堂| 综合熟女| 亚洲码在线中文在线观看| 久久人妻视频网| AAAA欧美日韩| 91色色综合| 亚欧国产无码精品在线| 欧美精品不卡一二三四在线91| 欧美日综合| 亚洲中文字幕在现观看| 精品久久視頻在线| 在线看的av| 色www精品视频在线观看| 视频分类 国内精品| 日日骚中文字幕| 欧美日韩婷婷中文| 综合操逼| 久操视频在线观看| 亚洲男人天堂2013| 婷婷五月天成人| 成人av性爱电影在线观看| 亚洲黄a三级三级三级看三级| 日本在线不卡一二区| 凌辱美少妇久久aV| 少妇人妻精品| 国产日韩手机视频在线| 欧美丝袜亚洲| 日本97久久久精品| 日本欧美国内在线| 亚洲国产成人精品999| 欧美久久人体| 狠插 制服 自拍| 日本123区操B视频| 国产精品久久久久久高清无码免费看| 99re69综合| 亚洲人妻AV| 国产综合在线视频网站| 色图四区| 大屁股国产在线视频| 97亚洲国产影视| 国产亚洲禁久一区二区 | 亚洲综合图文| 97中文超碰| 国产小u女在线观看| 亚洲欧美国产va在线播放频| 欧日韩一二三f区| 亚洲情色图片区| 天堂精品在线| 国产在线视视频有精品| 亚洲精品国产无码高清| 国产熟女无套内射| 91久久久久久久| 九月AV| 99爱在线视频| 人妻在线视频| 中文字幕五月婷婷免费| 久久久亚洲| 国产精品视频| 亚洲另类综合欧美| 99久久综合网| 日本国产高清色www视频在线| 久操91视频| 91人人| 人妖欧美一区二区| 亚洲日韩东京热一区| 天天干天天日天天射黄色大片| 欧美性生活综合| 日韩国产乱子伦App| 午夜福利国产欧美日韩夜夜| 91天堂| 综合网亚洲1| 久草在| 美女毛片999| 歐美一級亂黃99在綫精品| 欧美淫穴| 亚洲精品男人的天堂| 91人妻中文| 国产日韩精品suv| 大肥女高潮bbwbbwhd视频| 丰满人妻一区二区三区免费 | 妺妺跟我一起洗澡没忍住| 国产精品欧美日韩久久| 精品少妇人妻av久久免费| 啪啪综合网| 国产丁香精品露脸视频| 97视频www| 91麻豆一二三区| 一本久久精品中文字| 欧美色亚洲色| 欧美日韩岛国大片在线观看| 欧美综色欧| 亚洲国产精品有声| 十八禁电影伊人网| 亚洲天堂无码| 91大香蕉伊人| 久久久999网站| 夜夜嗨一区二区三区直播内容| 色综合色| 人人看人人爰人人操| 亚洲色图日韩丝袜制服一区二区五月在线| 小说区 图片区色 综合区| 日本最新1区2区3区| 国产又色又爽又舒服的三级视频| 一区二区视频在看| 在线观看AV不卡| 岛国1区2区3区在线观看| 在线综合 亚洲 欧美中文字幕| 蜜臀久久99精品久久久久久无删减 | 97人亚洲综合字幕| 免费日韩黄片| 在线五区| 欧美激情亚洲色图| 日韩中文字幕精品一区在线| 日韩欧亚中文在线| 欧美日韩性爱无码| 色97综合中文字幕| 操逼天美3区| 日韩av情韩国爱禁区av一区二区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 日韩性爱1级片视频| 精品国产72| av日韩手机在线影视| 国产传媒日韩| 丰满熟女人妻一区二区三五十一路| 久热色情精品| 美国日韩黄色片| 日本色色色色色视频| 91精品人妻一品二品三品| 福利天堂| 欧美一区二区在线资源| 久久人人妻| 91大学精品激情戏| 萌白酱自拍视频| 亚洲中文字幕精品一区| 78超碰| 亚洲一级性爱视频免费看| 天无日色综合| av无码av无码专区| 国产精品96| 男人网站婷婷| 九九九国产精品| 色网1| 午夜精品久久999热蜜桃介男人用| 欧美久久人人网| 澳门黄片一香蕉视频| 清纯唯美激情| 九九九成人| 四虎精品永久在线观看| 这里都是精品在线观看| 丁香五月综合| av一区二区三区 中文| 综合久久六月久久婷婷| 日韩无码黄色片| 岛国大片国产| 在线观看日韩av不卡| 丁香六月啪啪| 亚洲人在线| 六月丁香啪啪| 中文字幕亚韩| 小泽玛利亚一二三| 91黑丝操| 大奶的诱惑| 免费成人在线观看91| 成在线人在线观看视频| se吧提供91精品国产91久久久久久| 欧美激情视频在线一区| 再深点灬舒服灬太大了添视频| se01国产在线视频| 中文AV制服乱伦| 久久精品 六十路 熟女 欧美| 国产极品99热在线播放69| 五月丁香综合啪啪| 久久精9| 欧美天天搞| 精品三级在线专区| 熟女乱伦二区| www久| 色偷偷人人玩人人舔人人操人人摸人人爽| 中文字幕三四区| 91精品综合久久久久久五月丁香| 99色日| 国产一级久久久| 久久啊啊啊| 国产精品自拍欧美在线| 日韩9999| 欧美人妻少妇| 后入内射蜜桃臀| 亚洲天堂另类小说男人| 人妻少妇久久中文字幕一区二区 麻豆 | 91亚洲不卡一区| 亚洲在线91| 亚洲日本加勒比在线| 欧美精品三级黄片| 99久久9| 九九色热| 久久精品电影在线| 六月婷婷五月丁香| 91黄站| 蜜臀无码一区二区| 欧美1区二区三区公司| 欧美在线55555| 试看日韩黄片| 99热在线观看| 国产成人在线观看网址| 精品美女少妇一区二区| 欧美日韩国产中文精品字幕自在自线,| 日韩av情韩国爱禁区av一区二区| 凹凸久久人人| 欧美色图20p| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 丁香五月天婷婷姐| 久久久精品中文字幕爱豆| 啊啊啊好想要| 91少妇人妻| 熟妇艹鸡八| 手机av天堂久久久久| 五月丁香综合激情| 成人av福利在线观看| 美女骚尻视频| 99xav| 99综合网| 日本黄色精品| 91在线国产后入风骚翘臀美女素人| 日韩欧美午夜视频在线| 91人妻丝袜无码| 91在线精品一区二区三区| 四虎视频在线观看| 日韩一性一交一A片俄罗斯| 操逼操网| 330dv亚洲成年视频网| 色婷婷九月天天综合| 91美女在线| 99爱久久视频频| 亚洲av淫乱| 91天美| 九九九九九九九九九五码| 免费强奸av| 精品少妇999| 91麻豆一二三区| 五月色综合| 妇女性内射冈站HDWWWCOM| 色综合1991| 乱伦3P视频| 蜜臀久久99精品久久久| SUV一区二区在线看| 狠狠中文字幕| 麻豆久久久久久久久丝袜| 最新国内自拍av免费| 精品久久久不卡一区二区| 欧美午夜视频精品久久| 91网站18禁| 日韩无码AB| 裸体美女免费看网站青草| 少妇高潮一区二区三区在线| 久久久噜噜噜久久久| 欧美真人抽搐一进一出gif| 91精品人妻五十路| 亚洲、日韩、综合、另类| 在线无码操| 亚洲伊人久久综合97| 久久9999 | 天堂av2019| 玖玖玖玖精品国产剧情| 东北女人无套内谢视频| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 六月天婷婷| 日本日逼高清| 久久97| 91中出视频| 最新9久久久9免费视频| 国产在线不卡导航| 一区二区三区四区免费视频| 日韩精品-原创伙伴| 东北老女人的激情视频| www网站黄| 日韩av性爱在线播放| 少妇熟女一区二区三区| 嗯嗯啊啊日韩精品| 99热精品国产| 97亚洲综合电影| 色五月综合| 黄色香蕉视频网站一区| 97K超碰在线| 日韩中文9| 久久草视频污视频| 精品乱子一区二区三区99| 国产av美女被艹的乱叫| 国产白丝av| 夜夜骑日日| 中文熟女五十乱码在线| 97国产色图| 久久综合女优| 爱爱动态试试看6 0秒| 91国产精品熟女| 五月婷婷六月天| 色综合久久久久| 中文字幕一区日韩精| 亚洲女毛多水多21P| 看一级特黄a大一片| 精品久久青青草| 国产精品无码成人精品| 亚洲图片欧美色图| 中文字幕 国产 精品| 国岛片视频| 激情综合网五月婷婷五月天| 国产人妖视频一区在线观看| 国产欧美日韩一区二区三区| 国产毛片在线| 国产传媒操逼视频| 精品人妻一区| 亚洲精品第一| 日韩三级天堂在线观看| 91操人| 亚洲中文字母在线播放| 亚洲天堂 视频你懂的| 91GD.COM| 九九成人| 九九热免费国产视频婷婷伊人五月| 亚洲人精| 亚洲色图超碰在线| www.zbzhongsen.com| 清柠毛片| 久久久久久性爱视频| 97久久精品国产| 97超碰资源网| 久久机热| 亚洲图片小说欧洲| 天天综合-91入口| 日韩无码人妻中字久久三区四区| 91日日夜夜| 久久骚| 嗯,啊。舔我逼| 欧美日韩天堂| 啊啊啊 在线| 91色欧美| 人人人干干人人干| 日韩少妇无码| 另类亚洲一区二区三区| 国产精品久久久久无码Av网曝门| 可以在线观看的黄色网址| 抽插无码高清一区| 嗯嗯啊操我| 毛片视频白嫩|