ST VL53L3CX 비행 시간 측정 센서 사용 설명서

소개
VL53L3CX는 ToF(Time-of-Flight) 거리 측정 센서 모듈입니다.
이 사용자 매뉴얼의 목적은 VL53L3CX 베어 드라이버를 사용하여 거리 측정 데이터를 얻기 위해 호출하는 통합 모델과 함수 세트를 설명하는 것입니다.
VL53L3CX 시스템 오버view
VL53L3CX 시스템은 VL53L3CX 모듈과 호스트에서 실행되는 드라이버로 구성됩니다.
이 문서에서는 장치를 제어하고 비 Linux 호스트와의 통합을 위한 범위 지정 데이터를 얻기 위해 호스트에 액세스할 수 있는 드라이버 기능에 대해 설명합니다.

그림 1. VL53L3CX 시스템
메모:
본 문서는 구현되고 검증된 기능을 설명합니다. 이 문서에 설명되어 있지 않은 경우 드라이버에서 사용할 수 있는 다른 기능을 사용해서는 안 됩니다.
베어 드라이버는 VL53L3CX 장치를 사용하는 데 필요한 기능 세트를 구현한 것입니다. OS 통합 및 서비스에 대해 최소한의 가정을 합니다. 따라서 작업 순서 지정, 실행/스레딩 모델, 플랫폼 적응 및 장치 구조 할당은 베어 드라이버 구현의 일부가 아니라 통합자에게 열려 있습니다.
베어 드라이버 호출의 순서는 이 문서에 정의된 일련의 규칙을 따라야 합니다.
범위 기능 설명
이 섹션에서는 VL53L3CX 거리 측정 장치의 기능적 기능을 간략하게 설명합니다.
범위 지정 순서
장치는 표준 인터럽트 관리 체계를 기반으로 하는 핸드셰이크 메커니즘으로 실행됩니다.
각 범위 지정 후 호스트는 범위 지정 데이터를 획득하고 인터럽트를 지워 다음 범위 지정을 활성화합니다. 이 프로세스를 핸드셰이크 메커니즘이라고 합니다. 현재 범위 지정이 완료되고 호스트가 이전 보류 중인 인터럽트를 삭제한 경우 다음 범위 지정이 트리거됩니다.
인터럽트 메커니즘을 사용하면 통신 또는 비동기 문제로 인해 범위 값을 잃지 않고 더 빠른 데이터 전송이 가능합니다. 핸드셰이크 단계 동안 호스트는 일부 데이터 처리를 수행합니다. 범위 지정 순서는 아래 그림에 기능적으로 설명되어 있습니다.

핸드셰이크 시퀀스를 통해 내부 매개변수를 계산하고 이를 다음 범위에 적용할 수 있습니다.
핸드셰이크는 베어 드라이버 사용자가 수행해야 합니다. 새로운 측정값이 수신된 후 새로운 범위 지정을 활성화하기 위한 지연은 전체 시스템 측정 속도의 핵심입니다.
타이밍 고려 사항
타이밍이 제시됩니다 그림 3에서. 범위 지정 순서 및 타이밍 대상.
호스트는 현재 범위의 기간(범위 타이밍 예산) 동안 사용 가능한 최신 범위를 얻을 수 있습니다.
인터럽트를 지우기 위한 지연이 호스트에 의해 도입되면 보류 중인 인터럽트가 지워질 때까지 다음 범위 지정이 지연됩니다.
메모: 표시된 타이밍 그림 3에서. 범위 지정 순서 및 타이밍 대상은 일반적인 타이밍입니다. 호스트는 섹션 5.1 타이밍 예산에 설명된 전용 드라이버 기능을 사용하여 기본 타이밍 예산을 변경할 수 있습니다. 호스트는 애플리케이션에서 동기화하거나 거리 측정 정확도를 높이기 위해 타이밍 예산을 변경하기로 결정할 수 있습니다.
다음 그림에서 "Boot", "SW 대기" 및 "Init"는 40ms 동안 지속됩니다. 이 시간은 장치의 올바른 초기화를 수행하는 데 필요하며 플랫폼이나 사용된 타이밍 예산과 무관합니다. 첫 번째 범위인 "Range1"은 순환 검사가 불가능하므로 유효하지 않습니다. 이는 첫 번째 유효한 범위 지정 값이 "Range2"이며 40ms와 타이밍 예산 기간의 두 배 이후에 사용할 수 있음을 의미합니다.

그림 3. 범위 지정 시퀀스 및 타이밍 대상
베어 드라이버 기본 기능 설명
이 섹션에서는 거리 측정을 수행하기 위해 따라야 하는 드라이버 함수 호출 흐름을 설명합니다.
VL53L3CX를 사용합니다.
VL53L3CX 드라이버는 두 가지 클래스의 애플리케이션에 사용됩니다.
- 일반적으로 최종 제품 제조 테스트(공장 흐름)에서 장치 교정에 사용되는 공장 애플리케이션
- VL53L3CX 장치를 사용하여 모든 최종 사용자 애플리케이션을 수집하는 현장 애플리케이션(범위 흐름)
베어 드라이버
베어 드라이버 팩토리 흐름은 다음 그림에 설명되어 있습니다.

그림 4. VL53L3CX API 범위 지정 흐름(공장)
메모: 교정 흐름은 거리 모드를 변경합니다. 교정 직후 센서를 사용하려면 SetDistanceMode() 함수를 호출하는 것이 필수입니다.
베어 드라이버 범위 지정 흐름은 다음 그림에 설명되어 있습니다.

