GPIO Control 레지스터
이 레지스터의 해당 비트는 0이면 LOW로 0V, 1이면 HIGH로 3.3V가 감지된다.
Ex) GpioDataRegs.GPADAT.all=0x000000FF; //해당 비트를 1로 설정
Ex) GpioDataRegs.GPADAT.bit.GPIO0=1 or 0;
Ex) GpioDataRegs.GPASET.all=0x0000000F; // 해당 비트를 1로 set
Ex) GpioDataRegs.GPASET.bit.GPIO0=1;
이 레지스터는 쓰기 전용이다 따라서 Watch Window로 읽으면 무조건 0으로 읽힌다.
Ex) GpioDataRegs.GPxCLEAR.all=0x0000000F; // 해당 비트를 0으로 clear
Ex) GpioDataRegs.GPxCLEAR.bit.GPIO0=1;
이 레지스터 또한 쓰기 전용이다. 따라서 마찬가지로 watch window로 읽으면 무조건 0으로 읽힌다.
Ex) LOW 일 때 GpioDataRegs.GPATOGGLE.bit.GPIO0=1 이라고 할 경우 GPIO 0번 핀의 상태를 HIGH로 바꾼다. 그리고 다시 이 상태에서 Toggle 할경우 LOW로 바뀐다.
이 레지스터도 0을 입력하는 것은 무의미하다.
극심한 노이즈의 경우에도 필터링이 가능하지만 이에 따른 시간지연과 연산 증가로 실시간 시스템에 영향을 줄 수 있다.
이 경우에 Input Qualifier 회로가 유용하다.
Qualifier은 자격심사라는 의미로 입력되는 신호의 유효성을 판단하는 것이 Input Qualifier이다.
위 그림은 Input Qualifier의 구조를 나타낸다. 외부에서 GPIO 입력 핀에 신호가 전달되면 버퍼를 거쳐 SYCN 회로에 입력된다. 외부에서 인가되는 신호는 DSP 내부 시스템 클러과 동기가 되어 있지 않기 때문에 SYNC회로를 거쳐 DSP와 동기화가 이루어진다. 동기화된 신호는 Qualification 회로 전달되어 Qualify를 수행한다. 이 Qualify 과정은 동기가 맞춰진 신호를 일정한 주기로 샘플링 하면서 시작된다. 이 때의 샘플링 주기가 바로GPxCTRL 레지스터와 관련있다.
GPACTRL의 레지스터 구조이다.
총 4개의 QUALPRDx라는 영역이 있다. 이 영역은 0x00~0xFF까지 입력이 가능하고, 각각의 영역인
QUALPRD 1/2/3/4는 Qualifier 회로의 적용이 가능한 GPIO를 분할하여 담당한다.
00 : I/O 기능
01 : EPWM 기능
10 : MCLKRA 기능
11 : ECAP 기능
간혹 같은 역할 (Ex. ECAP1은 GPAMUX1 레지스터 11-10, 17-16에 동시 할당)을 핀이 있다.
이때 서로다른 기능 수행시 오류 발생이므로 겹치는 핀이 존재할경우 다른 핀은 사용을 피해야한다.