欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: VL53L0X怎么使用呢? [打印本頁(yè)]

作者: 鯨野柿    時(shí)間: 2025-10-31 09:47
標(biāo)題: VL53L0X怎么使用呢?
最近在調(diào)試VL53L0X測(cè)距芯片,但在網(wǎng)上找了很久都沒(méi)有找到其寄存器介紹的文檔;只找到了用stm32調(diào)用api的程序,自己用stm32測(cè)試了一下自己的VL53L0X芯片,是可以測(cè)試距離的;但是想用其他32芯片 來(lái)測(cè)試VL53L0X芯片,發(fā)現(xiàn)這個(gè)api程序體積太大了,裝不下;想直接操控寄存器,這樣體積小點(diǎn);但在網(wǎng)上查詢的程序,總是在0x14狀態(tài)寄存器時(shí),就會(huì)出現(xiàn)0x5F;而測(cè)試距離數(shù)據(jù)是不對(duì)的;不知道什么原因;望大佬給點(diǎn)撥一下,謝謝。。

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

Bit [7:4]: 0101 - 這表示測(cè)量狀態(tài)。0101 通常對(duì)應(yīng) Ranging API Error 或類似的硬件錯(cuò)誤狀態(tài)。這告訴你,傳感器內(nèi)部的狀態(tài)機(jī)在執(zhí)行測(cè)距流程時(shí)遇到了問(wèn)題,沒(méi)有正常完成。

Bit [3:0]: 1111 - 這表示流狀態(tài)。1111 通常對(duì)應(yīng) GPTIMING 狀態(tài),意思是傳感器正在等待某個(gè)內(nèi)部定時(shí)器事件。

組合起來(lái),0x5F 的含義是:傳感器卡在了某個(gè)內(nèi)部等待狀態(tài),并最終因?yàn)槌瑫r(shí)或錯(cuò)誤而停止了測(cè)量。 這幾乎總是由于初始化序列不正確或關(guān)鍵配置寄存器設(shè)置錯(cuò)誤導(dǎo)致的。


作者: TTQ001    時(shí)間: 2025-11-2 06:17
官方網(wǎng)站下載數(shù)據(jù)手冊(cè)
作者: wzy113434r    時(shí)間: 2025-11-2 13:01
VL53L0X 直接操作寄存器時(shí)出現(xiàn)狀態(tài)寄存器 0x14 為 0x5F 且測(cè)距錯(cuò)誤,核心原因可能是初始化流程不完整或寄存器配置順序錯(cuò)誤
作者: ppcbug    時(shí)間: 2025-11-7 09:03
這個(gè)器件的API實(shí)在太爛了。
一是, 該API 太大了, 本想用在STM8L中,但無(wú)論如何空間度不夠。
二是,移植時(shí)的兼容性太差了, 整個(gè)API混亂不堪。
看看當(dāng)時(shí)跟蹤的實(shí)際記錄:
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

前段時(shí)間調(diào)試一個(gè) 狀態(tài) 0x50 錯(cuò)誤, 花了兩天跟蹤,才找到原因處理好, 結(jié)果又發(fā)現(xiàn)出現(xiàn) no vhv value 錯(cuò)誤。我是不高興再陪它折騰了。連個(gè)寄存器都不肯給的器件,下次絕對(duì)不采用。

如果 不需要 使用  長(zhǎng)距離的 測(cè)量選項(xiàng),有個(gè)簡(jiǎn)單方法, 可以這樣用:

#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);
                                }
                       

發(fā)開(kāi)始測(cè)量:
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字節(jié)數(shù)據(jù)
                                                         for(i=0;i<12;i++)
                                                             gbuf[i]=LR_VL53L0X_Read(VL53L0X_REG_RESULT_RANGE_STATUS+i);

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

實(shí)測(cè)正常時(shí) , 并非返回 0 -OK, 而是  RANGECOMPLETE

該程序工作正常, 但只能測(cè)量短距離模式,無(wú)法切換到長(zhǎng)距離。

總之,這個(gè)器件是垃圾。

作者: npn    時(shí)間: 2025-11-8 13:17
你要用其他32芯片驅(qū)動(dòng)哪就是程序移植問(wèn)題,有問(wèn)題用邏輯分析儀檢查時(shí)序差異。




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