TMS320/F283352014. 8. 18. 12:01

2812와는 약간 다른 명칭과 구조를 가지고 있다.



2812 

28335 

GpioMuxRegs 

GpioCtrlRegs

GpioDataRegs 

GpioDataRegs 

 

GpioIntRegs 


28335에서 GpioIntRegs는 인터럽트 관련 GPIO_INT_REGS 구조체변수로 구조체는 아래와 같다.

struct GPIO_INT_REGS {

   union  GPIOXINT_REG     GPIOXINT1SEL; // XINT1 GPIO Input Selection

   union  GPIOXINT_REG     GPIOXINT2SEL; // XINT2 GPIO Input Selection

   union  GPIOXINT_REG     GPIOXNMISEL;  // XNMI_Xint13 GPIO Input Selection

   union  GPIOXINT_REG     GPIOXINT3SEL; // XINT3 GPIO Input Selection

   union  GPIOXINT_REG     GPIOXINT4SEL; // XINT4 GPIO Input Selection

   union  GPIOXINT_REG     GPIOXINT5SEL; // XINT5 GPIO Input Selection

   union  GPIOXINT_REG     GPIOXINT6SEL; // XINT6 GPIO Input Selection

   union  GPIOXINT_REG     GPIOXINT7SEL; // XINT7 GPIO Input Selection

   union  GPADAT_REG       GPIOLPMSEL;   // Low power modes GP I/O input select

};


GpioDataRegs는 형태가 같으며 GpioCtrlRegs가 GpioMuxRegs를 대신하며 그 구조 역시 바뀌었다.

struct GPIO_MUX_REGS {

   union  GPAMUX_REG   GPAMUX;

   union  GPADIR_REG   GPADIR;

   union  GPAQUAL_REG  GPAQUAL;

   Uint16              rsvd1;

   union  GPBMUX_REG   GPBMUX;

   union  GPBDIR_REG   GPBDIR;

   union  GPBQUAL_REG  GPBQUAL;   

   Uint16              rsvd2[5];

   union  GPDMUX_REG   GPDMUX;

   union  GPDDIR_REG   GPDDIR;

   union  GPDQUAL_REG  GPDQUAL;   

   Uint16              rsvd3;

   union  GPEMUX_REG   GPEMUX;

   union  GPEDIR_REG   GPEDIR;

   union  GPEQUAL_REG  GPEQUAL;   

   Uint16              rsvd4;

   union  GPFMUX_REG   GPFMUX;

   union  GPFDIR_REG   GPFDIR;

   Uint16              rsvd5[2];

   union  GPGMUX_REG   GPGMUX;

   union  GPGDIR_REG   GPGDIR;

   Uint16              rsvd6[6];

};


struct GPIO_CTRL_REGS {

   union  GPACTRL_REG  GPACTRL;   // GPIO A Control Register (GPIO0 to 31)

   union  GPA1_REG     GPAQSEL1;  // GPIO A Qualifier Select 1 Register (GPIO0 to 15)

   union  GPA2_REG     GPAQSEL2;  // GPIO A Qualifier Select 2 Register (GPIO16 to 31)

   union  GPA1_REG     GPAMUX1;   // GPIO A Mux 1 Register (GPIO0 to 15)

   union  GPA2_REG     GPAMUX2;   // GPIO A Mux 2 Register (GPIO16 to 31)

   union  GPADAT_REG   GPADIR;    // GPIO A Direction Register (GPIO0 to 31)

   union  GPADAT_REG   GPAPUD;    // GPIO A Pull Up Disable Register (GPIO0 to 31)

   Uint32              rsvd1;

   union  GPBCTRL_REG  GPBCTRL;   // GPIO B Control Register (GPIO32 to 63)

   union  GPB1_REG     GPBQSEL1;  // GPIO B Qualifier Select 1 Register (GPIO32 to 47)

   union  GPB2_REG     GPBQSEL2;  // GPIO B Qualifier Select 2 Register (GPIO48 to 63)

   union  GPB1_REG     GPBMUX1;   // GPIO B Mux 1 Register (GPIO32 to 47)

   union  GPB2_REG     GPBMUX2;   // GPIO B Mux 2 Register (GPIO48 to 63)

   union  GPBDAT_REG   GPBDIR;    // GPIO B Direction Register (GPIO32 to 63)

   union  GPBDAT_REG   GPBPUD;    // GPIO B Pull Up Disable Register (GPIO32 to 63)

   Uint16              rsvd2[8];

   union  GPC1_REG     GPCMUX1;   // GPIO C Mux 1 Register (GPIO64 to 79)

   union  GPC2_REG     GPCMUX2;   // GPIO C Mux 2 Register (GPIO80 to 95)

   union  GPCDAT_REG   GPCDIR;    // GPIO C Direction Register (GPIO64 to 95)

   union  GPCDAT_REG   GPCPUD;    // GPIO C Pull Up Disable Register (GPIO64 to 95)

};


2812와 비교해 새로운 것은 CTRL과 PUD의 존재이다.
============================================================================================
GPIOMUX

아래를 참고하자





Mux값을 설정하여 핀의 기능을 정할 수 있다.


