STM32 CAN-BUS Reader
Introduction
The PCB was designed using EasyEDA Pro. The core features are:
- STM32F302C6T6 MCU
- 4-layer board — Signal, GND, 3V3, Signal
- TCAN332DR CAN transceiver, compatible with ISO 11898
- Power and CAN RX/TX indicator LEDs
- Flashing over SWD with SWV ITM monitor support
- 4-pin automotive connector — CAN-H, CAN-L, 12V, GND
The MCU
The STM32F302C6T6 was chosen for its built-in CAN support, 3V3 logic, and familiarity with STM32CubeMX. The clock runs off a 16MHz crystal with 2x 10pF load capacitors for HSE stability. Decoupling uses 7 capacitors — two bulk decaps for VDDA and VDD, the rest 100nF on VDD pins. Flashing is done via a ST-Link V2 programmer using Trace-Asynchronous SWD, which also powers the board during development.
Power
12V feeds into an AP63203WU-7 PMIC which outputs a stable 3V3 rail, kept stable by 2x 22uF capacitors. The FB pin provides feedback regulation. All 3V3 devices are powered through PCB vias and individually decoupled with capacitors.
The CAN-BUS part
The STM32 can’t talk directly to a CAN network — it needs a transceiver. The TCAN332DR handles this, with RX/TX traces running from the STM32 CAN pins. Power comes from a 3V3 via, decoupled with a 100nF cap.
A jumper-selectable 120Ω termination resistor is included between CAN-L and CAN-H. If the device isn’t at the end of the bus, the jumper is simply removed.
CAN-BUS traces are matched in length to prevent signal reflections and ensure communication stability.
BOOT0 and reset
A miniature slide switch handles BOOT0 — center pin connects to BOOT0 through a 10kΩ resistor, with the other two positions going to 3V3 and GND. NRST uses a push-button with a 100nF cap for noise filtering and debounce.