1 / 35

DSP TMS320F2812

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

eilis
Download Presentation

DSP TMS320F2812

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DSP TMS320F2812 ROBOTICS LAB. http://cafe.naver.com/roboticslab

  2. Contents 1. TMS320F2812 ADC 특징 2. TMS320F2812 ADC 구조 3. TMS320F2812 ADC 관련 레지스터

  3. 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: 시퀀서 동작 매 두 번째 완료 시 마다

  4. 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

  5. TMS320F2812 ADC 구조 • 파이프라인 방식 ADC의 특징 • 각 단(Stage)의 일괄(Concurrent)동작으로 고속 변환 가능 • 고주파 신호에 대한 광범위한 Dynamic Range 제공 가능 • 파이프라인이 꽉 차기 전의 데이터는 의미 없음 • 지연발생: 프로그래밍 시 주의 필요 • 각 스테이지의 ADC방식은 연속근사방식(Successive Approximation Register ADC)

  6. TMS320F2812 ADC 구조

  7. TMS320F2812 ADC • ADC를 사용하기 위해서 • 몇 개 채널? • 어떤 순서? • 변환 시간? • 추가해서 • ADC를 어떻게 시작할 것인지? • 샘플링 주기는 어떻게? • ADC 상태는 어떠한지? • ADC 결과를 어떤 방식으로 읽을 것인지? • Dual Sample/Hold 회로를 어떻게 운영할 것인지? • ADC 결과 저장용 버퍼를 어떻게 운용할 것인지?

  8. TMS320F2812 ADC • ADC의 MMR 변환 채널 수 및 변환 순서 설정 결과 저장용 버퍼

  9. 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

  10. 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

  11. TMS320F2812 ADC • 샘플링 주기: SOC(Start of Conversion)의 주기적 발생 • ADC의변환 시간과 상관없음. • 단, Continuous Run Mode 에서는 ADC 자체 변환 시간이 샘플링 주기 결정 • 예1) 10KHz로 샘플링 • Event Manager의 주기 이벤트를 이용해서 10KHz 주기로 SOC 발생 • 예2) ADCTRL1.6의 CONT_RUN 비트 설정 • ADC 변환 시간(시퀀서 한 세트): 샘플링 주기

  12. 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

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

  14. TMS320F2812 ADC • ADC 구동 클럭을 높이면 • Aliasing이 줄어든다. • 채널간 오차(cross-talk)가 커진다. • 이 오차는 샘플링 윈도우를 키운다고 줄어드는 성질의 것이 아니다. • ADC 구동 클럭을 낮추면 • Aperture Error가 커진다. 주의 1: 구동 클럭과 샘플링 rate은 별개 • 1KHz로 샘플링을 하더라도, ADC 구동 클럭은 25MHz가 가능하다. 주의 2: 281x ADC의 최고 구동 클럭은 25MHz • 분주 부주의로 25MHz이상의 클럭이 공급되면, 결과는 엉망이다.

  15. TMS320F2812 ADC • 시퀀서란? • 개발자와 ADC를 연결하는 매개체 • 채널 변환 순차 설정이 주된 동작 • 개발자가 시퀀서에 기동 신호를 전달하면, 시퀀서가 ADC회로를 적절히 기동 • 시퀀서 설정 완료 인터럽트 발생 가능 • 다채널 조작 용기 • 8채널 조작 시퀀서가 2개 • SEQ1: ADCINA0~7 → S/H-A • SEQ1: ADCINB0~7 → S/H-B • 16채널 조작 단일 시퀀서로도 운용 가능(Cascaded 모드)

  16. TMS320F2812 ADC • 시퀀서의 잇점 • Multi-rate System 구현 용이 • 로봇과 같은 Multi Sensors System 구현 용이 • 고속 샘플링 지원 용이 • 12.5MHz 샘플링: 샘플링당 12개의 명령어 처리 • 블록 샘플링: • 최고 16회 혹은 16채널 변환을 1블록으로 • 시퀀서 완료 주기는 약 780KHz(12.5MHz/16) • 인터럽트 처리 가능 / 알고리즘 처리 여유 • 주변 회로 연계 구동 능력 • 초기 설정만으로 ADC 구동 가능 • 타이머 주기 이벤트를 이용한 ADC 기동 • 유연한 ADC 기동과 결과 처리 가능

  17. TMS320F2812 ADC • 시퀀서: Cascaded(직렬) 모드

  18. TMS320F2812 ADC • 시퀀서: Dual Sequencers(병렬) 모드

  19. TMS320F2812 ADC • 281x ADC의 내부 레퍼런스 회로 이용법

  20. 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 }

  21. TMS320F2812 ADC • ADCTRL3 레지스터의 이해(1) • ADCTRL3.8: EXTREF • 0: 내부 레퍼런스 회로 사용 • Power 시퀀스 • ADCBGRFDN[1:0]: Bandgap & Reference Power Down(=0)

  22. TMS320F2812 ADC • 파워 레벨에 따른 ADC 운영 팁 • 칩 리셋 후 상태 – ADC Power Down 모드 • ADC를 구동하기 위해서는, • reference와 bandgap회로에 전원을 먼저 인가(ADCBGRFDN[1:0] = 11) • 최소 7msec 이후에, ADC의 기타 회로에 전원인가(ADCPWDN = 1) • 최소 20us이후에, 첫 변환 시작 • Pipeline 방식의 ADC이기에 초기 몇 샘플은 버릴 것 • 참고: ADCTRL3의 POWER 모드 비트에 따른 파워 레벨

  23. TMS320F2812 ADC • ADC 상태: ADCST • INT SEQx: SEQx 인터럽트 플래그 비트 • SEQx BSY: SEQx의 동작여부 표시 비트(1=in progress) • INT SEQx CLR: 인터럽트 플래그 클리어 비트 • 1을 쓰면 플래그가 클리어 • 언제나 0으로 읽힘 • EOS BUFx • 인터럽트 모드0에서는 미사용 비트 • 인터럽트 모드1에서는 매 EOS 마다 토글

  24. TMS320F2812 ADC • 시퀀서 상태: ADCASEQSR • 읽기 전용 비트로 구성 • 오토 시퀀서의 상태 표시 • SEQ CNTR3~0 : • ADCMAXCONV 레지스터에 정의된 내용을 수행하기 위해서 • SOC 접수 후, MAX CONV 값이 로딩됨 • SEQx STATEx : TI 내부 테스트용

  25. 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 : 곧바로 중지

  26. 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채널을 시퀀스 할 수 있다.

  27. 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 상태로 초기화

  28. 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 생성]

  29. 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 생성]

  30. 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 이용 시, 자리 이동 필요 없음

  31. 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

  32. TMS320F2812 ADC • Sequential Sampling Mode

  33. TMS320F2812 ADC • Simultaneous Sampling Mode

  34. Plan

  35. Thank You ! www.themegallery.com

More Related