CAN(Controller Area Network)은 분산 실시간 제어를 지원하는 직렬 통신 프로토콜이다.[1] Bosch 소속 연구진이 1986년 SAE 국제 회의에서 발표했고[2], 1993년에 ISO 11898로 국제 표준이 됐다.[3] CiA에 따르면 CAN은 이 1986년 2월의 발표로 태어났다.[4] 지금은 ISO 11898 시리즈가 CAN의 데이터 링크 계층과 물리 계층을 규정한다.[5]

CAN은 멀티마스터 방식이라, 버스가 비어 있으면 어느 노드든 프레임을 보내기 시작할 수 있다.[5] 식별자는 수신자를 가리키지 않고 데이터의 뜻을 나타내며, 버스를 차지할 때의 우선순위도 정한다. 프레임은 모든 노드가 받고, 그 데이터를 쓸지는 노드마다 메시지 필터링으로 정한다.[1]

표준의 분담

ISO 11898-1:2024는 데이터 링크 계층과 물리 부호화 부계층(PCS, Physical Coding Sublayer)을[5], ISO 11898-2:2026은 고속 물리 매체 접속(PMA, Physical Medium Attachment) 부계층을[6], ISO 11898-3:2006은 비트율 가 인 저속 내결함성 매체 의존 인터페이스를 규정한다.[7]

ISO 11898 시리즈는 칩 설계자를 위한 표준으로, CAN 프로토콜 컨트롤러에는 ISO 11898-1:2024를, CAN 트랜시버에는 ISO 11898-2:2026을 쓸 수 있다.[5][6]

Note

Bosch의 CAN 2.0 규격은 버스 매체를 정하지 않고, 단선과 접지, 차동 두 선, 광섬유 등을 예로 든다.[1]

노드 구성

CAN 컨트롤러는 호스트 CPU에 붙어 ISO 11898-1에 따라 통신하고, 버스에 연결하려면 트랜시버가 따로 필요하다.[8] CAN 컨트롤러는 STM32F103xx·STM32F105xx·STM32F107xx의 bxCAN(Basic Extended CAN)처럼 MCU에 주변장치로 들어가기도 하고[9], MCP2515처럼 SPI(Serial Peripheral Interface)로 MCU에 붙는 단독 칩으로 나오기도 한다.[10] NXP에 따르면 CAN 컨트롤러는 MCU에 통합되는 경우가 많다.[11] CAN 트랜시버는 컨트롤러의 디지털 신호를 버스의 차동 신호로 바꾸고, 버스의 차동 전압을 다시 논리 레벨로 되돌린다.[12]

Bosch CAN 2.0 규격은 버스에 잇는 노드 수에 이론적 한계를 두지 않고, 실제 수는 지연 시간과 버스의 전기적 부하가 제한한다고 정한다.[1]

고속 CAN의 버스 인터페이스는 CAN_H와 CAN_L 두 선이다. ISO 11898-2:2026은 PMA가 중재 모드일 때의 버스 상태를 dominant(논리 0)와 recessive(논리 1)로 두고, 두 값을 동시에 내면 버스가 dominant가 된다고 정한다.[6] 전기적 동작은 CAN 물리 계층에서 다룬다.

중재

여러 노드가 한꺼번에 송신에 나서면 식별자를 한 비트씩 겨루는 중재가 일어나며, 식별자는 최상위 비트부터 나간다. 자기가 낸 recessive 비트 자리에서 dominant를 읽은 노드는 거기서 물러나 수신 노드가 된다. 이긴 프레임은 정보도 시간도 잃지 않고 전송된다.[1] 식별자 값이 작을수록 우선순위가 높아, 중재에서는 식별자 값이 가장 작은 프레임이 이긴다.[8][9]

노드는 버스가 비어 있을 때만 송신을 시작할 수 있다.[1] 중재에서 진 프레임은 기본 설정에서 CAN 컨트롤러가 자동으로 다시 송신한다.[8][10]

프레임

Classical CAN 프레임의 식별자는 기본 포맷에서 11비트, 확장 포맷에서 29비트이고, 데이터는 최대 8바이트다.[5] CAN FD 프레임의 데이터 필드는 0~64바이트다.[13]

역사와 쓰임

CiA에 따르면 1980년대 초 Bosch의 엔지니어들은 기존 직렬 버스가 승용차의 요구를 채우지 못한다고 보았고, Uwe Kiencke가 1983년에 새 직렬 버스 개발을 시작했다. 자문으로 참여한 Wolfhard Lawrenz 교수가 ‘Controller Area Network’라는 이름을 붙였고, 1986년 발표 때의 이름은 ‘Automotive Serial Controller Area Network’였다.[4]

첫 CAN 컨트롤러 칩은 Intel이 1987년 중반에 내놓은 82526이고, 곧이어 Philips Semiconductors가 82C200을 내놓았다. 두 칩은 수용 필터링과 프레임 처리가 달라, Intel의 FullCAN은 Philips의 BasicCAN보다 연결된 MCU의 CPU 부하를 덜었지만 받을 수 있는 프레임 수가 제한되었다. 지금의 CAN 컨트롤러는 두 방식을 섞어 구현하므로 BasicCAN과 FullCAN이라는 말은 쓰이지 않게 되었다.[4]

Mercedes-Benz는 1991년부터 고급 승용차에 CAN을 썼고, 처음에는 엔진 관리 ECU들을 CAN으로 이었다.[4]