28335는 총 88개의 핀이 존재하며 이는 A,B,C로 나뉜다. 또한 여기서도 각각 MUX1, MUX2의 2부분으로 나뉜다.

GPIOA

-GPAMUX1 : 0~15(16 pin)

-GPAMUX2 : 16~31(16 pin)


GPIOB

-GPBMUX1 : 32~47(16 pin)

-GPBMUX2 : 48~63(16 pin)


GPIOC

-GPCMUX : 64~79(16 pin)

-GPCMUX : 80~87(8 pin)


이 핀들은 MUX설정에 따라 어떤 기능을 할 것인가를 정할 수 있으며 최대 4종류가 있기에 핀당 2비트가 할당되어있다.

따라서 MUX1, MUX2모두 32비트씩을 갖는다.


============================================================================================

GPIOCTRL




DSP에서 받는 신호는 우리가 원하는 신호뿐만 아니라 노이즈(잡음)이 섞여 들어오기도 한다. 따라서 Qualification이라는 단계에서 수집된 신호에 대한 샘플링(동기화)를 하게 되는데, 여기서 중요한것이 Sampling Window이다.


실례를 들면서 설명하자.


SYSCLKOUT cycle : 시스템클럭의 주기(한 클럭당 시간).

SYSCLKOUT : 시스템클럭 주파수. 초당 클럭 수

QUALPRD(CTRL) : 동기 펄스 갯수

Sampling Window : 샘플링 횟수(샘플링 횟수-1)


3번째와 4번째는 같은 말인것 같지만 넘어가자...

위 그림에서는 Sampling Window = 6-1=5이다.


(SYSCLKOUT cycle*2*QUALPRD)    [1단계]

QUALPRD가 n이라고 할 때, Qualification 단계에 진입하는 신호의 2*n개째에서 값이 수집 된다. 만약 SYSCLKOUT cycle 이 10ms라고 하자. 이는 10ms당 1클럭씩 신호가 들어온다는 것이다. QUALRPD=4라고 한다면 2*4번째 신호를 샘플링 한다. 즉, 8*10ms주기로 신호를 수집한다는 것이다.


(SYSCLKOUT cycle*2*QUALPRD)*5    [2단계]

Sampling Window(width)=6일 때, 6-1=5 길이의 신호가 같은 값이면 이를 인정한다. 즉 80ms주기로 채집한 신호가 5회 연속으로 같은 값이어야 정상적인 신호로 인정한다는 것이다. 그렇다면 정상적인 한 신호의 판별에 최소 80*5ms가 걸린다는 의미가 될것이다.


QUALPRD는 총 8핀으로 값을 정할 수 있다. 0x00~0xFF까지 정할 수 있으며 0xFF일 때는 SYSCLKOUT cycle*2*255가 1단계의 길이(시간)이 될것이다.


P.S C포트에는 이 레지스터가 존재하지 않는다.

============================================================================================

GP QSEL[Qualification Select)(1,2)


이는 위에서 나온 Sampling window's width의 설정이다.

한 핀당 2비트씩 할당되어 4가지 설정이 가능하다.


00:미사용 (0샘플링. 시스템 클럭에만 동기화)

01 : width = 2(3샘플링)

10 : width = 5(6샘플링)

11 : 시스템 클럭에 비동기하게. 입력 신호의 샘플링 없이 연속적으로 받아들인다. 특수핀(주변회로)때만 유효하고 단순 GPIO일 경우 00과 같다.


============================================================================================

GPDIR

입, 출력 방향성 설정으로 GPIO로 쓸 경우 유효.

0 : 입력

1 : 출력


GPPUD

한 핀당 1비트씩 할당. I/O, 특수핀 모두 유효하며 0이면 내부 풀업. 1이면 Disable


============================================================================================

GPIO Data Registers


DAT : 32비트 레지스터. 헤당 핀의 출력의 Data를 결정

SET : 32비트 레지스터. 헤당 핀을 High로. 1만 사용 가능

CLEAR : 32비트 레지스터. 헤당 핀을 LOW로. 1만 사용 가능

TOGGLE : 32비트 레지스터. 헤당 핀의 상태를 반전. 1만 사용 가능


============================================================================================

GPIO INTx Select


GPIOXINT(1,2)SEL

하위 5비트(0~31)을 이용하여 A포트의 아무 핀이나 외부인터럽트 1,2기능을 부여 가능.

XINTnCR레지스터에서 설정 가능


GPIOXINT(3~7)SEL

하위 5비트(0~31)을 이용하여 B포트의 아무 핀이나 외부인터럽트 3~7기능을 부여 가능.

XINTnCR레지스터에서 설정 가능


GPIOXNMISEL

GPIOXINT(1,2)SEL

하위 5비트(0~31)을 이용하여 A포트의 아무 핀이나 Non-Maskable Interrupt(XNMI_XINT13핀)기능 부여 가능


GPIOLPMSEL

저전력 모드 관련

'TMS320 > F28335' 카테고리의 다른 글

Cpu Timer(2)  (0) 2014.08.19
Cpu Timer(1)  (1) 2014.08.19
ADC(2)  (0) 2014.08.18
ADC(1)  (0) 2014.08.18
기본자료  (0) 2014.08.18
Posted by 십자성군