[TMS320F28069M] GPIO 컨트롤, GPIO 설정, DSP GPIO 제어하기-1

728x90
반응형

예제를 불러와서 활용하는 방법까지 알아봤다. 어떤 회사에서.. 교육자료 등을 판매하길래 엄청나게 어려운가 보다 했는데 생각보다 어렵지 않다. 그럼 이제 GPIO 컨트롤부터 시작해보자.

 

C2000 계열의 개발보드 관련 자료는 C2000 SDK에 포함돼있다.

 

LUANCHXL_F28069M 회로도를 열어 LED가 연결된 GPIO를 확인해보자.

 

 

 

 

GPIO34번과 GPIO39에 연결된 걸 확인할 수 있다. 첫 번째 포스팅에서 열어봤던 gpio 예제를 활용해서 D9, D10번 LED를 컨트롤해보자.

 

이전 포스팅에서 만들었던 Test Project에 코드를 작성하고 예제 참고를 위한 새로운 workspace를 열어서 Example_2806xGpioToggle 예제를 열어보자.

 

Browse... 클릭

 

예제가 모여있는 폴더를 열어 Example_2806xGpioToggle 선택하고 Finish 누르고 Example_2806xGpioToggle.c 파일을 열면 코드를 볼 수 있다. 코드를 열어 스크롤을 내리다 보면 예제를 선택할 수 있는 define이 나온다.

데이터 시트를 열어 GPIO Block diagram을 보자.

 

 

왼쪽 그림은 일반적인 GPIO Block diagram이고, 오른쪽은 GPIO32, GPIO33번에 대한 Block diagram이다. 음.. 아직 왜 다른지 모르겠다 일단 패스하고 왼쪽을 참고하자. 계속 내리다 보면 GPIO control register가 나온다.

 

예제 1, 2, 3에서 말하는 DATA Register, SET/CLEAR Register/ TOGGLE Register가 있는 걸 확인할 수 있다. 그럼 다시 코드로 돌아가서 1번 EXAMPLE1부터 확인해보자.

 

예제 코드에서 Gpio_select(); 함수를 아래 그림처럼 InitSysCtrl(); 과 DINT 사이에 추가하자.

예제코드 맨 아래에 보면 Gpio_select() 함수가 보인다. 이것도 그대로 옮겨주고, 코드 시작 부분에 있는 void Gpio_select(void);도 작성해준다.

코드 상단에 함수 원형도 선언해주고,

 

나머지 부분은 동일하고 아래로 내려보면 #if로 분기되어있는 부분을 볼 수 있다.

Gpio_example1() 함수로 들어가 보자. 스크롤을 내려보면 나온다. 

 

 

Toggle동작을 하는 함수기 때문에 188,189 번째 줄과 193, 194번째 줄의 코드가 GPIO를 제어하는 코드일 것이다. 이전에 만들어 놓은 타이머와 조합해서 타이머 동작과 gpio 제어를 확인해보자. 

 

코드는 아래와 같이 작성함.

 

 

컴파일하고 디버깅을 해보면 1초 간격으로 led가 on / off를 반복하는 것을 확인할 수 있다.

 

GPIO 관련 레지스터 분석은 다음 포스팅에서!

 

- 끝 -

728x90
반응형