본문 바로가기

programmer/Embedded

TC297TA Triboard 를 사용해 LED를 점등해 보자

들어가기 전에

새로운 프로그램 언어를 배울 우리는 보통 Hello world 출력하곤 한다. 임베디드를 하는 사람은 LED Hello world 출력해보자.

Target: TC297 Triboard
Step: BC

 

참조 PDF
TriBoardManual-TC2X7-V13.pdf

하기 순서대로 설명을 진행하도록 한다.
1.Target spec 확인하는 방법
2.Port pin 설정 확인하는 방법
3.특정 Port 사용 주소 알아보는 방법
4.Trace32 LED 상태 변경하는 방법
5.소스 코드에서 LED 상태 변경하는 방법

1.Target spec 확인하는 방법

 

먼저 눈으로 LED 확인해 보자 하기 이미지의 노랑으로 표시한 부분이 LED 포트와 정보이다. 대게 P33.6 이라는 뜻은 33 port 6 pin이라는 것이다. 따라서 포트 33 6 핀부터 13 핀까지 모두 LED 할당되어 있다고 생각하면 된다.

검은색 표시된 부분을 자세히 보면 포트와 (33port.6pin~ 눈 크게 뜨고 보면 보인다.) 적혀져 있다.

TC297TA Triboard 실물, LED Port pin 이미지

그럼 진짜인지 매뉴얼을 확인한다. (쉽게 확인 가능하다..)

Triboard manual에 있는 간략한 보드 설명 이미지

Triboard 메뉴얼을 확인하면 LEDs P33.6 부터 P33.13까지 제공되는 것을 있다. 외에도 LED들이 사용되는걸 확인할 있다.

Triboard manual LEDs 설명

2.Port pin 설정 확인하는 방법

 

이제 LED 어떤 포트와 핀에 할당되어 있는지는 알았다.

다음으로 확인해야할 사항은 MCAL 어떻게 설정되어 있는지 확인하는 작업이다.

 

Mobilgene( Odin) 경우에는 포트별 pin in/out 설정이 가능하다.

Mobilgene(Odin) Port arxml setting 확인

Mobilgene 에서 설정한 대로 P33_6 핀은 OUT으로 설정되어있다.

port pin spec 확인

 

외의 공짜? 툴들은 해당 항목이 하드 코딩 되어있다.

 

3.특정 Port 사용 주소 알아보는 방법

P33_6 pin_out 설정을 확인 했으므로 실제 소스에서 해당 주소를 찾아 보도록 한다.

자신이 사용하는 SDK Tool Odin, mobilgene 이던지 IDE, Hightech, ERIKA 던지 간에 인피니언에서 제공하는 모든 포트 설정 정보는 IfxPort_reg.h 파일에 명시되어있다.

 

Hightech IDE 경우 port 주소가 0xF003D300u 설정되어 있다. 이는 이미 포트가 out pin으로 설정되었음을 의미한다.

IfxPort_reg.h 확인

Hightech IDE

 

잠시 해당 핀의 주소와 설정 방법을 확인해 보면

하기 문서에서 #define P33_OUT /*lint --e(923)*/ (*(volatile Ifx_P_OUT*)0xF003D300u) 값으로 유니온 포인터로 설정되어 있는 것을 있다.

Union이 뭔지 헷갈린다면 하기 링크를 참조하자.
유니온 설명 링크: https://suho413.tistory.com/entry/Union-%EC%82%AC%EC%9A%A9-%EC%9D%B4%EC%9C%A0

해당 포트 핀의 시작 주소는 0xF003D300u 이고 주소를 기준으로 값을 셋팅 된다.

유니온의 크기는 최대 4byte이고 signed int, unsigned int, bit field를 가능하게 설계되어 있다.

설정으로 인해 16진수로 led 설정하거나 bit 특정해 설정 가능하다.

사용 예는 후반부에 있다.

참조 할 만한 h 선언들

/** \brief  0, Port Output Register */

#define P33_OUT /*lint --e(923)*/ (*(volatile Ifx_P_OUT*)0xF003D300u)



typedef union

{

    unsigned int U;                         /**< \brief Unsigned access */

    signed int I;                           /**< \brief Signed access */

    Ifx_P_OUT_Bits B;                       /**< \brief Bitfield access */

} Ifx_P_OUT;



/** \brief  Port Output Register */

typedef struct _Ifx_P_OUT_Bits

{

    unsigned int P0:1;                      /**< \brief [0:0]  (rwh) */

    unsigned int P1:1;                      /**< \brief [1:1]  (rwh) */

    unsigned int P2:1;                      /**< \brief [2:2]  (rwh) */

    unsigned int P3:1;                      /**< \brief [3:3]  (rwh) */

    unsigned int P4:1;                      /**< \brief [4:4]  (rwh) */

    unsigned int P5:1;                      /**< \brief [5:5]  (rwh) */

    unsigned int P6:1;                      /**< \brief [6:6]  (rwh) */

    unsigned int P7:1;                      /**< \brief [7:7]  (rwh) */

    unsigned int P8:1;                      /**< \brief [8:8]  (rwh) */

    unsigned int P9:1;                      /**< \brief [9:9]  (rwh) */

    unsigned int P10:1;                     /**< \brief [10:10]  (rwh) */

    unsigned int P11:1;                     /**< \brief [11:11]  (rwh) */

    unsigned int P12:1;                     /**< \brief [12:12]  (rwh) */

    unsigned int P13:1;                     /**< \brief [13:13]  (rwh) */

    unsigned int P14:1;                     /**< \brief [14:14]  (rwh) */

    unsigned int P15:1;                     /**< \brief [15:15]  (rwh) */

    unsigned int reserved_16:16;            /**< \brief \internal Reserved */

} Ifx_P_OUT_Bits;

 

4.Trace32 LED 상태 변경하는 방법

 

하기 방법은 T32(Trace 32)에서 메모리 값을 변경해서 Target 제어하는 과정이다.

Trace32(T32) port pin 확인 방법

 

Port 33 OUT 셋팅에서 6 상태를 HIGH -> Low 변경하면 해당 LED 점등된다. 마우스 더블 클릭하면 bool 데이터이기 때문에 값이 변경된다. 그리고 하단 B:: Command 창을 보면 선택만으로 해당 위치의 주소값을 확인 할 수있다.

Trace32(T32) port pin 설정 방법

 

소스 코드에서 LED 상태 변경하는 방법

 

 

 

LED 같은 경우 간단하게 LED 할당된 주소에 변경으로 쉽게 제어할 있다.

 

프로그래밍으로 Port Pin 설정하는 방법(Bit 연산)

 

  P33_OUT.U = ((P33_OUT.U >> 6) | 0xFF) << 6; // 모든 Led Off

  P33_OUT.B.P6 = P33_OUT.B.P6 & 0x0; // p33.6 Led On

  P33_OUT.B.P9 = P33_OUT.B.P9 ^ 0x1;// p33.9 Led Toggle

 

하기 동영상으로 확인 정리해 보자.

https://youtu.be/mUv6AiXaF_Q

 

반응형
사업자 정보 표시
라울앤알바 | 장수호 | 서울특별시 관악구 봉천로 13나길 58-10, 404호(봉천동) | 사업자 등록번호 : 363-72-00290 | TEL : 010-5790-0933 | Mail : shjang@raulnalba.com | 통신판매신고번호 : 2020-서울관악-0892호 | 사이버몰의 이용약관 바로가기