CAN Driver (CanDrv / Can) — MCAL의 CAN controller 전용 하드웨어 드라이버. μC 내부 CAN controller에 직접 접근하며, 상위 CanIf에는 하드웨어 독립 API를 제공한다. AUTOSAR Communication Stack의 가장 아래(버스 HW 바로 위) 계층이다.
기능
- Hardware access — CAN controller 레지스터 조작
- Hardware-independent API to CanIf — HOH 기반 호출만 받음
- 송신 개시 —
Can_Write(HOH, PDU)형태로 mailbox에 데이터 적재 - CAN controller 상태 제어 — 활성화·비활성화
- CAN 인터럽트 핸들러 제공 — RX / TX / Bus-off
Notification Callback
CanIf로 통지되는 이벤트 3종:
- PDU reception — 프레임 수신 시
- Bus-off — fault confinement 진입 시
- Wake-up — Sleep 상태에서 bus 활동 감지 시
각 이벤트는 CanIf 측 대응 함수로 전달되어 상위 계층으로 전파된다.
다중 Controller 제약
“Several CAN controllers can be controlled by a single CAN module as long as they belong to the same CAN hardware unit.”
- 하나의 Can 모듈은 같은 CAN hardware unit에 속하는 여러 controller를 제어할 수 있다.
- 서로 다른 hardware unit(예: 칩 내 독립된 CAN IP 블록)은 별도 Can 모듈 인스턴스가 필요하다.
CAN Transceiver Driver
CanTrcv — CAN Transceiver HW의 동작 상태만 제어하는 드라이버. CanDrv와 독립된 AUTOSAR 표준 모듈이지만 기능이 매우 제한적이라 본 페이지의 하위 섹션으로 다룬다.
| 상태 | 의미 |
|---|---|
| Normal | 정상 송수신 |
| Sleep | 저전력 대기, Wake-up 패턴만 감지 |
| Standby | Normal과 Sleep 사이 중간 저전력 모드 (일부 트랜시버 한정) |
- 호출 주체: CanIf가 Wakeup·sleep flow 중 CanTrcv API를 호출
- 버스 physical layer의 파형 생성 자체는 여전히 CAN controller + transceiver 하드웨어가 담당 (CAN 참조)
- External transceiver는 ECU 보드에 따라 종류·연결 방식이 달라지므로 Communication Hardware Abstraction과 연계 (Memory/Crypto transceiver 대응 구조와 동일 패턴)
위치 요약
- 상위 경계: CanIf (HOH 기반 호출)
- 하위 경계: CAN controller 레지스터 (μC 내부 peripheral)
- MCAL Communication Drivers 그룹 소속
- OSI L2 (Data Link, MCAL 측) 매핑