본문 바로가기

Study_Embedded

About STM TSC

728x90
반응형

0. Overview

1. About TSC

  • 유리, 플라스틱 등의 유전체와의 집적적인 Touch를 피하며 전극 근처의 유전체 접촉을 감지하는 Touch Sensing Controller
  • 유전체로 인한 Capacitive 변화는 Surface charge transfer acqusition을 통해 측정됨

1.1. TSC 주요 기능

  • Noisy한 환경에서의 측정 정확도를 위한 Spread specturm 기능
  • Programmable Sampling Capacitor, Channel I/O pin, Charge Transfer frequency
  • Channel fault 시의 긴 측정을 방지하기 위한 Programmable max count value
  • Interrupt 기능이 가능한 dedicated end of acquistion, max count error flag
  • 하나의 Sampling Capacitor는 최대 3개의 sensing channel 사용 가능

2. TSC 기능 설명

2.1. TSC 구성도

TSC Block Diagram

  • AHB(HCLK) clock source 사용

2.2. Surface Charge Transfer Acquisition overview

2.2.1 Surface Charge Transfer Acquisition 이란

  • Surface(Touch 측정 부분)에 충전된 전하(Charge)전달(Transfer)해 Touch 값을 얻는(Acquisition) 방식

2.2.2. Surface Charge Transfer Acquisition 동작 방식

  • Surface에 Touch 발생 시, 해당 부분과 연결된 캐패시터(Cx)가 충전됨(Charge)
  • 일정한 시간마다 Cx에 충전된 charge를 Sampling Capacitor(Cs)전달(Transfer)
  • Cs의 전압이 기준 값(V_IH)에 도달할 때 까지 위 과정을 반복
    • Cs의 전압이 기준 값(V_IH) 이상에 도달할 경우 Touch가 발생했음을 감지
  • 즉 Cx를 충전하고, 그 중 일부를 Cs에 전달하는 방식으로 동작
    • 이 과정은 Cs의 전압이 V_IH에 도달할 때 까지 반복됨
  • V_IH에 도달하기까지의 charge transfer 횟수가 TSC의 touch 측정값
    • Charge transfer 횟수는 Cx의 크기를 나타냄

Cs의 전압 변화에 대한 그래프

  • VSensor : Cx의 전압
  • VCs : Cs의 전압
  • V_IH : Touch 감지 V_CS 임계치

2.2.3. Surface Charge Transfer Acquistion 구조

Surface charge transfer block diagram

  • Gx_IOy : x는 Analog I/O Group을, y는 GPIO를 의미
    • 하나의 Single-ended 전극 사용
  • 하나의 Analog I/O Group은 최대 4개의 GPIO들로 구성된 Analog I/O Group을 중심으로 설계됨
    • 동시에 여러개의 Analog I/O Group을 통한 capacitive sensing 가능
    • 같은 Analog I/O Group 내에서의 측정은 순차적으로 이뤄짐
  • GPIO들 중 하나는 Sampling Capacitor(Cs) 기능을 함
    • Analog I/O Group 당 오직 하나의 Sampling Capacitor I/O가 활성화 되어야 함
    • 나머지 GPIO들은 “channel”이라 불리는, touch sensing 전극(Cx) 역할을 함
    • Proximity detection과 같은 특정 요구 조건에서는 한 Analog I/O Group 내에서 동시에 여러개의 channel 활성화 가능

Cx Channel 1(Gx_IO1)에서의 Surface charge transfer acquisition 상세 과정

  • Surface Charge Transfer Acquisition은 Cx를 충전하고, 그 중 일부를 Cs에 전달하는 방식으로 동작
    • Cs의 전압이 임계치(V_IH)에 도달할 때 까지 State 3 ~ 7을 반복
  • Cx에 직렬로 연결되는 저항 Rs는 ESD 면역성을 향상시킬 수 있음

2.3. Resets and Clocks

  • TSC는 AHB(HCLK) clock source 사용
  • Pulse Generator와 Spread Specturm 내부 Clock 생성을 위해 2개의 programmable prescaler 사용
    • PGCLK(Pulse Generator Clock) : TSC_CR 레지스터 내 PGPSC bit 통해 설정
    • SSCLK(Spread Spectrum Clock) : TSC_CR 레지스터 내 SSPSC bit 통해 설정

