연기 감지 센서 ADPD188 사용하기 – 3

클럭 및 타이밍 보정

32kHz 클럭 보정

이 절차는 출력 데이터 속도와 관련된 항목들을 보정합니다. 정확한 데이터 속도가 중요한 항목에서는 이 클럭의 보정이 중요합니다. 다음 단계에 따라 32kHz 클럭을 보정할 수 있습니다:

  1. 시스템이 처리할 수 있는 가장 높은 샘플링 주파수(예: 2000Hz)로 샘플링 주파수를 설정합니다. 32kHz 클럭은 샘플 타이밍을 제어하며, 이 주파수는 GPIO0 핀을 통해 쉽게 접근할 수 있습니다. 레지스터 0x02의 Bits[2:0]에 적절한 값을 써서 인터럽트를 구성하고, 레지스터 0x01의 Bit 5 또는 Bit 6에 0을 써서 샘플링 주파수에서 인터럽트가 발생하도록 설정합니다. GPIO0 핀을 모니터링하여 인터럽트 주파수가 설정된 샘플링 주파수와 일치하는지 확인합니다.
  2. 모니터링된 인터럽트 주파수가 설정된 샘플링 주파수보다 낮으면 **CLK32K_ADJUST 비트(레지스터 0x4B, Bits[5:0])**를 줄입니다. 모니터링된 주파수가 더 크면 CLK32K_ADJUST 비트를 증가시킵니다.
  3. 모니터링된 인터럽트 신호 주파수가 설정된 샘플링 주파수와 가까워질 때까지 1단계를 반복합니다.

32MHz 클럭 보정

이 절차는 샘플 기간 내의 세부 타이밍과 관련된 항목들(예: LED 펄스 폭 및 간격)을 보정하며, 32kHz 클럭이 이미 보정되었음을 전제로 합니다. 32MHz 클럭을 보정하려면 다음 단계를 따릅니다:

  1. 레지스터 0x5F, Bit 0에 0x1을 씁니다.
  2. CLK_RATIO 계산을 활성화하려면 레지스터 0x50, Bit 5 (CLK32M_CAL_EN)에 0x1을 씁니다. 이 기능은 32kHz 클럭의 두 사이클 동안 32MHz 클럭 사이클 수를 셉니다. 이 기능이 활성화되면, 이 값은 레지스터 0x0A, Bits[11:0]에 저장되며, 이 비율은 일반적으로 2000(0x07D0)입니다.
  3. 다음 공식을 사용하여 32MHz 클럭 오차를 계산합니다:
    클럭 오차 = 32MHz × (1 − CLK_RATIO/2000)
  4. 다음 식을 사용하여 레지스터 0x4D의 Bits[7:0]에 주파수를 조정합니다:
    CLK32M_ADJUST = 클럭 오차 / 109kHz
  5. 레지스터 0x50, Bit 5에 0x0을 써서 CLK_RATIO 기능을 재설정합니다.
  6. 원하는 정확도가 달성될 때까지 1단계부터 5단계까지 반복합니다.
  7. 레지스터 0x5F, Bit 0에 0x1을 써서 GPIO0 핀을 정상 작동 모드에 맞게 재설정합니다.

이 절차는 32kHz와 32MHz 클럭을 보정하여 정확한 타이밍과 성능을 제공합니다.

GPIO0 및 GPIO1에서 사용할 수 있는 선택적 타이밍 신호

GPIOx 제어 설정 (Table 16)

핀 이름레지스터, 비트설정 값설명
GPIO00x02, Bit 00: 극성 액티브 하이
1: 극성 액티브 로우
0x02, Bit 10: 항상 버스를 구동함
1: 어설트 시 버스를 구동함
0x02, Bit 20: GPIO0 핀 드라이브 비활성화
1: GPIO0 핀 드라이브 활성화
GPIO10x02, Bit 80: 극성 액티브 하이
1: 극성 액티브 로우
0x02, Bit 90: 항상 버스를 구동함
1: 어설트 시 버스를 구동함
0x4F, Bit 60: GPIO1 핀 드라이브 비활성화
1: GPIO1 핀 드라이브 활성화

타이밍 신호 제어

다양한 타이밍 신호는 레지스터 0x0B의 설정을 통해 제어됩니다. 이 레지스터의 **Bits[12:8]**은 GPIO1에서 사용할 수 있는 타이밍 신호를 제어하고, **Bits[4:0]**은 GPIO0에서 사용할 수 있는 타이밍 신호를 제어합니다. 데이터 시트에 설명된 모든 타이밍 신호는 GPIO0, GPIO1 중 하나 또는 양쪽 모두에서 사용할 수 있습니다. 타이밍 다이어그램은 Figure 33Figure 34에 표시되어 있으며, 해당 타이밍 다이어그램에서 사용된 타임 슬롯 설정은 다음과 같습니다.

