๐ถ bxCAN ์ด๋?
ST Microelectronics์์ ๊ฐ๋ฐํ CAN ํต์ ์ธํฐํ์ด์ค์ด๋ฉฐ ํ์ค CAN๊ณผ ํ์ฅ CAN์ ๋ชจ๋ ์ง์ํ๋ฉฐ
์๋์ ๊ฐ์ ํน์ง์ด ์๋ค.
- ๊ณ ์ ์ ์ก : CAN protocol 2.0 A, B๋ฅผ ํตํด 1 Mbit/s์ ์ ์ก ์๋ ์ง์
- ์ ์ ๋ ฅ ์๋น : ์ ์ ๋ ฅ ๋ชจ๋์์ 10 µA ์ดํ์ ์ ๋ ฅ ์๋น๋ฅผ ์ง์
- ๋ค์ค CAN bus ์ง์ : ์ต๋ 4๊ฐ์ CAN bus๋ฅผ ๋์์ ์ง์
- Message filtering : ํน์ ๋ฉ์์ง๋ง ์ ์กํ๊ฑฐ๋ ์์ ํ ์ ์์
- Error handling : CAN bus์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌ
๐ถ bxCAN ๊ตฌ์กฐ
์ diagram์ Dual CAN block diagram ์ผ๋ก 2๊ฐ์ CAN bus๋ฅผ
๊ฐ๊ฐ Master(๋ฉ์์ง ์ ์ก์ฉ)์ Slave(๋ฉ์์ง ์์ ์ฉ)๋ก ์ฐ๊ฒฐํ ํํ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ
CAN bus ํ๋๋น 2๊ฐ์ Rx FIFO์ Rx FIFO ํ๋๋น 3๊ฐ์ mailbox๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
28๊ฐ์ Acceptance Filter banks๋ ๋ ๊ฐ์ CAN bus๊ฐ ๊ณต์ ํ๊ณ ์๋ค.
(โป Rx FIFO, mailbox, Filter ์ ๋ํ ์ค๋ช ์ ์๋์ ๊ธฐ์ฌ)
๐ถ bxCAN ๋ชจ๋
ํน์ง | Operation Mode | Test Mode |
๋ชฉ์ | CAN ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์์ ์ผ๋ก ์๋์ํค๊ธฐ ์ํ ๋ชฉ์ ์ ๊ฐ์ง |
CAN ์ปจํธ๋กค๋ฌ์ ๊ธฐ๋ฅ์ ํ
์คํธํ๊ฑฐ๋, CAN bus์ ์ ๋ขฐ์ฑ์ ์ธก์ ํ๊ธฐ ์ํ ๋ชฉ์ ์ ๊ฐ์ง |
์ฐ์ ์์ | ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ | ์ ํ์ฑ๊ณผ ์ ๋ขฐ์ฑ |
์ฌ์ฉ ์์ | ์ดํ๋ฆฌ์ผ์ด์ ์คํ | CAN ์ปจํธ๋กค๋ฌ ํ ์คํธ, CAN bus ์ค๋ขฐ์ฑ ์ธก์ |
bxCAN Operation Mode
- Sleep ๋ชจ๋
CAN bus ๋ ธ๋๊ฐ ์ต์ํ์ ์ ๋ ฅ๋ง ์๋นํ๋ ๋ชจ๋ ์ด๋ฉฐ ์ง์ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
- ์ํํธ์จ์ด๊ฐ CAN_MCR ๋ ์ง์คํฐ์ SLEEP ๋นํธ๋ฅผ ์ค์ ํ๋ฉด, CAN bus ๋
ธ๋๋ Sleep ๋ชจ๋๋ก ์ ํ๋จ
์ด๋, CAN bus์ ํธ๋์๋ฒ๊ฐ ๋นํ์ฑํ๋๊ณ , CAN bus์ ๋ฒ์ค ๋ผ์ธ์ ์ฐ๊ฒฐ๋ ์ ์์ด ๋ฎ์์ง๋ค. - ํ๋์จ์ด๋ CAN_MSR ๋ ์ง์คํฐ์ SLAK ๋นํธ๋ฅผ ์ค์ ํ์ฌ CAN bus ๋
ธ๋๊ฐ Sleep ๋ชจ๋์ ์์์ ๋ํ๋
CAN bus ๋ ธ๋๊ฐ Sleep ๋ชจ๋์ ์์ผ๋ฉด, CAN_MSR ๋ ์ง์คํฐ์ SLAK ๋นํธ๊ฐ ์ค์ ๋๋ฉฐ ์ด๋ฅผ ํตํด,
์ํํธ์จ์ด๋ CAN bus ๋ ธ๋๊ฐ Sleep ๋ชจ๋์ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๊ฒ ๋๋ค.
- ์ํํธ์จ์ด๊ฐ CAN_MCR ๋ ์ง์คํฐ์ SLEEP ๋นํธ๋ฅผ ์ค์ ํ๋ฉด, CAN bus ๋
ธ๋๋ Sleep ๋ชจ๋๋ก ์ ํ๋จ
- Initialzation ๋ชจ๋
CAN bus ๋ ธ๋๊ฐ ์ด๊ธฐํ๋๋ ๋ชจ๋. Initialization ๋ชจ๋ ์ด๋ฉฐ ์ง์ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค
- ์ํํธ์จ์ด๊ฐ CAN_MCR ๋ ์ง์คํฐ์ INRQ ๋นํธ๋ฅผ ์ค์ ํ๋ฉด, CAN bus ๋
ธ๋๋ Listen-Only ๋ชจ๋๋ก ์ ํ๋จ
CAN_MCR ๋ ์ง์คํฐ์ INRQ ๋นํธ๊ฐ ์ค์ ๋๋ฉด, CAN bus ๋ ธ๋๋ Listen-Only ๋ชจ๋๋ก ์ ํ๋๋ฉฐ ์ด๋, CAN bus ๋ ธ๋๋ CANTX ๋ ์ง์คํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ง ์๊ณ , ๋ฆฌ์๋ธ ๋นํธ๋ง ์ ์กํจ - ํ๋์จ์ด๋ CAN_MSR ๋ ์ง์คํฐ์ INAK ๋นํธ๋ฅผ ์ค์ ํ์ฌ CAN bus ๋
ธ๋๊ฐ Listen-Only ๋ชจ๋์ ์์์ ๋ํ๋
CAN bus ๋ ธ๋๊ฐ Listen-Only ๋ชจ๋์ ์์ผ๋ฉด, CAN_MSR ๋ ์ง์คํฐ์ INAK ๋นํธ๊ฐ ์ค์ ๋๋ฉฐ ์ด๋ฅผ ํตํด,
์ํํธ์จ์ด๋ CAN bus ๋ ธ๋๊ฐ Listen-Only ๋ชจ๋์ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๊ฒ ๋๋ค.
- ์ํํธ์จ์ด๊ฐ CAN_MCR ๋ ์ง์คํฐ์ INRQ ๋นํธ๋ฅผ ์ค์ ํ๋ฉด, CAN bus ๋
ธ๋๋ Listen-Only ๋ชจ๋๋ก ์ ํ๋จ
- Normal ๋ชจ๋
CAN bus ๋ ธ๋๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๋ ๋ชจ๋
Normal ๋ชจ๋์์ ๋ ธ๋๋ CAN bus๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฑฐ๋ ์์ ํ ์ ์์ผ๋ฉฐ ์ง์ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
1. CAN_MCR ๋ ์ง์คํฐ์ SLEEP ๋นํธ๋ฅผ ํด์
2. CAN bus ๋ ธ๋์ ๋นํธ ํ์ด๋ฐ์ CAN bus์ ๋นํธ ํ์ด๋ฐ๊ณผ ์ผ์น์ํด
์ํธํธ์จ์ด์์ CAN_MCR ๋ ์ง์คํฐ์ SLEEP ๋นํธ๋ฅผ ํด์ ํ๋ฉด, ๋ ธ๋๋ Sleep ๋ชจ๋์์ Normal ๋ชจ๋๋ก ์ ํ๋๊ณ
ํ๋์จ์ด๋ CAN_MSR ๋ ์ง์คํฐ์ SLAK ๋นํธ๋ฅผ ํด์ ํ์ฌ CAN bus ๋ ธ๋๊ฐ Normal ๋ชจ๋์ ์์์ ๋ํ๋ธ๋ค.
bxCAN Test Mode
- Slient mode
Slient mode์์๋ CAN ์ปจํธ๋กค๋ฌ๊ฐ CAN bus์์ ๋ฉ์์ง๋ฅผ ์ ์กํ์ง ์๋ ๋์ ,
CAN ์ปจํธ๋กค๋ฌ๊ฐ ์ ์กํ ๋ฉ์์ง๋ฅผ ์์ ์ Rx FIFO๋ก ๋ค์ ์ ์กํ์ฌ ์์ ์ ์ ๋ ฅ -> ์์ ์ ์ถ๋ ฅ์ด ๋๋ค.
Rx_FIFO๋ง ํ์ฑํ ํ์ฌ ์์ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ์๋ํ๋์ง ํ ์คํธ ํ๋ค. - Loopback mode
Loopback mode์์๋CAN ์ปจํธ๋กค๋ฌ๊ฐ ์ ์กํ ๋ฉ์์ง๋ ์์ ์ Rx FIFO๋ก ๋ค์ ์ ์กํ์ฌ
์์ ์ ์ถ๋ ฅ -> ์์ ์ ์ ๋ ฅ์ด ๋๋๋ก ํ๊ณ
Rx_FIFO์, Tx_FIFO๋ฅผ ๋๋ค ํ์ฑํ ํ์ฌ ์ก์ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ์๋ํ๋์ง ํ ์คํธ ํ๋ค. - Combined loopback and silent mode
Combined loopback and silent mode์์๋ CAN ์ปจํธ๋กค๋ฌ๊ฐ ์ ์กํ ๋ฉ์์ง๋ ์์ ์ Rx FIFO๋ก ๋ค์ ์ ์กํ์ฌ
์์ ์ ์ถ๋ ฅ -> ์์ ์ ์ ๋ ฅ์ด ๋๋๋ก ํ๋ค.
Rx_FIFO์, Tx_FIFO๋ฅผ ๋๋ค ๋นํ์ฑํ ํ์ฌ ์ฆ, CAN_TX, CAN_RX๋ก ๋ถํฐ ์ํฅ์ ๋ฐ์ง ์๊ณ
์์ ์ ์ถ๋ ฅ๊ณผ ์ ๋ ฅ์ด ๋์ผํ์ง ๋ง์ ํ ์คํธ ํ๋ค.
๐ถ bxCAN ๋ฉ์์ง ์ก์์
bxCAN์ Rx FIFO๋ฅผ ์ด์ฉํด ๋ฉ์ธ์ง๋ฅผ ์์ ๋ฐ์ผ๋ฉฐ mailbox๋ฅผ ์ด์ฉํด ๋ฉ์ธ์ง๋ฅผ ์ก์ ํ๋ค.
Rx FIFO - ๋ฉ์์ง ์์
Rx FIFO๋ CAN bus์์ ์์ ๋ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ฉฐ
์๋ ๋นํธ๋ฅผ ํ์ฉํ์ฌ 3๊ฐ์ง ์ํ๋ฅผ ๊ฑฐ์ณ ๋ฉ์์ง๋ฅผ ์์ ํ๋ค.
๋นํธ | ์ค๋ช |
FMP | Receive FIFO์ ๋ฉ์์ง๊ฐ ์ ์์๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ |
FOVR | Receive FIFO๊ฐ ๋ฉ์์ง๋ก ๊ฐ๋ ์ฐจ ์๋ก์ด ๋ฉ์์ง ์ ์ฅ ๋ถ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ๋ํ๋ |
RFOM | Receive FIFO๊ฐ ๋ฉ์์ง๋ก ๊ฐ๋ ์ฐจ ์๋ก์ด ๋ฉ์์ง๋ฅผ ์ ์ฅ ํ ์ ์์ ๋ ์์ ๋ ๋ฉ์์ง๋ฅผ ๋ํ๋ |
- Empty
CAN Bus๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ๋ฐ์ง ์์๊ฑฐ๋ ๋ฉ์์ง๋ฅผ ๋ค ์ฒ๋ฆฌํ์ฌ Mailbox๊ฐ ๋น์ด ์๋ ์ํ
Mailbox๊ฐ Empty ์ํ์ด๋ฉด ๋ฉ์์ง๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ ์กํ ์ ์์ผ๋ฉฐ
CAN_RFxR ๋ ์ง์คํฐ์ FMP๋นํธ์ ๊ฐ์ด 0x00์ผ ๋ Empty ์ํ์์ ์ ์ ์๋ค. - PENDING_1,2,3
CAN Bus๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ๋ฐ์ Mailbox์ ์ ์ฅ๋์ด ์์ง๋ง ์์ง ์ ์ก๋์ง ์๋ ์ํ
PENDING_1,2,3 ์ ์๋ ๋ฉ์์ง๋ 1 -> 2-> 3 ์์๋๋ก ์ ์ก๋๋ค.
์์ ๋ฐ์ ๋ฉ์์ง์ ๊ฐ์๋ CAN_RFxR ๋ ์ง์คํฐ์ FMP ๋นํธ๋ฅผ ํตํด ์ ์ ์๋ค. - OVERRUN
FIFO ์ Mailbox๊ฐ ๋ฉ์์ง๋ก ๊ฐ๋ ์ฐจ์ ์๋ก์ด ๋ฉ์์ง๋ฅผ ์ ์ฅํ ์ ์๋ ์ํ
OVERRUN์ด ๋ฐ์ํ๋ฉด CPU๋ OVERRUN ์ด๋ฒคํธ๋ฅผ ๋ฐ์ผ๋ฉฐ CPU๋ ํด๋น ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌ ํ
์ต๊ทผ ๋ฉ์์ง ์ญ์ , ์ด์ ๋ฉ์์ง ๋ฎ์ด์ฐ๊ธฐ ๋ฑ ๋ฉ์์ง ์ฒ๋ฆฌ ์์ ์ ์ํํ๋ค.
Overrun ๋ฐ์ ์ ํ๋์จ์ด๊ฐ CAN_RFxR ๋ ์ง์คํฐ์ FOVRx๋นํธ๋ฅผ ์ค์ ํจ
Mailbox - ๋ฉ์์ง ์ก์
Mailbox๋ CAN bus์์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๊ณ ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ฉฐ ์๋ ๋นํธ๋ฅผ ํ์ฉํ์ฌ 4๊ฐ์ง ์ํ์
๊ฑฐ์ณ ๋ฉ์์ง๋ฅผ ์ ์กํ๋ค.
๋นํธ | ์ค๋ช |
RQCP | Mailbox๊ฐ ์ ์ก ํ์ธ์ ์์ฒญํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ |
TXOK | Mailbox์ ์ ์ฅ๋ ๋ฉ์์ง๊ฐ ์ ์ก์ ์ฑ๊ณตํ์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ |
TME | Mailbox์ ์ ์ฅ๋ ๋ฉ์์ง๊ฐ ์ ์ก ๋ง์คํฌ์ ์ํด ์ฐจ๋จ๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ |
ABRQ | Mailbox์ ์ ์ฅ๋ ๋ฉ์์ง์ ์ ์ก์ ์ค์งํ๋๋ก ์์ฒญํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ |
NART | Mailbox์ ์ ์ฅ๋ ๋ฉ์์ ฑ ๋ํ ACK๊ฐ ์์ ๋์ง ์์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ |
- Empty
๋ฉ์์ง๋ฅผ ๋ฐ์ง ์์๊ฑฐ๋, ์ ์ก์ ์ฑ๊ณตํ์๊ฑฐ๋, ์คํจํ์์ผ๋ ์ฌ์ ์ก์ ํ์ง ์์ Mailbox๊ฐ ๋น์ด ์๋ ์ํ - PENDING
Mailbox์ ๋ฉ์์ง๊ฐ ์ ์ฅ๋์ด ์์ง๋ง ์์ง ์ ์ก๋์ง ์๋ ์ - SCHEDULED
PENDING ์ํ์ Mailbox ์ค ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ Mailbox์ ์ํ - TRANSMIT
Mailbox์ ์ ์ฅ๋ ๋ฉ์์ง๊ฐ ์ ์ก ์ค์ธ ์ํ
๐ถ bxCAN ํํฐ๋ง
Acceptance Filter banks
์์ ํ๋ ๋
ธ๋์์ ํน์ CAN ID๋ฅผ ๊ฐ์ง ๋ฉ์์ง๋ง ์์ ํ๋๋ก ์ค์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
CAN ID๋ฅผ ์ค์ ์ ํตํ ํํฐ๋ง ๋ฐฉ์๊ณผ CAN ID์ MASK ์ค์ ์ ํตํ ํํฐ๋ง ๋ฐฉ์์ด ์์ผ๋ฉฐ
ํํฐ๋งํ ID ๋ฒ์๋ฅผ 16bits ๋๋ 32bits๋ก ์ ํ ์ ์๋ค.
- Empty
๋ฉ์์ง๋ฅผ ๋ฐ์ง ์์๊ฑฐ๋, ์ ์ก์ ์ฑ๊ณตํ์๊ฑฐ๋, ์คํจํ์์ผ๋ ์ฌ์ ์ก์ ํ์ง ์์ Mailbox๊ฐ ๋น์ด ์๋ ์ํ - PENDING
Mailbox์ ๋ฉ์์ง๊ฐ ์ ์ฅ๋์ด ์์ง๋ง ์์ง ์ ์ก๋์ง ์๋ ์ํ - MATCHED
Acceptance Filter Banks์ ๋ฑ๋ก๋ ํํฐ ์ค ํ๋์ ์์ ๋ ๋ฉ์์ง๊ฐ ์ผ์นํ์ฌ ๋ฉ์์ง๊ฐ ํ์ฉ๋ ์ํ
ํด๋น ๋ฉ์์ง๊ฐ ์๋ฝ๋๋ฉด ๋ฉ์ผ๋ฐ์ค๋ก ์ ๋ฌ๋๋ค.
- CAN ID ๋ฐฉ์
์ง์ ๋ ํน์ ID๋ง ์์ ํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋จํ๊ณ ์ฌ์ฐ๋ ์ธ๋ฐํ ํํฐ๋ง์ ๋ถ๊ฐ๋ฅํ๋ค.
ํํฐ๋งํ ID๋ฅผ 32bits๋ก ์ค์ ํ ๊ฒฝ์ฐ ์ต๋ 2๊ฐ, 16bits๋ก ์ค์ ํ ๊ฒฝ์ฐ ์ต๋ 4๊ฐ๊น์ง ์ง์ ์ด ๊ฐ๋ฅํ๋ค.
(e.g. ID๋ฅผ 0x00000000์ผ๋ก ์ค์ -> ๋ชจ๋ ๋ฉ์์ง ์์
ID๋ฅผ 0x12345678์ผ๋ก ์ค์ -> ID๊ฐ 0x123456788์ธ ๋ฉ์์ง๋ง ์์ ) - CAN ID์ Mask ์ค์ ์ ํตํ ๋ฐฉ์
Mask๋ฅผ ์ฌ์ฉํ์ฌ ID์ ์ผ๋ถ ๋นํธ๋ฅผ ๋ฌด์ํ ์ ์์ผ๋ฏ๋ก, ์ค์ ์ด ๋ณต์กํ๋ ๋ณด๋ค ์ธ๋ฐํ ํํฐ๋ง์ด ๊ฐ๋ฅํ๋ค.
ํํฐ๋งํ ID๋ฅผ 32bits๋ก ์ค์ ํ ๊ฒฝ์ฐ ์ต๋ 1๊ฐ, 16bits๋ก ์ค์ ํ ๊ฒฝ์ฐ ์ต๋ 2๊ฐ๊น์ง ์ง์ ์ด ๊ฐ๋ฅํ๋ค.
(e.g. ID๋ฅผ 0x00000000์ผ๋ก ์ค์ & Mask๋ฅผ 0x0000FFFF์ผ๋ก ์ค์ ->
ID์ ์์ 16๋นํธ๋ฅผ ๋ฌด์ํ๊ณ ํ์ 16๋นํธ๋ง ์ฌ์ฉํ๋ ์๋์ ๊ฐ์ ๋ฉ์์ง๋ง ์์ ํ ์ ์๋ค.
0x00000000, 0x00000001, ..., 0x0000FFFF)
Filter ํ์ฑํ
Filter๋ฅผ ํ์ฑํํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ฅผ ์ํํ๋ค.
- CAN_FMR ๋ ์ง์คํฐ์ FINIT ๋นํธ ์ค์
- Acceptance Filter 1๊ณผ Acceptance Filter 2์ ๊ฐ์ด 0์ผ๋ก ์ด๊ธฐํ๋จ
- Acceptance Mask 1๊ณผ Acceptance Mask 2์ ๊ฐ์ด 0xFFFFFFFF์ผ๋ก ์ด๊ธฐํ๋จ
- Acceptance Filter banks์ ์ํ๊ฐ Inactive๋ก ์ค์ ๋จ
- CAN_FA1R ๋ ์ง์คํฐ ๋๋ CAN_FA0R ๋ ์ง์คํฐ์ ํด๋น ๋นํธ ์ค์
- Acceptance Filter banks์ ์ํ๊ฐ Active๋ก ์ค์ ๋จ
๐ถ bxCAN Bit timing
๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๋ ์์ธก ๋
ธ๋ ์ฌ์ด์ ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฐ์ดํฐ ๋นํธ ์์น๋ฅผ ๋ง์ถ๋ ๊ฒ์ Bit timing์ ๋ง์ถ๋ค๊ณ ํ๋ค.
๋ฐ๋ผ์ Bit timing์ ๋คํธ์ํฌ์์ ๋ฐ์ดํฐ ๋นํธ๊ฐ ์ ์ก๋๊ณ ์์ ๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์กฐ์ ํ๋ ๋งค๊ฐ๋ณ์๋ค์ ์งํฉ์ผ๋ก
์ดํดํ ์ ์๋ค. ํต์ฌ ๋งค๊ฐ๋ณ์๋ ์๋์ ๊ฐ๋ค.
- ๋๊ธฐํ ์ธ๊ทธ๋จผํธ(Sync Segment)
๋ฉ์์ง ์ ์ก ์ ์ ์ ์ก๋๋ฉฐ ๋ ธ๋๊ฐ ๋๊ธฐํ๋๋๋ก ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
1๊ฐ์ Time Quanta๋ก ๊ตฌ์ฑ๋๋ค. - ํธ์ง ์ธ๊ทธ๋จผํธ(Propagation Segment)
๋ฉ์์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ๋ฉ์์ง ์๋ณ์์ ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋๋ค. - ํ์ด์ฆ ๋ฒํผ ์ธ๊ทธ๋จผํธ(Phase Buffer Segment)
์์ ํ๋ ๋ ธ๋์ ๋งํฌ ์ํ๋ฅผ ์์ ํํ์ฌ ์์ ๋ ธ๋๊ฐ ๋ฉ์์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๊ฒ ์์ ํ ์ ์๋๋ก ํ๋ค. - ๋นํธ ํ์ ์ธ๊ทธ๋จผํธ(Bit Time Segment)
์ ์ฒด ๋นํธ ํ์์ ๊ธธ์ด๋ฅผ ๋ํ๋ด๋ฉฐ ๋๊ธฐํ ์ธ๊ทธ๋จผํธ, ํธ์ง์ธ๊ทธ๋จผํธ, ํ์ด์ฆ ๋ฒํผ ์ธ๊ทธ๋จผํธ์ ํฉ๊ณผ ๊ฐ๋ค. - ์๊ฐ ํํ
(Time Quantum)
์๊ฐ ํํ ์ ๋นํธ ํ์์ ๋๋๋ ๊ธฐ๋ณธ ์๊ฐ ๋จ์๋ก, ๋นํธ ํ์์ ์ ํํ ๋นํธ๋ก ๋๋๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ
Prescaler / Clock์ ๊ฐ์ด๋ค. - Sample Point
ํน์ ์๊ฐ์ ์ธก์ ํ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธ
Bit Segment 1๊ณผ 2 ์ฌ์ด์ ์ด๋ ํ ์ง์ ์ ์์นํ๋ฉฐ ์ํ๋ง ์ฃผํ์์ ๋ฐ๋ผ ํด๋น ์์น๊ฐ ๊ฒฐ์ ๋๋ค.
์์น ๊ณต์ : (Sync_seg + Seg1) / ์ ์ฒด ํ์ ํํ
๐ถ bxCAN Error
์ํ | ์๋ฌ ํ๋๊ทธ ์ ์ก ์ฌ๋ถ | ๋ฐ์ดํฐ ์ ์ก ์ฌ๋ถ |
Error Active | ์ ์ก | ์ค๋จ |
Error Passive | ๋ฏธ์ ์ก | ๊ฐ๋ฅ |
Error Off | ๋ฏธ์ ์ก | ๊ฐ๋ฅ |
Error Active
CAN bus์์ ์๋ฌ๊ฐ ๋ฐ์ํ ํ, ํด๋น ๋ ธ๋๊ฐ ์๋ฌ๋ฅผ ๊ฐ์งํ๊ณ ์๋ฌ ํ๋๊ทธ๋ฅผ ์ ์กํ๋ ์ํ
Error Active ์ํ์์๋ ํด๋น ๋
ธ๋๋ ๋ฐ์ดํฐ ์ ์ก์ ์ค๋จํ๊ณ , ์๋ฌ ํ๋๊ทธ๋ฅผ ์ ์กํ๋ค.
Error Passive
Error Active ์ํ์์ ์๋ฌ๊ฐ ์ง์๋ ๊ฒฝ์ฐ, ํด๋น ๋ ธ๋๊ฐ ์๋ฌ ํ๋๊ทธ๋ฅผ ์ ์กํ์ง ์๋ ์ํ
Error Passive ์ํ์์๋ ํด๋น ๋ ธ๋๋ ๋ฐ์ดํฐ ์ ์ก์ ๊ฐ๋ฅํ์ง๋ง, ์๋ฌ ํ๋๊ทธ๋ฅผ ์ ์กํ์ง ์์์ผ๋ก์จ ๋ค๋ฅธ ๋ ธ๋์ ์๋ฌ๋ฅผ ์ ํํ์ง ์๋๋ค.
Bus Off
Error Passive ์ํ์์ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์ ์ํ
Error Off ์ํ์์๋ ํด๋น ๋ ธ๋๋ ์ ์์ ์ผ๋ก ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค.
[์ฐธ์กฐ]
https://www.cnblogs.com/shangdawei/p/4716869.html
http://www.bittiming.can-wiki.info/
https://www.youtube.com/watch?v=YHzd-VamCdE&t=305s
'embedded' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ubuntu] ์์ผ ํต์ ์ฑํ ์๋ฒ (0) | 2023.11.23 |
---|---|
[ubuntu] ์์ผ ํต์ ๋ฐ์ดํฐ ์ ์ก ๋ฐ ์ ์ฅ (0) | 2023.11.20 |
[device] CAN Gateway ์ด๋ก ์ ๋ฆฌ (0) | 2023.10.26 |
[protocol] CAN ํต์ ์ด๋ก ์ ๋ฆฌ (0) | 2023.10.14 |
[protocol] UDS ์ด๋ก ์ ๋ฆฌ (0) | 2023.10.13 |