본문 바로가기
DSP, MCU/펌웨어

BH2227FV, D/A Converters 데이터시트 분석

by eteo 2024. 5. 5.

 

 

 

BH2227FV는 Rohm사의 DAC 칩으로 MCU의 DAC 채널이 모자른 경우 사용할 수 있다.

 

  • 8bit 해상도를 가지고 R-2R-type D/A Convert를 4채널 가진다. R-2R-type DAC에 대해선 밑에서 설명하겠다.
  • 2개의 독립적인 파워소스를 사용할 수 있으며 최적화된 파워소스는 3V/5V인데 2.7V에서 5.5V까지는 허용된다.
  • built-in 리셋 기능이 있어서 power up 동안 모든 채널이 LOW 출력하는게 보장된다.
  • 3선식 serial interface를 사용한다.

 

 

 

 

 

 

 

 

 

 

R-2R-type D/A Convert란?

 

Binary Weighted DAC라고도 하는데 모든 디지털 비트에 대해 R과 그 2배인 2R 이렇게 두 개의 저항으로 구성되며, 비트 입력이 많을 수록 즉, 분해능이 높을수록 이 R-2R조합을 사다리 모양으로 나열해 구성한다. 비트 입력 지점에는 스위치가 있어서 디지털 입력이 1인 경우 Vref에 연결되고 0인 경우 GND에 연결되어 Binary 입력 가중치에 따라 출력이 조절되는 식이다.

 

 

 

 

 

 

 

핀 구성과 블락 다이어그램은 다음과 같다. AO1-AO4 총 4개의 아날로그 출력 터미널이 있고 AO1, AO2는 VFS 파워소스를 사용하고 AO3, AO4는 VDD 파워소스를 사용한다.

 

시리얼 인터페이스에는 CSB, CLK, DI 핀이 사용된다. 일반적인 SPI Interface에서 MISO만 연결 안하는 구조이다.

 

 

 

 

 

 

 

다음 전기적 특성을 살펴보자.

 

VDD, VFS 공급 범위는 위에서 언급한 것처럼 2.7~5.5V이고 (Note 2)에 Vdd >= Vfs 이어야 한다고 나와있다. 즉, 둘을 동일한 Voltage로 공급해도 되긴하지만 만약 풀스케일 출력이 3V인거 두 채널, 5V인거 두 채널을 쓰고 싶으면 VFS를 3V, VDD를 5V 공급해야 된다는 의미이다.

Data Transfer Frequency는 최대 10MHz이다.

 

로직 인터페이스의 Vil, Vih는 0.6, 2.4로 3.3V MCU의 시리얼 라인으로 인터페이스가 가능하다.

 

 

 

 

 

 

 

 

타이밍 차트를 보자.

 

대부분 Min값이 50ns 내외로 SPI 모듈을 10MHz로 설정해 쓰면 크게 신경쓸게 없을 것 같다.

 

특징적으로 볼만한 건 D/A Output Setting Time이 100us이다. 즉, 시리얼 인터페이스로 아날로그 출력값 설명 명령을 전송하고 CS핀이 HIGH로 올라간 순간부터 100us가 지나야 설정한 출력값이 실제로 나간다는 것이다.

 

 

 

 

 

 

 

 

다음 실제로 작동 방식을 살펴보자.

 

시리얼 인터페이스에 CSB, CLK, DI 세 라인이 사용된다. 모든 커맨드는 DI라인을 통해 전송되는 12bit 데이터로 구성되는데 MSB first 방식으로 전송되며, CSB가 LOW동안 CLK의 rising edge에 DI 데이터가 읽히고 CSB가 다시 HIGH로 올라가는 순간 12bit 데이터가 래치된다.

 

근데 그림을 보면 CSB가 LOW로 떨어진 후에 첫번째 CLK의 상승엣지는 무시되는 것 같은데 이부분은 실제 확인해봐야겠다.

 

D8-D11은 출력채널 선택에 쓰이고 D0-D7의 8bit는 아날로그 출력값 설정에 쓰인다.  MSB first이기 때문에 D11을 먼저 전송하고 D0까지 순차 전송하는 식이다.

 

D0-D7의 데이터는 8bit 해상도 DAC니까 0-255 사이에 값을 선택하면 된다. 표에도 나와있지만 세팅 값이 0이면 GND 출력, 255면 Full scale이 출력이고, 세팅값이 127인데 파워소스가 5V이면 (5-0)/256*127인 약 2.48V가 출력될 것다.

 

아무튼 한번에 한 채널의 출력만 세팅할 수 있기 때문에 만약에 AO1-AO4 총 4개의 채널을 한꺼번에 설정하고 싶으면 커맨드를 4번에 걸쳐 보내야 겠다.