지닌 1편에 이어 계속 3단계 부터 설명하겠습니다.
3단계: 렌즈 개별 특정 정보 요구/수신
지난 번에도 말씀 드렸지만, 이 단계 부터는 CLK (1번핀)에서 발생하는 동기신호는 2 MHz로 증가합니다.
기본적으로 이 3단계는 2단계의 블록 4 : 지원 특성 정의 테이블에서 정의한 각 항목이 다시 질의 되는 형태를 취합니다.
예를 들자면 NX 30/2 렌즈의 경우는, 16진수로, 5001, 5002, 5003, 5007, 5008, 5009의 아이템 값들을 갖는데, 이 3단계에선 이 각 항목들을 개별적으로 질의하면서 렌즈로부터 상세 값들을 수신하게 됩니다.
그런데, 만약 바디가 NX1일 경우 (아마도 NX500도 마찬가지 일 것으로 추측합니다.) 이 3단계에서 50XX 항목들의 값을 질의하기 전에 2개의 추가 항목에 대해 질의를 먼저 실시 합니다.
그것 부터 먼저 보겠습니다.
3단계: 항목 1 – 렌즈의 실제 초점 거리 정보 요구/수신 (NX1 만 해당)
- 바디에서 렌즈로 가는 데이터 (3번 핀, DCL 데이터) : 05 10 0D 60 0C
- 렌즈에서 바디로 가는 데이터 (2번핀, DLC 데이터)
- Byte 1 : 전체 패킷 크기 (Byte)
- Byte 2 – 3 : 0x02 0x01 ( OK 상태)
- Byte 4 – 6 : 무조건 0x00 0x00 0x00
- Byte 7 : 뒤 이어 나올 2 Byte 짜리 데이터 항목 갯수
- Byte 8 – (마지막 -1) : 2바이트로 구성된 항목 정보
- 마지막 Byte : checksum. Byte 4부터 모든 Byte를 더한 1 Byte 값
이렇게 구성됩니다. 일단 렌즈별 값을 보겠습니다.
이 항목의 값은 정확하게 파악할 수 없지만, 일단 단렌즈는 딱 한 값만을 가집니다. 그런데, 줌렌즈들은 더 많은 값들을 갖는다는 것인데… 현재 DPReview 삼성동에 올라온 자료를 같이 참고 한다면, 줌 구간별 초점 거리를 나타낸 것으로 추측됩니다. NX 바디는 줌렌즈의 경우 전체를 18개의 구간으로 나눠서 구분하는 것으로 추측됩니다.
이건 좀 더 파악을 해봐야 할 것 같습니다.
3단계: 항목 2 – 렌즈의 실제 개방 조리개 정보 요구/수신 (NX1 만 해당)
- 바디에서 렌즈로 가는 데이터 (3번 핀, DCL 데이터) : 05 10 0D 60 0F
- 렌즈에서 바디로 가는 데이터 (2번핀, DLC 데이터)
- Byte 1 : 전체 패킷 크기 (Byte)
- Byte 2 – 3 : 0x02 0x01 ( OK 상태)
- Byte 4 – 6 : 무조건 0x00 0x00 0x00
- Byte 7 : 뒤 이어 나올 1 Byte 짜리 데이터 항목 갯수
- Byte 8 – (마지막 -1) : 1바이트 짜리 정보
- 마지막 Byte : checksum. Byte 4부터 모든 Byte를 더한 1 Byte 값
이렇게 구성됩니다. 일단 렌즈별 값을 보겠습니다.
이 것도 이전 항목과 비슷한 양상입니다. 다만, 데이터가 2바이트 단위가 아니고, 한 바이트 단위라는 것이 다릅니다.
역시 줌렌즈의 경우 18개로 나눠서 구분을 합니다.
값을 보면 뭔가 좀 유사한 측면이 보입니다. 예를 들어 16-50PZ 렌즈는 조리개 값이 3.5 – 5.8 인데, 요 값을 보면 0x3B – 0x52 값을 보이고, 같은 조리개 값을 갖는 18-55 번들 렌즈도 같은 값을 갖습니다.
요것도 좀 더 파악을 해봐야 할 것 같습니다.
이어지는 항목들은 2단계의 블록 4 : 지원 특성 정의 테이블에서 정의한 각 항목이 다시 질의 되는 형태를 가집니다. 이 부분은 렌즈별로 서로 다른 종류의 질의들이 올라오고 있습니다.
앞선 1편에서 설명드릴 때, 사용한 이미지이지만, 다시 한번 그 표를 보면, 그러니까, 5001, 5002, 5003, 5007, 5008, 5009가 거의 공동적으로 모든렌즈에서 나열되어 있지만, 그 후부터는 일부 렌즈에만 있기도 하고 없기도 한 항목들이 보입니다.
모두 나열하기는 좀 양이 많아지고, 몇 가지만 열거해 보겠습니다.
3단계: 항목 5001 – 모든 바디, 렌즈에 해당
- 바디에서 렌즈로 가는 데이터 (3번 핀, DCL 데이터) : 05 10 06 50 01
- 렌즈에서 바디로 가는 데이터 (2번핀, DLC 데이터)
- Byte 1 : 전체 패킷 크기 (Byte) – 0x0F
- Byte 2 – 3 : 0x02 0x01 ( OK 상태)
- Byte 4 – 12 : 0x00 0x02 0x01 0x00 0x00 0x02 0x00 0x04 0x00 0x01 0x02 0x03
이 패킷은 모든 렌즈 모든 바디에 공통적으로 요구되는 첫번째 항목입니다. 모두 같은 값을 가지는데, 저 항목의 데이터가 의미하는 것은 전혀 모르겠네요. ㅎㄷㄷㄷㄷ
3단계: 항목 5007 – 최대 최소 초점 위치(?)
- 바디에서 렌즈로 가는 데이터 (3번 핀, DCL 데이터) : 05 10 06 50 07
- 렌즈에서 바디로 가는 데이터 (2번핀, DLC 데이터)
- Byte 1 : 전체 패킷 크기 (Byte) – 0x0F
- Byte 2 – 3 : 0x02 0x01 ( OK 상태)
- Byte 4 – 6 : 0x00 0x04 0x20
- Byte 7 – 10 : 0x?? 0x?? 0x?? 0x?? <– 렌즈 마다 다르지만 의미 파악이 안된 값
- Byte 11 : 0x01
- Byte 12 – 13 : 0x?? 0x?? <– 렌즈 무한대 초점 위치 값
- Byte 14 – 15 : 0x?? 0x?? <– 렌즈 최소거리 초점 위치 값
- Byte 16 – 17 : 0x00 0x01
이 패킷은 모든 렌즈 모든 바디에 공통적으로 요구되는 항목입니다. 의미파악이 되지 않는 4바이트 값이 있긴 한데, 2개의 중요한 무한대 초점에서 초점 위치값과 렌즈 최소거리 초점 위치 값을 포함하고 있는 아주 중요한 패킷입니다.
아래는 각 렌즈별 값입니다.
3단계: 항목 5008 – 줌렌즈 단렌즈 구별값(?)
- 바디에서 렌즈로 가는 데이터 (3번 핀, DCL 데이터) : 05 10 06 50 08
이 패킷은 기본 적으로 같은 구조입니다. 중간에 렌즈/바디별로 다른 값을 가지는 항목이 있는데, 무엇을 의미하는지는 파악되지는 않습니다. 다만 연두색으로 표현된 부분은 공통적으로 줌렌즈의 경우 0x12 값을, 단렌즈인 경우 0x01값을 가집니다. 아래 도표를 보시면 좀더 이해가 쉬울 겁니다.
아래는 각 바디/렌즈별 값입니다.
3단계: 항목 5009 – 최대 조리개, 최소 조리개값
- 바디에서 렌즈로 가는 데이터 (3번 핀, DCL 데이터) : 05 10 06 50 09
이 패킷은 기본 적으로 같은 구조입니다. 이 패킷의 나머지는 바디/렌즈 종류를 막론하고 모두 같은 값을 가지지만, 마지막 두개 바이트만 다른 값이 있습니다. 아래 하늘색 바이트가 최대 조리개값 인덱스, 녹색이 최소 조리개값 인덱스로 보여집니다.
한가지 주의해서 봐야할 것은 이 값은 절대적인 조리개 값이 아니라, 조리개 단계별 값이라고 보는 것이 맞습니다. 예를 들어 16-50PZ의 경우 값의 범위가 0x01부터 0x1A 즉, 26단계가 있다는 의미이구요, 45.8렌즈의 경우 0x01부터 0x24, 즉, 총 32단계로 조리개 조절이 된다는 의미입니다.
아래는 각 바디/렌즈별 값입니다.
이 후 값들은 어떤 렌즈에선 있고 어떤 렌즈는 없고… 값이 지칭하는 의미도 파악이 되지 않는 패킷들이 있습니다.
이렇게 3단계가 끝나면 4단계에선 렌즈의 조리개 초기화 단계로 들어갑니다.
조리개 콘트롤에 대한 것은 나중에 셔터 동작과 관련해 따로 정리를 하도록 하겠습니다.
이 정도로 NX 바디가 렌즈를 인증하고 데이터를 수집하는 부팅 과정에 대한 설명을 마칠까 합니다.
참고삼아, 16-50PZ가 NX1에 물려서 전원이 켰을 때, 3단계까지 진행되는 총 덤프를 올려보겠습니다. 혹시 관심이 있으신 분이 계실까요? ㅎㄷㄷㄷ
DCL : 0x03 0xAA 0x55
DLC : 0x03 0xAA 0x55
DCL : 0x03 0x10 0x01 0x00
DLC : 0x20 0x01 0x00 0x64 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x1F 0x00 0x00 0x00
0x0E 0x10 0x01 0x10 0x05 0x10 0x06 0x10 0x07 0x10 0x08 0x10 0x09 0x10 0x0C 0x10
0x0D 0x11 0x01 0x11 0x02 0x11 0x0B 0x11 0x03 0x11 0x04 0x11 0x09 0x00 0x00 0x00
0x05 0x40 0x01 0x40 0x02 0x40 0x03 0x40 0x04 0x40 0x06 0x00 0x00 0x00 0x0E 0x50
0x01 0x50 0x02 0x50 0x03 0x50 0x07 0x50 0x08 0x50 0x09 0x50 0x0A 0x50 0x0C 0x50
0x0D 0x50 0x0E 0x50 0x10 0x50 0x11 0x50 0x13 0x50 0x14 0x00 0x00 0x00 0x1E 0x60
0x01 0x60 0x02 0x60 0x03 0x60 0x04 0x60 0x05 0x60 0x06 0x60 0x07 0x60 0x08 0x60
0x09 0x60 0x0A 0x60 0x0B 0x60 0x0C 0x60 0x0D 0x60 0x0E 0x60 0x0F 0x60 0x10 0x60
0x11 0x60 0x12 0x60 0x13 0x60 0x14 0x60 0x16 0x60 0x17 0x60 0x18 0x60 0x1A 0x60
0x1B 0x60 0x19 0x60 0x1C 0x60 0x1D 0x60 0x24 0x60 0x25 0x00 0x00 0x00 0x04 0x70
0x01 0x70 0x02 0x70 0x03 0x70 0x04 0x28 0x53 0x41 0x4D 0x53 0x55 0x4E 0x47 0x3F
0x3F 0x4E 0x58 0x20 0x31 0x36 0x2D 0x35 0x30 0x6D 0x6D 0x20 0x46 0x33 0x2E 0x35
0x2D 0x35 0x2E 0x36 0x20 0x50 0x6F 0x77 0x65 0x72 0x20 0x5A 0x6F 0x6F 0x6D 0x00
0x07 0x58 0x4C 0x31 0x34 0x30 0x31 0x00 0x0C 0x30 0x31 0x2E 0x33 0x30 0x5F 0x30
0x31 0x2E 0x35 0x30 0x00 0x0D 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x??
0x?? 0x?? 0x??
DCL : 0x05 0x10 0x0D 0x60 0x0C
DLC : 0x2C 0x20 0x01 0x00 0x00 0x00 0x12 0x01 0x4A 0x01 0x57 0x01 0x6E 0x01 0x88 0x01
0xA2 0x01 0xBF 0x01 0xDE 0x02 0x00 0x02 0x24 0x02 0x49 0x02 0x73 0x02 0x9F 0x02
0xCD 0x02 0xFE 0x03 0x35 0x03 0x6E 0x03 0xAA 0x03 0xCA 0x6A
DCL : 0x05 0x10 0x0D 0x60 0x0F
DLC : 0x1A 0x20 0x01 0x00 0x00 0x00 0x12 0x3B 0x3C 0x3D 0x3F 0x40 0x41 0x43 0x44 0x45
0x47 0x48 0x4A 0x4B 0x4D 0x4E 0x50 0x51 0x52 0x04
DCL : 0x05 0x10 0x06 0x50 0x01
DLC : 0x0F 0x20 0x01 0x00 0x02 0x01 0x00 0x00 0x02 0x00 0x04 0x00 0x01 0x02 0x03
DCL : 0x05 0x10 0x06 0x50 0x02
DLC : 0x0D 0x20 0x01 0x00 0x02 0x01 0x01 0x01 0x02 0x00 0x02 0x00 0x01
DCL : 0x05 0x10 0x06 0x50 0x03
DLC : 0x0D 0x20 0x01 0x00 0x02 0x01 0x00 0x00 0x02 0x00 0x02 0x00 0x01
DCL : 0x05 0x10 0x06 0x50 0x07
DLC : 0x11 0x20 0x01 0x00 0x04 0x20 0x03 0xE8 0x03 0xE8 0x01 0x03 0x25 0x12 0x77 0x00
0x01
DCL : 0x05 0x10 0x06 0x50 0x08
DLC : 0x0C 0x20 0x01 0x00 0x02 0x00 0x01 0x01 0x01 0x01 0x12 0x01
DCL : 0x05 0x10 0x06 0x50 0x09
DLC : 0x0C 0x20 0x01 0x00 0x02 0x20 0x01 0x01 0x01 0x01 0x1A 0x01
DCL : 0x05 0x10 0x06 0x50 0x0A
DLC : 0x0E 0x20 0x01 0x00 0x02 0x01 0x02 0x01 0x02 0x00 0x03 0x00 0x01 0x02
DCL : 0x05 0x10 0x06 0x50 0x0C
DLC : 0x0D 0x20 0x01 0x00 0x02 0x01 0x00 0x00 0x02 0x00 0x02 0x00 0x01
DCL : 0x05 0x10 0x06 0x50 0x0D
DLC : 0x0F 0x20 0x01 0x00 0x02 0x01 0x01 0x01 0x02 0x00 0x04 0x00 0x01 0x10 0x11
DCL : 0x05 0x10 0x06 0x50 0x0E
DLC : 0x12 0x20 0x01 0x00 0x02 0x01 0x00 0x00 0x02 0x00 0x07 0x00 0x01 0x02 0x03 0x05
0x0A 0x1E
DCL : 0x05 0x10 0x06 0x50 0x10
DLC : 0x0D 0x20 0x01 0x00 0x02 0x01 0x00 0x00 0x02 0x00 0x02 0x00 0x01
DCL : 0x05 0x10 0x06 0x50 0x11
DLC : 0x11 0x20 0x01 0x00 0x04 0x00 0x01 0x00 0x01 0x00 0x01 0x01 0x00 0x12 0x00 0x00
0x01
DCL : 0x05 0x10 0x06 0x50 0x13
DLC : 0x11 0x20 0x01 0x00 0x02 0x01 0x03 0x03 0x02 0x00 0x06 0x00 0x01 0x02 0x03 0x04
0x05
DCL : 0x05 0x10 0x06 0x50 0x14
DLC : 0x0E 0x20 0x01 0x00 0x02 0x01 0x00 0x00 0x02 0x00 0x03 0x00 0x01 0x02