STM32F407 9 CAN
개발 환경 및 실습도구
- Software
- STM32CubeIDE 1.16.1
- Repository: STM32Cube_FW_F4_V1.28.1
- Hardware
CAN (Controller Area Network)
CAN(Controller Area Network)은 자동차, 산업 자동화, 의료 기기 등에서 널리 사용되는 통신 프로토콜 입니다. 이 프로토콜은 여러 개의 노드(ECU, 센서 등)가 하나의 버스를 공유하면서 데이터를 효율적으로 송수신 할 수 있도록 설계되었습니다.
CAN 통신의 특징
✅ 멀티 마스터(Multi-Master) 지원
- CAN 네트워크에서는 여러 개의 노드가 동시에 데이터를 송신할 수 있음.
- 우선순위 기반의 충돌 방지(Arbitration) 메커니즘을 통해 충돌 없이 통신 가능.
✅ 차동 신호 방식(Differential Signaling)
- CANH(CAN High)와 CANL(CAN Low) 두 개의 신호선을 사용하여 데이터 전송.
- 노이즈에 강하고 장거리 통신(수십~수백 미터) 가능.
상태 |
CANH 전압 |
CANL 전압 |
전압 차이 (CANH - CANL) |
논리 값 |
Dominant (0) |
3.5V |
1.5V |
2V |
0 |
Recessive (1) |
2.5V |
2.5V |
0V |
1 |
✅ 비트 단위 충돌 해결(Non-Destructive Arbitration)
- 여러 노드가 동시에 데이터를 전송할 경우, ID가 낮은(우선순위 높은) 노드가 버스를 차지하고 전송을 계속함.
- 우선순위가 낮은 노드는 자동으로 송신을 멈추고 다음 기회를 기다림.