STM32 ๋ณด๋ ๋ ๊ฐ๋ก CAN 2.0 ๋ ธ๋ ๊ฐ ํต์ ์ ๊ณต๋ถํ ํ๋ก์ ํธ์ ๋๋ค. ๋ชจํฐ๋ ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๋ ์์ต๋๋ค. ๋ฒ์ค์ ํ๋กํ ์ฝ, ๊ทธ๋ฆฌ๊ณ ๋ถ์ฐ๋ MCU๋ฅผ ์์ ์ ์ผ๋ก ํต์ ์ํค๋ ๋ฐ ํ์ํ ๊ฒ๋ง ๋ค๋ค์ต๋๋ค. F411RE๋ bxCAN ํ๋ฆฌํผ๋ด์ด ์์ด์ SPI๋ก MCP2515๋ฅผ ๋ถ์ฌ ๋ฒ์ค์ ์ฐธ์ฌ์์ผฐ๊ณ , ๊ทธ SPI ์ ์ด๊น์ง๊ฐ ์ด ํ๋ก์ ํธ์ ๋ฒ์์ ๋๋ค.
์๋ Neuro-Drive์ Phase 6์ด์๋๋ฐ, ์ก์ถ์์ดํฐ๋ฅผ ๋ชจ๋ ๊ฑท์ด๋ด๊ณ CAN ํต์ ๋ง ๋ณด๊ธฐ ์ํด ๋ฐ๋ก ๋ผ์ด๋์ต๋๋ค.
ํ์จ์ด๋ STM32CubeIDE์์ ์์ฑยท๋น๋ยท๋๋ฒ๊น
ํ๊ณ , ๊ฒ์ฆ์ด ๋๋ .ioc์ ํต์ฌ ์์ค(main.c, can.c ๋ฑ)๋ง ์ฌ๊ธฐ์ ๋ณต์ฌํด์ ๋ณด๊ดํฉ๋๋ค. ๋ฌธ์(.md)๋ ์ฌ๊ธฐ์ ์ง์ ์์ฑํฉ๋๋ค. ์ฆ ์ด repo๋ ๊ฐ๋ฐ ํ๊ฒฝ์ด ์๋๋ผ CubeIDE์์ ๊ฒ์ฆํ ํ์จ์ด ์ค๋
์ท + ๋ฌธ์ ๋ณด๊ด์์
๋๋ค.
ํ์ฌ ๋ฒ์๋ Phase 0โ2 (STM32 โ STM32 2๋ ธ๋ CAN)์ ๋๋ค. Raspberry Pi 5 ๊ฒ์ดํธ์จ์ด ๋ ธ๋(Phase 3)๋ ํธํ์ฑ ๋ฌธ์ ๋ก ๋ณด๋ฅ ์ค์ ๋๋ค. ์ฌ์ ๋ ์๋ Phase 3 โ ๋ณด๋ฅ ์ฌ์ ์์ ํ์ธํ ์ ์์ต๋๋ค.
โ Phase 2 ์๋ฐฉํฅ CAN ํต์ ๊ฒ์ฆ ์๋ฃ โ F446RE(native bxCAN) โ F411RE(MCP2515 SPI)๋ฅผ ํ๋์ ๋ฌผ๋ฆฌ CAN ๋ฒ์ค์์ 500 kbps ์๋ฐฉํฅ์ผ๋ก ํต์ ํฉ๋๋ค. ๋ ๋ ธ๋๊ฐ ์๋ก์ ํํธ๋นํธ๋ฅผ ๋๊ธฐ ์์ (
peer_rx == self_tx)ํ๊ณ ์๋ฌ ํ๋๊ทธ๋ 0์ ์ ์งํฉ๋๋ค. ๋์ ์์ยท๊ฒฐ๊ณผ ๋ก๊ทธ๋ ์๋ ์์ํ๊ธฐ โ Phase 2์์ ํ์ธํ ์ ์์ต๋๋ค.
Phase 2 ๋ฐฐ์ ์๋ฃ ์ํ์ ๋๋ค. ์ข์ธก์ด F411RE + MCP2515(SPI CAN), ์ฐ์ธก์ด F446RE + SN65HVD230(3.3V ํธ๋์๋ฒ)์ด๊ณ , ์ค์ ๋ธ๋ ๋๋ณด๋๊ฐ CAN_H / CAN_L / GND ๊ณตํต ํ๋ธ์ ๋๋ค.
๋ถ๋ชจ ํ๋ก์ ํธ์์ F446RE๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ค๊ฐ ํ๋์จ์ด ์ฌ๊ณ ๊ฐ ๋ฌ์ต๋๋ค. ์๋ณด๊ฐ ์คํจ๋๊ณ , GND ์ ํผ ์ ์ ๋ถ์ด ๋ถ์๊ณ , L298N ๋๋ผ์ด๋ฒ๊ฐ ์๋ณด์ ํจ๊ป ๋ง๊ฐ์ก์ต๋๋ค. ์ฝ๋ ๋ฌธ์ ๊ฐ ์๋์์ต๋๋ค. ํ์ ๋ ์ด์ด๋ฅผ ๋ฐ๊ฟ๋๊ณ ๋ ์ ์ ์ ๋๋ ํ๋์จ์ด๋ ๊ทธ๋๋ก ๋ฉ์ฉกํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ ๊ฒ ๋ฌธ์ ์์ต๋๋ค.
๊ทธ๋ ๋น ๋จ๋ ธ๋ ๊ท์จ ํ๋๋ฅผ ์ค์ฌ์ผ๋ก ์ด repo๋ฅผ ๋ค์ ์งฐ์ต๋๋ค. ๋ค์ ๋ ์ด์ด๋ฅผ ์ฌ๋ฆฌ๊ธฐ ์ ์ ์ง๊ธ ๋ ์ด์ด๋ฅผ ๋จผ์ ๊ฒ์ฆํฉ๋๋ค.
๋ชจ๋ Phase์ ๊ณตํต์ผ๋ก ์งํค๋ ๊ท์น ์ธ ๊ฐ์ง์ ๋๋ค.
- ์ฝ๋๋ฅผ ์์ฌํ๊ธฐ ์ ์ ์ ์๊ณผ GND๋ถํฐ ๋ด ๋๋ค. ๋ฉํฐ๋ฏธํฐ๋ก ํ์ธํ๋ ๊ฑด 30์ด์ง๋ง, ๋ณด๋๊ฐ ํ๋ฉด ๊ทธ๋ ์น ์์ ์ด ๋ ์๊ฐ๋๋ค.
- ๊ธฐ๋ํ ๋์ ์์ด ์ด์ํ ์๋ฆฌ๋ ์ด์ด ๋๋ฉด ๋ฐ๋ก ์ ์์ ๋์ต๋๋ค. ์์ธ์ ์ฐพ๊ธฐ ์ ์ ๋ค์ ๋ฃ์ง ์์ต๋๋ค. ์คํจ๋ ๋ชจํฐ๋ ์๋ฆฌ๊ฐ ๋๊ธฐ ์ ๊น์ง ์กฐ์ฉํฉ๋๋ค.
- ํ ๋ฒ์ ๋ ์ด์ด ํ๋๋ง ์ถ๊ฐํฉ๋๋ค. ๋ฒ์ค๊ฐ ์ ๊ฒ์ด๋ฉด ํ์จ์ด๋ ๊ฒ์ฆ๋ ๊ฒ์ ์ฐ๊ณ , ํ์จ์ด๊ฐ ์ ๊ฒ์ด๋ฉด ๋ฒ์ค๋ ์ด๋ฏธ ๊ฒ์ฆ๋ผ ์์ด์ผ ํฉ๋๋ค.
CAN 2.0 ๋ฒ์ค ํ๋์ ๋ ธ๋ ๋, 500 kbps, ์์ชฝ ๋ฌผ๋ฆฌ์ ๋๋จ์ 120ฮฉ ์ข ๋จ ์ ํญ์ ๋ก๋๋ค.
[120ฮฉ] [120ฮฉ]
โ โ
CAN_H โโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
CAN_L โโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โโโโโโโโดโโโโโโโ โโโโโโโโดโโโโโโโ
โ SN65HVD230 โ โ TJA1050 โ
โ (3.3V xcvr)โ โ(๋ชจ๋ ๋ด์ฅ) โ
โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ
TXD/RXD CAN TX/RX
โ โ
โโโโโโโโดโโโโโโโ โโโโโโโโดโโโโโโโ
โ F446RE โ โ MCP2515 โ
โ bxCAN โ โ(SPI CAN ctrlโ
โ PA11/PA12 โ โ ์ธ๋ถ IC) โ
โโโโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโ
SCK/MOSI/MISO/CS
โ
โโโโโโโโโดโโโโโโ
โ F411RE โ
โ SPI2 โ
โ PB13/14/15 โ
โโโโโโโโโโโโโโโ
๋ ธ๋ ์ญํ ์ ์์ง ์ก์ถ์์ดํฐ๊ฐ ์์ด์ ์๋ฆฌ๋ง ์ก์๋์ต๋๋ค.
- F446RE โ ๋์ค์ MotorECU ์๋ฆฌ. bxCAN + SN65HVD230(3.3V ๋ค์ดํฐ๋ธ ํธ๋์๋ฒ).
- F411RE โ ๋์ค์ SensorECU ์๋ฆฌ. MCP2515(SPI CAN ์ปจํธ๋กค๋ฌ) + TJA1050(๋ชจ๋ ๋ด์ฅ ํธ๋์๋ฒ).
๊ฐ Phase๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋น๋๋๊ณ ํ๊ท ํ ์คํธ๊ฐ ๋๋ ์ฐ์ถ๋ฌผ์ ๋ง๋ญ๋๋ค. ๋ค Phase๊ฐ ๊นจ์ ธ๋ ์ Phase๋ ๋์๊ฐ์ผ ํฉ๋๋ค.
| Phase | ๋ชฉํ | ๊ฒ์ฆ ๋ฐฉ๋ฒ | ๋ ธ๋ ์ |
|---|---|---|---|
| 0 | ์ ์ & GND ๊ฒ์ฆ, ๊ธฐ๋ณธ ๋์ ํ์ธ | ๋ฉํฐ๋ฏธํฐ ์ธก์ ๊ฐ ๊ธฐ๋ก, ๊ฐ ๋ณด๋์์ "alive" UART ์ถ๋ ฅ | 2๊ฐ ๋ ๋ฆฝ |
| 1 | F446RE bxCAN ๋ฃจํ๋ฐฑ / F411RE MCP2515(SPI) ๋ฃจํ๋ฐฑ | TX/RX ์นด์ดํฐ๊ฐ UART์์ ๋๊ธฐ ์ฆ๊ฐ | 1 (๊ฐ๊ฐ) |
| 2 | F446RE โ F411RE 2๋ ธ๋ CAN | ์ ๋
ธ๋ ํํธ๋นํธ(0x010, 0x011) ์ํธ ์์ , ์นด์ดํฐ ๋๊ธฐ ์ฆ๊ฐ |
2 |
Phase 0๋ฅผ ๋ฐ๋ก ๋ผ์ด ๋ ๊ฒ์, ์ ์ฌ๊ณ ๊ฐ ์๋ฌด๋ ์ ๋ณด๋ ๋ ์ด์ด๋ฅผ ํ๊ณ ๋ฒ์ก๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ชจ๋ ๋ณด๋๊ฐ ๊นจ๋ํ๊ฒ ์ ์์ด ๋ค์ด์ค๊ณ , GND๊ฐ ์ฐ์์ด๊ณ , ๋ฒ์ค์ ๋ถ์ด๊ธฐ ์ ์ UART๋ก "alive"๊ฐ ์ฐํ๋ ๊ฒ์ ํ์ธํ๊ธฐ ์ ์ Phase 1์ ์์ํ์ง ์์ต๋๋ค.
| Phase | ๋ชฉํ | ์ํ |
|---|---|---|
| 3 | RPi5 (SocketCAN) ๊ฒ์ดํธ์จ์ด ๋ ธ๋ ์ถ๊ฐ | ๋ณด๋ฅ โ ํธํ์ฑ ์๋ฃจ์ ๊ฒฐ์ ํ์ |
| 4 | ์ฃผ๊ธฐ์ + ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ฉ์์ง ์ค์ผ์ค๋ง, ์ฐ์ ์์ ์ฒ๋ฆฌ | Phase 3 ์ดํ |
| 5 | ์ค๋ฅ ์ฒ๋ฆฌ, ๋ฒ์ค ์คํ ๋ณต๊ตฌ, ์ง๋จ ๊ตํ (UDS ์คํ์ผ) | Phase 3 ์ดํ |
์๋๋ RPi5๋ฅผ MCP2515 + TJA1050 ๋ชจ๋๋ก SPI๋ฅผ ํตํด ๋ฒ์ค์ ๋ถ์ด๋ ค๊ณ ํ๋๋ฐ, ๋ ๊ฐ์ง๊ฐ ๊ฑธ๋ ธ์ต๋๋ค.
- TJA1050 ํธ๋์๋ฒ๊ฐ 5V ์ ์ฉ์ด๊ณ , ๋ชจ๋ ๊ตฌ์กฐ์ MCP2515 ์ปจํธ๋กค๋ฌ๋ 5V๋ก ๊ณต๊ธํด์ผ ํฉ๋๋ค.
- ๊ทธ๋ฌ๋ฉด MCP2515์ SPI ์ถ๋ ฅ์ด 5V ๋ก์ง์ด ๋๋๋ฐ, RPi5 GPIO๋ 3.3V ์ ์ฉ์ด๋ผ ์ง๊ฒฐํ๋ฉด ์์๋ ์ ์์ต๋๋ค. (์ด์ ์ ์ด๊ฒ์ผ๋ก RPi5 8GB ํ ๋๋ฅผ ๋ ๋ ธ์ต๋๋ค โ
docs/lesson_learned.md์ฌ๊ณ 1.)
ํด๊ฒฐ์ฑ ์ RPi ์ ์ฉ CAN HAT(~25,000์, ์ ์ผ ์์ ), ๋ก์ง ๋ ๋ฒจ ์ปจ๋ฒํฐ, MCP2515 ๋ชจ๋ SMD ๋ฆฌ์ํฌ ์ ๋๊ฐ ์๋๋ฐ, Phase 2๊ฐ ๋๋๊ณ ๋ค์ ๋ณด๊ธฐ๋ก ํ์ต๋๋ค. ์ด์ ์์น #3์ ์ด๊ธ๋๋ ์์ ์์ ๋ฌด๋ฆฌํ๊ฒ ๊ฒฐ์ ํ์ง ์์ต๋๋ค.
์ง๋จ ID๋ ์๋์ฐจ ํ์ค(UDS / ISO-15765) ๊ด๋ก๋ฅผ ๋ฐ๋์ต๋๋ค.
| ID | ์ก์ ์ | ๋ชฉ์ | ์ฃผ๊ธฐ | ์ฐ์ ์์ |
|---|---|---|---|---|
0x010 |
F446RE | ํํธ๋นํธ (alive ์นด์ดํฐ, ๊ฒฐํจ ํ๋๊ทธ) | 100ms | ๋์ |
0x011 |
F411RE | ํํธ๋นํธ | 100ms | ๋์ |
0x100 |
F446RE | ์ํ (์ก์ถ์์ดํฐ ๋ฐ์ดํฐ ์๋ฆฌ) | 50ms | ์ค๊ฐ |
0x200 |
F411RE | ์ผ์ ๋ฐ์ดํฐ (์๋ฆฌ) | 50ms | ์ค๊ฐ |
| ID | ์ก์ ์ | ๋ชฉ์ | ์ฃผ๊ธฐ |
|---|---|---|---|
0x7E0 |
RPi | ์ง๋จ ์์ฒญ (๋ธ๋ก๋์บ์คํธ) | ์ด๋ฒคํธ |
0x7E8 |
F446RE | ์ง๋จ ์๋ต | ์ด๋ฒคํธ |
0x7E9 |
F411RE | ์ง๋จ ์๋ต | ์ด๋ฒคํธ |
CAN์ ๋ฎ์ ID๊ฐ ๋์ ์ฐ์ ์์๋ก ์ค์ฌ๋ฉ๋๋ค. ํํธ๋นํธ๋ฅผ ์ ์ผ ๋ฎ์ ID์ ๋ฌ์, ๋ฒ์ค๊ฐ ๋ถ๋ฒผ๋ ๋ ธ๋ ์์กด ์ ํธ๊ฐ ๋ฐ๋ฆฌ์ง ์๊ฒ ํ์ต๋๋ค.
์ ์ฒด ๋ฉ์์ง ์ฌ์ ์ docs/specs/can_protocol.md์์ ํ์ธํ ์ ์์ต๋๋ค.
multi-mcu-can/
โโโ README.md
โโโ docs/
โ โโโ lesson_learned.md # ๋ถ๋ชจ ํ๋ก์ ํธ ์ฌ๊ณ ํ๊ณ + ์ฌ์ ํํผ ์ฌ๋ก
โ โโโ workflow.md # ํฌ๋ก์ค ํ๋ซํผ(Ubuntu/Windows) ๊ฐ๋ฐ ์ํฌํ๋ก
โ โโโ phases/
โ โ โโโ phase0/
โ โ โ โโโ checklist.md # ์ ์/GND ๊ฒ์ฆ ์ ์ฐจ
โ โ โ โโโ ioc_f446re.md # F446RE Phase 0 CubeMX ์ค์
โ โ โ โโโ ioc_f411re.md # F411RE Phase 0 CubeMX ์ค์
โ โ โโโ phase1/
โ โ โโโ checklist_f446re.md # F446RE bxCAN ๋ฃจํ๋ฐฑ ์ ์ฐจ + ์๋ฃ ๊ธฐ๋ก
โ โ โโโ ioc_f446re.md # F446RE Phase 1 CubeMX ์ค์
โ โ โโโ checklist_f411re.md # F411RE MCP2515 SPI ๋ฃจํ๋ฐฑ + CubeMX ์ค์
โ โโโ specs/
โ โโโ can_protocol.md # ์ ์ฒด ๋ฉ์์ง ์ฌ์ , DLC, ๋ฐ์ดํธ ์์
โ โโโ hardware.md # ํ์ฑ BOM + ๋ณด๋ฅ ๋ถํ
โโโ firmware/
โ โโโ f446re_node/
โ โ โโโ phase0_alive/ # LED ์ ๋ฉธ + UART "alive" (์๋ฃ)
โ โ โโโ phase1_loopback/ # bxCAN ๋ด๋ถ ๋ฃจํ๋ฐฑ (์๋ฃ)
โ โโโ f411re_node/
โ โโโ phase0_alive/ # LED ์ ๋ฉธ + UART "alive" (์๋ฃ)
โ โโโ phase1_loopback/ # MCP2515 SPI ๋ฃจํ๋ฐฑ (์๋ฃ)
โโโ rpi/ # Phase 3 ์ดํ (ํ์ฌ ๋ณด๋ฅ)
Phase 2๊ฐ ๊นจ์ ธ๋ Phase 1์ ๊ทธ๋๋ก ํ๋์ํด์ ๋๋ฆด ์ ์์ต๋๋ค.
| ๊ตฌ์ฑ ์์ | ๋ถํ | ์ญํ |
|---|---|---|
| MCU 1 | STM32 NUCLEO-F446RE | bxCAN ๋ ธ๋ 1, ๋ฏธ๋ MotorECU |
| MCU 2 | STM32 NUCLEO-F411RE | MCP2515(SPI) ๋ ธ๋ 2, ๋ฏธ๋ SensorECU |
| F446RE ํธ๋์๋ฒ | SN65HVD230 ๋ชจ๋ | 3.3V ๋ค์ดํฐ๋ธ ์ฐจ๋ ๋ฌผ๋ฆฌ ๋ ์ด์ด |
| F411RE CAN ์ปจํธ๋กค๋ฌ + ํธ๋์๋ฒ | MCP2515 + TJA1050 ๋ชจ๋ | SPI CAN ์ปจํธ๋กค๋ฌ + 5V ํธ๋์๋ฒ(๋ชจ๋ ๋ด์ฅ) |
| ์ข ๋จ ์ ํญ | 120ฮฉ ร 2 | ๋ฒ์ค ์์ชฝ ๋ฌผ๋ฆฌ์ ๋๋จ |
| ์ ์ | USB๋ง (๋ฒค์น ์ ์, ๋ฐฐํฐ๋ฆฌ ์์) | Phase 0โ2 ๋ชจ๋ ๋ฐ์คํฌ ์ ์ |
F446RE์ SN65HVD230์ ์ด ์ด์ : F446RE๋ 3.3V ๋ก์ง MCU์ ๋๋ค. 5V ์ ์ฉ ํธ๋์๋ฒ(MCP2551, TJA1050)๋ฅผ ์ง๊ฒฐํ๋ฉด TXD ์ ๋ ฅ์ VIH ์๊ณ๊ฐ(~3.5V)์ 3.3V ์ถ๋ ฅ์ด ๋์ง ๋ชปํด ๊ฐํ์ ์ผ๋ก ์ก์ ์ด ์คํจํฉ๋๋ค. SN65HVD230์ 3.3V ๋ค์ดํฐ๋ธ๋ผ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. Phase 2์์ F446RE ์ธก์ ์๋ก ์ถ๊ฐ๋๋ ๋ณ์๋ฅผ ๋ฌผ๋ฆฌ ๋ ์ด์ด ํ๋๋ก ๋ฌถ๊ธฐ ์ํ ์ ํ์ด๊ธฐ๋ ํฉ๋๋ค.
F411RE์ MCP2515๋ฅผ ์ด ์ด์ : F411RE์๋ bxCAN์ด ์์ต๋๋ค. MCP2515๊ฐ SPI๋ก ์ ์ดํ๋ ์ธ๋ถ CAN ์ปจํธ๋กค๋ฌ๋ผ, F411RE๊ฐ CAN์ ์ฐธ์ฌํ ์ ์ผํ ๊ฒฝ๋ก์ ๋๋ค. ๋ชจ๋์ ๋ด์ฅ๋ TJA1050(5V)์ CAN ๋ฒ์ค ์ชฝ์๋ง ๋ถ๊ณ , SPI MISO ์ (5V โ F411RE)์ PB14์ 5V ๋ด์ฑ์ผ๋ก ๋ฐ์ต๋๋ค.
MCP2515 ๋ชจ๋์ 5V๋ก ๊ณต๊ธํ์ง๋ง F411RE(3.3V)์ ๋ ๋ฒจ ์ปจ๋ฒํฐ ์์ด ์ง๊ฒฐ๋ฉ๋๋ค. ๋ฐฉํฅ๋ณ๋ก ์ด์ ๊ฐ ๋ค๋ฆ ๋๋ค.
| ์ ํธ ๋ฐฉํฅ | ์ ์ | ๋์ ์ด์ |
|---|---|---|
| F411RE โ MCP2515 (MOSI, SCK, CS) | 3.3V โ 5V ๋ชจ๋ | MCP2515 ์ ๋ ฅ VIH โ 2.1V. F411RE์ 3.3V ์ถ๋ ฅ์ด๋ฉด ์ถฉ๋ถํ HIGH๋ก ์ธ์ |
| MCP2515 โ F411RE (MISO) | 5V โ 3.3V MCU | PB14๋ F411RE ๋ฐ์ดํฐ์ํธ Table 11์์ FT(5V ๋ด์ฑ) ํ. 5V๋ฅผ ์ง์ ๋ฐ์๋ ๋จ |
๊ฐ์ ๋ชจ๋์ RPi5์ ์ง๊ฒฐํ์ง ๋ชปํ๋ ๊ฒ์ด ์ด MISO 5V ๋๋ฌธ์ ๋๋ค. RPi5 GPIO๋ 5V ๋ด์ฑ์ด ์์ด์ Phase 3๋ฅผ ๋ณด๋ฅํ์ต๋๋ค.
๋ถ๋ชจ ํ๋ก์ ํธ ์ฌ๊ณ ๊ฐ ๋ฐฐํฐ๋ฆฌ ๋ฐฐ์ ๊ณผ ์ฝํ ์์ด์, ์ด repo๋ ๋ฐฐํฐ๋ฆฌ ์์ด USB ์ ์๋ง ์๋๋ค.
์ ์ฒด BOM ๋ฐ ๋ฐฐ์ ์ docs/specs/hardware.md์์ ํ์ธํ ์ ์์ต๋๋ค.
- STM32CubeIDE
- ํธ์คํธ PC์ UART ์๋ฆฌ์ผ ๋ชจ๋ํฐ (CubeIDE ๋ด์ฅ ๋๋ PuTTY/screen ๋ฑ)
# ๊ฐ ๋ณด๋์ phase0_alive ํ์จ์ด ํ๋์:
# - LED 1Hz ์ ๋ฉธ
# - UART๋ก "[F446RE] alive, t=12345ms" 0.5์ด๋ง๋ค ์ถ๋ ฅ (F411RE๋ ๋์ผ ํจํด)
# ๋ค์ ๋จ๊ณ ์ ์ ๊ฐ ๋ณด๋ UART ์ถ๋ ฅ์ ๋
๋ฆฝ์ ์ผ๋ก ํ์ธ๋ฉํฐ๋ฏธํฐ/์ฐ์์ฑ ์ ์ฐจ: docs/phases/phase0/checklist.md
F446RE CubeMX ์ค์ : docs/phases/phase0/ioc_f446re.md
F411RE CubeMX ์ค์ : docs/phases/phase0/ioc_f411re.md
# F446RE: phase1_loopback ํ๋์ โ UART์์ tx/rx ์นด์ดํฐ ๋๊ธฐ ์ฆ๊ฐ (์๋ฃ)
# F411RE: phase1_loopback ํ๋์ (MCP2515 SPI ๋ฃจํ๋ฐฑ)
# ๋ฐฐ์ : F411RE SPI2(PB13/14/15) โ MCP2515 ๋ชจ๋ + PB6=CS
# UART์์ "init OK (CANSTAT=0x40)" ํ tx/rx ์นด์ดํฐ ๋๊ธฐ ์ฆ๊ฐ ํ์ธF446RE ์ ์ฐจ: docs/phases/phase1/checklist_f446re.md
F411RE ์ ์ฐจ: docs/phases/phase1/checklist_f411re.md
# ์์ชฝ ๋ณด๋์ phase2_two_node ํ์จ์ด ํ๋์
# ๋ฐฐ์ : F446RE PA11/PA12 โ SN65HVD230 โ CAN ๋ฒ์ค โ TJA1050 โ MCP2515 โ F411RE SPI2(PB13/14/15)
# ๊ณตํต GND ํ์ (phase0/checklist.md Step 2)
# ๊ฐ ๋
ธ๋ UART์์ ์๋ ํํธ๋นํธ ์์ ์นด์ดํฐ๊ฐ ๋๊ธฐ ์ฆ๊ฐํ๋์ง ํ์ธPhase 2 ๋ฐฐ์ ์ ์ฐจ: docs/phases/phase2/checklist.md
๊ฒฐ๊ณผ โ ์๋ฐฉํฅ 500 kbps ํต์ ๊ฒ์ฆ ์๋ฃ. ๋ ๋
ธ๋๊ฐ ๋ฌผ๋ฆฌ CAN ๋ฒ์ค๋ฅผ ํตํด ์๋ก์ ํํธ๋นํธ(F446RE 0x010 โ F411RE 0x011)๋ฅผ ์์ ํ๋ฉฐ, ์์ชฝ peer_rx๊ฐ self_tx์ ๋๊ธฐ ์ฆ๊ฐํฉ๋๋ค. F446RE err=0x0, F411RE eflg=0x00 (์๋ฌ ํ๋๊ทธ ์์)์ ์ ์งํฉ๋๋ค.
[F411RE] init OK (CANSTAT=0x00)
[F411RE] self_tx=479 peer_rx=478 eflg=0x00 t=47900ms
[F446RE] CAN start: state=2 err=0x0
[F446RE] self_tx=10 peer_rx=11 err=0x0 t=1000ms
F411RE๋ CANSTAT=0x00(Normal ๋ชจ๋ ์ง์
), F446RE๋ state=2(HAL_CAN_STATE_READY)๋ฅผ ํ์ธํ์ต๋๋ค.
์ค์๊ฐ ๋์ ์์:
Phase2_CAN.mp4
์์์ด ์ฌ์๋์ง ์์ผ๋ฉด
docs/assets/captures/Phase2_CAN.mp4์์ ํ์ธํ ์ ์์ต๋๋ค.
2๋ ธ๋ ๋ฒ์ค๊ฐ ์ถฉ๋ถํ ์์ ๋ ๋ค์ ์๊ฐํ๋ ํ์ฅ์ ๋๋ค.
- Phase 3: RPi5 ๊ฒ์ดํธ์จ์ด ๋ ธ๋ ์ถ๊ฐ (CAN HAT / USB-CAN ์ด๋ํฐ / ๋ก์ง ๋ ๋ฒจ ์ปจ๋ฒํฐ ์ค ํ)
- Phase 4: ์ฃผ๊ธฐ์ + ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ฉ์์ง ์ค์ผ์ค๋ง, ์ฐ์ ์์ ์ฒ๋ฆฌ
- Phase 5: ์ค๋ฅ ์ฒ๋ฆฌ, ๋ฒ์ค ์คํ ๋ณต๊ตฌ, ์ง๋จ ๊ตํ (UDS ์คํ์ผ)
- CAN-FD ๋ง์ด๊ทธ๋ ์ด์ (F446RE๋ ๋์ง๋ง F411RE๋ ์ ๋จ โ ๋ ธ๋ ๊ต์ฒด ํ์)
- ISO-TP (ISO-15765-2)๋ก 8๋ฐ์ดํธ ๋๋ ์ง๋จ ํ์ด๋ก๋ ๋ถํ
- UDS ์๋น์ค ๊ตฌํ (DTC ์ฝ๊ธฐ, ECU ์ด๊ธฐํ, ํ๋ก๊ทธ๋๋ฐ ์ธ์ )
- ์ก์ถ์์ดํฐ ๋ ์ด์ด ๋ค์ ์ฌ๋ ค์ ๋ถ๋ชจ Neuro-Drive ์์์ ์ฌํตํฉ
๋ฐํด์ง (Haejin Park) ๊ฒฝ๋ถ๋ํ๊ต




