dsp tms320f2812 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
DSP TMS320F2812 PowerPoint Presentation
Download Presentation
DSP TMS320F2812

Loading in 2 Seconds...

play fullscreen
1 / 35

DSP TMS320F2812 - PowerPoint PPT Presentation


  • 177 Views
  • Uploaded on

DSP TMS320F2812. ROBOTICS LAB. http://cafe.naver.com/roboticslab. Contents. 1. TMS320F2812 ADC 특징. 2. TMS320F2812 ADC 구조. 3. TMS320F2812 ADC 관련 레지스터. TMS320F2812 ADC 구조. 281x ADC 의 특징 (1) 두 개의 S/H 가 탑재된 , 파이프라인 방식 (4 Stage) 의 12-bit ADC

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'DSP TMS320F2812' - eilis


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
dsp tms320f2812

DSP TMS320F2812

ROBOTICS LAB.

http://cafe.naver.com/roboticslab

contents
Contents

1. TMS320F2812 ADC 특징

2. TMS320F2812 ADC 구조

3. TMS320F2812 ADC 관련 레지스터

tms320f2812 adc
TMS320F2812 ADC 구조
  • 281x ADC의 특징(1)
    • 두 개의 S/H가 탑재된, 파이프라인 방식(4 Stage)의 12-bit ADC
    • Simultaneous sampling, Sequential sampling modes
    • 입력 허용 전압: 0V ~ 3V
    • 최대 12.5 MSPS
    • 샘플/홀드의 신호 획득 시간(S/H acquisition time window) 조절용 클럭 분주 회로 탑재
    • 아날로그 먹스가 탑재된 16 채널 입력
    • 16개의 결과 저장용 버퍼(ADCRESULT0~15)
    • 두 가지 인터럽트 모드 제공
      • every end of sequence(EOS): 시퀀서 동작 매 완료 시 마다
      • every other EOS: 시퀀서 동작 매 두 번째 완료 시 마다
tms320f2812 adc1
TMS320F2812 ADC 구조
  • 281x ADC의 특징(2)
    • 오토 시퀀서 탑재
      • 최대 16채널 순서 임의 조정(cascaded mode)
      • Event Manager A,B와 각각 연계 가능(dual sequencer mode)
      • 연속 동작 모드
      • 단일 동작(Start/Stop) 모드
    • Sequencer override mode enhancement
      • ADCRESULT버퍼를 16레벨 FIFO로 사용
    • 다양한 트리거 모드 진원: Start of Conversion(SOC)
      • S/W - software immediate start
      • EVA - Event manager A(multiple event sources within EVA)
      • EVB - Event manager b(multiple event sources within EVB)
      • External pin
tms320f2812 adc2
TMS320F2812 ADC 구조
  • 파이프라인 방식 ADC의 특징
    • 각 단(Stage)의 일괄(Concurrent)동작으로 고속 변환 가능
    • 고주파 신호에 대한 광범위한 Dynamic Range 제공 가능
    • 파이프라인이 꽉 차기 전의 데이터는 의미 없음
    • 지연발생: 프로그래밍 시 주의 필요
    • 각 스테이지의 ADC방식은 연속근사방식(Successive Approximation Register ADC)
tms320f2812 adc4
TMS320F2812 ADC
  • ADC를 사용하기 위해서
    • 몇 개 채널?
    • 어떤 순서?
    • 변환 시간?
    • 추가해서
      • ADC를 어떻게 시작할 것인지?
      • 샘플링 주기는 어떻게?
      • ADC 상태는 어떠한지?
      • ADC 결과를 어떤 방식으로 읽을 것인지?
      • Dual Sample/Hold 회로를 어떻게 운영할 것인지?
      • ADC 결과 저장용 버퍼를 어떻게 운용할 것인지?
tms320f2812 adc5
TMS320F2812 ADC
  • ADC의 MMR

변환 채널 수 및 변환 순서 설정

