본문 바로가기
임베디드SW/TC275 Lite Kit for 임베디드

GPIO 제어하는 방법 3편 (MCU TC275 LED 제어)

by 바이너리 임베디드 2021. 11. 25.

GPIO 제어하는 방법 3편 (MCU TC275 LED 제어)


GPIO 제어하는 방법



GPIO 제어하는 방법으로 마지막 편입니다.
인피니언 Aurix TC275 Lite Kit EVB에서 GPIO를 통해 LED를 제어하는 방법을 살펴 보도록 하겠습니다.

미리 앞서 우리는 GPIO 설정을 하기 위해 GPO부분에서는 Push-pull, Open-drain에 대해 배워보았습니다. 아직 못보신분들은 아래 글을 꼭 보고 오시기 바랍니다.

GPIO 제어하는 방법 1편



그리고 GPI부분에서는 Floating, Pull-up, Pull-down에 대해 배워 보았습니다. 이글도 꼭 보고 오시기 바랍니다.

GPIO 제어하는 방법 2편


그래야 지금 보고 계시는 글을 이해하는데 큰 도움이 되기 때문입니다.
자 그럼 다 보고 오셨나요?

 

MCU TC275 Lite Kit 회로 분석


우선 LED를 제어하기 위해서는 회로를 분석하여 지금까지 배워왔던 설정할 부분들을 선택 해주어야 합니다.

회로도는 어디서 찾아보면 될까요??
TC275 Lite Kit User Manual을 다 다운 받으셨을것입니다. 없으신 분들은 아래 링크를 참고 하시기 바랍니다.

TC275 Lite Kit User Manual

그럼 유저 매뉴얼에 제일 아래 부분을 살펴보면 회로도가 있을것이고 LED로 검색을 해보면 LED에 관한 정보들을 찾아보실수 있습니다.

팁을 하나 드리자면 레펀런스 매뉴얼은 처음부터 끝까지 읽는 문서가 아니고 내가 필요한 부분만 발췌해서 보는 문서입니다. 내용이 너무 방대하고 다 외울수도 없기 때문입니다.

아래 그림에서 오른쪽 그림은 LED 회로도 부분입니다. MCU쪽에서 P00.5 포트가 있고 그 포트랑 LED1이랑 연결이 되어 있네요. 그리고 저항이 연결되어 있고 VEXT 3.3V 전원과 연결 되어 있군요.
아주 심플한 회로도 구성입니다.



Input 핀? Output 핀?



그럼 제일 먼저 Input Pin으로 설정 할지 Output pin으로 설정할지를 선택해야 겠죠??

회로도에서 보면 외부의 스위치가 있어서 pull-up 디바이스나 pull-down 디바이스가 달려 있지 않습니다.

그럼 우리는 Input 핀으로는 설계를 할수 없습니다.
그렇다면 우리는 Output 핀으로 설계를 진행해야 합니다.


Push-pull? Open-drain?

둘중 어떤 모드로 선택을 해야 할까요??

Push-pull 같은 경우에는 MCU 내부에서 출력을 결정해줄수 있는데 Open-drain같은 경우에는 외부 회로가 갖추어줘야 구현이 가능합니다.

Open-drain 외부 회로가 기억이 안나시는 분들은 다시 위에 링크를 통해 확인 해보시기 바랍니다.

그렇다면 우리는 Push-pull로 설정을 해주면 된다고 결론을 낼 수 있습니다.

 

GPIO 제어하는 방법 3편 (MCU TC275 LED 제어)



Output, Push-pull로 설정을 하게되면 Output Buffer가 1이 될때, 3.3V 출력 상태가 되며 VEXT = 3.3V이므로 전위차가 없으므로 LED에는 전류가 흐르지 않아 LED가 Off 상태가 됩니다.

 

GPIO 제어하는 방법 3편 (MCU TC275 LED 제어)



Output ,Push-pull로 설정하고 Output Buffer가 0이면, P00.5핀 출력 상태가 0V 상태가 되며 VEXT = 3.3V이므로 전위차가 발생하여 LED에는 전류가 흐르게 되고 LED가 On 상태가 됩니다.

 

정리를 하게되면 P00.5핀을 Output Pin으로 설정하고 Push-pull 모드로 설정한 후 Output Buffer를 0으로 하면 LED On 1로 하면 LED Off가 되게 됩니다.

 

3편에 걸쳐서 LED 제어는 1줄로 결론을 내릴 수가 있군요 ^^;;;;

MCU TC275 Lite Kit EVB 실전 구현!

 

GPIO 제어하는 방법 3편 (MCU TC275 LED 제어)

 

제일 먼저는 핀을 어떤 용도로 쓸지 초기화를 해주어야 합니다.

이미 우리는 핀을 어떤 용도로 쓸지 3편의 글을 통해 결정하였습니다.

iLLD를 통해 Output 모드로 설정하고 Push-pull모드로 설정했습니다.

그리고 Output 버퍼 초기값으로 Low값을 입력해 주었습니다.

while문에 진입하기 전 디버깅 모드에서 Break를 걸어주게 되면 LED1의 불은 당연히 환하게 들어오고 있을 것입니다. 

그럼 이상태에서 Output 버퍼를 직접 Control 해보도록 하겠습니다.

 

아래 그림은 TC275 레퍼런스 매뉴얼입니다. Ports 부분에서 Output Buffer의 셋팅하는 부분을 발췌한 내용입니다.

아래 링크를 통해 레펀런스 매뉴얼을 다운로드 하실수 있습니다.

https://www.infineon.com/dgdl/Infineon-TC27x_D-step-UM-v02_02-EN.pdf?fileId=5546d46269bda8df0169ca09b44623ed

GPIO 제어하는 방법 3편 (MCU TC275 LED 제어)

 

그럼 위의 설명대로 P00.5이므로 P5를 제어하면 될것 같습니다.

P00_OUT 레지스터에 0x20 Write 하게 되면 Output Buffer 1을 쓰게 되는 것이고  0x00 Write 하게 되면 0을 쓰게 됩니다. 그럼 테스를 한번 해볼까요?

 

GPIO 제어하는 방법 3편 (MCU TC275 LED 제어)

 

P00_OUT 레지스터 0x20을 썼을 때는 LED가 Off되는 것을 확인 할수 있었고 0x00을 썻을 때는 LED가 On 되는 것을 확인 할수 있었습니다.

 

 

Mission. 현재 셋팅되어 있는 클럭이 어떻게 동작하고 있는지를 알아보시기 바랍니다.

 

앞으로 우리는 LED를 1초마다 일정하게 깜박이는 미션을 하게 될것입니다.

그전에 클럭을 이해해야 LED를 1초마다 일정하게 깜박일 수 있습니다.

그럼 현재 셋팅되어 있는 클럭에 대해 알아보시기 바랍니다.

당연히 해결했거나 잘 모르겠는 부분은 어디서 나누면 된다???!?!?! 

아래 바이너리 임베디드 카페로 오시기 바랍니다.

 

그리고 꼭 혼자의 힘으로 해보시는겁니다!! 고고!

https://cafe.naver.com/binaryembedded

 

바이너리 임베디드 : 네이버 카페

임베디드 SW 개발자 되기 아카데미

cafe.naver.com

https://cafe.naver.com/binaryembedded

 

바이너리 임베디드 : 네이버 카페

임베디드 SW 개발자 되기 아카데미

cafe.naver.com

 

댓글