본문 바로가기

PROJECT/ex347_project

LDD_Part 3-3. ADC 디바이스 드라이버

ADC (Analog to Digital Conversion) 디바이스 드라이버는 아날로그신호를 디지털 신호로 바꿔준다.

디바이스 드라이버를 짤때는 항상 봐야 하는 것이 Datasheet 와 Manual 이다.

지금 프로젝트 시에 사용한 s3c2440 soc 칩을 기준으로 어떻게 해결해 나갔는지 정리해보자.

s3c2440는 Datasheet를 열어보면 Figure 16 에 ADC&Touch Screen Interface라는 제목으로 ADC에 대한 내용을 다루고 있다.
 
제목을 보면 알겠듯이 ADC와 Touch Screen 을 같이 사용하고 있음을 볼 수 있다.

mini2440보드는 ADC를 쓰기위해서 사용되는 레지스터가 총 6개이다.

ADCCON - ADC control register
ADCTSC - ADC touch screen control register
ADCDLY - ADC start delay register
ADCDAT0 - ADC conversion data register
ADCDAT1 - ADC conversion data register
ADCUPDN - ADC touch screen up-down int check register


위와 같이 총 6개의 레지스터를 간략히 정리해 보면...

ADCCON은 ADC를 제어하고,
ADCTSC는 터치스크린을 제어한다.(터치스크린으로 사용할지 결정함)
ADCDLY는 딜레이를 가해줄때 사용한다.
ADCDAT0과 ADCDAT1은 변환된 결과값을 받아온다.
(터치스크린을 사용하지 않는 Normal의 경우 ADCDAT0으로 결과값을 받는다.)
ADCUPDN은 터치스크린 사용시 터치스크린의 터치를 체크한다.

 
위와 같이 정리된 것을 보면 사용하는데 어려움이 없을 것이다.

이번 프로젝트에서는 3축 가속센서로부터 결과값을 받아서 ADC드라이버를 거쳐서 디지털 값을 얻어야 한다.

3축 가속센서 모듈을 사용하려면 당연히 메뉴얼을 봐야 한다.(이것은 차후 정리...)
3축가속센서모듈은 x,y,z 축으로 가속이 생기면 그 값을 아날로그 신호로 출력한다.

3축가속센서를 사용하면 터치스크린을 사용하는 것이 아니기 때문에 Normal모드로 사용해야 한다.
그러면 우리는 몇개의 레지스터를 사용하지 않게 된다.
(ADCDAT1 과 ADCUPDN 은 사용할 필요가 없어짐.)
그리고 굳이 딜레이 값도 넣어주지 않아도 된다.
(ADCDLY 를 사용할 필요가 없어짐.)
이렇게 우리가 사용할 레지스터는 ADCCON, ADCTSC, ADCDAT0 로 줄어 들었다.

ADCCON을 ADC를 제어하기 위해 사용하고,
ADCTSC는 Normal 모드로 사용하게 설정하기 위해 사용하고
ADCDAT0은 결과값을 받아오기위해 사용한다.

이제는 소스코드만 보면 모든것이 이해될 것이다!!^──^,,