CiA에 따르면 CAN은 철도 차량, 항공기, 선박, 우주 같은 운송 시스템, 산업 기계 제어, 홈·빌딩 자동화, 건설·농업 장비 같은 이동 기계, 의료 기기와 실험실 자동화 등에 쓰이고, 해마다 CAN 노드가 20억 개 넘게 팔린다.[14]

CAN FD·CAN XL과의 차이

Bosch CAN 2.0 규격은 CAN의 속도가 시스템마다 다를 수 있지만 한 시스템 안에서는 비트율이 하나로 고정된다고 정한다. 이 규격은 자동차 전자 장치에서 엔진 제어 장치, 센서, 미끄럼 방지 시스템 등을 1 Mbit/s까지의 비트율로 CAN에 잇는 예를 든다.[1] CAN FD는 데이터 구간의 비트율을 중재 구간보다 높게 둘 수 있어, 1 Mbit/s를 넘는 데이터율을 낸다.[13] ISO 11898-1:2024는 여기에 데이터가 최대 2048바이트인 CAN XL 프레임 포맷을 더했다.[5]

이 표준은 classic 프레임만 지원하는 구현을 CAN FD 프레임을 용인하는지에 따라 둘로 나눈다.[5] 두 구현의 통신 범위는 CAN FD에서 다룬다.

CiA는 CAN 데이터 링크 계층을 CAN CC(classic), CAN FD, CAN XL 세 세대로 나눈다.[14] ISO 11898-1:2024는 CAN 기능의 일부에 바탕을 둔 responder 노드의 구현 옵션으로 CAN FD light를 둔다.[5]

[1]
“CAN Specification Version 2.0,” Robert Bosch GmbH, 1991. Accessed: Sep. 25, 2026. [Online]. Available: https://web.archive.org/web/20171215103144/http://www.bosch-semiconductors.de:80/media/ubk_semiconductors/pdf_1/canliteratur/can2spec.pdf
[2]
U. Kiencke, S. Dais, and M. Litschel, “Automotive Serial Controller Area Network,” in SAE International Congress and Exposition, 1986. doi: 10.4271/860391.
[3]
ISO, “ISO 11898:1993 Road vehicles — Interchange of digital information — Controller area network (CAN) for high-speed communication.” 1993. Accessed: Sep. 25, 2026. [Online]. Available: https://www.iso.org/standard/20380.html
[4]
CAN in Automation (CiA), “History of CAN technology.” 2026. Accessed: Sep. 27, 2026. [Online]. Available: https://www.can-cia.org/can-knowledge/history-of-can-technology
[5]
ISO, “ISO 11898-1:2024 Road vehicles — Controller area network (CAN) — Part 1: Data link layer and physical coding sublayer (OBP preview).” 2024. Accessed: Sep. 25, 2026. [Online]. Available: https://www.iso.org/obp/ui/#iso:std:iso:11898:-1:ed-3:v1:en
[6]
ISO, “ISO 11898-2:2026 Road vehicles — Controller area network (CAN) — Part 2: High-speed physical medium attachment (PMA) sublayer (OBP preview).” 2026. Accessed: Sep. 25, 2026. [Online]. Available: https://www.iso.org/obp/ui/#iso:std:iso:11898:-2:ed-4:v1:en
[7]
ISO, “ISO 11898-3:2006 Road vehicles — Controller area network (CAN) — Part 3: Low-speed, fault-tolerant, medium-dependent interface.” 2006. Accessed: Sep. 25, 2026. [Online]. Available: https://www.iso.org/standard/36055.html
[8]
“M_CAN Controller Area Network User’s Manual, Revision 3.3.1,” Robert Bosch GmbH, 2023. Accessed: Sep. 25, 2026. [Online]. Available: https://www.bosch-semiconductors.com/media/ip_modules/pdf_2/m_can/mcan_users_manual_v331.pdf
[9]
“RM0008 Reference manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced Arm-based 32-bit MCUs,” STMicroelectronics, 2021. Accessed: Sep. 25, 2026. [Online]. Available: https://web.archive.org/web/20260827132512/https://www.st.com/resource/en/reference_manual/cd00171190-stm32f101xx-stm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf
[10]
“MCP2515 Stand-Alone CAN Controller with SPI Interface,” Microchip Technology Inc., 2019. Accessed: Sep. 25, 2026. [Online]. Available: https://ww1.microchip.com/downloads/en/DeviceDoc/MCP2515-Stand-Alone-CAN-Controller-with-SPI-20001801J.pdf
[11]
I. Costachescu, “101: Controller Area Network (CAN) standard.” NXP Semiconductors, 2021. Accessed: Sep. 27, 2026. [Online]. Available: https://web.archive.org/web/20251011220439/https://community.nxp.com/t5/NXP-Tech-Blog/101-Controller-Area-Network-CAN-standard/ba-p/1217054
[12]
“MCP2561/2FD High-Speed CAN Flexible Data Rate Transceiver,” Microchip Technology Inc., 2014. Accessed: Sep. 25, 2026. [Online]. Available: https://ww1.microchip.com/downloads/en/DeviceDoc/20005284A.pdf
[13]
“CAN with Flexible Data-Rate Specification Version 1.0,” Robert Bosch GmbH, 2012. Accessed: Sep. 25, 2026. [Online]. Available: https://web.archive.org/web/20151211125301/http://www.bosch-semiconductors.de/media/ubk_semiconductors/pdf_1/canliteratur/can_fd_spec.pdf
[14]
CAN in Automation (CiA), “CAN data link layers: Three generations.” 2026. Accessed: Oct. 06, 2026. [Online]. Available: https://www.can-cia.org/can-knowledge/can-data-link-layer-generations