2.3.1 RCC 레지스터 내 TSC 관련 bit

RCC 레지스터 내 TSC 관련 bit

  • RCC(Reset and Clock Controller) 레지스터 내 TSC clock, TSC reset을 위한 bit 존재
    • RCC_AHBRSTR 레지스터 → TSCRST : TSC reset bit
    • RCC_AHBENR 레지스터 → TSCEN : TSC clock 활성화 bit

2.4. Charge Transfer Acquisition 과정

Charge transfer acquisition 과정

  • Charge transfer frequency는 TSC_CR 레지스터 내 CTPH, CTPL bit를 통해 설정 가능 (표준 범위는 500ns ~ 2us)
    • Pulse HIGH : Cx 충전
    • Pulse LOW : Cs 충전 (Cx → Cs)
  • 정확한 측정을 위해 Pulse HIGH 시간은 Cx가 항상 완충될 수 있도록 설정해야 함
  • Dead time은 charge transfer acquistion 과정을 최적화 하기 위해 삽입됨
    • HCLK의 1 주기에 해당
  • Cs의 전압의 임계치 도달 여부 확인은 Pulse LOW state의 끝부분에서 이뤄짐
  • Spread Spectrum 기능이 활성화된 경우, Pulse HIGH state의 끝부분에서 SSCLK clock 주기가 추가됨

2.4.1 Charge Transfer Frequency 설정 예시

STM Touch Sensing Guide (AN5150) 내 Cx의 충전 미완료(왼쪽) / 완료(오른쪽) 에 대한 파형 예시

  • 위의 경우 Charge Tranfer Cycle을 완료하기 위해서는 아래와 같은 parameter 변경 필요
  • 증가 
    • htsc.Init.PulseGeneratorPrescaler
    • htsc.Init.CTPulseHighLength
    • htsc.Init.CTPulseLowLength
  • 감소
    • Sysclk

2.4.2 Charge Transfer Frequency 설정 Register

TSC_CR 레지스터 내 Charge transfer frequency 설정 관련 bit

  • CTPH[3:0] : Charge Transfer Pulse의 HIGH state 기간 설정
  • CTPL[3:0] : Charge Transfer Pulse의 LOW state 기간 설정
    • 0000 : 1 x t_PGCLK
    • 0001 : 2 x t_PGCLK
    • 1111 : 16 x t_PGCLK
  • 아래와 같은 설정은 금지됨
    • PGPSC : 000, CTPL : 0001
    • PGPSC : 001, CTPL : 0000
    • PGPSC : Pulse Generator Prescaler

2.5 Spread Spectrum 기능

  • Charge transfer frequency를 가변하는 기능
    • Noisy한 환경에서의 측정 시의 정확도와 유도방출을 줄이기 위해 사용
  • Frequency시 변경은 Nominal Charge Transfer period의 10~50% 범위에서 가능
    • Ex) 250kHz(4us) Nominal Charge Transfer Frequency에서의 전형적인 Spread Spectrum 편차는 10%(400ns)임 → 최소 Charge Transfer Frqeuncyfmf ~227kHz가 되게 함

2.5.1. Spread Spectrum 적용 과정

Spread specturm 사용 시의 Charge transfer frequency

  • Pulse HIGH state에 위와 같이 다양한 SSCLK를 추가함

 

다른 HCLK 설정에서의 최대 frequency 편차에 대한 table

2.5.2. Spread Spectrum 관련 레지스터

  • Spread Spectrum은 TSC_CR 레지스터 내 SSE bit를 통해 활성화 및 비활성화 가능
  • 장치의 HCLK clock frequency와 선택된 Charge Transfer frequency를 수용하기 위한 frequency 편차는 TSC_CR 레지스터 내의 SSPSC, SSD[6:0] bit를 통해 설정 가능

