본문 바로가기
임베디드SW/TC275 Lite Kit for 임베디드

ADC 동작 원리 개념 이해하기 (feat. TC275 Lite Kit)

by 바이너리 임베디드 2022. 1. 7.

ADC 동작 원리 개념 feat. TC275 Lite Kit

 

 

현재 TC275 LiteKit EVB를 가지고 임베디드의 세계를 파헤쳐보고 있는 중입니다.

이번 글이 마음에 드신다면 꼭 이전 글도 보시기를 추천드립니다.

자 그럼 ADC를 한번 살펴보도록 하겠습니다.

 


ADC를 구현해보기 위해서는 ADC 모듈을 이해하고 TC275에서 어떻게 사용해야 하는지를 알아보아야 합니다.
그럼 이번 편에서는 ADC 페리페럴을 사용하는 목적은 무엇이고, TC275의 ADC 페리페럴은 어떻게 동작하는지를 살펴보도록 하겠습니다.


ADC 페리페럴을 사용하는 목적



그럼 이름을 통해 ADC 페리페럴을 알아보도록 하죠.
 ADC는 Analog to Digital Converter가 Full name입니다.
음 한번 유추해볼까요? 
Analog 값을 Digital 값으로 Convert 하는 모듈이라고 보면 되겠죠?
조금 감이 오는 것 같지만 확 와닿지 않습니다.

그럼 예시를 하나 들어 보겠습니다.

날씨 온도에 따라 추워지면 따뜻하게 해 주거나 날씨가 더우면 시원하게 해주는 시트 제품이 있다고 해봅시다.
그렇다면 이 제품에는 현재 온도가 몇 도인지를 인식할 수 있는 온도 센서가 필요합니다.
센서와 연결되어 있는 MCU는 온도를 바로 이해할 수 없으므로 MCU가 이해할 수 있는 전압으로 센서가 변경해서 알려줍니다.
전압을 입력받은 MCU는 Digital 값으로 변환하여 레지스터에 값을 저장하게 됩니다.
그리고 MCU에서 그 값을 사용해 SW로 다시 온도로 변환해줍니다.
현재 온도 값을 사용해 시트에서 따뜻하게 할지 시원하게 할지 동작을 결정해줍니다.
임베디드 시스템을 예시로 들었는데, 여기서 ADC가 하는 역할은 센서에서 전달해주는 전압값(아날로그 값)을 Digital 값으로 변환하여 레지스터에 저장하는 부분입니다. 

결국 임베디드 시스템에서 출력을 내보내기 위해 센서로부터 입력된 아날로그 값을 디지털 데이터로 만들어 주는 모듈이라고 본다면 정말로 없어서는 안 될 중요한 녀석이라고 할 수 있습니다.


ADC 동작 원리 개념 feat. TC275 Lite Kit



TC275 VADC 페리페럴 



임베디드의 ADC의 개념을 조금 잡아간 것 같습니다.
그럼 TC275 VADC 페리페럴을 이해해보도록 하겠습니다.

제일 먼저 TC275의 VADC를 이해하기 위해서는 당연히 TC27x 레퍼런스 매뉴얼을 살펴보도록 합시다.
다음 그림은 대표적인 Block Diagram입니다.

 

ADC 동작 원리 개념 feat. TC275 Lite Kit

 


하나의 Group/Kernel 에는 여러 개의 아날로그 인풋 채널들과 연결되어 있습니다. 
여러 개의 아날로그 인풋 채널 중 하나의 채널을 선택하여 Coverter에 입력되면 아날로그 값이 디지털이 값이 되어 Result Register에 저장되는 구조입니다.
이런 그룹이 여러 개 있나 보군요.
그리고 Queue source와 Scan source는 어떤 채널들을 어떤 순서로 convert 할지 정해주는 역할을 한다고 보시면 됩니다.

그럼 이제 좀 더 자세히 안으로 들어가 볼까요?


 

TC275 ADC 페리페럴 Clock

 

 

ADC 동작 원리 개념 feat. TC275 Lite Kit



모든 페리페럴을 처음 공부할 때는 제일 먼저 이 페리페럴이 무슨 Clock을 사용하고 있는지를 살펴보아야 합니다. 
그래야 그 페리페럴을 그 클럭에 맞추어 내가 원하는 동작을 설계할 수 있기 때문입니다.
그럼 VADC 모듈이 사용하는 클럭은 fVADC라고 하며  fVADC의 소스는 fSPB 인 것을 알 수 있습니다. 
저번 CCU6 편에서 CCU6 페리페럴이 사용하는 클럭을 찾을 때와 같은 캡처 화면입니다.

VADC 레퍼런스 매뉴얼에서 Clock으로 검색을 해보면
" The basic module clock fVADC is connected to the system clock signal fSPB. "
라고 적혀 있는 것을 통해서도 알 수 있습니다.

그럼 fSPB는 클럭 편을 참고하시면 현재 100 MHz이므로 fVADC도 100 MHz입니다.


ADC 동작 원리 개념 feat. TC275 Lite Kit




위의 그림을 살펴보면 fVADC를 소스로 사용하며, DIVA를 통해 Divede 해주어서 fADCI를 사용하여 Converter에서 사용하고, DIVD를 통해 Divede 해주어 Arbiter가 사용하고 나머지는 Divede 없이 바로 fVADC를 사용한다는 설명이다. 
우선 이 정도로 클럭을 이해하면 될 것 같습니다.


TC275 ADC 페리페럴 Request control

 

