'DSP(28335) > ADC 전압 읽기' 카테고리의 다른 글

ADC 전압읽기  (0) 2018.01.11
Posted by 숭덕이
TAG 0~10V, 0~3V, ADC, 전압

각도센서는 디지털형과 아날로그형이 있다.

이 실험에서 아날로그 및 디지털 실험을 해 볼 것이며, SCA61T라는 모델이다.


대략적으로 스펙은 아래와 같으며, 1축 모델이다.

- Measuring ranges ±30°

- 0.0025° resolution

- Single +5 V supply


SCA61T 모델의 형태는 다음 아래와 같다.







이 모델을 가지고 설계하면서 문제점이 한가지 발생하였다.

이는 5V에서 동작하는 Chip으로써, 전압 레벨쉬프트를 해줘야하는 번거로움이 생기었다.


이에 SPI의 경우, 5V <->3.3V 데이터 통신상에는 문제가 되지 않을 것으로 예상되지만 장시간 사용시 IC에 치명적인 손상이 염려되어

전압레벨변환기은 TXS0104모델로 선정하여 회로도를 그렸다.



 회로도

 angle sensor.pdf

 




 



'DSP(28335) > 각도센서 계획중.' 카테고리의 다른 글

각도센서 회로도  (2) 2015.01.15
Posted by 숭덕이

 

 

 

 

 

<<ADC의 구조도>>

 

 

 

<<동영상>>

 

 

<<예제 소스>>

#include "DSP28x_Project.h"  

Uint16 ADC_value;

void main(void)
{
 DINT;
 InitSysCtrl();
 EALLOW;
 SysCtrlRegs.HISPCP.bit.HSPCLK = 1;     // HSPCLK = SYSCLKOUT/(HISPCP*2)
            // HSPCLK = 150MHz/(1*2) = 75MHz 
 GpioCtrlRegs.GPAMUX1.all = 0;
  GpioCtrlRegs.GPADIR.all = 0x00003F;
 EDIS;
 
 GpioDataRegs.GPADAT.all = 0x00003F;
 
 InitAdc();
  
 AdcRegs.ADCTRL3.bit.ADCCLKPS = 3;      // ADCCLK = HSPCLK/(ADCCLKPS*2)/(CPS+1)
 AdcRegs.ADCTRL1.bit.CPS = 1;    // ADCCLK = 75MHz/(3*2)/(1+1) = 6.25MHz
 AdcRegs.ADCTRL1.bit.ACQ_PS = 3;    // 샘플/홀드 사이클 = ACQ_PS + 1 = 4 (ADCCLK기준)
 AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;   // 시퀀스 모드 설정: 직렬 시퀀스 모드 (0:병렬 모드, 1:직렬 모드)
 AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0;    // ADC 채널수 설정: 1개(=MAX_CONV+1)채널을 ADC
 AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0;   // ADC 순서 설정: 첫번째로 ADCINA0 채널을 ADC

 ADC_value = 0;
 GpioDataRegs.GPADAT.all = 0x00003F; 
 EINT;  
 ERTM; 
 
 for(;;)
 { 
  AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;     // ADC 시퀀스 시작 
  DELAY_US(1.72L);         // ADC 시퀀스 변환시간(약1.72usec)만큼 지연
  
  ADC_value = AdcRegs.ADCRESULT0;      // ADC 결과 저장 
   
  AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;     // ADC 시퀀서 리셋
  DELAY_US(0.64L);         // ADC 시퀀서 리셋시간(약0.64usec)만큼 지연
  
  if(ADC_value < 10000) GpioDataRegs.GPASET.bit.GPIO0 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO0 = 1;
  if(ADC_value < 20000) GpioDataRegs.GPASET.bit.GPIO1 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO1 = 1;
  if(ADC_value < 30000) GpioDataRegs.GPASET.bit.GPIO2 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO2 = 1;
  if(ADC_value < 40000) GpioDataRegs.GPASET.bit.GPIO3 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO3 = 1;
  if(ADC_value < 50000) GpioDataRegs.GPASET.bit.GPIO4 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO4 = 1;
  if(ADC_value < 60000) GpioDataRegs.GPASET.bit.GPIO5 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO5 = 1;
 }
}

 

 

 