TSC_CR 레지스터 내 Spread Spectrum 설정 관련 bit

  • SSD[6:0] : Spread Spectrum Deviation 설정 bit
    • 0000000 : 1 x t_SSCLK
    • 0000001 : 2 x t_SSCLK
    • 1111111 : 128 x t_SSCLK
  • SSE : Spread Spectrum Enable bit
  • SSPSC : Spread Sprectrum Prescaler 설정 bit

2.6. Max Count Error

  • Sensing channel 오류 시의 긴 측정 시간을 방지
  • Analog I/O Group의 최대 count 값을 결정
    • TSC_CR 레지스터 내의 MCV[2:0] bit를 통해 설정
  • 측정 Group의 counter가 이 max count 값에 도달할 경우, 진행 중인 측정 종료
    • 이후 EOAF(End Of Acquisition Fault), MCEF(Max Count Error Fault) bit가 모두 SET됨
    • EOAIE(End Of Acquisition Interrupt Enable), MCEIE(Max Count Error Interrupt Enable) bit가 설정되어있는 경우 위 두 경우에 대한 Interrupt가 생성됨

2.6.1 Max Count Error 관련 레지스터

TSC_CR 레지스터 내 Max Count 값 설정 bit

  • MCV[2:0] : Max count 값 설정 bit
    • 000 : 255
    • 011 : 511
    • 110 : 16383
    • 111 : RESERVED

2.7. Sampling Capacitor I/O, Channel I/O Mode 설정

  • GPIO를 TSC에 활용하기 위해서는 그에 해당하는 Alternate Function이 설정되어야 함
    • 표준 GPIO 레지스터, GPIOxAFR 레지스터를 통해 설정
  • TSC에 의해 제어되는 GPIO mode는 TSC_IOSCR 레지스터와 TSC_IOCCR 레지스터를 통해 설정
  • 진행 중인 측정이 없는 경우, TSC에 의해 제어되는 모든 I/O 들은 default state임
    • 측정 진행 중에는 오직 사용되지 않는 I/O들만 default state임
    • → Cx, Cs중 어느 것으로라도 설정되지 않은 I/O
  • TSC_CR 레지스터 내의 IODEF bit를 통해 default state에 있을 I/O 설정

 

Mode에 따른 I/O 설정

  • Unused I/O mode : TSC에 의해 제어되나 Cx, Cs 중 어느 것으로라도 설정되지 않은 I/O
  • Sampling capacitor I/O mode : Cs 핀 설정을 위해선 우선 해당 GPIO가 alternate output open drain mode로 설정되어야 하고, 그에 해당하는 TSC_IOSCR 레지스터 내의 Gx_IOy bit가 SET 되어야 함
  • Channel I/O mode : Cx 핀 설정을 위해선 해당 GPIO가 alternate output push-pull mode로 설정되어야 하고, 그에 해당하는 TSC_IOSCR 레지스터 내의 Gx_IOy bit가 SET 되어야 함
  • 같은 Cx가 요구되거나 측정의 속도를 높이기 위한 Proximity Detection 설정을 위해 같은 Analog Group 내 다수의 Cx 핀을 활성화할 수 있음
  • TSC alternate function이 활성화되지 않았더라도 측정 중 TSC_IOSCR bit나 TSC_IOCCR bit가 SET되면 그에 해당하는 GPIO Analog 스위치가 자동으로 TSC에 의해 제어됨

2.7.1. I/O Mode 설정 관련 레지스터

TSC_CR 레지스터 내 I/O default mode 설정 bit

  • IODEF : I/O Default mode 설정 bit
    • 진행 중인 TSC 측정이 없을 시의 모든 TSC I/O들에 대한 설정과, 측정 진행 중의 사용되지 않는 I/O들에 대한 설정
    • 0 : Output push-pull low 설정
    • 1 : Input floating 설정

