STM32 bxCAN Introduction
STM32의 bxCAN(basic extended CAN) 모듈은 CAN 메시지의 송수신을 완전히 자동으로 처리
bxCAN 의 세부 명세는 레퍼런스 메뉴얼에서 추가적으로 확인
bxCAN의 주요 특징
- CAN1(마스터)과 CAN2(슬레이브) 두 개의 CAN 컨트롤러 제공
- CAN 프로토콜 2.0 A와 B 버전 지원 (표준 및 확장 CAN 네트워크 모두 사용 가능)
- 최대 1Mbps의 비트레이트 지원 (클럭 설정에 따라 다름)
- 3개의 송신 메일박스 제공 (한 번에 3개의 CAN 메시지 전송 가능)
- 각 컨트롤러마다 3단계의 2개 수신 FIFO 제공
- CAN1과 CAN2가 공유하는 28개의 필터 뱅크
bxCAN으로 할 수 있는 작업
- 비트레이트, 비트 타이밍 등의 CAN 파라미터 설정
- 메시지 전송 및 수신 처리
- 수신은 하드웨어가 자동으로 처리 (필터링, FIFO로 데이터 이동)
- 인터럽트 관리
- 전송 완료 인터럽트
- 수신 인터럽트
- 에러 인터럽트
- CAN 버스의 진단 정보 확인
듀얼 CAN 구조
NUCLEO-F446RE는 듀얼 CAN을 지원하며, CAN1과 CAN2 두 개의 CAN 컨트롤러를 포함
- CAN1 (마스터)
- CAN2 (슬레이브)
그러나, CAN 통신은 마스터-슬레이브 기반이 아닌 멀티마스터 방식
CubeMX 및 참고 매뉴얼에서는 CAN1을 마스터, CAN2를 슬레이브라고 표현하는데, 이는 CAN2의 기능적 제약 때문(혼동 주의!)
CAN1(마스터)과 CAN2(슬레이브)
- CAN2는 SRAM에 직접 접근할 수 없어 슬레이브로 지칭
- CAN2를 사용하려면 반드시 CAN1을 먼저 활성화해야 함
- 두 컨트롤러 모두 CAN 2.0 A/B 사양 기반으로 동작
송수신 구조
기능 | CAN1 (마스터) | CAN2 (슬레이브) |
TX Mailboxes | 3개 | 3개 |
Receive FIFO | FIFO0, FIFO1 (각 3개 메시지 저장 가능) | FIFO0, FIFO1 (각 3개 메시지 저장 가능) |
Filter Bank | 28개 필터 뱅크 (각 2개 필터 포함) | 공유 (CAN1 활성화 필요) |
Transmission Scheduler | 메시지 우선순위 결정 후 전송 | 동일 |
Interrupt Control | 지원 | 지원 |
- 송신(Tx) 메일박스 구조
- CAN1과 CAN2 각각 3개의 송신 메일박스 보유
- 한 번에 최대 3개의 메시지 전송 가능
- 전송 스케줄러가 메시지 우선순위 관리
- 수신(Rx) FIFO 구조
- 각 컨트롤러마다 2개의 수신 FIFO (FIFO0, FIFO1) 보유
- 각 FIFO는 최대 3개의 CAN 메시지 저장 가능
- FIFO 오버런: 수신 FIFO가 최대 3개의 메시지를 저장할 수 있으며, 4번째 메시지가 도착하면 오버런(Overrun) 발생
- Acceptance Filtering
- CAN 메시지를 설정된 규칙에 따라 필터링하는 기능
- 총 28개의 필터 뱅크 보유 (각각 2개의 필터 포함)
- CAN1과 CAN2가 공유하며, CAN2가 사용하려면 CAN1이 활성화되어야 함
bxCAN Test Mode
- Silent Mode
- CAN 버스에 영향을 주지 않고 메시지를 수신하는 테스트
- Bus에서 데이터를 듣기만 하고 송신하지 않음. Sniffer 역할 가능
- Loopback Mode
- 자체적으로 메시지를 송수신하여 CAN 통신이 정상적으로 동작하는지 테스트
- Bus에 송신 가능하지만, Bus에서 데이터 수신은 불가능. Self-Test 용도
- Silent + Loopback Mode
- 외부 네트워크 영향을 받지 않으면서 내부적으로 메시지 송수신을 검증
- Bus와 완전히 분리되어 내부 테스트만 가능
1) Silent Mode (침묵 모드)
특징
- CAN_TX가 TX 엔진과 분리되어 있으며, 항상 논리적 '1' (Recessive Bit) 유지됨.
- 즉, CAN Bus를 방해하지 않고 항상 Recessive 상태를 유지함.
- 수신(Rx)은 정상적으로 동작하며, CAN Bus에서 전송되는 데이터를 읽을 수 있음.
- CAN_TX는 내부적으로 Rx로 루프백되어 송신한 데이터를 수신할 수 있음.
- CAN Bus의 트래픽을 분석하는 "Sniffer" 용도로 활용 가능.
요약
✅ CAN Bus에 영향을 주지 않음 (Recessive Bit 유지)
✅ Bus에서 데이터를 수신 가능
✅ 자체 송신한 데이터를 내부적으로 수신 가능
✅ 네트워크 분석(Sniffer) 용도로 사용 가능
2) Loop Back Mode (루프백 모드)
특징
- CAN_TX는 정상적으로 동작하여 CAN Bus에 데이터를 전송할 수 있음.
- 하지만 Bus에서 데이터를 수신할 수 없음 (CAN_RX가 Bus에서 분리됨).
- 대신, 자신이 송신한 데이터가 내부적으로 CAN_RX로 루프백됨.
- 주로 자기 테스트(Self-Test) 용도로 사용됨.
요약
✅ CAN Bus에 데이터를 송신 가능
✅ 자체 송신한 데이터를 내부적으로 수신 가능
❌ CAN Bus에서 다른 노드의 데이터를 수신 불가
✅ Self-Test 용도로 사용됨
3) Silent + Loop Back Mode (침묵 + 루프백 모드)
특징
- CAN_TX 및 CAN_RX 모두 CAN Bus에서 분리됨 → 완전히 독립적인 상태.
- 송신한 데이터가 내부적으로 Rx로 루프백됨.
- 하지만 CAN Bus의 데이터를 수신할 수 없음.
- 즉, 완전히 독립된 상태에서 자체 테스트를 수행하는 용도.
요약
❌ CAN Bus에 데이터를 송신할 수 없음
❌ CAN Bus에서 데이터를 수신할 수 없음
✅ 자체 송신한 데이터를 내부적으로 수신 가능
✅ 완전히 독립적인 상태에서 Self-Test 가능
반응형
'ComputerScience & Embedded > NUCLEO & CAN Tranceiver' 카테고리의 다른 글
bxCAN Frame Filtering (0) | 2025.03.01 |
---|---|
STM32 bxCAN Exercise (0) | 2025.03.01 |
CAN frame formats / Bus Arbitration (0) | 2025.03.01 |
CAN (Controller Area Network) Fundamentals (0) | 2025.03.01 |
PWM(Pulse Width Modulation) (0) | 2025.03.01 |