Circuit review & bench-test guide
AXA-010 — CAN bus node PMOD module
Document purpose#
This document explains the axa-010-can PMOD module at component level and turns the design evidence into a practical manual-review and bench-test plan. It is based on the generated schematic (generate_design.py, rev 0.1-schematic), the module README, and the actuator-line family rules in ../README.md.
This board is an unfabricated prototype design. Status on record: schematic generated, ERC clean (0/0), netlist reviewed; PCB layout has not started, no board has been built, and there is no bench evidence of any kind. Every voltage, resistance, current, and timing value below is a design target derived from the schematic and the MCP2542WFD datasheet — a prediction to verify on the first article, not proof that an assembled board works or is safe.
1. What the board does#
The board is a CAN FD bus physical-layer node with deliberately no CAN controller silicon. A Microchip MCP2542WFD transceiver converts a single-ended TXD/RXD pair from the PMOD host into the differential CANH/CANL bus signals and back. Bit stuffing, CRC-15, arbitration, ACK slots, and error frames are all implemented in FPGA fabric (the can_ctrl core) — that is the L4 lesson of catalog entry #10.
The WFD variant was chosen for its VIO pin: the logic interface (TXD, RXD, STBY) runs at the PMOD's 3.3 V while the transceiver core (VDD) runs from an external 5 V screw terminal, per the actuator-line rule that load/bus power never flows through the PMOD connector. Split termination (two 60.4 Ω halves plus a 4.7 nF common-mode capacitor) sits behind two solder jumpers, bridged by default, so the module can be either a terminating end node or an unterminated stub node.
The module moves nothing itself. But it is a command channel for boards that do — see Section 2.
Functional block diagram#
PMOD host (FPGA, 3.3 V logic) external 5 V supply
| |
v v
J1 PMOD plug J2 screw terminal
1 STBY ── R2 10k pull-down ──┐ V5_CAN (4.5–5.5 V)
2 TXD ────────────────────────┤ │ ├─ C2 100 nF
3 RXD ◄── R1 100R ── CAN_RXD ─┤ │ └─ C4 10 µF
6/12 3V3 ── C3 100 nF ────────┤ │
5/11 GND ─────────────────────┤ │
v v
┌──────────────────────────────────┐
│ U1 MCP2542WFD (DFN-8) │
│ VIO = 3V3 VDD = V5_CAN │
│ TXD/RXD/STBY CANH / CANL │
└───────┬──────────────┬───────────┘
CANH CANL
│ │
JP1 (bridged) JP2 (bridged)
│ │
CANH_T CANL_T
└─ R3 60.4R ─┬─ R4 60.4R ─┘
TSPLIT
│
C1 4.7 nF
│
GND
│ │
v v
J3 bus terminal: 1 CANH, 2 CANL, 3 GND
2. Safety and scope boundaries (actuator-line rules, adapted)#
This is a communications board, not a motor driver: no motor current flows through it and it has no power stage of its own. That does not make it safety-neutral. A CAN bus carries start, stop, speed, and position commands to actuator nodes. A wiring fault, a wrong termination, a stuck-dominant transceiver, or a misframed message from an immature fabric controller can start an actuator on another node — or prevent the frame that stops it. Treat the bus as part of the machine.
- Verify bus behavior with NO actuator power applied anywhere first. Bring up the CAN link — termination, dominant/recessive levels, two-node frame exchange — with every motor/servo/solenoid rail on every connected node unpowered or disconnected. Only energize actuator rails after the bus is demonstrably correct.
- Current-limited first power. First energization of V5_CAN uses a bench supply set to 5.0 V with the current limit at roughly 100 mA. Normal-mode recessive draw is a few mA; dominant transmission peaks near 70 mA worst-case, so 100 mA passes normal operation but catches a solder short.
- Never rewire the bus while any node is driving an actuator. Hot- plugging CANH/CANL can glitch the bus into dominant states and corrupt or fabricate frames. Stop all motion, then change wiring.
- Family rail sequencing on every connected node: logic before actuator rails. On this module that means PMOD 3.3 V (VIO) and the J2 5 V (VDD) come up before any actuator rail anywhere on the bus, and actuator rails go down first. Note the MCP2542WFD has POR on both VDD and VIO and holds CANH/CANL high-impedance until both are valid, and it will not enter Normal mode until TXD is high — so either supply order is safe for the transceiver; the rule exists for the actuators it commands.
- Grounds join at the module (family rule). J2 pin 2 and J3 pin 3 tie to PMOD GND on the board. On the bench, the bus GND reference at J3 must be common with every other node's transceiver ground; the MCP2542WFD receiver tolerates roughly −12 V to +12 V common mode, but do not rely on that margin — run the J3 GND wire alongside the pair.
- An FPGA
can_ctrlcore under development can hold TXD dominant indefinitely by mistake. The transceiver's TXD permanent-dominant timeout (0.8–5 ms) releases the bus, but other nodes will have seen error frames. Never debug a half-working controller on a bus that also carries live actuator traffic. - A working two-node frame exchange is not ISO 11898 conformance, EMC, or automotive qualification. This is a teaching prototype.
3. Power and control behavior#
- With nothing connected, U1 is unpowered; CANH and CANL are specified to disconnect from the bus (high impedance), so an unpowered module does not load a live bus.
- PMOD attach supplies 3.3 V to VIO (and the module's logic nets). J2 supplies 4.5–5.5 V to VDD. Both PORs must clear; the device then waits for TXD high before entering Normal mode, which prevents it from driving the bus while the host FPGA is still configuring.
- R2 (10 kΩ) pulls STBY to GND, overriding the chip's internal MOS pull-up to VIO (typically 1.1 MΩ at 3.3 V), so the default state is Normal mode. STBY high = Standby: transmitter off, high-speed receiver off, only the low-power wake receiver active, bus biased to ground.
- In Normal mode the bus idles Recessive: both CANH and CANL biased to VDD/2 (about 2.5 V), differential about 0 V. Driving TXD low produces Dominant: CANH rises toward 3.5 V typical, CANL falls toward 1.5 V typical, differential 2.0 V typical into a 60 Ω load.
- RXD mirrors the bus (high = Recessive, low = Dominant), is driven at VIO levels, and reaches the PMOD through R1 (100 Ω series protection).
- JP1/JP2 bridged (default) place R3 + R4 = 120.8 Ω differential termination across the bus at this node, with C1 grounding the midpoint for common-mode filtering. Cutting both jumpers makes a stub node.
Why split termination behind jumpers#
A CAN bus is terminated only at its two physical ends. A module that is sometimes an end node and sometimes a mid-bus stub needs selectable termination; solder jumpers make the choice deliberate and visible. The split (two 60.4 Ω halves with the midpoint AC-grounded through 4.7 nF) gives the same 120 Ω differential load as a single resistor while shunting common-mode noise at the bias midpoint. Cutting only one jumper is a defect state: it leaves a dangling 60.4 Ω + 4.7 nF single-ended load on one line, unbalancing the pair — always cut or bridge both.
4. Interfaces#
| Reference | Pins/signals | Intended use |
|---|---|---|
| J1 | PMOD 12-pin: 1 STBY, 2 TXD, 3 RXD, 5/11 GND, 6/12 3V3, rest NC | FPGA host; TXD and STBY host-driven, RXD module-driven |
| J2 | 1 V5_CAN, 2 GND | Transceiver core supply, 4.5–5.5 V, screw terminal |
| J3 | 1 CANH, 2 CANL, 3 GND | Bus connection; GND is the common-mode reference wire |
| JP1 / JP2 | solder jumpers, bridged default | Termination enable, CANH leg / CANL leg |
No test points are defined in rev 0.1. For layout (not started), TSPLIT, CAN_RXD, STBY, and V5_CAN deserve probe access; until then, probe at J3, J1, and component pads.
5. Component-by-component review#
5.1 Transceiver and connectors#
| Ref. | Part / datasheet summary | Function and why needed | If absent/open | If shorted, wrong, or misassembled |
|---|---|---|---|---|
| U1 | Microchip MCP2542WFD-E/MF, CAN FD transceiver, DFN-8 3x3 mm, VDD 4.5–5.5 V, VIO 1.7–5.5 V, up to 8 Mbps, WUP wake, TXD/bus permanent-dominant protection, thermal shutdown 175 C nominal | The entire physical layer: TXD/RXD to differential CANH/CANL, level-split via VIO | No board function | Wrong variant matters: MCP2544 parts have no VIO pin (pin 5 is NC, logic referenced to 5 V VDD) and would drive RXD at 5 V into the FPGA; the non-W FD variant wakes on any activity instead of WUP; rotated DFN or unsoldered exposed pad (VSS) breaks grounding and thermal path |
| J1 | PMOD 12-pin plug | Host logic interface and 3.3 V/GND; pin map: 1 STBY, 2 TXD, 3 RXD, 5/11 GND, 6/12 3V3 | No host connection | Swapped TXD/RXD is the classic failure — both nodes listen, nobody transmits; STBY miswired to 3V3 forces permanent standby |
| J2 | Phoenix MKDS 1,5/2 screw terminal (MPN listed TBD in schematic) | VDD supply input, 4.5–5.5 V; its GND joins PMOD GND on the module | VDD absent: transceiver stays unpowered/high-impedance, RXD never toggles | Reversed polarity applies −5 V to VDD — the datasheet gives no reverse rating, treat as destructive; >5.5 V exceeds the operating range (absolute max must be checked against the datasheet before any overvoltage test) |
| J3 | Phoenix MKDS 1,5/3 screw terminal (MPN listed TBD) | Bus attach: CANH, CANL, GND reference | No bus | CANH/CANL swap inverts the differential pair — a two-node link where both are swapped works, one swapped node sees garbage; CANH-CANL hard short is survivable by the driver (short-circuit current limited to about 115 mA max, thermal shutdown) but kills communication |
5.2 Termination network#
| Ref. | Value / part | Purpose | What is lost if omitted | Important failure/review point |
|---|---|---|---|---|
| JP1 | solder jumper, bridged default | Connects CANH to the termination string | Node becomes half-terminated (defect) or, with JP2 also cut, a proper stub | Cut/bridge state must match JP2; excluded from BOM/POS (in_bom=False) so assembly docs must state the default explicitly |
| JP2 | solder jumper, bridged default | Connects CANL to the termination string | Same as JP1, mirrored | Same as JP1 |
| R3 | 60.4 Ω 1 %, 0603 (Yageo RC0603FR-0760R4L) | CANH half of the split termination | With R4, differential termination lost: reflections, edge ringing, possible error frames at speed | Wrong value changes bus loading; a 0603 across a CAN bus survives normal levels but is not rated for automotive bus faults (short to battery) — acceptable for a bench teaching module, note the boundary |
| R4 | 60.4 Ω 1 %, 0603 (Yageo RC0603FR-0760R4L) | CANL half of the split termination | Same as R3 | Same as R3; both halves must match (1 %) or the midpoint shifts and common-mode rejection degrades |
| C1 | 4.7 nF 50 V X7R, 0603 (Murata GRM188R71H472KA01D) | AC-grounds the split midpoint (TSPLIT) to filter common-mode noise | Termination still works differentially; common-mode filtering lost | Short grounds TSPLIT hard: each bus line sees 60.4 Ω to GND, dragging the recessive bias — bus may stop working entirely; this failure is invisible to a DMM differential check, see Section 9.C |
5.3 Logic-side support#
| Ref. | Value / part | Purpose | What is lost if omitted | Important failure/review point |
|---|---|---|---|---|
| R1 | 100 Ω, 0603 (Yageo RC0603FR-07100RL) | Series protection on transceiver-driven RXD into the PMOD (line rule) | Direct pin-to-pin connection: contention current during hot-plug or a misconfigured FPGA output on pin 3 is unlimited | Open: RXD never reaches the host — looks exactly like a dead transceiver; verify R1 before condemning U1 |
| R2 | 10 kΩ, 0603 (Yageo RC0603FR-0710KL) | STBY pull-down: normal mode by default; overrides U1's internal ~1.1 MΩ pull-up to VIO (STBY high = standby) | STBY floats to the internal pull-up: the node silently powers up in Standby — transmitter dead, bus biased to ground, RXD stuck high until a WUP | Short to GND is benign (host can still not enter standby); wrong pull up instead of down inverts the default to standby — this exact polarity trap is called out in the schematic notes |
| C2 | 100 nF 16 V X7R, 0603 (Murata GRM188R71C104KA01D) | VDD high-frequency decoupling at U1 | Dominant-edge current spikes (tens of mA in under 100 ns) ring the 5 V rail | Must sit within a few mm of U1 pin 3 in layout (layout not started — carry this as a layout requirement) |
| C3 | 100 nF 16 V X7R, 0603 (Murata GRM188R71C104KA01D) | VIO decoupling | VIO POR (threshold about 1.2 V typ) could chatter on a noisy 3.3 V rail, resetting the logic interface | Same placement requirement as C2 |
| C4 | 10 µF 25 V X5R, 0805 (Murata GRM21BR61E106KA73L) | VDD bulk reservoir for dominant bursts over long J2 supply leads | Long screw-terminal leads plus 55 mA typical dominant draw sag VDD; sag below VUVL (3.6–4.0 V) forces the bus recessive mid-frame | Short kills V5_CAN; wrong (too small) value shows up as errors only during long dominant sequences |
| #FLG01–03 | power flags (3V3, GND, V5_CAN) | Schematic ERC artifacts only | Not physical parts; nothing to assemble | Confirm they did not leak into the BOM |
6. Datasheet summary and design interpretation#
All numbers below were read from the Microchip datasheet DS20005514C (MCP2542FD/4FD, MCP2542WFD/4WFD, 2016–2020): MCP2542FD-MCP2542WFD-4WFD-Data-Sheet-DS20005514C.pdf, product page microchip.com/en-us/product/mcp2542wfd. The generator script references the same document at ww1.microchip.com/downloads/en/DeviceDoc/MCP2542FD-4FD-2542WFD-4WFD-Data-Sheet-DS20005514C.pdf. Check the latest revision before procurement. Conditions for the table: VDD = 4.5–5.5 V, VIO = 1.7–5.5 V, RL = 60 Ω unless stated.
| Datasheet fact (DS20005514C) | Value | Board-specific interpretation |
|---|---|---|
| VDD operating range | 4.5–5.5 V | J2 input spec; a "5 V" wall adapter sagging under load can cross VUVL (3.6–4.0 V) and silently force recessive |
| VIO operating range | 1.7–5.5 V | PMOD 3.3 V is comfortably inside; RXD swings to VIO, no level shifting needed |
| Supply current, Normal | 2.5 mA typ / 5 mA max recessive; 55 mA typ / 70 mA max dominant | Sets the 100 mA first-power current limit and the C4 sizing rationale |
| Supply current, Standby | 4 µA typ / 16 µA max (MCP2542WFD, includes IIO) | The STBY verification in Section 9.F is a three-orders-of-magnitude current step — easy to measure |
| Recessive bus voltage VO(R) | 2.0–3.0 V, typ 0.5 VDD, both lines | Scope expectation: both lines near 2.5 V at VDD = 5 V |
| Dominant CANH VO(D) | 2.75–4.50 V, typ 3.50 V | Scope expectation for Section 9.D |
| Dominant CANL VO(D) | 0.50–2.25 V, typ 1.50 V | Scope expectation for Section 9.D |
| Dominant differential VO(DIFF)(D) | 1.5–3.0 V (RL = 50–65 Ω), typ 2.0 V | The pass window for the differential measurement; with only this one node terminated (120 Ω, above the 50–65 Ω test condition) expect the wider 1.5–5.0 V characterization window |
| Recessive differential VO(DIFF)(R) | −500 to +50 mV normal; ±200 mV standby | Anything persistently outside this at idle means a stuck driver or damaged termination |
| Receiver thresholds | Recessive below 0.5 V, Dominant above 0.9 V differential (normal mode); 0.4/1.1 V in standby | Explains why a marginal, under-terminated bus can read at one node and not another |
| Standby bus bias VO(S) | −0.1 to +0.1 V, both lines | In Standby the bus is biased to ground, not VDD/2 — a scope showing 0 V on both lines may mean standby, not a dead part |
| STBY polarity and pull | High = Standby; internal MOS pull-up to VIO, typ 1.1 MΩ at 3.3 V | Confirms the README claim and why R2 is a pull-down; the internal pull-up sources at most 30 µA, dropping under 0.3 V across R2 — safely below VIL = 0.3 VIO |
| Standby behavior | Transmitter and high-speed receiver off; low-power receiver + wake filter active; RXD high until wake; TXD has no effect on the bus | Basis of the Section 9.F test: TXD activity must NOT appear on the bus in standby |
| Wake-up (WFD = WUP) | Dominant/recessive/dominant pattern, each phase at least tFILTER (0.5–3.6 µs), complete within tWAKE(TO) (1–5 ms); RXD falls on wake; standby-to-normal after STBY release: 7–30 µs | A single dominant pulse will NOT wake a WFD (unlike the non-W MCP2542FD); host must still drop STBY to resume transmission |
| Data rate | CAN FD up to 8 Mbps; loop delay max 120 ns | Fabric bit timing budget; 8 Mbps figures are characterized, not ISO-tested |
| TXD permanent dominant timeout tPDT | 0.8–5 ms, typ 1.9 ms | A stuck-low TXD from a buggy fabric core releases the bus within ~5 ms; tPDTR: a recessive pulse as short as 5 ns resets the timer, so a slow-clock blinking bug can still hog the bus |
| TXD internal pull-up | nominal 33 kΩ to VIO | An unconfigured FPGA (pins Hi-Z) leaves TXD recessive — safe default |
| Bus fault tolerance | CANH/CANL survive −24 V to +24 V continuous; short-circuit current limited to 115 mA max; thermal shutdown 165–185 C | Miswiring the bus terminal to the 5 V or a battery rail should not destroy U1 — but the 0603 termination resistors have no such rating |
| Unpowered behavior | CANH/CANL disconnect (high impedance); POR on both VDD and VIO; Normal mode entered only after TXD high | An unpowered module is a passive stub (plus its termination resistors if JP1/JP2 are bridged — those stay connected regardless of power; cut them before hanging an unpowered module on a live bus) |
| ESD on CANH/CANL | ±13 kV IEC 61000-4-2, ±8 kV HBM | Generous for a bench module; not a license to skip handling precautions on the DFN logic pins (±4 kV HBM) |
Values not confirmed in this review and to be checked directly against the datasheet before stress testing: absolute-maximum VDD/VIO ratings and any reverse-supply rating (the extraction above did not capture the supply-pin absolute-max lines; do not assume). The MPNs for J2/J3 are still "TBD" in the schematic and must be resolved before a BOM is released.
7. Expected values before bench testing#
All values assume VDD = 5.0 V, VIO = 3.3 V, 25 C, and this node terminated (JP1/JP2 bridged) unless stated.
| Quantity | Design target / datasheet range | What to measure |
|---|---|---|
| CANH–CANL resistance, unpowered, this node only | about 120.8 Ω (R3 + R4) | DMM across J3.1–J3.2, jumpers bridged |
| Same, jumpers both cut | high (>10 kΩ; transceiver RDIFF is 12–100 kΩ) | DMM across J3.1–J3.2 |
| Same, two terminated nodes connected | about 60 Ω | DMM across the bus, all nodes unpowered |
| V5_CAN idle (recessive) supply current | about 2.5 mA typ, under 5 mA | Bench supply readout or series DMM |
| V5_CAN current, heavy dominant traffic | up to 55 mA typ / 70 mA max | Bench supply readout |
| Standby total VDD current | 4 µA typ / 16 µA max | Series µA-range DMM, bus idle |
| CANH and CANL, recessive, normal mode | each 2.0–3.0 V, typ about 2.5 V | Scope/DMM at J3 vs J3.3 GND |
| CANH dominant | 2.75–4.50 V, typ 3.5 V | Scope at J3.1 during TX |
| CANL dominant | 0.50–2.25 V, typ 1.5 V | Scope at J3.2 during TX |
| Differential, dominant | 1.5–3.0 V typ 2.0 V (50–65 Ω); up to 3.3 V at 40–75 Ω | Math channel or differential probe |
| Differential, recessive | −500 to +50 mV | Same |
| CANH and CANL, standby | −0.1 to +0.1 V (ground-biased) | Scope at J3 with STBY high |
| RXD at J1.3 | VIO-level; high recessive, low dominant | Scope on PMOD pin 3 |
| STBY node voltage, host idle | under 0.3 V (internal pull-up through R2) | DMM at R2 |
| Loop delay TXD-to-RXD through the bus | up to 120 ns plus wiring | Two-channel scope, J1.2 vs J1.3 |
| TXD stuck-dominant release | bus goes recessive within 0.8–5 ms | Scope, force TXD low continuously |
8. Manual schematic and assembly review checklist#
Items 1–3 apply now (schematic stage); the rest on the first article.
- Confirm the ordered part is MCP2542WFD-E/MF exactly: the MCP2544 variants have no VIO pin and the non-W variant has different wake behavior. The schematic uses the DFN (xMF) footprint; the catalog sketch named the SOIC /SN — the substitution is documented in the README, but the purchase order must match the footprint.
- Resolve the TBD MPNs on J2 and J3 before BOM release.
- Layout requirements to carry forward (layout not started): C2/C3 within a few mm of U1; exposed pad stitched to GND per the datasheet recommendation; CANH/CANL short and symmetric (README already requires this); TSPLIT probe access.
- On the assembled board: verify U1 pin-1 orientation on the DFN and inspect the exposed-pad solder (X-ray or side-view wetting check where available).
- Verify JP1 and JP2 are in the same state, and that the state matches the node's position on the bus (end = bridged, stub = both cut).
- Measure R1, R2, R3, R4 in circuit before first power; R3 + R4 should read about 120.8 Ω across J3.1–J3.2 with jumpers bridged.
- Confirm no continuity between V5_CAN and 3V3 (the two supplies meet only inside U1 and must never be shorted to each other).
- Buzz the PMOD pin map against the table in Section 4 — especially that pin 2 (TXD) goes to U1 TXD and pin 3 (RXD) comes from R1, not the reverse.
9. Ordered bench-test procedure#
Stop at the first abnormal result. Record board serial, host identity, supply and instrument IDs, ambient, and operator with every capture.
Two bench contexts are covered. Context A (PMOD host): the module plugs into the AruviX ECP5 (or any PMOD host); 3.3 V and grounding come from the host, J2 still needs its own 5 V. Context B (standalone): a bench 3.3 V supply feeds J1 pins 6/12 (3V3) and 5/11 (GND), a signal generator or GPIO adapter drives TXD/STBY, and a USB-CAN adapter is the second node. In both contexts every ground — PMOD GND, J2 GND, J3 GND, the second node's transceiver ground, and the scope reference — must be one common net. A USB-CAN adapter grounds its bus side through the PC and its USB shield; verify with a DMM that its CAN GND really is common with the module's GND before connecting CANH/CANL, and connect the J3 GND wire between nodes, not just the pair.
A. Unpowered inspection and resistance tests#
- Complete checklist items 4–8 above.
- Measure J3.1–J3.2 (CANH–CANL): about 120.8 Ω with jumpers bridged.
- Measure CANH-to-GND and CANL-to-GND: each should read high (through the split, DC path to GND is blocked by C1; expect >100 kΩ after C1 charges, in both meter polarities). A reading near 60 Ω here means C1 is shorted — see Section 5.2.
- Measure V5_CAN-to-GND and 3V3-to-GND resistance in both polarities; investigate any hard short. Confirm no continuity V5_CAN to 3V3.
B. First power, no bus#
- Context A: attach the PMOD host but leave the FPGA unconfigured (pins Hi-Z; U1's internal 33 kΩ TXD pull-up keeps the bus recessive). Context B: apply bench 3.3 V, current-limited to 100 mA, TXD input left open.
- Apply 5.0 V to J2, current-limited to 100 mA. Expect a few mA.
- Verify recessive idle: CANH and CANL both near 2.5 V, differential within −500 to +50 mV, RXD (J1.3) high at 3.3 V, STBY node under 0.3 V.
- Abnormal here: both lines near 0 V suggests standby (check STBY and R2) or a VDD/VIO POR problem; a large differential suggests a stuck driver.
C. Termination verification (board-specific)#
- Unpowered, one node: J3.1–J3.2 reads about 120 Ω (done in step A.2).
- Connect the second node (USB-CAN adapter with its terminator enabled, or a second module with jumpers bridged), all power off: the same measurement now reads about 60 Ω. If it still reads 120 Ω, the second node is unterminated; if about 40 Ω, there are three terminators on the bus.
- C1 check under power: with the bus idle, TSPLIT (junction of R3/R4) should sit near the 2.5 V recessive bias. Near 0 V with correct line voltages is impossible; lines dragged low with TSPLIT at 0 V means C1 is shorted.
- Reflection demonstration (optional, needs several meters of cable to be visible): transmit at 500 kbit/s or above over 5–10 m of twisted pair and capture a dominant-to-recessive edge with both end terminators in place; then remove the far terminator and capture again. Expect visibly slower, stepped, or ringing recessive edges — the recessive state is only driven by the termination, so it degrades first. On a short bench loop the difference may not be demonstrable; say so in the record rather than forcing a conclusion.
D. Single-node transmit and the ACK trap (board-specific)#
- One powered node only, terminated, no second node. Drive TXD from the host with a slow square wave (for example 10 kHz) — raw bit-banging, no CAN framing needed.
- Scope CANH (ch1), CANL (ch2), and the math difference. Expect per Section 7: recessive both about 2.5 V / diff about 0 V; dominant CANH about 3.5 V, CANL about 1.5 V, diff 1.5–3.0 V. Verify RXD echoes TXD with under about 120 ns plus wiring delay.
- Hold TXD low continuously: the bus must go recessive again within 0.8–5 ms (tPDT). This proves the stuck-controller protection.
- The classic bring-up trap: once real CAN frames are transmitted, a single node on the bus will never see an ACK — CAN requires some other node to drive the ACK slot dominant. A lone
can_ctrlcore will report ACK errors, retransmit endlessly, and eventually go error-passive. This is correct protocol behavior, not a board fault. Do not debug the transceiver for it; add the second node first.
E. Two-node frame exchange (smoke test)#
- Connect the second node (USB-CAN adapter in Context B, or a second AXA-010 on a second PMOD/host). Confirm 60 Ω across the bus unpowered, common ground verified, no actuator power anywhere on the bus.
- Power both nodes. Send a single frame from the adapter at 500 kbit/s (classic CAN first; CAN FD and higher rates only after classic works).
- Verify on the scope that the module's RXD reproduces the frame, and that during the ACK slot the module's controller (once implemented) drives one dominant bit — visible as a dominant bit the adapter did not send. Until
can_ctrlexists, the adapter alone will show its own ACK-error/retransmit behavior, mirroring step D.4. - Transmit from the module; verify the adapter receives the intended ID and payload and that the frame is ACKed (no retransmission storm).
- Only after sustained, error-free exchange in both directions may this bus be connected to nodes with actuator rails, and then per Section 2.
F. STBY and wake verification (board-specific)#
- Bus idle, two nodes powered. Measure V5_CAN current: a few mA (normal).
- Drive STBY (J1.1) high. Expect: VDD current drops to the microamp range (4 µA typ / 16 µA max total); CANH and CANL fall from about 2.5 V to ground bias (within ±0.1 V); RXD stays high.
- Drive TXD while in standby: nothing may appear on the bus — the transmitter is off. Any bus activity here means STBY is not actually reaching U1 (check J1.1 wiring and R2).
- Wake test: have the second node transmit a frame. A normal frame contains dominant/recessive/dominant phases satisfying the WUP filter (each phase at least 0.5–3.6 µs — at 500 kbit/s a 2 µs bit qualifies marginally; use 125–250 kbit/s for a robust wake stimulus). RXD must fall on wake. Note: the transceiver does not resume transmitting by itself; the host must release STBY (normal mode within 7–30 µs).
- Release STBY and confirm current and bus bias return to normal.
G. Not covered on this bench#
ISO 11898-2 conformance, EMC (a common-mode choke is suggested by the datasheet above 1 Mbps and is not on this board), bus faults to battery voltages, 8 Mbps CAN FD signal integrity, and temperature range all require a controlled lab plan and are out of scope for first bring-up.
10. Troubleshooting map#
| Symptom | First measurements | Likely areas |
|---|---|---|
| RXD never toggles, bus looks alive at J3 | R1 continuity, J1.3 wiring, VIO at U1 | R1 open, PMOD pin map, VIO/C3 |
| Both bus lines stuck near 0 V | STBY node voltage, VDD and VIO at U1 pins | Standby entered (R2/STBY wiring), VDD below UVLO, unpowered U1 |
| Both lines near 2.5 V but no dominant on TXD low | TXD at U1 pin, VDD current during attempt | TXD wiring/pin-map swap, U1 in standby, permanent-dominant timer already tripped (check TXD idle level) |
| Bus reads 120 Ω with two nodes attached | Second node's terminator | Far-end termination missing or its jumpers cut |
| Bus reads about 40 Ω | Count terminators | Three terminated nodes; cut JP1/JP2 on the mid-bus one |
| Lines dragged low, TSPLIT at 0 V | TSPLIT voltage, C1 | C1 shorted |
| Works at 125 kbit/s, errors at 1 Mbit/s+ | Edge shapes at both ends, stub lengths | Termination placement, unterminated stubs, missing common ground, cable quality |
| Single node reports TX errors and retransmits forever | Frame on scope, ACK slot | Normal: nothing is ACKing (Section 9.D.4) — add the second node |
| One node receives garbage, other is fine | CANH/CANL polarity at each J3 | Swapped H/L on one node |
| Standby current is milliamps, not microamps | STBY level at U1 pin 8, bus idle state | STBY not actually high at the pin; bus traffic keeping the wake receiver busy is normal only in µA range — mA means normal mode |
| Frames corrupt only when a motor runs elsewhere | Ground offset between nodes, common ground wire | Missing J3 GND interconnect, ground loop through USB adapter |
11. Bench record template#
| Field | Record |
|---|---|
| Board revision / serial | |
| U1 marking and orderable suffix verified | |
| JP1/JP2 state and intended bus position | |
| J2/J3 connector MPNs as built | |
| Bench context (A: PMOD host ID / B: standalone supply + adapter ID) | |
| Ground-commoning check result | |
| Unpowered resistance results (A.2–A.4) | |
| First-power currents (recessive / dominant / standby) | |
| Recessive and dominant levels: CANH, CANL, differential | |
| Termination readings: one node / two nodes | |
| Loop delay measurement | |
| tPDT stuck-dominant release observed | |
| Two-node exchange result and bit rate | |
| STBY/wake test result | |
| Deviations, scope capture file paths | |
| Reviewer / date / disposition |
12. Review conclusion#
The design is small and coherent: one transceiver, correctly split supplies (VDD from a dedicated screw terminal, VIO from the PMOD 3.3 V), a deliberately defaulted STBY pull-down whose polarity was checked against the datasheet, jumpered split termination, and the family's series-protection and grounding rules applied. The datasheet review supports every claim made in the schematic notes, including the STBY polarity and the WUP wake behavior specific to the W variant.
The principal open risks are: no layout exists, and the decoupling placement, H/L symmetry, and exposed-pad grounding requirements live only in this document and the README until it does; two connector MPNs are TBD; the absolute-maximum supply ratings were not confirmed in this review and must be read from the datasheet before any overvoltage or reverse test; the 0603 termination resistors are not rated for automotive-style bus faults; and the module's real purpose — hosting a fabric CAN controller — cannot be exercised until the can_ctrl core exists, at which point the single-node-ACK trap and the stuck-dominant timeout in Section 9 become the first things its testbench and bring-up plan must reproduce. Above all: this board commands boards that move. The no-actuator-power-first rule in Section 2 is the one line in this document that must never be skipped.