그림 5. VL53L3CX API 범위 지정 흐름(필드)
시스템 초기화
다음 섹션에서는 측정을 시작하기 전에 시스템 초기화를 수행하는 데 필요한 API 함수 호출을 보여줍니다.
부팅을 기다립니다
VL53LX_WaitDeviceBooted() 함수는 장치가 부팅되고 준비되었는지 확인합니다. 이 함수를 반드시 호출해야 하는 것은 아닙니다.
메모: 이 함수는 호스트 실행을 차단합니다. 이 기능은 다음을 가정할 때 4ms 이상 차단되어서는 안 됩니다.
- 400kHz I2C 주파수
- 트랜잭션당 대기 시간 2ms
데이터 초기화
VL53LX_DataInit() 함수는 장치가 "초기 부팅" 상태를 종료할 때마다 호출되어야 합니다. 장치 초기화를 수행합니다. VL53LX_DataInit() 함수를 호출한 후 VL53LX_SetCalibrationData() 함수를 사용하여 교정 데이터를 로드해야 합니다.
VL53L3CX를 사용한 범위 지정
Linux가 아닌 호스트에서 베어 드라이버 시퀀스 사용자는 애플리케이션 요구 사항, 플랫폼 기능 및 베어 드라이버 호출 시퀀스 규칙에 적합한 방식으로 드라이버를 호출합니다.
측정 시작
측정을 시작하려면 VL53LX_StartMeasurement() 함수를 호출해야 합니다.
결과를 기다립니다: 폴링 또는 인터럽트
측정이 가능하다는 것을 알 수 있는 세 가지 방법이 있습니다. 호스트는 다음을 수행할 수 있습니다.
- 폴링 기능 호출
- 드라이버 기능에 대한 설문 조사
- 물리적인 인터럽트를 기다립니다
결과 상태를 얻기 위한 드라이버 폴링
VL53LX_WaitMeasurementDataReady() 함수는 측정이 준비될 때까지 내부 상태를 폴링합니다.
메모: 내부 폴링이 수행되므로 이 기능은 차단됩니다.
결과 상태를 얻기 위한 호스트 폴링
호스트는 VL53LX_GetMeasurementDataReady() 함수를 폴링하여 새 측정이 언제 준비되는지 알 수 있습니다. 이 기능은 차단되지 않습니다.
물리적 인터럽트 사용
범위 지정 상태를 얻는 대안적이고 선호되는 방법은 물리적 인터럽트 출력을 사용하는 것입니다. 기본적으로 GPIO1은 새 측정이 준비되면 낮아집니다.
이 핀은 출력 핀일 뿐이며 이 장치에는 입력 인터럽트 핀이 없습니다. 드라이버 함수 VL53LX_ClearInterruptAndStartMeasurement()를 호출하여 인터럽트를 지워야 합니다.
측정 받기
범위별로 여러 객체를 감지할 수 있으며, 측정 데이터는 객체별로 보고됩니다. VL53LX_GetMultiRangingData()는 여러 객체가 필드에 있는 경우 거리 측정 데이터를 가져오는 데 사용할 수 있습니다. view. 장치의 다중 범위 지정 결과를 얻기 위해 이 함수를 호출하면 VL53LX_MultiRangingData_t라는 구조가 반환됩니다.
측정 중지
연속 모드에서는 호스트가 VL53LX_StopMeasurement() 함수를 호출하여 측정을 중지할 수 있습니다. 범위 측정 중에 중지 요청이 발생하면 측정이 즉시 중단됩니다.
데이터 구조 범위 지정
VL53LX_MultiRangingData_t라는 구조에는 감지된 모든 대상에 적용할 수 있는 다음 데이터가 포함되어 있습니다.
- 타임 스트리트amp: 구현되지 않았습니다.
- 스트림 수: 이 8비트 정수는 각 범위에서 증가하는 카운터를 제공합니다. 값은 0부터 시작하여 1까지 1씩 증가합니다. 255에 도달하면 255에서 128까지 다시 시작됩니다.
- 발견된 개체 수: 발견된 개체 수를 제공하는 8비트 정수 값입니다.
- 범위 데이터 [VL53LX_MAX_RANGE_RESULTS]: VL53LX_TargetRangeData_t 유형의 구조 테이블. 최대 대상 수는 VL53LX_MAX_RANGE_RESULTS에 의해 지정되며 기본적으로 4와 같습니다.
- X talk 값이 변경되었습니다: 누화 값이 변경되었는지 여부를 나타내는 8비트 정수 값입니다.
- 효과적인 Spad Rtn 수: 전류 범위에 대한 유효한 SPAD(단일 광자 사태 다이오드) 수를 반환하는 16비트 정수입니다. 실제 가치를 얻으려면 256으로 나누어야 합니다.
감지된 각 타겟에 대해 다음과 같은 특정 결과를 포함하는 VL4LX_TargetRangeData_t라는 감지된 타겟당 하나의 구조(기본적으로 최대 53개)입니다.
- 범위최대밀리미터: 는 더 큰 감지 거리를 나타내는 16비트 정수입니다.
- 범위MinMilliMeter: 는 16비트 정수로, 감지된 거리가 더 작음을 나타냅니다.
- SignalRateRtnMegaCps: 이 값은 MCPS(MegaCountPer Second) 단위의 반환 신호 속도이며 16.16 고정 포인트 값입니다. 실제 값을 얻으려면 65536으로 나누어야 합니다.
- AmbientRateRtnMegaCps: 이 값은 반사 주변 속도(MCPS 단위)이며, 16.16 고정점 값으로 센서가 측정한 주변 광량을 효과적으로 측정합니다. 실제 값을 얻으려면 65536으로 나누어야 합니다.
- 시그마밀리미터: 이 16.16 고정점 값은 전류 범위의 표준 편차 추정치이며 밀리미터로 표시됩니다. 실제 값을 얻으려면 65536으로 나누어야 합니다.
- 범위밀리미터: 범위 거리를 밀리미터 단위로 나타내는 16비트 정수입니다.
- 범위상태: 이는 현재 측정의 범위 상태를 나타내는 8비트 정수입니다. 값 = 0은 범위 지정이 유효함을 의미합니다. 표 1을 참조하세요. 범위 상태.
- 확장된 범위: 범위가 풀렸는지 여부를 나타내는 8비트 정수입니다(장거리에만 해당).
대상이 감지되지 않으면 특정 동작이 구현됩니다. 대상이 감지되지 않고 측정이 유효한 경우 VL53LX_TargetRangeData_t 구조에 다음 값이 보고됩니다.
- RangeMaxMilliMeter: 8191로 강제 설정됩니다.
- RangeMinMilliMeter: 8191로 강제 설정됩니다.
- SignalRateRtnMegaCps: 0으로 강제 설정됩니다.
- AmbientRateRtnMegaCps: 주변 속도 값이 일반적으로 계산됩니다.
- SigmaMilliMeter: 0으로 강제 설정됩니다.
- RangeMilliMeter: 8191로 강제 설정됩니다.
- RangeStatus: 255로 강제 설정됩니다.
- ExtendedRange: 0으로 강제 설정됩니다.
표 1. 범위 상태
| 값 | 범위상태 문자열 | 논평 |
| 0 | VL53LX_RANGESTATUS_RANGE_VALID | 범위 측정이 유효함 |
| 1 | VL53LX_RANGESTATUS_SIGMA_FAIL | 시그마 추정기 검사가 내부에 정의된 임계값을 초과하는 경우 발생합니다. 시그마 추정기는 신호에 대한 정성적 정보를 제공합니다. |
| 2 | VL53LX_RANGESTATUS_SIGNAL_FAIL | 신호가 너무 낮아서 대상을 감지할 수 없을 때 발생합니다. |
| 4 | VL53LX_RANGESTATUS_OUTOFBOUNDS_FAIL | 범위 결과가 범위를 벗어날 때 발생 |
| 5 | VL53LX_RANGESTATUS_HARDWARE_FAIL | HW 또는 VCSEL 오류가 발생한 경우 발생 |
| 6 | VL53LX_RANGESTATUS_RANGE_VALID_NO_WR AP_CHECK_FAIL | 랩어라운드 검사가 수행되지 않았습니다(이것이 첫 번째 범위임). |
| 7 | VL53LX_RANGESTATUS_WRAP_TARGET_FAIL | 랩어라운드가 발생했습니다. |
| 8 | VL53LX_RANGESTATUS_PROCESSING_FAIL | 내부 처리 오류 |
| 10 | VL53LX_RANGESTATUS_SYNCRONISATION_INT | 초기화 후 한 번 발생하며 범위 값을 무시해야 합니다. |
| 11 | VL53LX_RANGESTATUS_RANGE_VALID_MERGE D_PULSE | 범위 조정은 괜찮지만 보고된 거리는 여러 대상을 병합한 결과입니다. |
| 12 | VL53LX_RANGESTATUS_TARGET_PRESENT_LA CK_OF_SIGNAL | 목표가 있지만 신호가 너무 낮아서 거리 측정을 보고할 수 없음을 나타냅니다. |
| 14 | VL53LX_RANGESTATUS_RANGE_INVALID | 범위 지정 데이터가 음수이므로 무시해야 합니다. |
| 255 | VL53LX_RANGESTATUS_NONE | 경고나 오류가 발생하지 않고 대상이 감지되지 않음 |
첫 번째 측정에는 랩어라운드 검사가 포함되지 않습니다. 이 범위 측정은 무시될 수 있습니다.
메모: 범위 상태 1은 잡음이 있는 측정으로 인해 발생하는 경우가 많습니다. 시그마 추정기는 처리된 신호의 SNR에 영향을 받습니다.
메모: 측정 기준에 일부 오류가 발생하면 범위 상태 4가 발생합니다. 이로 인해 음의 측정값이나 범위가 매우 높은 값으로 이상값이 발생할 수 있습니다.
추가 드라이버 기능 설명
타이밍 예산
타이밍 예산은 사용자가 하나의 범위 측정을 수행하기 위해 할당한 시간입니다. VL53LX_SetMeasurementTimingBudgetMicroSeconds()는 타이밍 예산을 설정하는 데 사용되는 함수입니다. 기본 타이밍 예산 값은 33ms입니다. 최소값은 8ms, 최대값은 500ms입니다.
예를 들어ample, 타이밍 예산을 66ms로 설정하려면: status = VL53LX_SetMeasurementTimingBudgetMicroSeconds(&VL53L3Dev, 66000 );
VL53LX_GetMeasurementTimingBudgetMicroSeconds() 함수는 프로그래밍된 타이밍 예산을 반환합니다.
거리 모드
사용자가 요청한 측거 거리에 따라 내부 설정을 최적화하는 기능이 추가되었습니다. 거리 모드 변경의 이점은 다음 표에 자세히 설명되어 있습니다.
표 2. 거리 모드
| 가능한 거리 모드 | 혜택/의견 |
| 짧은 | 더 나은 주변 내성 |
| 중간(기본값) | 최대 거리 |
| 긴 | 낮은 전력 소모 |
사용할 함수는 VL53LX_SetDistanceMode()입니다.
운전자는 호스트가 최적의 거리 모드를 선택하도록 도울 수 있습니다. 주변 조건에 따라 최상의 선택을 나타내기 위해 각 범위에서 특정 값이 반환됩니다.
가능한 값은 다음과 같습니다.
- VL53LX_DISTANCE_SHORT
- VL53LX_DISTANCE_MEDIUM
- VL53LX_DISTANCE_LONG
튜닝 매개변수
매개변수 조정을 통해 센서와 호스트 사용 사례 사이에 가장 적합한 것을 찾을 수 있습니다. 각 사용 사례에 대해 일련의 조정 매개변수를 정의하고 드라이버에 로드할 수 있습니다.
대부분의 조정 매개변수는 신호 처리 알고리즘에 사용되는 조정 가능한 임계값입니다. 이러한 매개변수를 수정하면 알고리즘이 특정 고객 사용 사례에 대한 기술적인 절충안을 만들 수 있습니다.
튜닝 매개변수 설정
튜닝 매개변수를 로드하는 추가 기능이 있습니다. 특정 사용 사례의 경우 ST는 키와 값으로 구성된 일부 특정 매개변수를 권장할 수 있습니다.
튜닝 매개변수 목록과 해당 기본값은 vl53lx_tuning_parm_defaults.h에 제공됩니다. file. 여기에서 튜닝 매개변수 값을 변경하거나 file 코드를 다시 컴파일하거나 VL53LX_SetTuningParameter() 함수를 사용하여 이 튜닝 매개변수를 로드하세요.
튜닝 매개변수를 변경하면 장치 성능이 수정될 수 있습니다. ST는 최적의 결과를 위해 기본값을 사용할 것을 권장합니다.
정확도 개선
장치 정확도를 향상하려면 VL53LX_TUNINGPARM_PHASECAL_PATCH_POWER라는 튜닝 매개변수를 사용하십시오. 기본적으로 이 조정 매개변수는 적용되지 않습니다(값은 0으로 설정됨).
ST에서는 static_init 이후 교정 및 범위 지정 흐름 값을 2로 설정할 것을 권장합니다. 이 경우 기준 신호 측정을 수행하는 시간이 늘어나고 정확도가 향상됩니다. 이 매개변수를 2로 설정하면 첫 번째 측정을 얻는 데 걸리는 시간이 240ms 늘어납니다.
대기 시간 및 최대 범위 거리 개선
대상이 움직일 때 VL53L3CX는 장면에 따라 반응하기 위해 여러 범위가 필요할 수 있습니다. 대기 시간을 개선하는 방법은 VL53LX_TUNINGPARM_RESET_MERGE_THRESHOLD 매개변수를 조정하는 것입니다. 기본값은 15000입니다. 대기 시간을 개선하기 위해 낮출 수 있지만 최대 범위 거리가 영향을 받습니다.
사용자가 값을 늘리면 최대 범위 거리가 향상될 수 있지만 대기 시간이 영향을 받습니다.
커버 유리 얼룩 감지
누화는 커버 유리의 얼룩에 의해 영향을 받을 수 있습니다. VL53L3CX에는 즉시 얼룩을 감지하고 새로운 누화 보정 값을 적용할 수 있는 기능이 내장되어 있습니다. 사용자는 VL53LX_SmudgeCorrectionEnable()을 호출하여 이 기능을 활성화/비활성화할 수 있습니다.
이 기능을 사용하면 다음 세 가지 옵션을 설정할 수 있습니다.
- 수정을 비활성화하려면 VL53LX_SMUDGE_CORRECTION_NONE
- 지속적인 수정을 활성화하는 VL53LX_SMUDGE_CORRECTION_CONTINUOUS
- VL53LX_SMUDGE_CORRECTION_SINGLE은 시작 명령이 수신된 후 단일 수정을 활성화합니다.
각 범위에서 얼룩 감지가 실행됩니다. 일부 조건(80cm 미만의 물체 없음, 임계값 미만의 주변 조도, 1kcps 이상의 누화 값)이 충족되면 새로운 누화 값이 계산됩니다.
얼룩 보정이 설정되면 누화 값이 보정되고 HasXtalkValueChanged 플래그가 설정됩니다. 이 플래그는 다음 범위에서 자동으로 지워집니다.
참고: 얼룩 수정은 다음으로 제한됩니다.
- 단거리 모드 사용 시 1.2m
- 중거리 모드 사용 시 1.7m
- 장거리 모드 사용 시 3.8m.
I2C 주소
VL2L53CX의 기본 I3C 주소는 0x52입니다. 일부 애플리케이션은 다른 I2C 장치 주소를 설정해야 합니다. 예를 들어 이런 경우입니다amp즉, 여러 VL53L3CX 부품이 동일한 I2C 버스를 공유하는 경우입니다.
고객은 다음 절차를 적용해야 합니다.
- VL53L3CX를 장착하는 보드는 신중하게 설계되어야 합니다. Xshut 및 GPIO1(인터럽트) 핀은 각 VL53L3CX에 대해 개별적으로 제어되어야 합니다.
- 호스트는 Xshut 핀을 낮게 설정하고 모든 VL53L3CX를 HW 대기 모드로 전환해야 합니다.
- 호스트는 VL1L53CX 중 3개의 Xshut 핀을 올립니다.
- 호스트는 VL53LX_SetDeviceAddress() 함수를 호출합니다.
- 모든 VL53L3CX 주소가 올바르게 설정되었으므로 호스트는 후자의 세 가지 사항을 반복합니다.
예를 들어amp파일에서 status = VL53LX_SetDeviceAddress(&VL53L3Dev, WantedAddress) 함수를 호출하면 WantedAddress 값이 새 I2C 주소로 설정됩니다.
고객 공장 교정 기능
장치의 전체 성능을 활용하기 위해 VL53L3CX 드라이버에는 고객 생산 라인에서 한 번 실행되는 교정 기능이 포함되어 있습니다.
장치 성능에 영향을 미칠 수 있는 부품 간 매개변수를 보상하기 위해 교정 절차를 실행해야 합니다. 호스트에 저장된 교정 데이터는 전용 드라이버 기능을 사용하여 시작할 때마다 VL53L3CX에 로드되어야 합니다. refSPAD, 누화, 오프셋의 세 가지 교정이 필요합니다.
교정 기능이 호출되는 순서는 다음과 같습니다.
- refSPAD
- 크로스토크
- 오프셋
세 가지 교정 기능은 순차 모드 또는 개별적으로 수행할 수 있습니다. 개별적으로 실행하는 경우 교정을 실행하기 전에 이전 단계 데이터를 로드해야 합니다.
RefSPAD 교정
SPAD(단일 광자 애벌런치 다이오드)의 수는 ST의 최종 모듈 테스트 중에 보정됩니다. 이 부품 간 값은 NVM에 저장되며 부팅 중에 장치에 자동으로 로드됩니다.
이 보정을 통해 SPAD 수를 조정하여 장치 동적을 최적화할 수 있습니다.
그러나 모듈 상단에 커버 유리를 추가하면 이 보정에 영향을 미칠 수 있습니다. ST는 고객이 최종 제품 애플리케이션에서 이 교정을 다시 수행할 것을 권장합니다. 이 함수가 호출될 때 FMT에서 실행되는 동일한 알고리즘이 적용됩니다. 알고리즘은 1(1x 감쇠 SPAD), 2(5 x 감쇠 SPAD) 및 3(10 x 감쇠 SPAD)의 세 위치를 검색합니다. 선택된 SPAD 수는 신호 포화를 피하기 위해 수행됩니다.
RefSPAD 교정 기능
SPAD 교정에는 다음 기능을 사용할 수 있습니다. VL53LX_PerformRefSpadManagement(VL53LX_DEV Dev)
메모: 이 함수는 교정 절차에서 먼저 호출되어야 합니다.
이 함수는 다음 세 가지 경고 메시지를 출력할 수 있습니다.
- VL53LX_WARNING_REF_SPAD_CHAR_NOT_ENOUGH_SPA S 5 미만 양호한 SPAD 사용 가능, 출력이 유효하지 않음
- VL53LX_WARNING_REF_SPAD_CHAR_RATE_TOO_HIGH 검색 종료 시 참조율 > 40.0 Mcps 오프셋 안정성이 저하될 수 있습니다.
- VL53LX_WARNING_REF_SPAD_CHAR_RATE_TOO_LOW 검색 종료 시 참조율 < 10.0 Mcps. 오프셋 안정성이 저하될 수 있습니다.
RefSPAD 교정 절차
장치 상단에 타겟을 배치해서는 안 된다는 점을 제외하고는 이 보정을 위해 특별한 조건을 따를 필요가 없습니다.
이 교정을 수행하는 데 걸리는 시간은 몇 밀리초에 불과합니다.
이 함수는 VL53LX_DataInit() 함수가 호출된 후에 호출되어야 합니다.
refSPAD 교정 결과 얻기
VL53LX_GetCalibrationData() 함수는 모든 교정 데이터를 반환합니다. 반환된 구조 VL53LX_CalibrationData_t에는 53개의 refSPAD 교정 매개변수가 포함된 VLXNUMXLX_customer_nvm_managed_t라는 또 다른 구조가 포함되어 있습니다.
- ref_spad_man__num_requested_ref_spads: 이 값은 5에서 44 사이입니다. 선택한 SPAD 수를 제공합니다.
- ref_spad_man__ref_location: 이 값은 1, 2 또는 3일 수 있습니다. 이는 참조 영역에서 SPAD의 위치를 제공합니다.
- 6개의 추가 매개변수는 선택한 위치에 대한 올바른 스패드 맵을 제공합니다.
- global_config__spad_enables_ref_0
- global_config__spad_enables_ref_1
- global_config__spad_enables_ref_2
- global_config__spad_enables_ref_3
- global_config__spad_enables_ref_4
- global_config__spad_enables_ref_5
refSPAD 교정 데이터 설정
각 시작 시, 초기 부팅 후 고객 현장 애플리케이션은 VL53LX_SetCalibrationData()를 사용하여 VL53LX_DataInit() 함수가 호출된 후 refSPAD 교정 데이터를 로드할 수 있습니다.
VL53LX_GetCalibrationData()를 호출하여 전체 교정 구조를 얻는 것이 좋습니다. 섹션 6.1.3 refSPAD 교정 결과 가져오기에 설명된 53개 매개변수를 수정하고 VLXNUMXLX_SetCalibrationData()를 호출합니다.
누화 교정
누화(XTalk)는 미적인 이유로 모듈 상단에 추가된 보호 창(커버 유리) 내부의 VCSEL 빛 반사로 인해 리턴 어레이에서 수신된 신호의 양으로 정의됩니다.
커버 유리 품질에 따라 이 기생 신호는 장치 성능에 영향을 미칠 수 있습니다. VL53L3CX에는 이 문제를 보상하는 보정 기능이 내장되어 있습니다.
누화 교정은 모듈 상단에 추가된 커버 유리의 효과를 보상하는 데 필요한 수정량을 추정하는 데 사용됩니다.
누화 교정의 출력에는 섹션 6.2.3 누화 교정 결과 얻기에 설명된 대로 누화 모델을 정의하는 많은 매개변수가 포함되어 있습니다.
누화 교정 기능
누화 교정에는 다음 전용 기능을 사용할 수 있습니다: VL53LX_PerformXTalkCalibration(&VL53L3Dev);
메모: 이 함수는 refSPAD 교정이 완료된 후 오프셋 교정 전에 교정 절차의 두 번째 위치에서 호출되어야 합니다.
누화 교정 절차
누화 교정을 수행하려면 대상을 장치에서 600mm 떨어진 곳에 배치해야 합니다. 누화 교정은 IR 영향이 없는 어두운 환경에서 수행되어야 합니다. VL53LX_DataInit() 및 VL53LX_PerformRefSpadManagement() 함수가 호출된 후 VL53LX_PerformXTalkCalibration(&VL53L3Dev)을 사용하여 전용 교정 함수를 호출해야 합니다. 이들 함수를 호출하면 누화 교정이 수행되고 누화 보정이 기본적으로 적용됩니다.
누화 교정 결과 얻기
교정 결과는 특히 히스토그램과 "평면 오프셋"이라는 매개변수로 구성됩니다. 평면 오프셋은 적용된 수정량을 나타내고, 히스토그램은 각 빈에 대한 수정 내용을 다시 분할한 것입니다. VL53LX_GetCalibrationData() 함수는 모든 교정 데이터를 반환합니다. 반환된 구조 VL53LX_CalibrationData_t에는 다른 구조가 포함되어 있습니다. 평면 오프셋은 VL53LX_customer_nvm_managed_t에 포함되어 있습니다. algo_crosstalk_compensation_plane_offset_kcps는 고정 소수점 7.9로 코딩된 값입니다. 실제 숫자를 얻으려면 512로 나누어야합니다.
다른 두 개의 관련 구조인 VL53LX_xtalk_histogram_data_t 및 algo__xtalk_cpo_HistoMerge_kcps가 반환됩니다. 반드시 보관해야 합니다.
누화 교정 데이터 설정
VL53LX_DataInit() 함수가 호출되면 고객은 VL53LX_SetCalibrationData()를 사용하여 누화 교정 데이터를 로드할 수 있습니다.
VL53LX_GetCalibrationData()를 호출하고, 이전 섹션에서 설명한 매개변수를 수정하고, xtalk_histogram 구조가 포함되어 있으며, VL53LX_SetCalibrationData()를 호출하는 것이 더 좋습니다.
누화 보상 활성화/비활성화
VL53LX_SetXTalkCompensationEnable() 함수는 누화 보상을 활성화하거나 비활성화합니다.
메모: 누화 보상은 기본적으로 비활성화되어 있습니다. 누화 보상을 활성화하려면 V53LX_SetXTalkCompensationEnable&VL53L3Dev, 1)을 호출하세요.
누화 보상을 비활성화하려면 VL53LX_SetXTalkCompensationEnable&VL53L3Dev, 0)을 호출하세요.
메모: 이 기능은 교정이나 누화 데이터 로딩을 수행하지 않고 보상만 활성화합니다.
메모: 교정 또는 교정 데이터 함수 로딩은 이 활성화/비활성화 기능과 별도로 호출되어야 합니다(위 섹션 참조).
오프셋 보정
고객 보드에 장치를 납땜하거나 커버 유리를 추가하면 측정 거리에 오프셋이 발생할 수 있습니다. 이 부품 간 오프셋은 오프셋 교정 중에 측정되어야 합니다. 오프셋 교정을 사용하면 오프셋 교정과 동일한 교정 조건을 사용하여 dmax 값을 교정할 수도 있습니다.
오프셋 교정 기능
오프셋 교정에는 다음 두 가지 기능을 사용할 수 있습니다.
- VL53LX_PerformOffsetSimpleCalibration(Dev, CalDistanceMilliMeter)
- VL53LX_PerformOffsetPerVCSEL보정(Dev, CalDistanceMilliMeter)
함수의 인수는 밀리미터 단위의 목표 거리입니다. 누화 보정 후에 오프셋 교정을 수행해야 합니다.
VL53LX_PerformOffsetPerVCSELCalibration은 가장 정확한 기능이지만 교정을 수행하는 데 시간이 더 오래 걸립니다(시간 x 3).
오프셋 교정 절차
고객은 거리에 관계없이 차트 반사율을 선택할 수 있습니다(누화 교정과 동일한 설정 사용). 확인해야 할 유일한 점은 선택한 설정으로 신호 속도가 2~80MCps 사이에서 측정되는지 확인하는 것입니다.
표 3. 오프셋 교정 설정
| 차트 | 거리 | 주변 조건 | 신호 속도 |
| 어느 | 어느 | 어두움(IR 기여 없음) | 2MCps < 신호 속도 <80Mcps |
다음 함수는 두 가지 경고 메시지를 반환합니다.
- VL53LX_WARNING_OFFSET_CAL_INSUFFICIENT_MM1_SP DS 신호가 너무 낮아 오프셋 교정 정확도가 저하될 수 있습니다.
- VL53LX_WARNING_OFFSET_CAL_PRE_RANGE_RATE_TOO_H GH 신호가 너무 높습니다. 오프셋 교정의 정확도가 저하될 수 있습니다.
오프셋 교정 결과 얻기
VL53LX_GetCalibrationData() 함수는 모든 교정 데이터를 반환합니다. 반환된 구조 VL53LX_CalibrationData_t에는 세 가지 오프셋 교정 결과가 포함된 VL53LX_customer_nvm_managed_t라는 또 다른 구조가 포함되어 있습니다.
- algo__part_to_part_range_offset_mm
- mm_config__inner_offset_mm
- mm_config__outer_offset_mm
장치에 적용되는 전체 오프셋은 마지막 두 값의 평균입니다. perVCSELCalibration을 선택한 경우 함수 출력에는 다음 데이터가 포함됩니다.
- short_a_offset_mm
- short_b_offset_mm
- Medium_a_offset_mm
- Medium_b_offset_mm
- long_a_offset_mm
- long_bb_offset_mm
선택한 거리 모드(VCSEL 기간)에 따라 이러한 오프셋 중 하나가 자동으로 적용됩니다.
오프셋 보정 모드 선택
오프셋 보정 모드는 VL53LX_SetOffsetCorrectionMode 함수를 사용하여 두 가지 옵션으로 설정할 수 있습니다.
메모: VL53LX_OFFSETCORRECTIONMODE_PERVCSEL은 기본적으로 사용해야 합니다. VCSEL 기간당 오프셋 정확도를 높일 수 있습니다.
표 4. 오프셋 수정 옵션
| 오프셋 교정 기능 호출 | 사용할 보정 모드 옵션 |
| 단순 오프셋 보정 수행 | VL53LX_OFFSETCORRECTIONMODE_STANDARD |
| PerVCSELOffset보정 수행 | VL53LX_OFFSETCORRECTIONMODE_PERVCSEL |
메모: 하나의 오프셋 교정 유형만 사용할 수 있는 경우 오프셋 보정 모드를 해당 옵션으로 설정하는 것이 필수입니다. 이 작업은 자동으로 수행되지 않습니다.
오프셋 교정 데이터 설정
고객은 VL53LX_SetCalibrationData()를 사용하여 VL53LX_DataInit() 함수가 호출된 후 오프셋 교정 데이터를 로드할 수 있습니다.
VL53LX_GetCalibrationData()를 호출하고, 이전 섹션에서 설명한 매개변수를 수정하고, VL53LX_SetCalibrationData()를 호출하는 것이 더 좋습니다.
고객 수리점 교정
수리점의 부품 교체로 인해 교정 값이 손실된 경우 고객은 특정 설정(목표)이 필요하지 않은 전용 절차를 적용할 수 있습니다.
교정은 세 단계로 구성됩니다.
- RefSpad
- 크로스토크
- 오프셋 교정
RefSpad 및 Xtalk는 섹션 6.1 RefSPAD 교정 및 섹션 6.2 Crosstalk 교정에 설명된 것과 동일합니다.
오프셋 교정을 수행하는 데 전용 기능인 VL53LX_PerformOffsetZeroDistanceCalibration을 사용할 수 있습니다.
장치 전면에 커버 유리에 닿는 타겟을 설정해야 합니다. 대상은 간단한 종이일 수 있습니다(종이 반사율이 특별히 필요하지 않음).
위 함수를 호출해야 하며 이전 섹션에서 설명한 프로세스와 유사하게 결과를 검색할 수 있습니다.
베어 드라이버 오류 및 경고
드라이버 함수가 호출되면 드라이버 오류가 보고됩니다. 드라이버 오류에 대해 가능한 값은 다음 표에 설명되어 있습니다. 일부 매개변수가 최적화되지 않았음을 사용자에게 알리는 경고가 있습니다. 경고는 호스트에 대해 차단되지 않습니다.
표 5. 베어 드라이버 오류 및 경고 설명
| 오류 값 | API 오류 문자열 | 발생 |
| 0 | VL53LX_ERROR_NONE | 오류 없음 |
| -1 | VL53LX_ERROR_CALIBRATION_WARNING | 잘못된 교정 데이터 |
| -4 | VL53LX_ERROR_INVALID_PARAMS | 함수에 잘못된 매개변수가 설정되었습니다. |
| -5 | VL53LX_ERROR_NOT_SUPPORTED | 요청한 매개변수는 프로그래밍된 구성에서 지원되지 않습니다. |
| -6 | VL53LX_ERROR_RANGE_ERROR | 인터럽트 상태가 올바르지 않습니다. |
| -7 | VL53LX_ERROR_TIME_OUT | 시간 초과로 인해 범위 지정이 중단되었습니다. |
| -8 | VL53LX_ERROR_MODE_NOT_SUPPORTED | 요청한 모드는 지원되지 않습니다 |
| -10 | VL53LX_ERROR_COMMS_BUFFER_TOO_SMALL | 제공된 버퍼가 I2C가 지원하는 것보다 큽니다. |
| -13 | VL53LX_ERROR_Control_INTERFACE | IO 기능에서 오류가 보고되었습니다. |
| -14 | VL53LX_ERROR_INVALID_COMMAND | 명령이 잘못되었습니다 |
| -16 | VL53LX_ERROR_REF_SPAD_INIT | 참조 SPAD 교정 중 오류가 발생했습니다. |
| -17 | VL53LX_ERROR_GPH_SYNC_CHECK_FAIL | 드라이버가 장치와 동기화되지 않았습니다. 중지/시작 또는 재부팅이 필요할 수 있습니다. |
| -18 | VL53LX_ERROR_STREAM_COUNT_CHECK_FAIL | |
| -19 | VL53LX_ERROR_GPH_ID_CHECK_FAIL | |
| -20 | VL53LX_ERROR_ZONE_STREAM_COUNT_CHEC K_FAIL | |
| -21 | VL53LX_ERROR_ZONE_GPH_ID_CHECK_FAIL | |
| -22 | VL53LX_ERROR_XTALK_EXTRACTION_FAIL | 성공하지 못했습니다.amp전체 배열을 s에 사용할 때 파일amp르 누화. 이 경우 새로운 누화 값을 생성하기 위한 정보가 충분하지 않습니다. 기능이 종료되고 현재 누화 매개변수가 변경되지 않은 상태로 유지됩니다. |
| -23 | VL53LX_ERROR_XTALK_EXTRACTION_SIGMA_L IMIT_FAIL | 누화 s의 평균 시그마 추정치ample가 허용되는 최대 한도보다 큽니다. 이 경우 누화는amp측정 시 잡음이 너무 심합니다. 기능이 종료되고 현재 누화 매개변수가 변경되지 않은 상태로 유지됩니다. |
| -24 | VL53LX_ERROR_OFFSET_CAL_NO_SAMPLE_FA IL | 오프셋 교정 중에 오류가 발생했습니다. 설정이 ST 권장사항과 일치하는지 확인하세요. |
| -25 | VL53LX_ERROR_OFFSET_CAL_NO_SPADS_ENA BLED_FAIL | |
| -28 | VL53LX_WARNING_REF_SPAD_CHAR_NOT_EN OUGH_SPADS | 경고: 발견된 스패드 수가 너무 적어 정확한 refSpadManagement 보정을 얻을 수 없습니다. ST 권장사항에 맞게 설정되었는지 확인하세요. |
| -29 | VL53LX_WARNING_REF_SPAD_CHAR_RATE_TO O_HIGH | 경고: 신호 속도가 너무 낮아 정확한 refSpadManagement 보정을 얻을 수 없습니다. ST 권장사항에 맞게 설정되었는지 확인하세요. |
| -30 | VL53LX_WARNING_REF_SPAD_CHAR_RATE_TO O_LOW | 경고: 정확한 오프셋 교정을 얻기에는 스패드 수가 너무 적습니다. ST 권장사항에 맞게 설정되었는지 확인하세요. |
| -31 | VL53LX_WARNING_OFFSET_CAL_MISSING_SA MPLES | 오프셋 교정 중에 경고가 발생했습니다. ST 권장사항에 맞게 설정되었는지 확인하세요. |
| -32 | VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_ 높음 | |
| -33 | VL53LX_WARNING_OFFSET_CAL_RATE_TOO_HIGH | |
| -34 | VL53LX_WARNING_OFFSET_CAL_SPAD_COUNT_TOO_LOW | |
| -38 | VL53LX_WARNING_XTALK_MISSING_SAMP레 | 누화 교정 중에 경고가 발생했습니다. ST 권장사항에 맞게 설정되었는지 확인하세요. |
| -41 | VL53LX_ERROR_NOT_IMPLEMENTED | 호출된 함수가 구현되지 않았습니다. |
개정 내역
| 날짜 | 버전 | 변화 |
| 28년 2020월 XNUMX일 | 1 | 최초 릴리스 |
| 02-2021-XNUMX | 2 | 섹션 6.2.3 누화 교정 결과 얻기에서 반환된 구조를 업데이트했습니다. |
| 03년 2022월 XNUMX일 | 3 | 섹션 3.1 베어 드라이버: 보정에 관한 참고 사항 추가섹션 5.4 커버 유리 얼룩 감지: 얼룩 보정에 관한 참고 사항 추가 |
중요 공지 – 주의 깊게 읽어보세요
STMicroelectronics NV 및 그 자회사("ST")는 언제든지 통지 없이 ST 제품 및/또는 이 문서를 변경, 수정, 개선, 수정 및 개선할 권리를 보유합니다. 구매자는 주문하기 전에 ST 제품에 대한 최신 관련 정보를 얻어야 합니다. ST 제품은 주문 확인 시점에 적용되는 ST의 판매 약관에 따라 판매됩니다.
구매자는 ST 제품의 선택, 선정 및 사용에 대한 전적인 책임을 지며, ST는 구매자의 제품 설계나 애플리케이션 지원에 대한 책임을 지지 않습니다.
ST는 본 계약에 따라 어떠한 지적 재산권에 대한 명시적 또는 묵시적 라이센스도 부여하지 않습니다.
여기에 명시된 정보와 다른 조항으로 ST 제품을 재판매하면 해당 제품에 대해 ST가 부여한 보증이 무효화됩니다. ST 및 ST 로고는 ST의 상표입니다. ST 상표에 대한 추가 정보는 다음을 참조하십시오. www.st.com/trademarks. 다른 모든 제품 또는 서비스 이름은 해당 소유자의 자산입니다.
이 문서의 정보는 이 문서의 이전 버전에서 이전에 제공된 정보를 대체하고 대체합니다. © 2022 STMicroelectronics – 판권 소유
문서 / 리소스
![]() |
ST VL53L3CX 비행 시간 범위 센서 [PDF 파일] 사용자 매뉴얼 VL53L3CX 비행 시간 거리 측정 센서, VL53L3CX, 비행 시간 거리 측정 센서, 비행 거리 측정 센서, 거리 측정 센서 |




