IoT (9) - DAC43701 8-Bit DAC

Updated:

9. DAC43701 8-Bit DAC

9.1 DAC 란?

DACDigital-to-Analog Converter 의 약자로 디지털 신호를 아날로그 신호로 변환해주는 장치를 가리킨다. 임베디드 컨트롤러 (MCU) 등의 디지털 회로는 0 또는 1의 디지털 신호만을 다룰 수 있기 때문에, 기본적으로는 연속적으로 표현되는 아날로그 신호는 다룰 수 없다. DAC 는 디지털 회로에서 아날로그 신호를 생성하는데 사용되는 장치이며 대개 0 에서 VDD 사이의 아날로그 전압을 생성하기 위해 사용된다 (출력 소자).

이와 반대로 Analog-to-Ditigal Converter (ADC)는 아날로그 신호를 디지털 신호로 변환해주는 장치이며, ADC의 경우는 외부 전압을 생성하기 보다는 외부의 아날로그 전압을 임베디드 프로세서와 같은 디지털 회로에서 측정하기 위해 사용된다 (입력 소자).

임베디드 기기에서는 ADC 혹은 DAC 모듈이 내장되어 있는 경우도 있지만, 구현하는 어플리케이션의 요구사항이 제각각이기 때문에.. 실제로는 별도의 모듈을 사용해야하는 경우가 빈번하다. 이번 포스트에서는 Texas Instrument 사에서 만든 DAC43701 DAC 의 주요 레지스터에 대해 간략하게 소개하려고 한다.

제품 상세 스펙 및 데이터 시트는 아래의 링크를 참고하면 된다.

https://www.ti.com/product/DAC43701


9.2 DAC43701 I2C interface

먼저, DAC43701 DAC 모듈의 경우는 I2C 통신으로 제어하므로 레지스터에 대해 알아보기 전에 I2C Slave Address 를 확인해야한다. 이러한 정보는 데이터 시트에 정리되어있는데 아래 그림에서 볼 수 있듯이, DAC43701 모듈의 7-bit 주소가 10010 으로 시작되는 것을 확인할 수 있다.

데이터 시트를 확인해보면 D2h (or 0xD2) 번지 레지스터를 이용해서 AD1, AD0 값을 설정할 수 있는데 초기 값은 00으로 설정되어 있으므로, 해당 레지스터를 따로 건들지 않는 이상은 DAC43701 모듈의 I2C Slave Address 는 1001000 가 될 것이다 (0x48).

DAC43701 모듈의 I2C 주소 값을 확인했다면, I2C 통신으로 DAC 모듈을 제어하면 된다. 또한 아래 그림에서 볼 수 있듯이, 실질적으로 Master 기기 (e.g. 임베디드 프로세서) 에서 제어해야하거나 접근 가능한 레지스터 수도 많지 않기 때문에, 제어하는데 크게 어려운 부분은 없다.

한 가지 특이한 점이라고 하면.. 개인적으로 제어했었던 I2C 통신 기반의 모듈의 경우 대부분 1 Byte (= 8 Bits) 단위로 쓰거나 읽는 기기가 많았는데, DAC43701 모듈의 경우는 2 Bytes 단위로 레지스터를 제어해야한다. (물론 명령어를 주고 받는 원리 자체는 1 Byte 단위의 모듈과 동일하다)


9.3 DAC43701 주요 레지스터

  • D1h : GENERAL_CONFIG Register

DAC 출력을 제어하는 간격이나 속도, 출력 이득 (gain) 값, 동작 모드 등 기본적인 동작을 제어하는데 사용된다. 처음 DAC43701 모듈에 전원이 들어오면, D1h 레지스터의 DAC_PDN 영역이 10 으로 설정되어 있으며, DAC 기능을 활성화하기 위해서는 해당 영역의 값을 00 으로 설정해줘야 한다. 또한, DAC 출력 전압에 영향을 주는 이득 값을 설정할 수 있는 DAC_SPAN bits 도 D1h 레지스터 내에 있다.

  • 21h : DAC_DATA

DAC 출력 전압을 결정하는 레지스터로 DAC43701 모듈에서는 해당 레지스터 내 [11:4] 번째까지 총 8 bits 의 값을 입력할 수 있다.

  • DAC43701 출력 전압

DAC 출력 전압은 아래의 그림과 같은 식으로 결정된다.

출력 전압 계산에 사용되는 Reference 전압으로는 VDD 또는 VREF 를 사용할 수 있고, 이는 D1h 레지스터의 REF_EN 영역의 값에 따라 결정된다. 전원으로 공급되는 VDD 전압 값을 Reference 로 사용하는 경우에는 외부 전압 변화에 따라 DAC 출력이 흔들릴 수 있는데 반해, 내부 전압을 Reference 로 사용하는 경우에는 비교적 안정적으로 출력 전압 값을 유지할 수 있다.

DAC43701 모듈에서 DAC_DATA 영역의 크기는 8 bits 이므로, 출력 전압은 DAC_DATA 값에 따라 1/256 의 비율씩 변화하며, 출력 이득 (GAIN) 값에 따라 VOUT 이 변하는 간격이나 범위가 달라진다.

GAIN = 1.5x / VOUT Range: 0, 7.09 mV, ..., 1.81 V
GAIN = 2x   / VOUT Range: 0, 9.45 mV, ..., 2.41 V
GAIN = 3x   / VOUT Range: 0, 14.2 mV, ..., 3.62 V
GAIN = 4x   / VOUT Range: 0, 18.9 mV, ..., 4.82 V

NOTICE: 참고로 내부 전원을 Reference 로 사용하는 경우 출력 이득 값에 따라 VOUT 범위가 달라지지만, 외부 공급 전원 (VDD) 이상의 전압을 출력으로 생성하지는 못한다.

Comments