출처 : http://blog.naver.com/zeratool2/80109561219
본인이 작성한것이 아니라 퍼온것임을 밝힌다.
읽으면서 이해하고 이후 프로젝트와 연결하여 다시 설명한다. 내용은 거의 같게 하겠다.
ADC Registers
ADCTRL1~3마다 각각 다루는 영역이 다르다.
====================================================================================================
ADCTRL1
14 : Reset 핀
ADC모듈의 소프트웨어 리셋. 1을 주면 DSP가 리셋되는듯이 ADC의 모든 값, 설정이 초기화 된다.
13~12 : SUSMOD[1:0]
에뮬레이션 도중 브레이크를 만났을때는 행동지침을 설정한다.
00:에뮬레이션 서스펜드를 무시한다. : 브레이크를 무시하고 그냥 진행한다.
01:현재 시퀀서의 동작이 완료된 후 ADC를 정지한다.
10:현재 변환중인 시퀀서가 변환을 완료한 후 정지한다.
11:시퀀서나 로직을 그 즉시 정지한다.
11~8 : ACQ_PS[3:0]
데이터 수집 윈도우 사이즈. SOC펄스의 길이를 조절하기 위한 비트필드로 샘플링 스위치의 주기가 끝나는 시간을 정한다. SOC펄스의 길이는 ADCLK주기의 (ADCTRL1[11:8]+1)배이다.
무슨말이냐면
순차 샘플링시 타이밍도와 변환주기 공식
동시 샘플링시 타이밍도와 변환 주기공식
위 두 경우의 ACQPS에 들어가는 값을 정해주는 것이다.
변환주기란, 변환을 시작하여 모든 채널의 변환을 끝마칠 때까지의 시간이다.
위의 식은 28335에서 제공하는 16개의 ADC채널을 모두 변환한다는 전제하의 공식이다.
ADC의 클럭설정의 처리과정은 아래와 같은데
ADC공급 클럭, S/H(sample-and-hold)의 생성과정
위 과정에서 제일 마지막에 ACQPS가 사용된다.
Tadcclk는 ADCCLK의 역수로써각각 주기와 주파수를 뜻한다.
7 : CPS
위 그림의 6번째 단계에서 ADCCLK를 정하기 위한 최종옵션으로 0이면 1분주, 1이면 2분주이다.
즉, ADCCLK = Fclk/1 or Fclk/2 인것이다.
6 : CONT RUN
Continuous run. 1일 때 Continuous run mode가 된다. 나는 잘 모르는 AVR의 프리런 모드와 같다는데, 한번의 변환이 끝나면 자동으로 다음 변환을 하게 된다고 한다. 0이면 단발성 변환인 Start-Stop mode가 된다고 한다.
5 : SEQ OVRD
Continus mode에서만 유효하다. 1일경우 Override mode가 활성화 된다.
Override mode의 경우, 선택된 모든 채널의 변환 결과가 저장된 후에도 시퀀서의 상태 레지스터가 초기화 되지 않는다.
16개의 결과저장 레지스터가 꽉 찬 후에야 다시 처음부터 채우기 시작한다.
0일 경우 1회 변환이 종료되었을 때, 상태 레지스터가 초기화 되므로 결과저장 레지스터가 16개 다 채워지지 않아도 다음 변환때 다시 처음부터 채우게 된다.
4 : SEQ CASC[Cascaded Sequencer operation]
1일 경우 직렬시퀀서 모드[Cascaded Sequencer Mode]를 활성화 시키고
0일 경우 병렬시퀀서 모드[Dual-sequencer Mode]를 활성화 시킨다.
사진의 하단부에 시퀀서 1, 2를 확인할 수 있다.
시퀀서 1은 ADC0~7을, 2는 ADC8~15를 관장한다. 또한 시퀀서 1은 입력수단이 3가지 2는 2가지 이다.
병렬시퀀서 모드는 시퀀서 1,2가 각각 핀들을 관장하며 직렬시퀀서 모드의 경우 시퀀서 1이 모든 핀을 관장한다.
개발자가 보내는 신호를 ADC시퀀서에서 디지털 신호로 변환하는데, 신호를 주는 방법은 총 3가지로
1. 소프트웨어적으로 특정 레지스터를 통해 신호를 주는 방법
2. ePWMx 내부 타이머에 의한 방법
3. 외부인터럽트2(XINT2)로 정해진 핀을 트리거 시키는 방법
직렬시퀀서 모드일 때는 시퀀서 1이 모든 입력채널을 관장하지만 8~15번 핀에 대해서 방법3을 사용할 수는 없다.
====================================================================================================
ADCTRL2
15 : ePWM_SOCB_SEQ
ePWM SOCB enable for cascaded sequencer (Note: This bit is active only in cascaded mode.)
직렬 시퀀서 모드에서만 사용가능하고 ePWM SOCB를 사용가능하게 한다.
ePWM SOCB를 변환의 시작신호로 사용할 수 있다. 1로 셋팅하면 사용가능하다.
14 : RST SEQ1
시퀀서 1 또는 직렬 시퀀서를 즉시 정지시키고 초기화한다. 다음 변환은 선택된 입력채널의 처음순서부터 변환을 시작한다.
13 : SOC_SEQ1
시퀀서 1에 변환시작신호를 전달한다(S/W신호).
시퀀서1이 이미 동작 중일 경우, 변환환료까지 대기하다 변환이 완료되는 즉시 대기중인 신호가 시퀀서에 전달되어 변환을 시작한다.
신호가 들어가면 SOC_SEQ1은 0으로 클리어 된다.
11 : INT ENA SEQ1
시퀀서 1에 의한 인터럽트 활성화
인터럽트가 요청되면 해당 서비스 루틴을 실행한다.
10 : INT MOD SEQ1
인터럽트 모드의 선택비트
1일 경우 시퀀서1이 매번 두 번째 변환 종료 때마다 인터럽트가 요청 된다.
0일 때, 매번 변환 종료 때마다 인터럽트가 요청된다.
8 : ePWM SOC SEQ1
ePWM SOC1 신호를 변환 시작신호로 사용한다(1을 쓰면)
0으로 비활성화 시킨다.
7 : EXT SOC SEQ1[External signal start-of-conversion bit for SEQ1]
1을 쓰면 외부인터럽트2의 트리거 신호를 시퀀서1의 변환 시작신호로 쓴다.
0은 비활성화
6 : RST SEQ2
1을 쓰면, 시퀀서2를 즉시 초기화 하여 변환동작을 정지시킨다. 다음 변환은 선택된 입력채널의 처음순서부터 변환을 시작한다.
5 : SOC SEQ2
시퀀서 2에 변환시작신호 전달(S/W신호)
이미 동작 중이라면 변환완료까지 대기. 변환이 완료되면 즉시 대기중인 신호가 시퀀서에 전달되고 SOC SEQ2는 0으로 클리어
3 : INT ENA SEQ2
시퀀서2에 의한 인터럽트 활성화
2 : INT MOD SEQ2
인터럽트 모드 선택비트. 1일 경우 시퀀서2가 매번 두 번째 변환 종료 때마다 인터럽트가 요청 된다.
0일 때, 매번 변환 종료 때마다 인터럽트가 요청된다.
====================================================================================================
ADCTRL3
7~6 : ADCBGRFDN
ADC analog core의 Bandgap 회로와 Reference회로의 기동 혹은 정지를 제어한다.
1 : 기동, 0 : 정지
5 : ADCPWDN
Bandgap회로와 Reference회로를 제외한 모든 ADC analog회로를 제어한다.
1은 기동, 0은 정지
위 5~7에 대한 설명
4~1 : ADCCLKPS(Core Clock Divider ADCLK)
위의 tadcclk의 역수값으로 PLL회로의 HSPCLK를 거친 주파수를 또 한번 분주한다.
0일 때 : HSPCLK/1
1~15일 때 : HSPCLK/(2*ADCCLKPS)
0 : SMODE_SEL
샘플링 모드를 선택한다.
0은 순차 샘플링, 1은 동시 샘플링
그림을 다시 확인해 보면, ADCIN0~7에 대하여 A와 B로 나누어져 있음을 알 수 있다. 즉, ADCINA0~7, ADCINB0~7이다.
샘플링 모드와 시퀀서 모드가 각각 2가지씩 있으므로 모드의 조합은 총 4가지가 된다.
순차샘플링 모드에서는 선택된 입력채널 내에서 지정된 순서에 따라 순차적으로 한번에 하나씩 입력신호를 샘플링 한다.
동시샘플링 모드의 경우 시퀀서 1과 2에 대응하는 각각의 채널이 한 쌍을 이루어 처리된다.
입력채널의 처리순서는 시퀀서1에 해당되는 입력채널만으로 설정한다.(1에의해 2는 자동으로)
동시샘플링 모드에서 직렬시퀀서 모드일 경우, 입력채널 선택은 0~7만으로 한다.
ADC신호의 변환처리 순서 기준
1. 샘플링된 두개의 신호 중 먼저 변환모듈에 도착한 신호를 먼저 변환한다.
도중에 다른 신호가 동착한다면 변환중인 신호의 완료까지 대기한다.
2. 두 신호가 동시에 도착했을 경우 ADCINA를 우선한다.
단어:
SOC : Start Of Conversion
Bandgap 회로
Reference 회로
'TMS320 > F28335' 카테고리의 다른 글
Cpu Timer(2) (0) | 2014.08.19 |
---|---|
Cpu Timer(1) (1) | 2014.08.19 |
ADC(2) (0) | 2014.08.18 |
Gpio (0) | 2014.08.18 |
기본자료 (0) | 2014.08.18 |