From f97a2c6a6c2266f23d35c8ea258654debd7e444d Mon Sep 17 00:00:00 2001 From: Hector van der Aa Date: Fri, 11 Sep 2026 19:24:15 +0200 Subject: [PATCH] Initial CAN Physical Layer spec --- Architecture/IO_ARCHITECTURE.md | 9 +- Architecture/IO_MODULES/CAN_PHYSICAL_LAYER.md | 191 ++++++++++++++++++ Architecture/README.md | 6 +- Architecture/diagrams/README.md | 9 +- .../diagrams/can-topology.connections.json | 132 ++++++++++++ Architecture/diagrams/can-topology.drawio | 53 +++++ Architecture/diagrams/can-topology.png | Bin 0 -> 69712 bytes Architecture/diagrams/can-topology.svg | 2 + 8 files changed, 394 insertions(+), 8 deletions(-) create mode 100644 Architecture/IO_MODULES/CAN_PHYSICAL_LAYER.md create mode 100644 Architecture/diagrams/can-topology.connections.json create mode 100644 Architecture/diagrams/can-topology.drawio create mode 100644 Architecture/diagrams/can-topology.png create mode 100644 Architecture/diagrams/can-topology.svg diff --git a/Architecture/IO_ARCHITECTURE.md b/Architecture/IO_ARCHITECTURE.md index 4b5c08c..5bc691f 100644 --- a/Architecture/IO_ARCHITECTURE.md +++ b/Architecture/IO_ARCHITECTURE.md @@ -31,8 +31,9 @@ temperature and pressure sensors, and an external starter switch. | Analogue outputs | Reserve 2 MCU/output paths | Future 0-5 V output capability; not a V1 requirement | The provisional generic digital I/O counts are planning values, not a frozen -connector or pin budget. CAN and its physical layer are intentionally outside -the scope of this document. +connector or pin budget. CAN is defined separately in +[CAN_PHYSICAL_LAYER.md](IO_MODULES/CAN_PHYSICAL_LAYER.md); its final connector +pin allocation remains part of the overall STM32 and harness pin budget. ## Power-Domain Rules @@ -259,4 +260,6 @@ included unless a future peripheral explicitly requires it. components for generic digital inputs. 5. Select the STM32H747 package and complete a pin assignment that preserves all timer, ADC, optional DAC, debug, and communications resources. -6. Define CAN and other communications interfaces separately. +6. Complete the CAN connector and STM32 pin allocation defined in + [CAN_PHYSICAL_LAYER.md](IO_MODULES/CAN_PHYSICAL_LAYER.md), alongside any + other required communications interfaces. diff --git a/Architecture/IO_MODULES/CAN_PHYSICAL_LAYER.md b/Architecture/IO_MODULES/CAN_PHYSICAL_LAYER.md new file mode 100644 index 0000000..dedca38 --- /dev/null +++ b/Architecture/IO_MODULES/CAN_PHYSICAL_LAYER.md @@ -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: + +![Vehicle CAN FD trunk with two terminated endpoints, a mid-bus ECU, and a short unterminated service connection](../diagrams/can-topology.svg) + +[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. diff --git a/Architecture/README.md b/Architecture/README.md index b001418..2bcb14f 100644 --- a/Architecture/README.md +++ b/Architecture/README.md @@ -125,7 +125,7 @@ Initial intended I/O categories are: | Analogue inputs | Air temperature, coolant/water temperature, pressure sensors, and expansion inputs | | Engine outputs | One injector and one ignition-coil primary channel | | Auxiliary outputs | Starter-enable logic output to an external high-current MOSFET or IGBT switch | -| Communications | CAN bus with selectable termination | +| Communications | One CAN FD vehicle bus with selectable ECU termination; see [CAN_PHYSICAL_LAYER.md](IO_MODULES/CAN_PHYSICAL_LAYER.md) | The starter-enable output only commands an external high-current switch. The ECU does not carry the starter's approximately 40 A current. @@ -141,7 +141,9 @@ selection are finalised: 3. Required quantity and exact types of spare analogue and digital I/O. 4. ECU enclosure, board-size, mounting, environmental, and connector requirements. -5. CAN connector and bus topology. +5. CAN connector family/pin assignment, final cable construction, and + endpoint locations; the V1 CAN FD physical-layer basis is defined in + [CAN_PHYSICAL_LAYER.md](IO_MODULES/CAN_PHYSICAL_LAYER.md). 6. Detailed trigger sensor wiring, connector, and cable-length information. ## Diagram sources diff --git a/Architecture/diagrams/README.md b/Architecture/diagrams/README.md index eae5047..602b73f 100644 --- a/Architecture/diagrams/README.md +++ b/Architecture/diagrams/README.md @@ -1,6 +1,6 @@ # Architecture diagram sources -The architecture Markdown embeds these 22 SVG figures. Matching PNG previews +The architecture Markdown embeds these 23 SVG figures. Matching PNG previews are provided for viewers that do not support SVG. Diagrams describe the working architecture; component qualification and schematic-release requirements remain in the parent documents. @@ -11,6 +11,7 @@ in the parent documents. | --- | --- | | Power | [Sources](power-sources.svg), [protected branches](power-branches.svg) | | Analogue acquisition | [Passive input](analog-input.svg), [thermistor](thermistor.svg), [ratiometric acquisition](ratiometric.svg) | +| Vehicle CAN FD | [Trunk, termination and service access](can-topology.svg) | | Timing inputs | [Crank/cam interface](trigger-input.svg) | | Deadman | [Contacts and diagnostics](deadman-inputs.svg), [permit gates](deadman-permit.svg), [output gates](deadman-outputs.svg) | | Ignition | [Power](ignition-power.svg), [commands](ignition-command.svg), [current flag](ignition-flag.svg), [grounding](ignition-ground.svg) | @@ -20,8 +21,10 @@ in the parent documents. ## Editing and regeneration -- The 12 block figures have editable `.drawio` sources. Open them in draw.io. - `build_blocks.py` recreates their baseline layout and `block-connections.json`. +- The 13 block figures have editable `.drawio` sources. Open them in draw.io. + `build_blocks.py` recreates the original 12 block layouts and `block-connections.json`. + The CAN topology is maintained directly in `can-topology.drawio`, with its + own `can-topology.connections.json` manifest; the builder does not overwrite it. Running it overwrites manual layout edits, so update the generator when those edits should be reproducible, or export the edited `.drawio` directly. - The 10 circuit/logic figures are generated by `build_circuits.py`, with a diff --git a/Architecture/diagrams/can-topology.connections.json b/Architecture/diagrams/can-topology.connections.json new file mode 100644 index 0000000..47d4d1e --- /dev/null +++ b/Architecture/diagrams/can-topology.connections.json @@ -0,0 +1,132 @@ +{ + "title": "Vehicle CAN FD topology", + "source": "IO_MODULES/CAN_PHYSICAL_LAYER.md: Topology, termination, and service access", + "nodes": { + "title": { + "label": "Vehicle CAN FD \u00b7 continuous linear trunk", + "bounds": [ + 30, + 20, + 1100, + 45 + ] + }, + "subtitle": { + "label": "500 kbit/s arbitration \u00b7 2 Mbit/s data phase \u00b7 approximately 2\u20132.5 m end-to-end", + "bounds": [ + 30, + 75, + 1100, + 40 + ] + }, + "rear": { + "label": "Rear endpoint\n120 \u03a9 across CAN_H / CAN_L", + "bounds": [ + 30, + 170, + 290, + 105 + ] + }, + "ecu": { + "label": "ECU \u00b7 local PCB junction\nMid-bus connection", + "bounds": [ + 440, + 170, + 280, + 105 + ] + }, + "front": { + "label": "Front endpoint\n120 \u03a9 across CAN_H / CAN_L", + "bounds": [ + 840, + 170, + 290, + 105 + ] + }, + "distance1": { + "label": "0.5\u20131 m", + "bounds": [ + 320, + 130, + 120, + 40 + ] + }, + "distance2": { + "label": "1\u20131.5 m", + "bounds": [ + 720, + 130, + 120, + 40 + ] + }, + "ecu_note": { + "label": "ECU transceiver joins locally on PCB.\nOptional ECU 120 \u03a9 termination: OPEN in V1;\nenable only if the ECU becomes an endpoint.", + "bounds": [ + 340, + 305, + 710, + 90 + ] + }, + "service": { + "label": "Debug / service connector\nCAN_H \u00b7 CAN_L \u00b7 CAN_0V\nVery short PCB branch\nNo termination", + "bounds": [ + 440, + 480, + 350, + 110 + ] + }, + "busport": { + "label": "Same local ECU bus", + "bounds": [ + 60, + 490, + 270, + 80 + ] + }, + "foot": { + "label": "Lines above represent the CAN_H / CAN_L twisted pair, not individual conductors.\nAll nodes also share the defined CAN_0V reference. Avoid a long attached service cable.", + "bounds": [ + 30, + 625, + 1100, + 55 + ] + } + }, + "connections": [ + { + "from": "rear", + "to": "ecu", + "label": "" + }, + { + "from": "ecu", + "to": "front", + "label": "" + }, + { + "from": "busport", + "to": "service", + "label": "" + } + ], + "continuations": { + "busport": "ecu" + }, + "bus_model": "Each trunk line represents the differential CAN_H/CAN_L pair. CAN_0V is a separate shared reference.", + "termination": { + "rear": "120 ohm across CAN_H/CAN_L", + "front": "120 ohm across CAN_H/CAN_L", + "ecu": "120 ohm option, solder jumper normally open; endpoint use only", + "service": "none" + } +} diff --git a/Architecture/diagrams/can-topology.drawio b/Architecture/diagrams/can-topology.drawio new file mode 100644 index 0000000..56f628a --- /dev/null +++ b/Architecture/diagrams/can-topology.drawio @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Architecture/diagrams/can-topology.png b/Architecture/diagrams/can-topology.png new file mode 100644 index 0000000000000000000000000000000000000000..70faa71c2a2e8461fe28b1c7fdf480fd7e7d2c7c GIT binary patch literal 69712 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 LD_J7`-uFKM&2SKb literal 0 HcmV?d00001 diff --git a/Architecture/diagrams/can-topology.svg b/Architecture/diagrams/can-topology.svg new file mode 100644 index 0000000..c1048b2 --- /dev/null +++ b/Architecture/diagrams/can-topology.svg @@ -0,0 +1,2 @@ + +Vehicle CAN FD · continuous linear trunk500 kbit/s arbitration · 2 Mbit/s data phase · approximately 2–2.5 m end-to-endRear endpoint120 Ω across CAN_H / CAN_LECU · local PCB junctionMid-bus connectionFront endpoint120 Ω across CAN_H / CAN_L0.5–1 m1–1.5 mECU transceiver joins locally on PCB.Optional ECU 120 Ω termination: OPEN in V1;enable only if the ECU becomes an endpoint.Debug / service connectorCAN_H · CAN_L · CAN_0VVery short PCB branchNo terminationSame local ECU busLines above represent the CAN_H / CAN_L twisted pair, not individual conductors.All nodes also share the defined CAN_0V reference. Avoid a long attached service cable. \ No newline at end of file