'DSP(28335) > 기초다치기..' 카테고리의 다른 글

TR28335 Volt_ADC  (0) 2014.07.09
TR28335 SW1, SW2 LED 기능  (0) 2014.07.08
LED ON, OFF 및 Shift  (0) 2014.07.05
Code Composer Studio4 설치방법  (0) 2014.07.02
TR28335 트레이닝 키트  (0) 2014.07.01
DSP320F28335를 이용한 GPS 파싱.  (0) 2013.07.27
Posted by 숭덕이

 

TR28335 SW 회로도

 

 

<<스위치 SW1, SW2>>

 

 

<<LED TR28335>>

 

 

기능

 1. SW1 스위치 선택시 ON/OFF 점멸.

 2. SW2 스위치 선택시 LED 쉬프트.

 

 

 

 

#include "DSP28x_Project.h"      

#define usec_delay 100000

Uint16 SW1, SW2;

void main(void)
{
 DINT;
 InitSysCtrl();
 EALLOW;
 GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;
 GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 0;
 GpioCtrlRegs.GPADIR.bit.GPIO12 = 0; 
 GpioCtrlRegs.GPADIR.bit.GPIO27 = 0; 
 GpioCtrlRegs.GPAMUX1.all = 0;
  GpioCtrlRegs.GPADIR.all = 0x00003F;
 EDIS;
 
 GpioDataRegs.GPADAT.all = 0x00003F;

 EINT;   // Enable Global interrupt INTM
 ERTM;   // Enable Global realtime interrupt DBGM

 for(;;)
 { 
  SW1 = GpioDataRegs.GPADAT.bit.GPIO12;
  SW2 = GpioDataRegs.GPADAT.bit.GPIO27;
  
  if(SW1 == 1)
  {
   GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
   GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1;
   GpioDataRegs.GPATOGGLE.bit.GPIO2 = 1;
   GpioDataRegs.GPATOGGLE.bit.GPIO3 = 1;
   GpioDataRegs.GPATOGGLE.bit.GPIO4 = 1;
   GpioDataRegs.GPATOGGLE.bit.GPIO5 = 1;
   DELAY_US(usec_delay); 
  }
  
  if(SW2 == 1)
  {  
   GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
   DELAY_US(usec_delay);
   GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1;
   DELAY_US(usec_delay);
   GpioDataRegs.GPATOGGLE.bit.GPIO2 = 1;
   DELAY_US(usec_delay);
   GpioDataRegs.GPATOGGLE.bit.GPIO3 = 1;
   DELAY_US(usec_delay);
   GpioDataRegs.GPATOGGLE.bit.GPIO4 = 1;
   DELAY_US(usec_delay);
   GpioDataRegs.GPATOGGLE.bit.GPIO5 = 1;
   DELAY_US(usec_delay);
  } 
 }
}

 

 

 

 

 

 

'DSP(28335) > 기초다치기..' 카테고리의 다른 글

TR28335 Volt_ADC  (0) 2014.07.09
TR28335 SW1, SW2 LED 기능  (0) 2014.07.08
LED ON, OFF 및 Shift  (0) 2014.07.05
Code Composer Studio4 설치방법  (0) 2014.07.02
TR28335 트레이닝 키트  (0) 2014.07.01
DSP320F28335를 이용한 GPS 파싱.  (0) 2013.07.27
Posted by 숭덕이

LED 회로도

 

 

 

 

 

-NC7WZ14P6X은 Dual Inverter with Schmitt Trigger 소자 입니다.

 

 

 

 

 

디지털 신호 1이 들어왔을 경우, 0으로 반전하고 신호를 보다 명확히 해주는 기능을 해주는 소자 입니다.

슈미트 트리거란 대략적으로 정형회로라고도 불리며, 신호에 노이즈가 섞여 신호가 전달되게 되면 1 및 0으로 정확한 판단이 될 수 없기때문에 슈미트트리거라는 소자를 사용하여 1, 0의 신호를 명확하게 구분하기 위하여 사용된다.

 

 

이를 응용하여 LED ON, OFF 및 쉬프트를 간략히 해보도록 하자 

 

 

