요술고양이의 Digital Life


이전 포스트에서는  FET(또는 TR)과 ADC를 이용하여 터치스크린을 쓰는 방법을 올렸는데
이번엔 TI社의 TSC2003라는 컨트롤러를 이용해서 사용하는 법에 대하여.. 아주 간략(?)하게 올려보겠습니다.

그럼 먼저 특징부터 살펴보겠습니다.

2.5V TO 5.25V OPERATION
◆ INTERNAL 2.5V REFERENCE
◆ DIRECT BATTERY MEASUREMENT(0.5V TO 6V)
◆ ON-CHIP TEMPERATURE MEASUREMENT
◆ TOUCH-PRESSURE MEASUREMENT
◆ I2C INTERFACE SUPPORTS:
◆ Standard, Fast, and High-Speed Modes
◆ AUTO POWER DOWN
◆ TSSOP-16 AND VFBGA-48 PACKAGES

 간단하게 살펴보면 2.5~5.25V 동작 범위를 가지며, 터치스크린의 좌표뿐만 아니라 온도, 배터리, 터치스크린의 압력까지 잴 수 있다고 하는군요! 그리고 I2C를 이용하여 통신을 할 수 있는 것을 알 수 있습니다.

그럼 TSC2003의 핀 다이어그램을 살펴보겠습니다. 패키지는 TSSOP-16으로 16핀 디바이스인데..
저는 점퍼선 날려서 힘들게 납땜하여 사용해보았는데 깔끔한? 마무리와 정신건강을 위해 변환 기판을 사용하시길 바랍니다.



[그림 1] TSC2003 핀 다이어그램



아래는 TSC2003 레퍼런스 회로도 입니다.


[그림 2] TSC2003 레퍼런스 회로도



 TSC2003은 위 레퍼런스 회로도 구성으로 동작이 잘 되는데, 만약 위의 회로도와 같은 저항이 없을 경우.. 대체용으로 I2C 핀에는 10 ~ 20k 정도면 될 것 같고.. /PENIRQ 핀의 경우는 데이터시트를 참고하면 30K~100K 범위에서 선택을 하도록 되어있습니다.

 휴대용 기기가 아니거나 배터리 측정을 하지 않을 것이라면.. 전원핀을 제외하고 터치스크린과 연결하기 위한 X+, X-, Y+, Y- 핀과 I2C 통신용 SCL, SDA 핀과 /PENIRQ핀 정도 사용하면 됩니다. (여기서 /PENIRQ는 PEN INTERRUPT 핀으로.. 터치스크린이 눌렸을 때 0으로 떨어집니다.)

 만약 한 I2C 버스 라인에 1개 이상 같이 연결할 경우는 A0, A1 핀을 이용합니다. 그렇기 때문에 한 버스라인에 총 4개를 연결 할 수 있겠습니다.
 
데이터시트에는 위 컨트롤러의 동작 및 원리가 체계적으로 잘 정리 되어있으나 간략(?)한 설명을 위해 모두 생략하고 바로 본론으로 들어가보겠습니다.

 앞서 좌표 이외에 온도, 압력등 많은 요소를 부가적으로 측정할 수 있다고 했는데.. 이 모든 것이 ADC를 멀티플렉스로 바꾸어 가며 측정을 하는 것입니다. 좌표 값 또한 ADC를 사용하며.. I2C 통신으로 컨트롤 바이트를 보내주면 해당 값에 따라 ADC가 측정할 핀을 선택하게 되고 그 선택 된 핀의 값을 돌려주게 됩니다.

 그럼 I2C 통신을 하기 위해서.. 컨트롤 바이트나 해당 어드레스 주소를 살펴보겠습니다.
