I2C 주소 변환기와 스캐너 파서
I2C 주소를 7비트, 8비트 write/read, HEX, DEC, BIN 형식으로 변환합니다. Arduino 스캐너 로그와 Linux i2cdetect 출력도 빠르게 해석할 수 있습니다.
스캐너 출력 파서
Arduino I2C scanner 로그, Linux i2cdetect 출력, 또는 HEX 주소 목록을 붙여넣으면 0x00~0x7F 범위 주소를 추출해 변환합니다.
| 검출 주소 | 7비트 | 8비트 Write | 8비트 Read | 예약 영역 |
|---|---|---|---|---|
| 아직 파싱된 주소가 없습니다. | ||||
7비트 I2C 주소란?
대부분의 I2C API는 7비트 슬레이브 주소를 사용합니다. 실무에서는 0x3C, 0x68 같은 HEX 형태로 자주 표시합니다.
7비트와 8비트 I2C 주소 차이
일부 데이터시트는 R/W 비트가 포함된 8비트 값을 표시합니다. 7비트 주소를 A라고 하면 8비트 Write는 A << 1, Read는 (A << 1) | 1입니다.
Arduino Wire 주소와 8비트 주소
Arduino Wire API는 일반적으로 7비트 주소를 입력받습니다. 그래서 코드에서는 0x3C를 쓰지만, 데이터시트에서는 0x78/0x79가 함께 보일 수 있습니다.
Linux i2cdetect 주소 형식
Linux i2cdetect 출력은 7비트 주소를 표시합니다. 데이터시트의 8비트 write/read 값과 비교할 때는 먼저 주소 형식을 맞춰야 합니다.
자주 쓰는 I2C 주소 예시
| 장치 | 7비트 주소 | 8비트 Write | 8비트 Read | 설명 |
|---|---|---|---|---|
| SSD1306 OLED | 0x3C | 0x78 | 0x79 | 자주 쓰는 OLED 모듈 주소 |
| MPU-6050 | 0x68 | 0xD0 | 0xD1 | 자주 쓰는 IMU 주소 |
| DS3231 RTC | 0x68 | 0xD0 | 0xD1 | 자주 쓰는 RTC 주소 |
| BME280 | 0x76 | 0xEC | 0xED | 자주 쓰는 센서 주소 |
| BME280 대체 | 0x77 | 0xEE | 0xEF | 대체 센서 주소 |
| 24Cxx EEPROM | 0x50 | 0xA0 | 0xA1 | 자주 쓰는 EEPROM 기본 주소 |
FAQ
I2C의 7비트 주소와 8비트 주소는 어떻게 다른가요?
7비트 주소는 슬레이브 장치를 식별하는 값이고, 8비트 값은 여기에 읽기/쓰기 비트가 포함된 형태입니다.
Arduino에서는 0x3C를 쓰는데 데이터시트에는 왜 0x78이 나오나요?
Arduino Wire API는 보통 7비트 주소를 받습니다. 데이터시트의 0x78은 8비트 write 바이트를 뜻하는 경우가 많습니다.
Linux i2cdetect는 어떤 주소 형식을 보여주나요?
Linux i2cdetect는 7비트 주소를 보여줍니다. 데이터시트의 8비트 주소와 비교할 때는 변환이 필요합니다.
예약된 I2C 주소는 무엇인가요?
일반적으로 사용 가능한 7비트 주소는 0x08~0x77입니다. 0x00~0x07, 0x78~0x7F는 예약 영역입니다.