ADC 동작 원리 개념 feat. TC275 Lite Kit



Request control이 하는 역할은 Analog input channel이 여러 개 입력되어 올 때 어떤 모드로 Conversion을 시키며 Conversion을 시키라는 요청을 어떤 방식으로 중재할지를 결정해 줍니다.

ADC 동작 원리 개념 feat. TC275 Lite Kit



위에 그림에서 보면 Request source는 0 ~ 2번까지 3개가 있고  Request source를 trigger 시키는 것은 SW trigger와 External trigger가 2가지가 있습니다.
SW trigger는 코드상에  trigger 명령을 주는 코드를 짜서  SW가 Runtime시 동작하는 모드입니다.
그리고 External trigger는 PWM을 만들어주는 모듈이나 GPIO 핀으로 파형이 입력되며 Falling edge나 Rising edge일 때 trigger가 발생하는 모드입니다.

Request Source는 2가지 동작 모드가 있습니다.
Single-Shot 모드는 한 번의 Trigger에 의해 한번만 동작하게 되는 모드입니다.
Continuous 모드는 한 번의 Trigger에 의해 계속 동작하게 되는 모드입니다.

ADC 동작 원리 개념 feat. TC275 Lite Kit


Request Source Arbiter는 Request source 0 ~ 2번에서 동시에 입력이 되면 Request source의 우선순위에 따라 중재하여 다음 Conversion 채널을 선택하게 됩니다.
Request 처리 모드로는 2가지가 있습니다.
Cancel-inject-repeat mode가 있는데 이 모드는 동작하고 있는 낮은 우선순위의 conversion을 멈추고  자신의 conversion을 수행한 후 낮은 우선순위의 conversion을 수행하는 모드입니다.
Wait-for-start mode는 먼저 시작한 conversion의 수행이 다 끝난 후 자신의 Conversion을 바로 이어 수행하는 모드입니다.


TC275 ADC 페리페럴 Channel Parameters

ADC 동작 원리 개념 feat. TC275 Lite Kit



ADC 채널과 관련된 파라미터들을 어떻게 설정할 수 있는지를 설명하도록 하겠습니다.
Sample time은 설정하기 위해서는 채널의 input class 레지스터를 설정하여 정의할 수 있습니다. 
1개의 ADC Group이 사용하는 Reference 전압을 Vref (Analog Reference Voltage) 또는 AN0 핀 (Analog Input Channel 0) 중 선택하여 사용 가능합니다. 

보통은 Vref를 사용하게 됩니다.
Conversion이 완료된 데이터는 Group specific result register 또는 Global result register 중 선택하여 저장할 수 있습니다. 

 

Limit Checking 기능이 있어서 Digital 값으로 변환된 데이터를 Upper Boundary와 Lower Boundary를 비교하여 Boundary 밖의 데이터인 경우에는 무시할 수 있습니다.

 

12bit ADC Conversion 하는 시간은 수식으로 구할 수 있습니다.
- tCN = (2 + STC + N + PC) × tADCI + 2 × tVADC
- STC : 추가 샘플 타임 현재는 0으로 계산
- N: Result width  크기, 12bit
- PC: post calibration time 선택하면 2, 아니면 0으로 PC 2로 선택
-  fADC= 100 MHz  즉  tADC = 10 ns, DIVA = 5, fADCI= 16.67 MHz i.e. tADCI = 60 ns
- tCN12C= (2 + 12 + 2) × tADCI + 2 × tVADC = 16 × 60 ns + 2 × 10 ns = 980 ns


TC275 ADC 페리페럴 Result Handling

 

ADC 동작 원리 개념 feat. TC275 Lite Kit



Converter를 통해 변환된 Digital 값을 저장하는 곳으로는 16개의 group result register 또는 global result register가 있습니다. 
GxCHCTRy.RESTGT 레지스터를 1로 설정하면  global result register (GLOBRES)를 사용할 수 있습니다.
Gx...CTRL.SRCRESREG를 0으로 설정하면 16 group result register를 선택하며 GxCHCTRy.RESREG를 통해 어떤 GxRES0 ~ GxRES15를 사용할지 설정할 수 있습니다.
Valid Flags는 result register에서 값을 새로 업데이트하면 Set, result register에서 값을 Read 하면 자동으로 Clear 됩니다.


TC275 ADC 페리페럴 Service Request



ADC 하나의 Group에는 4개의 service request output signal이 있습니다. Service로는 인터럽트를 발생시키거나 DMA 채널을 트리거 시킬 수 있습니다. 

Service를 발생시키는 케이스는 아래와 같습니다.
    - Request source events : Request source의 conversion이 완료되었을 때, event를 발생시킬 수 있음.
    - Channel events: Channel의 conversion이 완료되었을 때, event를 발생시킬 수 있음.
    - Result events: result register에 새로운 유효한 값이 발생하면, event를 발생 시킬 수 있음. 


지금까지 ADC 동작 원리 개념 이해를 해보았는데요.

여기까지 진행하시면서 생기는 모든 질문과 답변은 아래 카페에서 해드립니다.

많이 많이 방문하셔서 실력을 업그레이드하세요.


https://cafe.naver.com/binaryembedded

 

임베디드 유니버스 : 네이버 카페

임베디드 유니버스 : 임베디드의 세계로 초대합니다.

cafe.naver.com

https://cafe.naver.com/binaryembedded

 

임베디드 유니버스 : 네이버 카페

임베디드 유니버스 : 임베디드의 세계로 초대합니다.

cafe.naver.com

댓글