결과 저장용 버퍼

tms320f2812 adc6
TMS320F2812 ADC
  • ADCMAXCONV
    • Cascaded mode
      • ADCMAXCONV[3..0]; MAXCONV1_X, X=0, 1, 2, 3
        • ex) SEQ에서 15채널 변환한다면?
          • 답: ADCMAXCONV = 0X000E
    • Dual Sequencer mode
      • SEQ1 = ADCMAXCONV[2..0]; MAXCONV1_X, X=0, 1, 2
      • SEQ2 = ADCMAXCONV[6..4]; MAXCONV2_X, X=0, 1, 2
        • ex) SEQ1에 3채널 변환, SEQ2에서 6채널 변환한다면?
          • 답: ADCMAXCONV = 0X0052
tms320f2812 adc7
TMS320F2812 ADC
  • ADCCHSELSEQ1~4
    • 각각 4비트로 구분 채널 지정: CONVnn
    • 채널 변환 순서:
      • CONV00 > CONV01 > CONV02 > … > CONV15

ex) Cascaded 모드로 다음과 같이 순서로 채널을 변환하고자 한다.

ADCINA7 → ADCINA6 → ADCINA0 → ADCINA1 → ADCINA0 → ADCINA2

→ ADCINA0 → ADCINA1 → ADCINA0 → ADCINA2

ADCMAXCONV 레지스터와 ADCCHSELSEQx 레지스터 값을 설정하시오.

        • ADCMAXCONV = 0x0009
        • ADCCHSELSEQ1 = 0x1067
        • ADCCHSELSEQ2 = 0x9820
        • ADCCHSELSEQ1 = 0xXXA8
tms320f2812 adc8
TMS320F2812 ADC
  • 샘플링 주기: SOC(Start of Conversion)의 주기적 발생
  • ADC의변환 시간과 상관없음.
    • 단, Continuous Run Mode 에서는 ADC 자체 변환 시간이

샘플링 주기 결정

  • 예1) 10KHz로 샘플링
    • Event Manager의 주기 이벤트를 이용해서 10KHz 주기로 SOC 발생
  • 예2) ADCTRL1.6의 CONT_RUN 비트 설정
    • ADC 변환 시간(시퀀서 한 세트): 샘플링 주기
tms320f2812 adc9
TMS320F2812 ADC
  • 변환 시간(속도)
    • ADC 모듈이 S/H에 샘플링된 아날로그 신호를 디지털 신호(PCM 데이터)로 변환하는 시간
    • ADC회로 구동 클럭이 변환 시간 결정

SYSCLKOUT

HISCLK

OSCCLK

CLKIN

High-Speed

Peripheral clock

Prescaler

HISPCP[2:0]

OSC

30MHz

PLL

PLLCR[3:0]

28x

CPU

SOC pulse

Generator

(ACQ_PS[3:0])

ADCRL[11:8]

CPS

(x1/2 when 1,

x1 when 0)

ADCTRL[7]

4-bit Clock

Divider

ADCTRL[4:1]

4bit divided clock

S/H Clock pulse

ADCCLK

tms320f2812 adc10
TMS320F2812 ADC
  • 변환 속도 계산
    • 변환 속도가 7.5MHz로 설정되었다 하더라도,SOC의 발생 주기가 10KHz 이면, 샘플링 주기(rate)는?

10KHz

tms320f2812 adc11
TMS320F2812 ADC
  • ADC 구동 클럭을 높이면
    • Aliasing이 줄어든다.
    • 채널간 오차(cross-talk)가 커진다.
      • 이 오차는 샘플링 윈도우를 키운다고 줄어드는 성질의 것이 아니다.
  • ADC 구동 클럭을 낮추면
    • Aperture Error가 커진다.

주의 1: 구동 클럭과 샘플링 rate은 별개

    • 1KHz로 샘플링을 하더라도, ADC 구동 클럭은 25MHz가 가능하다.

