본문 바로가기
자동차 임베디드 SW/Aurix MCU

Aurix ADC - 컨버전 요청. Trigger

by 존버매니아.임베디드 개발자 2022. 9. 23.
반응형

Aurix의 VADC 모듈의 동작 주요컨셉
▶ 3개의 큐가 존재.
▶ 컨버전 하려는 채널을 컨버전 원하는 순서대로 큐에 집어넣음
▶ 큐에 컨버전 요청 ( Conversion Request)
▶ 컨버전 요청 받으면 큐에 집어넣은 채널의 adc conversion이 이뤄짐
▶ 실제로 conversion이 수행되고 Conversion 결과가 Result레지스터에 담긴다.
▶ 큐에 채널 삽입하기전에 이런저런 셋팅을 하고 큐에 삽입하는데, 예를 들면 컨버전 완료되고나서 다시 큐에 자동삽입 할건지. 컨버전 완료됐을때 인터럽트나 dma로 알려줄건지(Service Request)
등을 셋팅한다.
이 셋팅한 결과에 따라 해당 채널이 큐에서 꺼내지면서 컨버전완료 된 후 동작 달라짐.
▶ Adc Conversion 완료 후, 셋팅에 따라 service reuqest  신호 줄 수도 있고 안줄 수도 있음.
참고로, service request 발생시 이것을 인터럽트로 처리할지 dma로 처리할지 유무는 adc  쪽에서 셋팅하는게 아니라 IR(Interrupt Router)에서 설정하는 것임

한편 Trigger를 하는 방식은 크게 3가지가 존재하는데
SW Trigger, HW Trigger, Self Timer 가 있다.

▶ SW Trigger는 Trigger 요청하는 비트가 있음 . 이걸 1로 Set 하면 요청이 들어감
GxQMRi (i=0-2;x=0-11) Queue i Mode Register, Group x 레지스터의
TREV 비트필드.

▶ HW Trigger는 하드웨어 적인 신호인데 여러가지가 있지만 큭
Trigger , Gate 2가지 종류로 나뉜다.
Trigger는 Edge 가 발생한 것을 의미한다. Rising, Falling , Both Edge 중에 어떤 Edge를 유효하게 볼 건지 유저가 셋팅
Gate는 신호가 High 일 때 또는 Low 일때를 Conversion 요청으로 해석한다.

그리고 이런 하드웨어 신호의 Source는 여러가지가 있는데
내가 주로 쓰는건 GTM Atom 또는 TOM 의 Output 시그널을 사용하는 것이다.

GTM의 TOM 또는 ATOM 에서 들어오는 시그널을 Adc_Trig라고 하는데
총 5가지가 있다.
gtm Adc_Trig 0 ~ Adc_Trig4가 있음.

▶ 큐에서 adc_trig0 ~ adc_trig4 중에 어떤거 사용할지를 고른다.
▶ adc_trig0 ~ adc_trig4 시그널에 실제 어떤 GTM Channel 연결될 건지도 골라야되는데
이거는 Aurix Appendix 문서에 나온다.

여기서 셋팅 어떻게 하냐면
Aurix에 컨버터가 여러개 있는데
만약 0번 컨버터에서 Trig0을 사용한다고 골랐다치면
위에 있는 10개의 레지스터중에
ADCTRIG0OUT0 레지스터를 봐야되는데

아래 레지스터에서 비트필드 SEL0 , SEL1 , SEL2 는 Converter 숫자를 의미한다.
그니까 아래 레지스터의 SEL0 비트필드에 있는 값에 따라서 트리거 소스 결정됨
아래 레지스터에서 SEL0 값이 5라면? ATOM0의 채널 4 시그널이 0번 컨버터로 들어가는 ATOM_TRIG0 이 되는 것.

난 첨에 이게 되게 헷갈렸다.

그러니까 예를 좀 더 들어보자
만약 5번 컨버터를 사용하고 이 때 트리거 소스로 ADC_TRIG3 을 쓰는 경우 ?

TRIG3을 써야되니까 위 레지스터 중에서 빨간박스에 있는 레지스터 사용.
그리고 컨버터가 5번 컨버터니까 해당 레지스터에서 SEL5 쪽을 보면 됨.



그니까 정리하면
위 레지스터에서 SEL0 , SEL1 에 붙은 숫자는 HW Converter 숫자라는 소리다.




반응형