반응형
ZSC31014의 EEPROM 데이터를 읽거나 쓰기 위해서는 I²C 인터페이스를 사용하여 **Command Mode(Start_CM)**로 진입한 후, 적절한 EEPROM 읽기 또는 쓰기 명령을 실행해야 합니다. 아래는 데이터시트(REN_ZSC31014_DST_20160120_1.pdf, 페이지 36~37, Table 3.6)를 기반으로 한 상세한 절차입니다.
1. I²C로 EEPROM 데이터 읽기/쓰기 절차
1.1. Command Mode 진입 (Start_CM)
- 명령: Start_CM (명령 코드: A0HEX, 데이터: 0000HEX)
- 기능: ZSC31014를 Command Mode로 전환하여 EEPROM 읽기/쓰기 명령을 실행할 준비를 합니다.
- 제약:
- 전원 켜짐(POR, Power-On Reset) 후 6ms 이내에 Start_CM 명령을 전송해야 유효합니다(페이지 37).
- Command Mode에서는 일반 측정 명령(Read_MR, Write_MR 등)이 비활성화됩니다.
- I²C 전송 형식 (페이지 36, Figure 3.9):
- 마스터: 슬레이브 주소(기본값: 28HEX, EEPROM word 02HEX 비트 [9:3]) + WRITE 비트(0).
- 슬레이브: ACK 응답.
- 마스터: 명령 코드 A0HEX 전송.
- 슬레이브: ACK 응답.
- 마스터: 데이터 00HEX (상위 바이트) 전송.
- 슬레이브: ACK 응답.
- 마스터: 데이터 00HEX (하위 바이트) 전송.
- 슬레이브: ACK 응답 후 Command Mode 진입.
- INT/SS 핀이 상승하여 명령 완료를 알림(인터럽트 활성화 시).
- 실행 시간: 약 10μs (페이지 37, Table 3.6).
1.2. EEPROM 읽기
- 명령: EEPROM 읽기 (명령 코드: 40HEX ~ 53HEX, 데이터: 0000HEX)
- 기능: 지정된 EEPROM 워드(00HEX ~ 13HEX)의 16비트 데이터를 읽습니다.
- 명령 코드:
- 각 워드에 대해 고유한 명령 코드가 할당됨(페이지 37, Table 3.6):
- 40HEX: 워드 00HEX (Cust_ID0) 읽기.
- 41HEX: 워드 01HEX (Output_Mode, Update_Rate 등) 읽기.
- ...
- 53HEX: 워드 13HEX (Cust_ID2) 읽기.
- 각 워드에 대해 고유한 명령 코드가 할당됨(페이지 37, Table 3.6):
- I²C 전송 형식:
- 명령 전송:
- 마스터: 슬레이브 주소 + WRITE 비트(0).
- 슬레이브: ACK 응답.
- 마스터: 명령 코드(예: 40HEX for 워드 00HEX) 전송.
- 슬레이브: ACK 응답.
- 마스터: 데이터 00HEX (상위 바이트) 전송.
- 슬레이브: ACK 응답.
- 마스터: 데이터 00HEX (하위 바이트) 전송.
- 슬레이브: ACK 응답.
- 데이터 읽기:
- 마스터: 슬레이브 주소 + READ 비트(1).
- 슬레이브: ACK 응답 후 3바이트 데이터 전송:
- 첫 번째 바이트: 5AHEX (고정 응답).
- 두 번째 바이트: EEPROM 데이터 상위 8비트.
- 세 번째 바이트: EEPROM 데이터 하위 8비트.
- 마스터: 각 바이트 수신 후 ACK, 마지막 바이트 후 NACK + Stop 조건.
- 명령 전송:
- 실행 시간: 약 100μs (페이지 37, Table 3.6).
- 참고:
- INT/SS 핀이 명령 완료 시 상승(인터럽트 활성화 시).
- 읽은 데이터는 16비트로, 두 번째 및 세 번째 바이트로 제공.
1.3. EEPROM 쓰기
- 명령: EEPROM 쓰기 (명령 코드: 80HEX ~ 93HEX, 데이터: 16비트 데이터)
- 기능: 지정된 EEPROM 워드에 16비트 데이터를 기록.
- 명령 코드:
- 80HEX: 워드 00HEX (Cust_ID0) 쓰기.
- 81HEX: 워드 01HEX 쓰기.
- ...
- 93HEX: 워드 13HEX (Cust_ID2) 쓰기.
- I²C 전송 형식:
- 마스터: 슬레이브 주소 + WRITE 비트(0).
- 슬레이브: ACK 응답.
- 마스터: 명령 코드(예: 80HEX for 워드 00HEX) 전송.
- 슬레이브: ACK 응답.
- 마스터: 데이터 상위 8비트 전송.
- 슬레이브: ACK 응답.
- 마스터: 데이터 하위 8비트 전송.
- 슬레이브: ACK 응답 후 데이터 기록.
- INT/SS 핀이 상승하여 명령 완료 알림.
- 실행 시간: 약 10ms (페이지 37, Table 3.6).
- 주의사항:
- T_Config(워드 10HEX), Osc_Trim(워드 11HEX)은 공장 설정값을 유지해야 하며, 변경 시 포화 또는 온도 정확도(±2.5K) 손실 가능(페이지 41).
- 고객 ID 워드(00HEX, 0EHEX, 13HEX) 덮어쓰기 전 공장 설정값(Y 좌표 등) 기록 필요(페이지 45).
1.4. Command Mode 종료 및 정상 동작 모드 복귀
- 명령: Start_NOM (명령 코드: A1HEX, 데이터: 0000HEX)
- 기능: Command Mode에서 Normal Operation Mode(Update Mode 또는 Sleep Mode)로 복귀하며, EEPROM 서명(워드 12HEX)을 업데이트.
- I²C 전송 형식:
- 마스터: 슬레이브 주소 + WRITE 비트(0).
- 슬레이브: ACK 응답.
- 마스터: 명령 코드 A1HEX 전송.
- 슬레이브: ACK 응답.
- 마스터: 데이터 00HEX (상위 바이트) 전송.
- 슬레이브: ACK 응답.
- 마스터: 데이터 00HEX (하위 바이트) 전송.
- 슬레이브: ACK 응답 후 정상 모드로 전환.
- 실행 시간:
- 일반: 약 10μs.
- EEPROM 서명 업데이트 시: 약 15ms (페이지 37, Table 3.6).
- 참고:
- EEPROM 쓰기 후 반드시 Start_NOM을 실행하여 서명(워드 12HEX)을 업데이트해야 무결성 체크 오류를 방지할 수 있습니다(페이지 25).
2. 주의사항
- 전원 재설정(POR):
- 01HEX (예: Output_Mode, ClkSpeed) 또는 02HEX (예: Slave_Addr) 변경 후 전원 재설정 필요(페이지 39).
- Command Mode 진입은 POR 후 6ms 이내에 수행해야 함.
- Comm_lock:
- 워드 02HEX 비트 [12:10]이 011로 설정된 경우 I²C 슬레이브 주소가 고정되어 변경 불가(페이지 40, 2009년 13주차 이전 부품).
- EEPROM 무결성:
- EEPROM 쓰기 후 서명(워드 12HEX)이 올바르게 업데이트되지 않으면 진단 상태(데이터 패킷의 S[1:0] = 11)로 오류 보고(페이지 24).
- 인터럽트: INT/SS 핀을 사용하여 명령 완료를 확인할 수 있으며, 이는 I²C 통신에서 유용(페이지 37).
3. 예시: 워드 01HEX 읽기
- Command Mode 진입:
- I²C 전송: [Slave_Addr, W], A0HEX, 00HEX, 00HEX.
- INT/SS 핀 상승 확인(약 10μs).
- EEPROM 워드 01HEX 읽기:
- I²C 전송: [Slave_Addr, W], 41HEX, 00HEX, 00HEX.
- I²C 읽기: [Slave_Addr, R], 5AHEX, [Data_MSB], [Data_LSB].
- 결과: Data_MSB와 Data_LSB로 16비트 데이터 수신(예: Update_Rate, ClkSpeed 등).
- Command Mode 종료:
- I²C 전송: [Slave_Addr, W], A1HEX, 00HEX, 00HEX.
- INT/SS 핀 상승 확인(약 15ms, 서명 업데이트 포함).
4. 추가 참고
- SPI에서는 EEPROM 읽기/쓰기 불가: Command Mode는 I²C 전용입니다(페이지 26, Table 3.1).
- 캘리브레이션 소프트웨어: IDT 제공 DLL을 사용하여 EEPROM 계수 계산 및 기록 가능(페이지 45).
- 문서: ZSC31014 Technical Note-Detailed Equations for Calibration Math 요청(페이지 56).
반응형