레지스터 간략 설명

 

 레지스터

 내용 

DINT

 전역 인터럽트 스위치 ON

EINT

 전역 인터럽트 스위치 OFF

EALLOW

 Protected 영역에 쓰기를 하기 위해 Procet를 해제

EDIS

 Protected 다시 걸기 (보호해제 후 설정이 변경됬다면 다시 보호로 설정해줘야함)

GpioCtrlRegs.GPAMUX

 GPxMUX 입출력 기능 또는 핀 특별기능 사용 ( 0 : GPIO 1: 핀기능 PWM, SCI....) 

GpioCtrlRegs.GPADIR

 GPxDIR 입출력을 정의하는 레지스터 (0 : 입력 1 : 출력)

GpioDataRegs.GPADAT

 GPxDAT 해당비트에 0을 써 넣으면 0V 레벨때 감지 , 1을 써 놓으면 3.3V 레벨 감지

ERTM

 디버그 이벤트 ON

 

 

동영상

 

 

 

 

<< LED 토글>>

#include "DSP28x_Project.h"      // Device Headerfile and Examples Include File

#define usec_delay 1000000

void main(void)
{
 DINT;
 InitSysCtrl();

 EALLOW;
 GpioCtrlRegs.GPAMUX1.all = 0;
 GpioCtrlRegs.GPADIR.all = 0x00003F;
 EDIS;
 
 GpioDataRegs.GPADAT.all = 0x00003F;

 EINT;  
 ERTM; 

 for(;;)
 { 
  GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
  GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1;
  GpioDataRegs.GPATOGGLE.bit.GPIO2 = 1;
  GpioDataRegs.GPATOGGLE.bit.GPIO3 = 1;
  GpioDataRegs.GPATOGGLE.bit.GPIO4 = 1;
  GpioDataRegs.GPATOGGLE.bit.GPIO5 = 1;
  DELAY_US(usec_delay);  
 }
}

 

 

 

 

<<LED 쉬프트>>

#include "DSP28x_Project.h"      // Device Headerfile and Examples Include File

#define usec_delay 1000000

void main(void)
{
 DINT;
 InitSysCtrl();

 EALLOW;
 GpioCtrlRegs.GPAMUX1.all = 0;
 GpioCtrlRegs.GPADIR.all = 0x00003F;
 EDIS;
 
 GpioDataRegs.GPADAT.all = 0x00003F;

 EINT;  
 ERTM; 

 for(;;)
 { 
  GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
  DELAY_US(usec_delay);
  GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1;
  DELAY_US(usec_delay);
  GpioDataRegs.GPATOGGLE.bit.GPIO2 = 1;
  DELAY_US(usec_delay);
  GpioDataRegs.GPATOGGLE.bit.GPIO3 = 1;
  DELAY_US(usec_delay);
  GpioDataRegs.GPATOGGLE.bit.GPIO4 = 1;
  DELAY_US(usec_delay); 
  GpioDataRegs.GPATOGGLE.bit.GPIO5 = 1;
  DELAY_US(usec_delay);  
 }
}

 

 

 

'DSP(28335) > 기초다치기..' 카테고리의 다른 글

TR28335 Volt_ADC  (0) 2014.07.09
TR28335 SW1, SW2 LED 기능  (0) 2014.07.08
LED ON, OFF 및 Shift  (0) 2014.07.05
Code Composer Studio4 설치방법  (0) 2014.07.02
TR28335 트레이닝 키트  (0) 2014.07.01
DSP320F28335를 이용한 GPS 파싱.  (0) 2013.07.27
Posted by 숭덕이

 Code Composer StudioV4.exe 파일을 더블 클릭하여 실행하면 아래의 그림과 같은 창이 나타납니다.

 

 Next 버튼 클릭 후 다음 단계를 진행 합니다.

 

 

 Next 버튼 클릭 후 다음 단계를 진행 합니다.

 

 

I accept the terms of the license agreement버튼을 선택하고 Next 버튼을 클릭하여 다음 과정을 진행합니다.

 

 

Code Composer Studio V4의 설치 경로를 설정합니다.

Browse...버튼을 클릭하면 경로를 변경 할 수 있습니다.

