STM32 ๋ณด๋ ๋ ๊ฐ๋ฅผ ์ค์ฌ์ผ๋ก ํ CAN 2.0 ๋ ธ๋ ๊ฐ ํต์ ์ง์ค ํ์ต ํ๋ก์ ํธ. ์ก์ถ์์ดํฐ๋, ์์๋, ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๋ ์๋ค โ ๋ฒ์ค์ ํ๋กํ ์ฝ, ๊ทธ๋ฆฌ๊ณ ๋ถ์ฐ MCU๋ฅผ ์์ ์ ์ผ๋ก ํต์ ์ํค๊ธฐ ์ํด ํ์ํ ๊ท์จ์๋ง ์ง์คํ๋ค. F411RE๋ bxCAN ํ๋ฆฌํผ๋ด์ด ์์ด SPI(MCP2515) ๋ก CAN ๋ฒ์ค์ ์ฐธ์ฌํ๋ฉฐ, SPI ์ ์ด๋ ์ด ํ๋ก์ ํธ์ ํ์ต ๋ฒ์์ ํฌํจ๋๋ค.
์ด ์ ์ฅ์๋ Neuro-Drive ์ ํ์ ํ๋ก์ ํธ๋ก, ์๋ Phase 6์ ํด๋นํ๋ ๋ด์ฉ์ ๋ถ๋ฆฌํ ๊ฒ์ด๋ค. ์ก์ถ์์ดํฐ ๋ ์ด์ด๋ฅผ ๊ฑท์ด๋ด๊ณ ๊ธฐ์ด ๋ฐ CAN ํต์ ์ ์ง์คํ๊ธฐ ์ํด ๋ณ๋ ์ ์ฅ์๋ก ์ถ์ถํ๋ค.
ํ์ฌ ๋ฒ์: Phase 0โ2 (STM32 โ STM32 2๋ ธ๋ CAN). Raspberry Pi 5 ๊ฒ์ดํธ์จ์ด ๋ ธ๋๋ Phase 3 ์ดํ๋ก ์ฐ๊ธฐ๋์์ผ๋ฉฐ, ํ์ฌ ๋ณด๋ฅ ์ํ๋ค. ์์ธํ ๋ด์ฉ์ ์๋ Phase 3 โ ๋ณด๋ฅ ์ฌ์ ์ฐธ์กฐ.
Phase 2 ๋ฐฐ์ ์๋ฃ ์ํ. ์ข์ธก: F411RE + MCP2515(SPI CAN). ์ฐ์ธก: F446RE + SN65HVD230(3.3V ํธ๋์๋ฒ). ์ค์ ๋ธ๋ ๋๋ณด๋๊ฐ CAN_H / CAN_L / GND ๊ณตํต ํ๋ธ ์ญํ ์ ํ๋ค.
๋ถ๋ชจ ํ๋ก์ ํธ์์ F446RE ๋ง์ด๊ทธ๋ ์ด์ ์ค ํ๋์จ์ด ์ฌ๊ณ ๊ฐ ๋ฐ์ํ๋ค: ์๋ณด๊ฐ ์คํจ(stall)ํ๊ณ , GND ์ ํผ ์ ์ ๋ถ์ด ๋ถ์์ผ๋ฉฐ, L298N ๋๋ผ์ด๋ฒ๊ฐ ์๋ณด์ ํจ๊ป ๋ง๊ฐ์ก๋ค. ์์ธ์ ์ฝ๋๊ฐ ์๋์๋ค โ ํ์ ๋ ์ด์ด๋ฅผ ๋ณ๊ฒฝํ ํ์๋ ์ด์ ์ ์ ์ ์๋ํ๋ ํ๋์จ์ด๊ฐ ์ฌ์ ํ ์ ์์ผ ๊ฒ์ด๋ผ๋ ๊ฐ์ ์ด ๋ฌธ์ ์๋ค.
์ด ์ ์ฅ์๋ ์ฒ์์ ๋น ๋จ๋ ธ๋ ๊ท์จ์ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋๋ค: ๋ค์ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ ํ์ฌ ๋ ์ด์ด๋ฅผ ๋ฐ๋์ ๊ฒ์ฆํ๋ค.
์ด ์ ์ฅ์์ ๋ชจ๋ Phase์์ ํํ ๋ถ๊ฐ๋ฅํ 3๊ฐ์ง ๊ท์น.
- ์ฝ๋๋ฅผ ์์ฌํ๊ธฐ ์ ์ ์ ์๊ณผ 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 ๊ฒ์ฆ, ๊ธฐ๋ณธ ๋์ ํ์ธ | ๋ฉํฐ๋ฏธํฐ ์ธก์ ๊ฐ ๊ธฐ๋ก, ๊ฐ ๋ณด๋์์ "I'm alive" UART ์ถ๋ ฅ | 2๊ฐ ๋ ๋ฆฝ |
| 1 | F446RE bxCAN ๋ฃจํ๋ฐฑ / F411RE MCP2515(SPI) ๋ฃจํ๋ฐฑ | TX/RX ์นด์ดํฐ๊ฐ UART ๋ชจ๋ํฐ์์ ๋๊ธฐ์ ์ผ๋ก ์ฆ๊ฐ | 1 (๊ฐ๊ฐ) |
| 2 | F446RE โ F411RE 2๋ ธ๋ CAN | ์ ๋
ธ๋์ ํํธ๋นํธ(0x010, 0x011)๊ฐ ์ํธ ์์ , ์นด์ดํฐ ๋๊ธฐ ์ฆ๊ฐ |
2 |
| Phase | ๋ชฉํ | ์ํ |
|---|---|---|
| 3 | RPi5 (SocketCAN) ๊ฒ์ดํธ์จ์ด ๋ ธ๋ ์ถ๊ฐ | ๋ณด๋ฅ โ ํ๋์จ์ด ํธํ์ฑ ์๋ฃจ์ ๊ฒฐ์ ํ์ |
| 4 | ์ฃผ๊ธฐ์ + ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ฉ์์ง ์ค์ผ์ค๋ง, ์ฐ์ ์์ ์ฒ๋ฆฌ | Phase 3 ์ดํ |
| 5 | ์ค๋ฅ ์ฒ๋ฆฌ, ๋ฒ์ค ์คํ ๋ณต๊ตฌ, ์ง๋จ ๊ตํ (UDS ์คํ์ผ) | Phase 3 ์ดํ |
๋ถ๋ชจ ํ๋ก์ ํธ์ ์ฌ๊ณ ๋ ์ ์ ์๋ํ๋ ์ฐจ์์ ์์ํด ์๋ณด ํ์ฌ๋ก ๋๋ฌ๋ค. ์๋ฌด๋ ํ์ธํ์ง ์๋ ๋ ์ด์ด๋ฅผ ํตํด ๊ฒฐํจ์ด ์ ํ๋๋ค. ์ด ์ ์ฅ์๋ Phase 0 ์ฌ์ธ์คํ ์ ๊น์ง Phase 1์ ์์ํ์ง ์๋๋ค โ ๋ชจ๋ ๋ณด๋๊ฐ ๊นจ๋ํ๊ฒ ์ ์์ด ๋ค์ด์ค๊ณ , ๋ชจ๋ GND๊ฐ ์ฐ์์ ์ด๋ฉฐ, ๋ชจ๋ ๋ ธ๋๊ฐ ๋ฒ์ค ๋์ ์ ์ UART๋ก "alive"๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ค.
Phase 2์์ F446RE ์ธก์ ์ ๋ณ์๋ "๋ฌผ๋ฆฌ ๋ ์ด์ด" ๋จ ํ๋์ฌ์ผ ํ๋ค. STM32(3.3V ๋ก์ง)์ ํธํ๋์ง ์๋ 5V ์ ์ฉ ํธ๋์๋ฒ(MCP2551, TJA1050)๋ฅผ F446RE์ ์ง๊ฒฐํ๋ฉด VIH ๋ง์ง ๋ถ์กฑ์ผ๋ก ์ธํ ๊ฐํ์ ์ก์ ์คํจ๋ผ๋ ๋ ๋ฒ์งธ ๋ณ์๊ฐ ์ถ๊ฐ๋๋ค. ์ด ์ ์ฅ์๋ F446RE์ 3.3V ๋ค์ดํฐ๋ธ ํธ๋์๋ฒ์ธ SN65HVD230์ ์ฌ์ฉํ๋ค. ์์ธํ ํ๊ณ ๋ docs/lesson_learned.md์ "์ฌ์ ํํผ" ์น์
์ฐธ์กฐ.
F411RE ์ธก์ ๋ค๋ฅธ ์ด์ ๋ก ๋ค๋ฅด๋ค. F411RE์๋ bxCAN ํ๋ฆฌํผ๋ด ์์ฒด๊ฐ ์์ผ๋ฏ๋ก, TXD/RXD ์ง๊ฒฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. F411RE๋ SPI๋ฅผ ํตํด MCP2515๋ฅผ ์ ์ดํ๊ณ , MCP2515 ๋ชจ๋์ ๋ด์ฅ๋ TJA1050์ด CAN ๋ฒ์ค์ ์ฐ๊ฒฐ๋๋ค. SPI MISO ์ (5V โ 3.3V)์ F411RE์ 5V ๋ด์ฑ ํ(PB14)์ผ๋ก ์ฒ๋ฆฌํ๋ค.
์๋ ๊ณํ์ RPi5๋ฅผ MCP2515 + TJA1050 ๋ชจ๋๋ก SPI๋ฅผ ํตํด ๋ฒ์ค์ ์ฐ๊ฒฐํ๋ ๊ฒ์ด์๋ค. ๊ทธ๋ฌ๋ ๋ ๊ฐ์ง ํธํ์ฑ ๋ฌธ์ ๊ฐ ํ์ธ๋์๋ค:
- TJA1050 ํธ๋์๋ฒ๋ 5V ์ ์ฉ์ด๋ฉฐ, ๋ชจ๋ ๊ตฌ์กฐ์ MCP2515 ์ปจํธ๋กค๋ฌ๋ 5V๋ก ๊ณต๊ธ๋์ด์ผ ํ๋ค.
- ์ด ๊ฒฝ์ฐ MCP2515์ SPI ์ถ๋ ฅ์ด 5V ๋ก์ง ๋ ๋ฒจ์ด ๋์ด, RPi5์ 3.3V ์ ์ฉ GPIO์ ์ง๊ฒฐํ๋ฉด GPIO ์์ ์ํ์ด ๋ฐ์ํ๋ค (์ด์ ์ฌ๊ณ ๋ก RPi5 8GB 1๋ ์์ค โ
docs/lesson_learned.md์ฌ๊ณ 1 ์ฐธ์กฐ).
๊ฐ๋ฅํ ํด๊ฒฐ์ฑ ์ (1) RPi ์ ์ฉ CAN HAT (~25,000์, ๊ฐ์ฅ ์์ ), (2) ๋ก์ง ๋ ๋ฒจ ์ปจ๋ฒํฐ ์ถ๊ฐ, (3) 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 = ๋์ ์ฐ์ ์์ (CAN์ ์์ฐ์ ์ค์ฌ). ํํธ๋นํธ๋ ๋ชจ๋ ๊ฒ๋ณด๋ค ์ฐ์ ํ์ฌ, ๋ฒ์ค๊ฐ ํผ์กํด๋ ๋ ธ๋ ์์กด ์๊ฒฉ ์ธก์ ์ด ์ง์ฐ๋์ง ์๋๋ก ๋ณด์ฅํ๋ค.
์ ์ฒด ๋ฉ์์ง ์ฌ์ : 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 ํด๋๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋น๋ ๊ฐ๋ฅํ๋ค. Phase 2๊ฐ ๊ณ ์ฅ๋๋, Phase 1์ ์ฌ์ ํ ํ๋์ํ๊ณ ์คํํ ์ ์๋ค.
Phase 3 ์ดํ (RPi5 ํตํฉ) ๋๋ ํ ๋ฆฌ๋ ๋ณด๋ฅ ์ํ์ด๋ฉฐ, Phase 2 ์๋ฃ ํ ํธํ์ฑ ๊ฒฐ์ ๊ณผ ํจ๊ป ์ถ๊ฐ๋ ์์ ์ด๋ค.
| ๊ตฌ์ฑ ์์ | ๋ถํ | ์ญํ |
|---|---|---|
| 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 ๋ค์ดํฐ๋ธ ํธ๋์๋ฒ๋ค.
์ 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 TXD ์ ๋ ฅ์ VIH โ 2.1V. F411RE ์ถ๋ ฅ 3.3V๊ฐ ์ถฉ๋ถํ HIGH๋ก ์ธ์๋จ |
| MCP2515 โ F411RE (MISO) | 5V โ 3.3V MCU | PB14๋ STM32F411RE ๋ฐ์ดํฐ์ํธ Table 11์์ FT(Five-volt Tolerant) ํ์ผ๋ก ๋ถ๋ฅ. 5V ์ ํธ๋ฅผ ์ง์ ์์ ๊ฐ๋ฅ |
RPi5์ ๋ค๋ฅธ ์ด์ : RPi5 GPIO๋ 5V ๋ด์ฑ์ด ์๋ค. ๋์ผํ MCP2515 ๋ชจ๋(MISO 5V)์ RPi5์ ์ง๊ฒฐํ๋ฉด GPIO ์์ ์ํ์ด ์์ด Phase 3๋ฅผ ๋ณด๋ฅํ ์์ธ ์ค ํ๋๋ค โ lesson_learned.md ์ฌ์ ํํผ 1 ์ฐธ์กฐ.
์ด ์ ์ฅ์์์๋ ๋ฐฐํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. ๋ถ๋ชจ ํ๋ก์ ํธ์ ์ฌ๊ณ ๋ ๋ฐฐํฐ๋ฆฌ ๋ฐฐ์ ๊ณผ ๊ด๋ จ์ด ์์๋ค. ์ด ์ ์ฅ์๋ USB ์ ์๋ง ์ฌ์ฉํ๋ค.
Phase 3 ์ดํ (RPi5 ํตํฉ) โ MCP2515 + TJA1050 ๋ชจ๋์ RPi5์ ์ง๊ฒฐํ๋ฉด MISO 5V ์ถ๋ ฅ์ด 3.3V ์ ์ฉ GPIO๋ฅผ ์์์ํฌ ์ํ์ด ์๋ค. RPi5 ์ฐ๊ฒฐ ๋ฐฉ์์ Phase 2 ์๋ฃ ํ ๋ณ๋ ๊ฒฐ์ ํ๋ค.
์ ์ฒด BOM ๋ฐ ๋ฐฐ์ : docs/specs/hardware.md.
- STM32CubeIDE
- ํธ์คํธ PC์ UART ์๋ฆฌ์ผ ๋ชจ๋ํฐ (CubeIDE ๋ด์ฅ ๋๋ PuTTY/screen ๋ฑ)
# ๊ฐ ๋ณด๋์ phase0_alive ํ์จ์ด ํ๋์:
# - LED๊ฐ 1Hz๋ก ์ ๋ฉธ
# - UART๋ก "[F446RE] alive, t=12345ms"๋ฅผ 1์ด๋ง๋ค ์ถ๋ ฅ
# - F411RE๋ ๋์ผ ํจํด ("[F411RE] alive, t=...")
# ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๊ธฐ ์ ์ ๊ฐ ๋ณด๋์ 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
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)
๊ฒฝ๋ถ๋ํ๊ต