타이밍 다이어그램에 사용된 ADPD188BI 설정 (Table 17)

레지스터설정 값설명
0x310x0118타임 슬롯 A: 1개의 LED 펄스
0x360x0418타임 슬롯 B: 4개의 LED 펄스
0x150x0120타임 슬롯 A decimation = 4, 타임 슬롯 B decimation = 2

이 설명은 GPIO 핀을 통해 다양한 타이밍 신호를 설정하고 사용할 수 있는 방법을 다루고 있습니다.

다음은 ADPD188BI의 GPIO 핀을 통해 사용할 수 있는 다양한 기능과 설정에 대한 설명입니다.

인터럽트 기능

레지스터 **0x0B의 Bits[12:8] 또는 Bits[4:0]**에 0x01을 설정하면, 해당 핀을 레지스터 0x01의 설정에 정의된 대로 인터럽트 기능을 수행하도록 구성합니다.

샘플 타이밍

레지스터 **0x0B의 Bits[12:8] 또는 Bits[4:0]**에 0x02를 설정하면, 해당 핀에서 현재 샘플의 첫 번째 타임 슬롯이 시작될 때 신호가 발생하고, 마지막 타임 슬롯이 끝날 때 신호가 해제됩니다. 예를 들어, 두 타임 슬롯이 활성화된 경우, 이 신호는 타임 슬롯 A의 시작에서 발생하고, 타임 슬롯 B의 끝에서 해제됩니다. 한 타임 슬롯만 활성화된 경우, 해당 타임 슬롯의 시작에서 신호가 발생하고, 동일한 타임 슬롯의 끝에서 해제됩니다.

펄스 출력

LED 펄스 출력을 복사하는 세 가지 옵션이 있습니다:

  • 0x05: 타임 슬롯 A의 LED 펄스를 해당 핀에 복사.
  • 0x06: 타임 슬롯 B의 LED 펄스를 해당 핀에 복사.
  • 0x07: 두 타임 슬롯의 펄스를 해당 핀에 복사.

출력 데이터 사이클 신호

출력 데이터가 출력 데이터 레지스터나 FIFO에 기록될 때 신호를 제공하는 세 가지 옵션이 있습니다:

  • 0x0C: 타임 슬롯 A에 대한 데이터가 기록되었음을 나타내는 신호.
  • 0x0D: 타임 슬롯 B에 대한 데이터가 기록되었음을 나타내는 신호.
  • 0x0E: 어느 타임 슬롯에서든 데이터가 기록되었음을 나타내는 신호.

이 신호는 타임 슬롯이 끝날 때 발생하며, 다음 샘플이 시작될 때 해제됩니다. 특히 FIFO를 사용하는 경우 이 신호는 유용합니다. 예를 들어, GPIOx 핀 하나는 FIFO 임계값에 도달했을 때 인터럽트를 제공하도록 설정할 수 있고, 다른 GPIOx 핀은 출력 데이터 사이클 신호를 제공하도록 설정할 수 있습니다. 이 신호는 가속도계와 같은 주변 장치를 트리거하여 프로세서에 시간 정렬된 신호를 제공하는 데 사용할 수 있습니다.

fS/2 출력

레지스터 **0x0B의 Bits[12:8] 또는 Bits[4:0]**에 0x0F를 설정하면, 해당 핀에서 샘플링 속도의 절반(fS/2)으로 토글되는 신호가 출력됩니다. 이 신호는 장치가 대기 모드에서 정상 작동 모드로 전환될 때 항상 액티브 로우 상태로 시작하고, 첫 번째 샘플 완료 시 액티브 하이로 전환됩니다.

로직 0 출력

레지스터 **0x0B의 Bits[12:8] 또는 Bits[4:0]**에 0x10을 설정하면, 해당 핀에서 로직 0 출력이 제공됩니다.

로직 1 출력

레지스터 **0x0B의 Bits[12:8] 또는 Bits[4:0]**에 0x11을 설정하면, 해당 핀에서 로직 1 출력이 제공됩니다.

32kHz 오실레이터 출력

레지스터 **0x0B의 Bits[12:8] 또는 Bits[4:0]**에 0x13을 설정하면, 해당 핀에서 온보드 32kHz 오실레이터의 복사본 신호가 제공됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다