I2C 통신에 대해 잘 모르시는 분은..  참고 : http://cafe.naver.com/micropic/116 (회원가입 필요)

 먼저 어드레스 바이트입니다. 어드레스 바이트는 컨트롤러나 디바이스를 선택하기 위한 데이터로 SPI에서는 /CS(칩 셀렉트)핀을 주로 사용한다면.. I2C에서는 어드레스 바이트를 통하여 해당 컨트롤러나 디바이스 선택을 하게 됩니다. I2C에서 보통 주소크기는 7비트나 10비트 이며, TSC2003은 7비트 체계를 사용합니다.
 아래 그림과 같이 0번 비트는 읽기/쓰기를 선택하기 위한 비트로써 사용되고 있습니다.


[그림 3] TSC2003 어드레스 바이트


TSC2003의 경우는 어드레스 바이트에서 상위 4비트는 1001로 고정되어 있고, 위에 회로도에서 언급했던 A1과 A0핀 연결에 따라 하위 비트들은 가변적이 되겠습니다. 그리고 앞서 언급했던 0번째 비트는 해당 디바이스에서 읽기 작없을 할 것 인지 쓰기 작업을 할 것인지에 따라 값을 바꾸어주며 일반적으로 '1'은 읽기 '0'은 쓰기가 되겠습니다.

 그래서 I2C 버스라인에.. 1개의 TSC2003을 사용하고 읽기를 한다고할 경우 0x91(0b10010001) 값을 보내면 됩니다. 

다음은 어드레스 바이트에 이어 컨트롤 또는 커맨드 바이트 입니다. 커맨드 바이트는 보통 읽어올 데이터 위치나 레지스터를 선택하는데 많이 쓰입니다. TSC2003 커맨드 바이트는 아래와 같은 형식을 갖고 있습니다.


[그림 4] TSC2003 커맨드 바이트


• C3 - C0 : Configuration bits로 멀티플렉스로 ADC 값을 읽어올 부분을 선택합니다.


[그림 5] C3 - C0 커맨드 테이블



• PD1-PD0 : Power-down bits로 파워 관련 제어 및 /PENIRQ, Internal reference, ADC를 ON, OFF 할 수 있으며, 설정은 아래와 같습니다.


[그림 6] Power-Down 모드 테이블


PD1, PD0 = 0 으로 놓으면 lowest power mode라는데, 터치스크린이 쓸일이 없을 때는 해당 명령을 취해주시면 됩니다. 그리고 Internal reference는 ADC 비교전압의 기준을 2.5V로 삼는 것으로 외부 전압이 조금 불안정 하다면 또는 휴대용 기기에서 순간 또는 방전으로 인한 외부 전압강하가 있을 시 사용하는게 좋지 않을까 합니다.

ADC도 보면 ON, OFF를 할 수 있다고 하는데.. 실제적으로 OFF를하고 좌표 측정을 해도 측정이 잘(?) 되는데 데이터 시트에는 It is recommended to set PD0 = 0 in each command byte to get the lowest power consumption possible. 라고 명시되어 있어 배터리나 외부 아날로그 디바이스 측정을 위한 ADC를 꺼두는게 아닐까 합니다.

해석에 있어서 개인적으로 명쾌하질 못하기 때문에 이부분에 관하여서는 데이터시트를 참고하시길 바랍니다. 

• M : Mode bit. 비트로 0일 경우는 12비트 1일 경우는 8비트로 ADC가 설정이 됩니다.
• X : Don’t care.

 그럼 마지막으로 전체적인 통신 다이어그램을 보고 끝마치겠습니다.


[그림 7] TSC2003 통신 다이어그램


# 참고문헌
[1] 데이터 시트 : http://focus.ti.com/lit/ds/symlink/tsc2003.pdf
[2] TSC2003 제품 페이지 : http://focus.ti.com/docs/prod/folders/print/tsc2003.html






1

  • 감사합니다 2014.01.11 02:59 신고

    데이터시트를 봐도 회로가 잘 안들어왔는데 풀어서 설명해주신 글로 이해가 쏙쏙 되네요. ^^