[INTERFACE]/CAN2009. 9. 29. 18:07

CAN 통신


CAN통신 메세지 구조

 
  • CAN은 다중통신망(Multi Master Network)이며 CSMA/CD+AMP(Carrier Sense Multiple Access / Collision Detection with Arbitration on Message Priority) 방식을 이용한다.
  • 먼저 CAN Node에 메시지를 보내기 전에 CAN 버스라인이 사용중 인지를 파악한다.
  • 또한 메시지간 충돌 검출을 수행합니다. 이러한 방식은 이더넷 통신 방식과 유사합니다.
  • 어떠한 Node(시스템)로부터 보내어진 데이터 메시지는 송신측이나 수신측의 주소를 포함하지 않는다. 11~
  • 대신에 각 노드의 데이터 메시지 항목에 CAN 네트웍상에서 각각의 노드(시스템)를 식별할 수 있도록 각 노드(시스템) 마다 유일한 식별자(ID-11bit 또는 29bit)를 가지고 있다.
  • 네트웍상에 연결된 모든 노드(CAN Controller 시스템)는 네트웍상에 있는 메시지를 수신한 후 자신에게 필요한 메시지인지를ㅊㅁ 식별자를 통하여 평가한 후 자신이 필요로 하는 식별자의 메시지인 경우만 취하고 그렇지 않은 경우의 메시지는 무시한다.
  • 네트웍상(CAN 통신 라인)에 흘러 다니는 여러 노드의 데이터들이 동시에 사용자가 필요로하는 노드로 유입되는 경우에 식별자의 숫자를 비교하여 먼저 취할 메시지의 우선순위를 정한다. 식별자의 숫자가 낮은 경우가 우선순위가 가장 높다. (식별자가 1 인 경우가 10 인 경우보다 우선순위가 높음)
  • 우선순위가 높은 메시지가 CAN 버스의 사용 권한을 보장 받으며 이때 낮은 순위의 메시지는 자동적으로 다음 버스 사이클에 재전송을 수행한다. 이때 까지도 높은 우선순위를 가진 메시지가 완료되지 않은 상태이면 전송을 완료할 때까지 대기하고 있는다.
  • 각 CAN 메시지는 11 비트의 식별자(CAN 2.0A) 또는 29 비트의 식별자(CAN 2.0B)를 가지며 CAN 메시지의 맨 처음 시작부분에 위치한다.
  • 더불어 식별자는 메시지의 형태를 식별시켜 주는 역할과 메시지의 우선 순위를 부여하는 역할을 한다.

CAN Bus 속도 및 캐이블 길이

Posted by nexp
TAG Can

댓글을 달아 주세요

[ST_MICRO]/STM322008. 1. 16. 19:48

STM32F103 - CAN Remap 관련 자료 (CAN통신 예제)

STM32F103 - CAN Remap 관련 자료

STM32 CAN통신 예제 소스



CAN Remap 관련 자료
STM32의 CAN제어 핀은 USB D+, D-핀과 공용으로 쓰기 때문에 USB를 사용한다면 다른핀으로 맵핑해야 된다.
다행이 remap기능이 있어 (PA11, PA12), (PB8, BP9), (PD0, PD1)에 할당이 가능하다.

CAN_REMAP[1:0] CAN Alternate function remapping
These bits are set and cleared by software. They control the mapping of Alternate Functions CANRX and CANTX.

00: CANRX mapped to PA11, CANTX mapped to PA12
01: Not used
10: CANRX mapped to PB8, CANTX mapped to PB9 (not available on 36-pin package)
11: CANRX mapped to PD0, CANTX mapped to PD1 (available only on 100-pin package)

결국 64핀 패키지는 PB8, PB9에 연결 가능하다.( PA11, PA12는 USB에 사용)


예제소스
AFIO->MAPR   &= 0xFFFF9FFF;              // reset CAN remap
AFIO->MAPR   |= 0x00004000;                //   set CAN remap, use PB8, PB9   


ST제공 LIB함수 사용 예제
GPIO_PinRemapConfig(GPIO_Remap1_CAN, ENABLE);           //PB8, BP9, GPIO_Remap2_CAN -> PD0, PD1

Posted by nexp
TAG Can

댓글을 달아 주세요

[INTERFACE]/CAN2006. 5. 12. 12:11

[MCP2515] CAN, SPI, RS485, EEPROM 테스트 보드 제작



AVR, PIC, ARM, DSP MCU EVM의 SPI기능을 쉽게  테스트 할 수 있는 확장보드를 제작했다.

기능
SPI - EEPROM(93C46)
CAN - MCP2515, MCP2251
RS485 - MXA485

예제소스(MCP2515 Source Code)


CAN이 없는 MCU는 MCP2515 CAN Controller를 이용하여 통신할 수 있다.


rd의 각 포트핀을 확장해서 SPI, CAN, RS485 포트 테스트




Posted by nexp
TAG Can, MCP2515, SPI

댓글을 달아 주세요