Initial CAN Physical Layer spec
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
# CAN Physical Layer
|
||||
|
||||
## Purpose
|
||||
|
||||
This module defines the NeoECU V1 physical interface to the vehicle CAN FD
|
||||
network. It covers the MCU interface, transceiver, harness topology,
|
||||
termination, protection, grounding, layout, and required fault behaviour. It
|
||||
does not define CAN identifiers, payloads, or firmware scheduling.
|
||||
|
||||
CAN is a telemetry and auxiliary-communications interface. It is not part of
|
||||
the hardware engine-permit path: loss, overload, or bus-off of CAN shall never
|
||||
remove or assert engine permission.
|
||||
|
||||
This is a schematic-design basis, not a released schematic. Final connector
|
||||
part numbers, MCU pins, protection component values, and validated harness
|
||||
details remain to be confirmed.
|
||||
|
||||
## V1 network definition
|
||||
|
||||
| Item | V1 decision |
|
||||
| --- | --- |
|
||||
| Protocol | ISO 11898-2 high-speed CAN FD, with Classical CAN frames also supported |
|
||||
| Nominal/arbitration bit rate | 500 kbit/s |
|
||||
| CAN FD data-phase bit rate | 2 Mbit/s |
|
||||
| External buses implemented | One vehicle CAN bus |
|
||||
| Expected nodes | ECU plus one or two vehicle nodes; a debug tool may join through a service connector |
|
||||
| Harness extent | Approximately 2--2.5 m end-to-end |
|
||||
| ECU position | Mid-bus node, not a physical endpoint |
|
||||
| Harness | 120 ohm nominal twisted pair for `CAN_H` and `CAN_L` |
|
||||
| Shield | Not required initially; assess only if the final route must run near ignition or other demonstrated high-noise wiring |
|
||||
|
||||
All V1 nodes connected to this bus shall support CAN FD at the configured
|
||||
rates. A Classical-CAN-only node cannot join a CAN FD network that transmits
|
||||
FD frames.
|
||||
|
||||
## STM32H747 interface and ownership
|
||||
|
||||
The STM32H747 provides two independent CAN FD controllers, `FDCAN1` and
|
||||
`FDCAN2`, with shared message RAM. V1 implements only the one external vehicle
|
||||
bus on `FDCAN1`. `FDCAN2` remains available for a future separate network; it
|
||||
does not imply a second physical bus or a second transceiver in V1.
|
||||
|
||||
The Cortex-M4 is the intended owner of CAN telemetry and auxiliary
|
||||
communications. The Cortex-M7 retains deterministic engine control. Firmware
|
||||
shall define the inter-core message and fault-reporting boundary before either
|
||||
core accesses FDCAN resources; neither core may independently initialise or
|
||||
reconfigure a live controller.
|
||||
|
||||
`PA11` and `PA12` are reserved for the USB-C USB-FS D-/D+ path used by the
|
||||
STM32 system-memory DFU recovery route. They shall not be assigned to
|
||||
`FDCAN1_RX` or `FDCAN1_TX`. The final `FDCAN1` pin pair shall be selected as
|
||||
part of the complete STM32 package and pin allocation, preserving timer, ADC,
|
||||
debug, and required serial interfaces. Candidate pairs include `PB8/PB9` and
|
||||
`PD0/PD1` where available in the selected package.
|
||||
|
||||
The board shall retain accessible `BOOT0`, `NRST`, and SWD/J-Link provisions.
|
||||
USB DFU is a recovery path, not a replacement for normal SWD debugging.
|
||||
|
||||
## Transceiver and local interface
|
||||
|
||||
Use the automotive-qualified **TI TCAN1044AV-Q1** CAN FD transceiver family.
|
||||
Select the exact package and orderable suffix at PCB-layout and procurement
|
||||
time; the electrical requirements in this module apply to the selected member.
|
||||
|
||||
| Transceiver connection | Required implementation |
|
||||
| --- | --- |
|
||||
| `VCC` | Supply from the protected 5 V logic rail, with the local decoupling specified by the selected-device datasheet. |
|
||||
| `VIO` | Supply from `+3V3_MAIN` so `TXD`, `RXD`, and mode logic interface directly to STM32 GPIO. |
|
||||
| `TXD` / `RXD` | Connect to the selected `FDCAN1_TX` / `FDCAN1_RX` GPIO alternate functions. The ECU shall drive recessive when it is not intentionally transmitting. |
|
||||
| `STB` | Connect to an MCU GPIO and pull externally high to `+3V3_MAIN`. The transceiver therefore defaults to standby while the MCU is reset, booting, or unpowered; firmware drives it low only after it is healthy and has configured FDCAN. |
|
||||
| CAN wake capability | Retain the `STB`/`RXD` hardware capability, but V1 has no requirement for an incoming CAN frame to wake a sleeping ECU. |
|
||||
| `CANH` / `CANL` | Route only through the defined protection/EMC network to the vehicle-I/O/CAN connector. |
|
||||
|
||||
The TCAN1044AV-Q1 uses the 5 V rail for its bus driver and `VIO` for its 3.3 V
|
||||
logic interface. Its high-impedance unpowered behaviour is required so an
|
||||
unpowered ECU does not load a live vehicle bus. Galvanic isolation is not part
|
||||
of V1: all vehicle nodes require a defined common circuit reference.
|
||||
|
||||
## Topology, termination, and service access
|
||||
|
||||
The vehicle wiring shall be one continuous linear trunk, with a physical bus
|
||||
endpoint at the rear and another at the front:
|
||||
|
||||

