Linux 보드에서 I2C 슬레이브 주소를 변경할 수 있는 방법이 있습니까?

Linux 보드에서 I2C 슬레이브 주소를 변경할 수 있는 방법이 있습니까?

목적: i2c 슬레이브 장치 소프트웨어 측의 주소를 설정합니다.

예: 3개의 센서가 동일한 주소 0x29를 갖습니다. 특정 방법을 통해 센서1은 0x22를 설정하고, 센서2는 0x25를 설정하고, 서버3은 0x28을 설정합니다.

정보: 동일한 i2c 주소를 가진 유사한 장치가 3개 있습니다. i2c 슬레이브 장치는 BeagleBone Black Debian 운영 체제를 사용하는 VL53L0X(TOF) 센서입니다. 통신은 sys/ioctl.h및 을 통해 수행됩니다 linux/i2c-dev.h.

샘플 코드:

#include <sys/ioctl.h>
#include <linux/i2c-dev.h>

ioctl(open("/dev/i2c-2", O_RDWR), I2C_SLAVE, 0x29);

감사합니다! !

답변1

이것VL53L0X 데이터시트페이지 18-19에서는 장치의 해당 레지스터에 대한 간단한 쓰기 작업으로 장치의 I2C 주소를 변경할 수 있다고 명시하고 있습니다. 예제의 I2C 주소 0x29는 데이터시트의 0x52와 동일하지만 데이터시트 주소 값은 최하위 비트 위치에 I2C 읽기/쓰기 비트를 포함하기 위해 1비트 왼쪽으로 이동됩니다.

그러나 여러 VL52L0X 장치는 처음에 동일한 주소를 가지므로 각 VL53L0X 칩에 대한 재설정 신호를 독립적으로 제어할 수 있는 방법이 있어야 합니다. 필요한 절차는 에 설명되어 있습니다.VL53L0X용 AN4846 애플리케이션 노트. 즉, 각 VL53L0X 칩에 직접 또는 일부 GPIO 확장 칩을 통해 연결된 두 개의 GPIO 핀이 있어야 합니다. 하드웨어 설계를 확인하여 하드웨어가 어디에 라우팅되어 있는지 알아내야 합니다.

레지스터 번호는 다음과 같습니다.VL50L0X용 C 프로그래밍 API 패키지(무료이지만 유효한 이메일 주소로 등록해야 합니다). API 패키지에서 파일을 찾으세요 VL53L0X_REG_I2C_SLAVE_DEVICE_ADDRESS.VL53L0X_1.0.4/Api/core/inc/vl53l0x_device.hen.STSW-IMG005_v1.0.4.zip

관련 정보