설정이 완료 되었다면 Next 버튼을 클릭하여 다음 단계를 진행합니다.

 

 

Platinum Edition 클릭후 Next 버튼을 눌러 다음 단계를 진행합니다.

 

 

사용하고자 하는 프로세서를 선택 후 Next 버튼을 클릭 하여 다음 단계를 진행합니다.

 

 

Jtag 에뮬레이터를 선택 후 Next 버튼을 클릭하여 다음 단계를 진행합니다.

 

 

최종적으로 경로 지정 및 프로세서 선택, JTAG 에뮬레이터 선택 과정이 완료 되었으면 이 과정에 모든 내용을 설치 합니다.

 

 

설치가 진행됩니다.

 

 

 

Code Composer Studio v4를 실행시키면 위와 같이 인트로 화면이 뜬다.

 

 

작업하고자 하는 WorkSpace를 지정하고 OK를 눌러줍니다.

 

실제 동작 화면 입니다.

 

'DSP(28335) > 기초다치기..' 카테고리의 다른 글

TR28335 SW1, SW2 LED 기능  (0) 2014.07.08
LED ON, OFF 및 Shift  (0) 2014.07.05
Code Composer Studio4 설치방법  (0) 2014.07.02
TR28335 트레이닝 키트  (0) 2014.07.01
DSP320F28335를 이용한 GPS 파싱.  (0) 2013.07.27
비-인터럽트(Polling) 방식으로 ADC  (0) 2012.10.18
Posted by 숭덕이

 

TR28335 트레이닝 키트 회로도 

  Schematic_TR28335_V130.pdf

 

 

 

 

 

 

'DSP(28335) > 기초다치기..' 카테고리의 다른 글

LED ON, OFF 및 Shift  (0) 2014.07.05
Code Composer Studio4 설치방법  (0) 2014.07.02
TR28335 트레이닝 키트  (0) 2014.07.01
DSP320F28335를 이용한 GPS 파싱.  (0) 2013.07.27
비-인터럽트(Polling) 방식으로 ADC  (0) 2012.10.18
SCI통신(RS232)  (4) 2012.09.27
Posted by 숭덕이
TAG DSP, F28335

오늘은 몸이 피곤하고 덥고 하여 GPS에 대한 전반적인 내용만 찾아보고 이해하며, 서술해보도록 하겠습니다.

GPS에 보면 NMEA 프로토콜이라는 부분이 있다. 이 부분에 대해서는 개인이 직접 찾아서 공부하는것이 좋을 듯 합니다.

보통 GPS를 이용하여 위치정보나, 고도 등 여러 정보를 받으려면 거의 대부분 NMEA프로토콜을 이용한다고 볼 수 있다.

간단하게 시리얼 통신으로 정보를 볼 수 있고 그 해당하는 프로토콜의 파싱을 해주면 되는 부분이기 때문이다.

 

 

NMEA-0183에 관한 프로토콜 내용이다. 참고하시기 바랍니다.

http://www.slashdocs.com/mxpsip/protocol-nmea-0183-pdf.html

 

 

현재 연결만 DSP320F28335만 연결해놓았으며, 추후에 파싱하여 GPS 데이터는 SCI 통신으로 받아보도록 하겠습니다.

 

 

SK communications | Cymera | Aperture priority | Center-weighted average | 1/15sec | F/2.6 | 0.00 EV | 3.7mm | ISO-125 | Flash did not fire | 2013:07:27 12:25:42

 

'DSP(28335) > 기초다치기..' 카테고리의 다른 글

Code Composer Studio4 설치방법  (0) 2014.07.02
TR28335 트레이닝 키트  (0) 2014.07.01
DSP320F28335를 이용한 GPS 파싱.  (0) 2013.07.27
비-인터럽트(Polling) 방식으로 ADC  (0) 2012.10.18
SCI통신(RS232)  (4) 2012.09.27
SW 인터럽트.  (0) 2012.09.18
Posted by 숭덕이

안녕하세요 숭덕이 박제현 입니다.

DSP를 하면서 배워야할것이 많기도 하지만 레지스터가 너무 많아 혼잡스럽네요.

오늘은 ADC에 대해 간단히 공부를 해보겠습니다.

 

 