|
||||
|
||||
[Editable diagram](../diagrams/can-topology.drawio) · [PNG preview](../diagrams/can-topology.png)
|
||||
|
||||
The two segments shown above are trunk segments, not long stubs. The ECU
|
||||
transceiver joins the trunk locally on the PCB. Do not make the ECU a 0.5--1 m
|
||||
branch from a separate harness junction.
|
||||
|
||||
Fit one 120 ohm, 1 %, normally-open termination option across the ECU `CAN_H`
|
||||
and `CAN_L` pins, controlled by a clearly labelled solder jumper. It is
|
||||
populated only when the ECU is a physical endpoint. The two actual endpoints
|
||||
of the installed bus each require one 120 ohm terminator; the intended
|
||||
effective resistance measured across a de-energised, correctly terminated bus
|
||||
is approximately 60 ohm.
|
||||
|
||||
The debug/service connector joins the same bus and shall expose `CAN_H`,
|
||||
`CAN_L`, and `CAN_0V`. It shall not fit termination. Keep the on-board service
|
||||
branch very short and avoid a permanently attached, long unterminated service
|
||||
cable. A connected debug tool counts as a CAN node and must support the V1
|
||||
CAN FD rates.
|
||||
|
||||
## Harness reference and shielding
|
||||
|
||||
`CAN_H` and `CAN_L` shall be one dedicated twisted pair. A shared vehicle
|
||||
circuit return must provide a controlled common-mode reference between every
|
||||
node. Expose this return as `CAN_0V` at the ECU and service connectors. It may
|
||||
be the defined low-current vehicle power-return conductor where that conductor
|
||||
is continuous and sized for the connected nodes; it shall not be an
|
||||
ignition/injector/starter current-return path.
|
||||
|
||||
`CAN_0V` is an electrical reference, not a termination conductor and not a
|
||||
cable screen. No shield is required by the V1 2--2.5 m harness definition.
|
||||
Route the twisted pair away from ignition-primary/high-voltage wiring,
|
||||
injector switching loops, and high-current power pairs. If a long parallel
|
||||
route next to one of those sources becomes unavoidable, reassess the shield
|
||||
and common-mode filtering from measured EMC results rather than treating a
|
||||
screen as a substitute for a twisted pair or a reference conductor.
|
||||
|
||||
## Connector protection and EMC provisions
|
||||
|
||||
Place a dual-channel, automotive-qualified, low-capacitance CAN/CAN-FD TVS
|
||||
device directly behind the vehicle-I/O/CAN connector. It protects `CAN_H` and
|
||||
`CAN_L` against connector ESD and assigned cable transients before they reach
|
||||
the transceiver. The final part shall be selected after the connector,
|
||||
enclosure, and transient environment are known. A suitable class of candidate
|
||||
is Nexperia `PESD2CANFD24L-U`; its final standoff, dynamic-clamp, capacitance,
|
||||
temperature, and qualification figures shall be checked against the completed
|
||||
system rather than inferred from the part label.
|
||||
|
||||
The primary TVS return shall have a short, low-inductance path to the defined
|
||||
connector-side `CAN_0V`/vehicle-reference return. It shall not dump cable
|
||||
transient current through the `+3V3_MAIN` or analogue-ground paths. The final
|
||||
PCB stack-up, connector shell, enclosure, and any frame bond must establish
|
||||
the actual high-frequency return path before this routing is frozen.
|
||||
|
||||
Provide an assembly-selectable common-mode-choke option between the
|
||||
connector-side protection network and the transceiver. The default V1
|
||||
population is a direct/bypassed path, because the selected transceiver has
|
||||
strong EMC performance and an unnecessary choke can reduce signal margin.
|
||||
The PCB shall support a choke or its defined bypass arrangement without
|
||||
changing the differential-pair geometry. Fit and select a choke only if
|
||||
hardware EMC testing demonstrates a need.
|
||||
|
||||
Do not add arbitrary series resistance, split termination, or bus capacitance
|
||||
without a timing and EMC reason. Any such option must be evaluated against the
|
||||
500 kbit/s / 2 Mbit/s bit timing and the final cable capacitance.
|
||||
|
||||
## Layout requirements
|
||||
|
||||
1. Place the connector-side TVS at the connector entry and keep its return
|
||||
loop short and wide.
|
||||
2. Route `CAN_H` and `CAN_L` as a symmetric differential pair through the
|
||||
protection/EMC network to the transceiver. Avoid stubs, unmatched component
|
||||
placements, and large asymmetry between the two paths.
|
||||
3. Place the transceiver's 5 V and 3.3 V decoupling capacitors immediately at
|
||||
their respective supply pins, using the datasheet-recommended values and
|
||||
return paths.
|
||||
4. Keep the transceiver and MCU-side logic traces clear of ignition,
|
||||
injector, switching-regulator, and high-current return loops.
|
||||
5. Keep the termination jumper and resistor close to the local bus interface;
|
||||
label the assembly state and endpoint condition on the schematic and PCB.
|
||||
|
||||
## Fault behaviour and validation
|
||||
|
||||
Firmware shall report CAN controller error state, error-passive state,
|
||||
bus-off, and transceiver standby state to diagnostics. Bus-off recovery and
|
||||
retry timing shall be deliberate and rate-limited; it must not cause a reset
|
||||
storm or repeatedly disturb the other MCU core. A lost CAN network is a
|
||||
telemetry/auxiliary-service failure, not an engine-permit event.
|
||||
|
||||
Before schematic freeze, validate the completed interface with the intended
|
||||
CAN FD configuration and installed harness:
|
||||
|
||||
1. Confirm `CAN_H`, `CAN_L`, and `CAN_0V` connector pins, endpoint locations,
|
||||
cable type, and real end-to-end length.
|
||||
2. Confirm the selected STM32H747 package and `FDCAN1` pin pair without
|
||||
conflicting with USB FS DFU, timers, ADC, debug, or required serial I/O.
|
||||
3. Select and validate the final TVS against the connector ESD and transient
|
||||
environment, including its clamp at the transceiver pins and its return
|
||||
path.
|
||||
4. Verify normal communication, ECU reset/boot standby behaviour, an
|
||||
unpowered ECU on a live bus, debug-tool connection, and correct 60 ohm
|
||||
termination measurement.
|
||||
5. Test error handling and controlled bus-off recovery with a missing
|
||||
endpoint, open/shorted bus wires, and a deliberately disturbed node.
|
||||
6. Test CAN operation and emissions/immunity with ignition and injector
|
||||
switching active. Populate and evaluate the common-mode choke only if the
|
||||
baseline routing/protection does not meet the assigned EMC target.
|
||||
Reference in New Issue
Block a user