亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: VL53L0X怎么使用呢? [打印本頁]

作者: 鯨野柿    時間: 2025-10-31 09:47
標題: VL53L0X怎么使用呢?
最近在調試VL53L0X測距芯片,但在網上找了很久都沒有找到其寄存器介紹的文檔;只找到了用stm32調用api的程序,自己用stm32測試了一下自己的VL53L0X芯片,是可以測試距離的;但是想用其他32芯片 來測試VL53L0X芯片,發現這個api程序體積太大了,裝不下;想直接操控寄存器,這樣體積小點;但在網上查詢的程序,總是在0x14狀態寄存器時,就會出現0x5F;而測試距離數據是不對的;不知道什么原因;望大佬給點撥一下,謝謝!!!

作者: joyb    時間: 2025-10-31 16:22
VL53L0X是意法半導體推出的第二代FlightSense™技術激光測距傳感器,其官方數據手冊及相關技術資料可通過權威渠道獲取
作者: 源洋川    時間: 2025-11-1 00:34
VL53L0X 的狀態寄存器(0x14)用于指示最后一次測距的結果狀態。值 0x5F 換算成二進制是 0101 1111。根據VL53L0X的文檔,這個值的含義是:  Bit [7:4]: 0101 - 這表示測量狀態。0101 通常對應 Ranging API Error 或類似的硬件錯誤狀態。這告訴你,傳感器內部的狀態機在執行測距流程時遇到了問題,沒有正常完成。  Bit [3:0]: 1111 - 這表示流狀態。1111 通常對應 GPTIMING 狀態,意思是傳感器正在等待某個內部定時器事件。  組合起來,0x5F 的含義是:傳感器卡在了某個內部等待狀態,并最終因為超時或錯誤而停止了測量。 這幾乎總是由于初始化序列不正確或關鍵配置寄存器設置錯誤導致的。
作者: 源洋川    時間: 2025-11-1 00:35
VL53L0X 的狀態寄存器(0x14)用于指示最后一次測距的結果狀態。值 0x5F 換算成二進制是 0101 1111。根據VL53L0X的文檔,這個值的含義是:

Bit [7:4]: 0101 - 這表示測量狀態。0101 通常對應 Ranging API Error 或類似的硬件錯誤狀態。這告訴你,傳感器內部的狀態機在執行測距流程時遇到了問題,沒有正常完成。

Bit [3:0]: 1111 - 這表示流狀態。1111 通常對應 GPTIMING 狀態,意思是傳感器正在等待某個內部定時器事件。

組合起來,0x5F 的含義是:傳感器卡在了某個內部等待狀態,并最終因為超時或錯誤而停止了測量。 這幾乎總是由于初始化序列不正確或關鍵配置寄存器設置錯誤導致的。


作者: TTQ001    時間: 2025-11-2 06:17
官方網站下載數據手冊
作者: wzy113434r    時間: 2025-11-2 13:01
VL53L0X 直接操作寄存器時出現狀態寄存器 0x14 為 0x5F 且測距錯誤,核心原因可能是初始化流程不完整或寄存器配置順序錯誤
作者: ppcbug    時間: 2025-11-7 09:03
這個器件的API實在太爛了。
一是, 該API 太大了, 本想用在STM8L中,但無論如何空間度不夠。
二是,移植時的兼容性太差了, 整個API混亂不堪。
看看當時跟蹤的實際記錄:
VL53L0X PLT: RdByte status: 0H  Byte: 6H
VL53L0X PLT: RdByte status: 0H  Byte: 4H
VL53L0X: PerformRefCalibration
VL53L0X API CAL: perform_ref_calibration/ PALDevDataGet
VL53L0X API CAL: perform_vhv_calibration / PALDevDataGet
VL53L0X API CAL: perform_vhv_calibration / WrByte status: 0
VL53L0X API CAL: perform_single_ref_calibration / WrByte status: 0
VL53L0X PLT: RdByte status: 0H  Byte: 50H
VL53L0X API: GetInterruptMaskStatus / RdByte status: 0H  Byte: 50H
VL53L0X API CORE: measurement_poll_for_completion / GetMeasurementDataReady status: FFFA
VL53L0X API CAL: perform_single_ref_calibration / measurement_poll_for_completion status: FFFA
VL53L0X API CAL: perform_single_ref_calibration / ClearInterruptMask status: FFFA
VL53L0X API CAL: perform_single_ref_calibration / WrByte status: FFFA
VL53L0X API CAL: perform_vhv_calibration / perform_single_ref_calibration status: FFFA
VL53L0X API CAL: perform_ref_calibration/perform_vhv_calibration status: FFFA
VL53L0X ErrorCode [-6]: Range error
VL53L0X: PerformSingleRangingMeasurement
Set Single Measurement ...
Set Perform Measurement ...
VL53L0X PLT: RdByte status: 0H  Byte: 0H
VL53L0X PLT: RdByte status: 0H  Byte: 50H
VL53L0X API: GetInterruptMaskStatus / RdByte status: 0H  Byte: 50H
VL53L0X API CORE: measurement_poll_for_completion / GetMeasurementDataReady status: FFFA
Get data ...
Clear IntMask ...
VL53L0X Get:    0 mm

