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.