2.8. Acqusition Mode

  • 아래와 같은 2가지 acquistion mode 설정 가능
    • Normal acquisition mode : TSC_CR 레지스터 내의 START bit SET 시 측정 시작
    • Synchronized acquistion mode : TSC_CR 레지스터 내의 START bit가 SET되고, SYNC 핀에 falling edge나 rising edge가 감지될 경우 측정 시작 CPU에 부가적인 load 없이 측정 동기화에 유용
  • TSC_IOGCSR 레지스터 내의 GxE bit를 통해 활성화 할 Analog I/O Group 설정 가능
  • 활성화되지 않은 Analog I/O Group의 Cs 전압 값은 신경쓰지 않음
    • 단 비활성화된 Analog I/O Group에 설정된 channel이 존재할 경우, 해당 channel은 charge transfer pulse를 생성함
    • 단 측정에는 관여하지 않음
  • 즉 GxE bit가 SET 되지 않은 Analog I/O Group에 Cx 핀으로 설정된 핀이 있을 경우, 해당 핀은 charge transfer pulse를 생성하지만, 그 Group의 Cs 전압값은 monitor 되지 않음
  • 활성화된 Analog I/O Group의 Cs 전압값이 V_IH에 도달할 경우, TSC_IOGCSR 레지스터 내에 그에 해당하는 GxS bit가 SET됨

 

  • 활성화된 Group의 모든 측정이 완료됐을 경우(Group의 모든 GxS bit가 SET 됐을 경우) TSC_ISR 레지스터 내의 EOAF가 SET됨
    • TSC_IER 레지스터 내의 EOAIE bit가 SET 됐을 경우 Interrupt 요청이 생성됨
  • Max count error 감지 시, 진행 중이던 측정이 모두 종료되고 TSC_ISR 레지스터 내 EOAF, MCEF flag가 모두 SET됨
    • TSCIER 레지스터 내의 EOAIE, MCEIE bit가 모두 SET 됐을 경우 Interrupt 요청이 생성됨

 

  • Max count error 감지 시, 남은 Analog I/O Group 내의 GxS bit는 SET되지 않음
  • Interrupt flag clear를 위해선 해당하는 TSC_ICR 레지스터 내의 EOAIC, MCEIC bit가 SET되어야 함
  • 새 측정 시작 시 Analog I/O Group counter는 초기화됨
    • 측정 종료 시 해당하는 channel에서 생성된 charge transfer cycle 횟수로 갱신됨

2.8.1. Acquistion mode 관련 레지스터

TSC_CR 레지스터 내 START bit

  • START : 새로운 TSC 측정 시작

 

TSC_IER 레지스터 내 Acquistion mode 관련 bit

  • EOAIE : End Of Acquisition Interrupt Enable bit
  • MCEIE : Max Count Error Interrupt Enable bit

 

TSC_ICR 레지스터 내 Acquistion mode 관련 bit

  • EOAIC : End Of Acquisition Interrupt Clear bit
  • MCEIC : Max Count Error Interrupt Clear bit

 

TSC_ISR 레지스터 내 Acquistion mode 관련 bit

  • EOAF : End Of Acquisition Flag bit
  • MCEF : Max Count Error Flag bit

 

TSC_IOGCSR 레지스터 내 Acquistion mode 관련 bit

  • GxE : Analog I/O Group x 활성화 bit
  • GxS : Analog I/O Group x 상태 bit
    • 0 : 측정 진행 중 혹은 시작하지 않음
    • 1 : 측정 완료

2.9. I/O hysteresis and analog switch control

  • TSC는 Schmitt trigger hysteresis와 각 Gx_IOy의 Analog switch 제어 가능
  • TSC가 활성화된 경우 I/O mode(표준 GPIO 레지스터나 타 주변기기에 의해 설정)에 상관 없이 제어 가능
  • 다른 측정 과정이나 목적 수행에 유용
  • 시스템의 면역성 향상을 위해 TSC에 제어되는 GPIO들에 대한 Schmitt trigger hysteresis은 비활성화 되어야 함
    • TSC_IOHCR 레지스터 내 Gx_IOy bit를 초기화해 비활성화 가능

2.9.1. I/O hysteresis 제어 관련 레지스터