주의 2: 281x ADC의 최고 구동 클럭은 25MHz

    • 분주 부주의로 25MHz이상의 클럭이 공급되면, 결과는 엉망이다.
tms320f2812 adc12
TMS320F2812 ADC
  • 시퀀서란?
    • 개발자와 ADC를 연결하는 매개체
    • 채널 변환 순차 설정이 주된 동작
    • 개발자가 시퀀서에 기동 신호를 전달하면, 시퀀서가 ADC회로를 적절히 기동
    • 시퀀서 설정 완료 인터럽트 발생 가능
    • 다채널 조작 용기
  • 8채널 조작 시퀀서가 2개
    • SEQ1: ADCINA0~7 → S/H-A
    • SEQ1: ADCINB0~7 → S/H-B
    • 16채널 조작 단일 시퀀서로도 운용 가능(Cascaded 모드)
tms320f2812 adc13
TMS320F2812 ADC
  • 시퀀서의 잇점
    • Multi-rate System 구현 용이
      • 로봇과 같은 Multi Sensors System 구현 용이
    • 고속 샘플링 지원 용이
      • 12.5MHz 샘플링: 샘플링당 12개의 명령어 처리
      • 블록 샘플링:
        • 최고 16회 혹은 16채널 변환을 1블록으로
        • 시퀀서 완료 주기는 약 780KHz(12.5MHz/16)
        • 인터럽트 처리 가능 / 알고리즘 처리 여유
    • 주변 회로 연계 구동 능력
      • 초기 설정만으로 ADC 구동 가능
        • 타이머 주기 이벤트를 이용한 ADC 기동
      • 유연한 ADC 기동과 결과 처리 가능
tms320f2812 adc14
TMS320F2812 ADC
  • 시퀀서: Cascaded(직렬) 모드
tms320f2812 adc15
TMS320F2812 ADC
  • 시퀀서: Dual Sequencers(병렬) 모드
tms320f2812 adc16
TMS320F2812 ADC
  • 281x ADC의 내부 레퍼런스 회로 이용법
tms320f2812 adc17
TMS320F2812 ADC
  • DSP281x_Adc.c의 전원 관련 코드

#define ADC_usDELAY 8000L

#define ADC_usDELAY2 20L

//---------------------------------------------------------------------------

// InitAdc:: This function initializes ADC to a known state.

//---------------------------------------------------------------------------

void InitAdc(void)

{

extern void DSP28x_usDelay(Uint32 Count);

// To powerup the ADC the ADCENCLK bit should be set first to enable

// clocks, followed by powering up the bandgap and reference circuitry.

// After a 5ms delay the rest of the ADC can be powered up. After ADC

// powerup, another 20us delay is required before performing the first

// ADC conversion. Please note that for the delay function below to

// operate correctly the CPU_CLOCK_SPEED define statement in the

// DSP28_Examples.h file must contain the correct CPU clock period in

// nanoseconds. For example:

AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry

DELAY_US(ADC_usDELAY); // Delay before powering up rest of ADC

AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC

DELAY_US(ADC_usDELAY2); // Delay after powering up ADC

}

tms320f2812 adc18
TMS320F2812 ADC
  • ADCTRL3 레지스터의 이해(1)
  • ADCTRL3.8: EXTREF
    • 0: 내부 레퍼런스 회로 사용
  • Power 시퀀스
    • ADCBGRFDN[1:0]: Bandgap & Reference Power Down(=0)
tms320f2812 adc19
TMS320F2812 ADC
  • 파워 레벨에 따른 ADC 운영 팁
    • 칩 리셋 후 상태 – ADC Power Down 모드
    • ADC를 구동하기 위해서는,
      • reference와 bandgap회로에 전원을 먼저 인가(ADCBGRFDN[1:0] = 11)
      • 최소 7msec 이후에, ADC의 기타 회로에 전원인가(ADCPWDN = 1)
      • 최소 20us이후에, 첫 변환 시작
      • Pipeline 방식의 ADC이기에 초기 몇 샘플은 버릴 것
    • 참고: ADCTRL3의 POWER 모드 비트에 따른 파워 레벨
