본문 바로가기
Embedded SW/Embedded SW Introduction

CAN 구현 및 동작 수행 1편 (TC275 MCU 예제코드 포팅)

by 방구석 임베디드 2022. 9. 13.
반응형

많은 분들이 CAN에 대해서 궁금해 하고 있으셔서,

이제 직접 인피니언 TC275 MCU를 이용해서 구현 및 동작확인을 수행해 보는 시간을 가져보도록 하겠습니다.

먼저 CAN 구현에 앞서서

미리 읽어 보시고 오셔야 할 글들이 있습니다.

CAN에 대한 개념적인 글이니, 한번 꼭 읽어보시고

그 다음에 동작 구현에 대한 글을 읽어 보세요.

1) CAN이란 무엇인가?

https://embeddedchallenge.tistory.com/57

2) CAN의 CAN Controller/Transceiver 전압 레벨 (High Speed CAN)

https://embeddedchallenge.tistory.com/59

3) CAN 정보전달 방식

https://embeddedchallenge.tistory.com/60

4) CAN Frame 분석

https://embeddedchallenge.tistory.com/61

5) CAN Arbitration

https://embeddedchallenge.tistory.com/62

 

참고로 MCU는 CAN이 주변기기로 있는 MCU를 선택하시면 됩니다.

CAN 주변기기를 동작시키는 방법은 MCU마다 조금씩 다르지만

CAN이라는 주변기기의 속성은 동일하기 때문에

제가 지금 개발하려는 MCU가 아니더라고 이 글을 읽는 과정에서 

Insight가 생기실수 있으니?ㅎㅎ

참고해 주세요!

 

저는 인피니언 MCU를 이용해서 CAN의 동작을 구현할 것입니다.

인피니언사에서는 개발자에게 필요한 예제코드를 사이트에서 제공해 주고 있습니다.

 

따라서 저는 아래의 예제코드를 이용해서 CAN을 구현해 보도록 하겠습니다.

그리고 제가 사용할 보드는 TC275입니다.

이 보드는 6만원대에서 구매할수 있는 저렴한 보드로

이러한 보드를 직접 구매해서 다양한 주변기기를 동작시켜 보시면

많은 도움이 되실 것입니다.

보드 관련 회로도 및 정보가 있는 파일을 첨부합니다.

Infineon-AURIX_TC275_Lite_Kit-UserManual-v01_00-EN.pdf
2.89MB

그러면 위의 파일을 한번 열어 보도록 하겠습니다.

T275안에 CAN Tranciever가 존재합니다.

6만원대 MCU안에 정말 많은 것들이 들어 있네요 ㅎㅎ

그렇다면 지금 이 Tranceiver와 연결된

RX,TX 핀이 MCU와 어떻게 연결되어 있는지를 확인해 보도록 하겠습니다.

p20_7 : Rx

p20_8 : Tx

위와 같이 연결이 되어 있는 것을 확인 할 수 있습니다.

 

이제 포팅을 해서 동작을 시켜 보도록 하겠습니다.

그런데, TC275보드를 사용하시는 분들은 아시겠지만

위의 예제코드를 포팅해도 동작이되지 않는 것을 확인하실 수 있습니다.

위와 같이 레지스터를 전부 확인하였는데

이상이 없는데도 동작을 수행하지 않습니다.

CAN관련하여 Tx라인을 Logic Analyzer로 계측을 하여 확인하여도 

비정사적인 프레임이 나오고 있습니다.

 

이러한 경우는 보통 CAN Tranceiver에 Enable Pin이 Disable 되어져 있을때

나오는 현상입니다.

아래 회로도에서 Tranceiver를 보시면

8번 핀이 STB라고 적혀 있는 것을 확인하실 수 있습니다.

그리고, Tranceiver 칩인 TLE9251VSJ datasheet를 구글에서 검색하여

다운을 받아본뒤에 저 핀이 어떤 역할을 하고 있는지를 살펴 보도록 하겠습니다.

저 Pin이 Normal-Operation mode로 동작하기 위해서는 Low의 입력이 있어야 한다고 적혀 있습니다.

저 Pin은 MCU의 p20.6번 핀과 연결이 되어 있습니다.

따라서 MCU에서 p20.6번을 Digital Output Pin으로 속성을 변경하고

p20.6번 Pin을 Ground로 잡아주면

이제 Tranceiver가 정상적으로 동작할 것입니다.

그리고, 이제 한번 CAN을 날려보도록 하겠습니다.

CAN이 잘 나가는 것을 확인하실 수 있나요?

지금 나가고 있는 것이 CAN Frame 입니다.

그러면 지금부터, CAN을 계측하는 환경을 어떻게 구성했는지를

정리해 보도록 하겠습니다.

반응형

댓글