TSC_IOHCR 레지스터 내 Gx_IOy 핀 hysteresis 제어 관련 bit

  • Gx_IOy : Gx_IOy의 Schmitt trigger hysteresis mode 활성화 bit
    • GPIO에 제어되는 I/O더라도 I/O control mode에 상관 없이 제어

3. TSC in low-power modes

Low power mode에서의 TSC 동작 table

  • Sleep, Low power run, Low power sleep : TSC 동작 유지
  • Stop mode :  TSC sensing은 멈추나 관련 레지스터 내 정보는 유지
  • Standby, Shutdown mode : 해당 모드에서 벗어난 후에는 TSC 재초기화 필요

3.1. Comparator 사용 관련

  • Low power mode 사용을 위해선 Cs 설정 Pin이 TSC alternate fucntion, COMP alternate function 모두 사용 가능해야 함
    • TSC alternate function : TSC_Gx_IOy
    • COMP alternate function : COMPx_INP
  • Low power mode는 surface charge transfer acquistion과 동일한 과정을 거침
    • Cs 전압이 임계치에 도달 시 측정 종료

 

Low power mode에서의 TSC sensing을 위한 TSC - Comparator 연결 구조

  • Charge transfer acquistion과 달리, low power mode에서는 Cs의 임계 전압값 설정 가능
    • Charge transfer acquistion은 V_IH로 고정
  • Cs가 내부적으로 Comparator의 입력으로 redirect됨
    • 이를 통해 V_REFINT를 기반으로 한 programmable 전압 임계치인 V_COMP를 제공
    • 1/4 V_REFINT, 1/2 V_REFINT, 3/4 V_REFINT, V_REFINT 설정 가능
    • V_REFINT는 Bandgap 전압임 (~1.2V)

 

일반 측정과 low power mod에서의 comparator를 통한 측정 비교

  • Comparator mode 사용을 위해선 SYSCFG_TSCCR 레지스터를 적절히 설정해 MUX를 설정해야 함
  • 전압 임계치를 낮춰 측정 시간을 줄이고, 이를 통해 전력 소모를 줄일 수 있음
    • 임계치 감소 → 임계치 도달에 필요한 count 감소 → 소모 전력 감소
  • 단 전압 임계치는 측정 시간과 센싱 민감도 모두에 영향을 줌
    • 임계치가 낮을 시 측정 시간 감소
    • 임계치가 높을 시 센싱 민감도 상승

3.1.1. Comparator 관련 레지스터

Comparator 1, 2 설정 레지스터

  • INPSEL[1:0] : Comparator의 Noninverting input COMP1_INP(혹은 COMP2_INP)으로 사용할 신호 선택
  • INPSEL[3:0] : Comparator의 Inverting input COMP1_INM(혹은 COMP2_INM)으로 사용할 신호 선택
    • 위 두 bitfield들은 Software에 의해 제어

bitfeild 설정에 따른 input source 선택

3.1.2. Low power mode 관련 레지스터

SYSCFG_TSCCR 레지스터 내 Low power mode 관련 레지스터

  • TSC_IOCTRL : I/O Control in comparator mode 설정 bit
    • 0 : 해당하는 Control register에 의해 설정
    • 1 : TSC alternate function 활성화 시 Analog로 설정

4. TSC Interrupts

TSC interrupt 관련 table

5. TSC Register Map

 

 

 

 

 

 

 

 

 


참고 자료 : 

STM32 U0 MCU series Reference Manual(RM0503) : https://www.st.com/resource/en/reference_manual/rm0503-stm32u0-series-advanced-armbased-32bit-mcus-stmicroelectronics.pdf

 

STM32 TSC Guide : https://www.st.com/resource/en/application_note/an5105-getting-started-with-touch-sensing-control-on-stm32-mcus-stmicroelectronics.pdf

 

 

 

 

728x90
반응형

'Study_Embedded' 카테고리의 다른 글

ISP, IAP 차이  (0) 2025.09.30
About STM32CubeN6  (0) 2025.03.05
About AVR, ARM Processor, and Protocol  (0) 2023.10.09
Jetson Nano 'System throttled due to Over-Current 관련  (0) 2023.09.08
USB, COM 포트 차이  (0) 2023.02.13