前段時間調試一個 狀態 0x50 錯誤, 花了兩天跟蹤,才找到原因處理好, 結果又發現出現 no vhv value 錯誤。我是不高興再陪它折騰了。連個寄存器都不肯給的器件,下次絕對不采用。

如果 不需要 使用  長距離的 測量選項,有個簡單方法, 可以這樣用:

#define VL53L0X_REG_RESULT_RANGE_STATUS              0x0014



                        u8 LR_VL53L0X_Send(u8 reg,u8 dat)
                                {
                                        return I2C_WriteOneByte(VL53L0X_IIC_PORT,VL53L0X_ADDR, reg,dat);       
                                }
                        u8 LR_VL53L0X_Read(u8 reg)
                                {
                                        return I2C_ReadOneByte(VL53L0X_IIC_PORT,VL53L0X_ADDR,reg);
                                }
                       

發開始測量:
LR_VL53L0X_Send(VL53L0X_REG_SYSRANGE_START, 0x01);
等待完成
                                          while(cnt<=100)
                      {
                                                 val = LR_VL53L0X_Read(VL53L0X_REG_RESULT_RANGE_STATUS);
                                                         if (val & 0x01) break;
                                                         cnt++;
                                                }
讀取12字節數據
                                                         for(i=0;i<12;i++)
                                                             gbuf[i]=LR_VL53L0X_Read(VL53L0X_REG_RESULT_RANGE_STATUS+i);

讀取狀態, 這個不能省略 , 因為讀出異常時,前面操作也會返回值 比如 20 , 要讀出狀態碼判斷是否成功
                             err=LR_VL53L0X_Read(VL53L0X_REG_RESULT_RANGE_STATUS);
                             err=(err&0x78)>>3;                                                       
下面是錯誤表:
    char* vl53l0x_err[VL53L0X_MAXERR]={
    "OK",
    "VCSELCONTINUITYTESTFAILURE",
    "VCSELWATCHDOGTESTFAILURE"        ,
    "NOVHVVALUEFOUND"        ,
    "MSRCNOTARGET",
    "SNRCHECK",
    "RANGEPHASECHECK",
    "SIGMATHRESHOLDCHECK"        ,
    "TCC",
    "PHASECONSISTENCY",
    "MINCLIP"        ,
    "RANGECOMPLETE",
    "ALGOUNDERFLOW",
    "ALGOOVERFLOW",
    "RANGEIGNORETHRESHOLD"};

實測正常時 , 并非返回 0 -OK, 而是  RANGECOMPLETE

該程序工作正常, 但只能測量短距離模式,無法切換到長距離。

總之,這個器件是垃圾。

作者: npn    時間: 2025-11-8 13:17
你要用其他32芯片驅動哪就是程序移植問題,有問題用邏輯分析儀檢查時序差異。




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1