본문 바로가기
TI C2000

28377d - CAN 예제 (loopback)

by vpam 2021. 9. 9.

28377D 컨트롤 수트 예제 공부  (can_loopback.c)

 

 

Loopback Mode (Technical reference 22.4.3.2 절)

 

Loopback 모드에선 CAN 코어가 내부 피드백을 통해 Tx의 출력을 Rx 입력으로 사용할 수 있다. 해서, 전송된 메세지가 수신된 메세지로도 취급 받음. 송신된 메세지는 CAN_TX 핀에 의해 모니터할 수 있음. 

(LBack 레지스터를 1로 세팅하여 Loopback 모드를 active할 수 있음)

 

External Loopback 은 Rx신호가 TX pin 을 거치긴함. 

Loopback mode diagram
External loopback
Loopback External Loopback

 


 

Initializing
can.h - tCANMsgObject 구조체 정의

TX메세지, RX메세지 구조체 선언 (can.h 에 정의) 

gpio 포트 CANRXA,CANTXA 맞게 핀 먹스 변경

 

 

CANA 이니셜라이징

CANA를 클락소스로 선정

비트레이트 설정  CANBitRateSet(CAN controller 베이스주소, CAN 클락 주파수, 비트레이트)

 

external loop test 모드 설정


                                                                  중요함                                                                              

TX와 RX 메세지의 ID (MsgID) 와 메세지 길이 (pucMsgData) 동일하게 설정. 

CANMessageSet (baseadress, objectnumber (메일박스), structure pointer, message type)

--> CANA 받는메세지 함 2번에 설정.

 

 

 for문 (CAN 통신 실행문)

동일한 CANA : 1번 메세지함으로 메세지 송신

 

                                                 더 알아봐야할 내용                                                                           

 

CANMessageGet(uint32_t ui32Base, uint32_t ui32ObjID, tCANMsgObject *pMsgObject,
              bool bClrPendingInt)

-플래그 류로 오류있는지 없는지 확인한 후,     CANDataRegRead(pMsgObject->pucMsgData,
                           (uint32_t *)(ui32Base + CAN_O_IF2DATA),
                           pMsgObject->ui32MsgLen); 실행

 

can.h 에 지정되어있는 내용이라 그냥 써도 무방하긴한데, 그래도 레지스터 하나씩 까봐서 이해해야겠다. 

 

 

반응형

댓글