tms320f2812 adc20
TMS320F2812 ADC
  • ADC 상태: ADCST
    • INT SEQx: SEQx 인터럽트 플래그 비트
    • SEQx BSY: SEQx의 동작여부 표시 비트(1=in progress)
    • INT SEQx CLR: 인터럽트 플래그 클리어 비트
      • 1을 쓰면 플래그가 클리어
      • 언제나 0으로 읽힘
    • EOS BUFx
      • 인터럽트 모드0에서는 미사용 비트
      • 인터럽트 모드1에서는 매 EOS 마다 토글
tms320f2812 adc21
TMS320F2812 ADC
  • 시퀀서 상태: ADCASEQSR
  • 읽기 전용 비트로 구성
    • 오토 시퀀서의 상태 표시
  • SEQ CNTR3~0 :
    • ADCMAXCONV 레지스터에 정의된 내용을 수행하기 위해서
    • SOC 접수 후, MAX CONV 값이 로딩됨
  • SEQx STATEx : TI 내부 테스트용
tms320f2812 adc22
TMS320F2812 ADC
  • ADCTRL1
    • Reset : ADC 모듈 reset
      • 1을 쓰면 리셋, reset후 이 bit를 읽으면 0(self cleared)
      • ADC 모듈 reset작업에는 3 사이클 소요 → ADC 관련 레지스터 조작은 reset 후 3사이클 뒤에
      • reset 후 ADCTRL1에 값을 대입하기 위해서는 총 12사이클의 NOP등이 필요
    • SUSMOD1-0 : 에뮬레이션을 중지했을 때,
      • 0 0 Mode 0 : 계속해서 동작.
      • 0 1 Mode 1 : 현재 진행중인 시퀀서 동작 완료 후 정지
      • 1 0 Mode 2 : 현재 변환중인 채널을 완료한 후 중지
      • 1 1 Mode 3 : 곧바로 중지
tms320f2812 adc23
TMS320F2812 ADC
  • ADCTRL1 – 계속
    • ACQ PS3 : 샘플/홀드 시간 설정
      • 설정 값 = 비트 + 1
    • CPS : ADC 구동 클럭 분주기
      • 0 : ADCCLK = HSPCLK/1
      • 1 : ADCCLK = HSPCLK/2
    • CONT RUN : ADC의 연속/단일 변환 설정
      • 0 : 단일변환
        • 시퀀스 종료 후에 시퀀스는 정지한다.
      • 1 : 연속변환
        • 시퀀스 종료 후에 다시 시퀀스를 시작한다.
    • SEQ OVRD
      • 0 : Sequencer override 모드 비사용
      • 1 : Sequencer override 모드 사용
    • SEQ CASC
      • 0 : Dual sequencer 모드
        • SEQ1과 SEQ2을 병렬로 사용하여 1개의 ADC를 2개처럼 사용할 수 있다.
        • 단, 각각의 시퀀서는 8채널씩 시퀀스 할 수 있다.
      • 1 : Cascaded 모드
        • SEQ1과 SEQ2를 직렬로 사용하여 하나의 시퀀서로 사용할 수 있음
        • 두 시퀀서를 합쳐 16채널을 시퀀스 할 수 있다.
tms320f2812 adc24
TMS320F2812 ADC
  • ADCTRL2
    • SOC : 시작하기, Start of Conversion.
      • Evx SOC : Event Manager로부터 SOC를
      • SOC SEQx : 이 비트에 1을 쓰면, SEQ가 동작
      • EXT SOC SEQ1 : ADCSOC 핀 입력으로
    • EOS : 읽기, End of Conversion
      • INT ENA SEQx : ADC 결과를 인터럽트 방식으로 읽음
      • INT MOD SEQx : 매 EOS 마다 읽을 것인지, 매 두번째 EOS 마다 읽을 것인지.
    • RST SEQx : 시퀀서를 리셋, CONV00과 CONV08 상태로 초기화