Apple | iPhone 3GS | Normal program | Average | 1/15sec | F/2.8 | 3.9mm | ISO-80 | No flash function | 2012:10:17 15:35:41

 

ADC란?

Analog-to-digital converter의 약자이다. 즉 analog 신호를 digital 신호로 변환하는 것이다.

Sampling

아날로그 신호를 받으면 일정한 시간 간격(주기)를 기준으로 표본을 추출하게 되고 이를 sampling이라 한다.

Quantization

A->D 변화시에 표본의 값을 이산값(discrete value)으로 표현하는 것을 의미한다.

여기서 이산값으로 표현할 수 있는 값의 범위가 8-bit(0~255)인지, 10-bit(0~1023)인지에 따라서 표현할 수 있는 값의 정밀도가 차이가 발생한다. 이러한 범위를 resolution(해상도, 분해능)이라고 부른다. 만약 입력되는 아날로그 값의 범위가 0~3V라면 8-bit의 경우 3/256=11.718mV 간격으로 표시할 수 있으며, 10-bit의 경우 3/1024=2.929mV 간격으로 표시할 수 있다다. 이를 통해 10-bit 의 분해능이 더 촘촘하게 표시할 수 있음을 알 수 있다.

http://www.mcublog.co.kr/261

http://www.mcublog.co.kr/262

http://www.mcublog.co.kr/263

http://www.mcublog.co.kr/264

http://www.mcublog.co.kr/265

http://www.mcublog.co.kr/266

http://www.mcublog.co.kr/267
http://www.mcublog.co.kr/268

http://www.mcublog.co.kr/269

http://www.mcublog.co.kr/270

http://www.mcublog.co.kr/271

http://www.mcublog.co.kr/272

http://www.mcublog.co.kr/273

http://www.mcublog.co.kr/274

'DSP(28335) > 기초다치기..' 카테고리의 다른 글

TR28335 트레이닝 키트  (0) 2014.07.01
DSP320F28335를 이용한 GPS 파싱.  (0) 2013.07.27
비-인터럽트(Polling) 방식으로 ADC  (0) 2012.10.18
SCI통신(RS232)  (4) 2012.09.27
SW 인터럽트.  (0) 2012.09.18
LED 제어.  (0) 2012.09.03
Posted by 숭덕이

안녕하세요 숭덕이 박제현입니다.

 

 

DSP(F28335)에 SCI통신을 해보겠습니다. 그냥 해보기에는 심심하여, 하이퍼터미널을 이용하여 'A'라는 키가 입력이 되면

LED를 ON->OFF->ON 방식으로 진행하였습니다. TI사에 사이트를 보시면 예제들이 너무나도 잘 짜여있어, 구성한 스토리가 있다면 간단하게 예제를 이용하여 진행이 될 거 같습니다.

너무 예제가 잘 되어 있다보니, 실험했던 동영상과 참조했던 사이트를 적겠습니다.

 

*DELAY_US(A)라는 함수가 TI에서 제공하는 함수가 있는데, RAM영역에서 실행할 경우 잘동작되나, 플래쉬에 올리고 하실 경우 DELAY_US부분에서 인터럽트가 걸립니다.

이유를 찾아보니 RAM에 경우 플래쉬영역보다 빠르기에 DELAY_US를 사용가능했던 경우이며, 이 경우를 해결하기 위해서는

DELAY_US부분은 램영역에 올려서 사용하면 됩니다.

 

-참조예제.

 

 SCI_A (TI사)

  Example_2833xScia_FFDLB.c

 GPIO_Toggle(TI사)

  Example_2833xGpioToggle.c 

예제는 TI사에서 제공하는 원본파일 그대로 올립니다.

 

 

 

 

 

 

 

'DSP(28335) > 기초다치기..' 카테고리의 다른 글

TR28335 트레이닝 키트  (0) 2014.07.01
DSP320F28335를 이용한 GPS 파싱.  (0) 2013.07.27
비-인터럽트(Polling) 방식으로 ADC  (0) 2012.10.18
SCI통신(RS232)  (4) 2012.09.27
SW 인터럽트.  (0) 2012.09.18
LED 제어.  (0) 2012.09.03
Posted by 숭덕이