tms320f2812 adc25
TMS320F2812 ADC
  • 인터럽트 모드 - 1
  • 인터럽트 모드 1 설정
  • MAX CONV = 1로 시작
    • I1과 I2 변환
  • 인터럽트 서비스 루틴 ‘a’에서
    • I1, I2 저장
    • MAX CONV = 2로 변경
  • 인터럽트 서비스 루틴 ‘b’에서
    • V1, V2, V3 저장
    • MAX CONV = 1로 변경
  • 인터럽트 서비스 루틴, ‘c, d’ 반복
  • if, 인터럽트 서비스 루틴 ‘b’에서 I1, I2, V1, V2, V3 값을 모두 처리한다면, 인터럽트 모드 1은 낭비

[EVA가 Underflow 일때, Period Matching 때 SOC 생성]

tms320f2812 adc26
TMS320F2812 ADC
  • 인터럽트 모드 - 2
  • 인터럽트 모드 2 설정
  • MAX CONV = 2로 시작
    • I1과 I2 변환
  • EVA가 Underflow일 때,
    • I1, I2, x(dummy 채널) 변환
    • MAX CONV = 2로 변경
  • EVA가 Period Matching일 때,
    • V1, V2, V3 변환
  • 인터럽트 서비스 루틴, ‘b’ 에서
    • I1, I2, V1, V2, V3 저장
  • 다음번 인터럽트 처리, ‘d’
  • dummy 채널 추가로 인터럽트 절제
    • 인터럽트 지연(10Cycle) 제거

[EVA가 Underflow 일때, Period Matching 때 SOC 생성]

tms320f2812 adc27
TMS320F2812 ADC
  • 12비트 결과 저장

MSB

LSB

  • 입력 전압(V) 12비트 ADC Result 버퍼 저장 내용
  • 3.0 0x0FFF 1111|1111|1111|0000
  • 1.5 0x07FF 1111|1111|1111|0000
  • 0.00073 0x0001 1111|1111|1111|0000
  • 0 0x0000 1111|1111|1111|0000
  • ADC의 분해능이 증가하면 결과 표현 비트 수가 증가
    • 10비트 ADC에 비해 12비트 ADC는 하위 2비트가 증가
  • 16비트 레지스터의 최상위 비트부터 채워나가는 것은
    • Q number의 자리값
    • Q math 이용 시, 자리 이동 필요 없음
tms320f2812 adc28
TMS320F2812 ADC
  • 결과 저장 순서

[ Override Mode ]

결과 저장용 버퍼

저장 내용

[ Non-Override Mode ]

ADCRESULT0

0

결과 저장용 버퍼

저장 내용

ADCRESULT0

1

ADCRESULT0

0

ADCRESULT0

2

ADCRESULT0

1

ADCRESULT0

3

ADCRESULT0

2

ADCRESULT0

0

ADCRESULT0

3

ADCRESULT0

1

ADCRESULT0

-

ADCRESULT0

2

ADCRESULT0

-

ADCRESULT0

3

ADCRESULT0

-

ADCRESULT0

0

-

-

ADCRESULT0

1

-

-

ADCRESULT0

2

-

-

ADCRESULT0

3

ADCRESULT0

0

ADCRESULT0

1

ADCRESULT0

2

AdcRegs.ADCTRL1.bit.SEQ_OVRD = 1;

오버 샘플링시 유리

ADCRESULT0

3

tms320f2812 adc29
TMS320F2812 ADC
  • Sequential Sampling Mode
tms320f2812 adc30
TMS320F2812 ADC
  • Simultaneous Sampling Mode
www themegallery com

Thank You !

www.themegallery.com