Read product documentation, quick starts, and protocol references online.
Overview
ETHERCAT TO CAN / CAN FD GATEWAY
ECAN-Lite Product Overview V3.0 Connect CAN Devices to EtherCAT
ECAN-Lite is an industrial EtherCAT-to-CAN/CAN FD gateway.
It appears as a standard EtherCAT slave to the master and connects to
multiple CAN buses on the device side, bringing servos, sensors, actuators,
and test equipment into one real-time control network.
Standard EtherCAT Slave4-Channel CAN / CAN FDDynamic PDOCoE ConfigurationFoE UpdateIgH demo sample packageDocument Version V3.0
Many field devices still use CAN or CAN FD while control systems are
converging on EtherCAT. ECAN-Lite bridges the two networks:
EtherCAT Master
PLC / Linux master Periodic PDO control
→
ECAN-Lite
PDO packet conversion SDO configuration and maintenance
→
CAN Devices
Servo / I/O / sensor CANopen or vendor protocol
The master exchanges standard EtherCAT PDO data. ECAN-Lite converts that
data into CAN frames and returns received CAN traffic through EtherCAT.
How Data Flows
Transmit Direction
Master Writes PDO
Periodic task updates RxPDO
Gateway Parses
Identifies channel, frame ID, and payload
CAN Transmission
Sends the frame on the selected channel
Device Responds
Servo, I/O, or sensor performs the command
Receive Direction
CAN Reception
Collects field data from multiple channels
Unified Packing
Places frames into the TxPDO data area
Master Reads
Periodic task receives the latest data
Diagnostics
Uses status, version, and error counters
Core Capabilities
Multi-Channel CAN Expansion
One device connects multiple CAN/CAN FD buses, making bus grouping clearer and control-cabinet wiring simpler.
Dynamic PDO Capacity
PDO capacity scales with the application, from lightweight systems to multi-device workloads.
Cyclic Data Exchange
CAN frames follow the EtherCAT cycle for control, acquisition, and automated testing.
Field Maintenance
SDO configuration, version queries, and FoE updates reduce disassembly and direct programming.
Complete Master Examples
The IgH package covers scanning, PDO exchange, cyclic testing, FoE updates, and CiA402 reference control.
Faster Troubleshooting
Status words, error counters, version queries, and diagnostic paths simplify field debugging.
Quick Specifications
EtherCAT Interface
Two 100 Mbps EtherCAT ports with CoE parameter configuration and FoE firmware updates.
Four MCAN Channels
Each channel supports CAN 2.0A/B and ISO CAN FD with payloads up to 64 bytes.
Scalable PDO Capacity
PDO size uses 128-byte base blocks, with 16-byte fine adjustment on firmware 2.x. The stable SM profile uses 128-byte RxPDO and 256-byte TxPDO, DC uses 384 bytes in each direction, and the per-direction maximum is 1392 bytes.
Real-Time Transmission
Supports immediate and scheduled transmission, including RxPDO full64 scheduling relative to the SYNC0 phase.
High-Speed CAN FD
TDC is enabled by default and required for data rates of 5 Mbit/s and above.
Persistent Configuration
Key parameters are stored in a CRC32-protected Flash image to reduce reconfiguration after power loss.
Category
Summary
Main control platform
HPMicro HPM5E00 series RISC-V MCU, CPU 400MHz, mchtmr 24MHz
EtherCAT
2-port 100Mbps, supports CoE/FoE
CAN / CAN FD
4-channel MCAN, supports CAN 2.0A/B and CAN FD ISO, maximum 64B data field
PDO capability
Stable SM uses 128B RxPDO and 256B TxPDO; DC uses 384B in each direction; base blocks are capped at 10 and firmware 2.x adds 16B fine sizing, up to 1392B/direction
PDO encapsulation
Default V1 header is 24B on 5E and 32B on 6E with payload CRC disabled; firmware 2.x can explicitly enable compact V2 at 16B/20B and CRC remains opt-in; CAN packets carry control, ID, optional timestamp, and data
Real-time features
Direct transmission, delta16/delta32/full64 timestamp encoding, and SYNC0 phase scheduling
The current Linux/IgH delivery is converged to two modes:
Mode
Synchronization
Default PDO
Intended use
sm_250us_1ms (default)
250us SM subcycles with four-phase rotation
128B RxPDO and 256B TxPDO
One fixed phase for each of MCAN0..3 and a 1ms per-channel control period
dc_1ms_cross_cycle
DC Sync0, 1ms cycle, 900us shift
384B in each direction
Command in cycle N and collect the reply in N+1 for a 1kHz loop
The examples apply the period, PDO size, phase, and send strategy as one profile, so users do not need to reconstruct the parameter combination. Actual latency still depends on the host, kernel, NIC, CAN bit rate, bus load, and motor response time; validate the complete deployment as described in the technical manual.
In-Robot Communication and Debugging
Robot systems often include joint drives, end-effectors, torque sensors,
grippers, I/O modules, and safety components. These devices may be distributed
across several CAN buses and may use CANopen or vendor-specific protocols.
ECAN-Lite acts as a real-time conversion layer between the robot controller and
the internal CAN network, aggregating distributed CAN traffic into EtherCAT.
Robot Controller
EtherCAT cyclic task Motion control and status acquisition
→
ECAN-Lite
Multi-channel CAN aggregation Cyclic packing and forwarding
→
Internal CAN Network
Joint / gripper / sensor End-effector and expansion module
Centralized Internal-Bus Access
Group CAN/CAN FD channels by joints, end-effectors, sensors, or test interfaces while exposing one EtherCAT slave to the master.
Control and Diagnostics on One Link
The EtherCAT link carries control frames, status frames, error reports, and diagnostic data, reducing extra debug cabling.
Prototype Bring-Up
Observe CAN frames, node states, versions, and error counters to isolate joint, harness, and protocol issues.
Production and Maintenance
Master-side scripts support scanning, configuration, communication checks, and FoE updates for batch testing and field maintenance.
Example: A quadruped controller runs Linux and the IgH EtherCAT master.
Cyclic EtherCAT traffic reaches ECAN-Lite, which connects joint motors, foot
sensors, and power-management modules over multiple CAN/CAN FD channels.
Control software keeps the EtherCAT cyclic model while reusing established
CAN motors and sensors.
Quadruped Example
Linux Master
Runs IgH Schedules control tasks
EtherCAT
Cyclic PDO Low-latency backbone
ECAN-Lite
EtherCAT to CAN Multi-channel forwarding
CAN Devices
Joint drives Sensors and expansion modules
Which applications are suitable?
Application scenarios
Changes brought by ECAN-Lite
CANopen servo access to EtherCAT
Use EtherCAT periodic tasks to centrally control multiple CANopen nodes
In-robot communication
Bring CAN traffic from joints, end-effectors, sensors, and expansion modules into the robot controller
Quadruped/mobile robot control
Run IgH on a Linux master and convert EtherCAT to CAN for joint-motor control
Robot prototype debugging
Observe CAN frames, node states, error counters, and versions through one master link
Multi-channel CAN data collection
Aggregate distributed CAN buses into one master
Production-line testing
Use scripts for batch configuration, communication checks, verification, and updates
Legacy CAN equipment migration
Retain existing device protocols and reduce system migration cost
Control cabinet interface expansion
Reduce the number of host CAN interfaces to make the system structure clearer
Why is it easier to integrate?
Simple Master Integration
Configure PDO, SDO, and FoE through standard EtherCAT mechanisms without designing a separate communication framework.
Flexible Device Side
Connect CANopen devices or carry existing vendor-specific CAN protocols.
Clear Data Path
The master writes RxPDO to transmit CAN and reads TxPDO to receive CAN, making direction and troubleshooting straightforward.
From Validation to Production
Use the same mechanism for engineering validation, production-line testing, and field deployment.
Delivery Features
IgH Master Demo
Buildable Linux/IgH examples help validate single-axis, multi-axis, and cyclic communication.
Matched update package
Each release provides an FoE package matched to the device model and factory configuration. Verify the product model, firmware version, and release notes before updating; packages for different device configurations must not be mixed.
FoE OTA Example
The master can update firmware through FoE for field maintenance, version rollback, and batch upgrades.
Clear Configuration Documentation
The technical manual documents PDO encoding, SDO configuration, the public object dictionary, and common troubleshooting steps.
Release File Boundaries
File
Includes
Does Not Include / Not For
ECAN-Lite-<version>-igh-demo.zip
Linux/IgH master-side source, build files, and examples
It is not slave firmware and cannot be programmed into the device
ECAN-DEMO-firmware-<release-id>.zip
Versioned direct-programming BIN and its JSON; includes EtherCAT/CoE, dynamic PDO, and CAN/CAN FD gateway functions
The BIN has no second-stage bootloader, FoE update header, or field-update capability and is not an FoE package
ECAN-Lite-firmware-<release-id>.zip
Raw, FoE, and signed/encrypted FoE-sec BINs plus one aggregate JSON
Select the variant for the device; FoE-sec is only for ECAN-Lite-S with matching factory security configuration
ECAN-Lite.xml
EtherCAT ESI device description, PDO definitions, and object configuration
No executable code or firmware
The <release-id> in ecan_demo_app_raw_<release-id>.bin inside
ECAN-DEMO-firmware-<release-id>.zip matches the delivery package and makes
the image traceable to its source revision. The image retains the public
CoE object dictionary, including 0xF000:00, 0xF000:05, and 0xF000:06,
but is intended only for direct programming with a programmer/debugger or in a
production-test flow.
Typical workflow
1
Scan the Slave
Confirm that ECAN-Lite is online and read its version.
2
Configure Capabilities
Set PDO size, CAN bit rate, and channel mode.
3
Write RxPDO
Place outgoing CAN frames in cyclic process data.
4
Read TxPDO
Receive frames returned from the CAN bus.
5
Maintain and Update
Update through FoE and confirm the new version.
Pre-integration checklist
Match product and version
Use the device model, ESI, firmware package, and master examples from one compatible release.
Document the topology
Record the dedicated EtherCAT interface, slave order, and wiring for every MCAN channel.
Match the PDO map
Keep SM2/SM3 lengths, assignments, and the application PDO profile exactly aligned.
Verify CAN parameters
Confirm arbitration/data rates, CAN FD, BRS, termination, and the node protocol.
Start from a stable profile
Bring up the default SM profile first; validate the DC profile before using a 1 kHz loop.
Keep acceptance evidence
Record WKC, slave state, error counters, CAN-frame integrity, and long-run results.
Application Manual
ECAN-Lite Application Manual V3.0
For first connection, master configuration, CAN/CAN FD transfer, cycle selection, IgH integration, upgrade, and field troubleshooting.
For the complete object dictionary, bit definitions, wire formats, and capabilities, see
ECAN-Lite Technical Reference V3.0.
Find by task
[TOC]
1. Start here
You do not need to learn the full protocol before using the module. Complete one verifiable frame first, then add capacity, channels, CRC, DC, or diagnostics only when the project needs them.
Figure 1. Recommended path: build a minimal closed loop before adding features.
1.1 Choose a baseline
New project — recommendedV2 with CRC off: shorter header and simpler bring-up.
Maintain a legacy projectKeep V1 with CRC off so deployed parsing does not change.
High-integrity linkEnable CRC explicitly after the baseline is stable.
Item
Recommended for new projects
Why
PDO protocol
V2
16-byte header on a 4-channel device
CRC
Off
Lowest processing cost; payload_crc16=0
PDO size
256 bytes each direction
Simple and sufficient for common loads
Channels
CAN0 only at first
Smallest troubleshooting scope
CAN FD
1M + 5M, BRS, 8-byte data
Baseline used throughout this manual
Cycle
Start with SM; use DC for deterministic systems
Validate data flow before timing optimization
!!! important "Capability is not the active default"
Firmware 2.x means that V2 is supported; it does not automatically select V2. For legacy-master compatibility, the factory/reset baseline may still be V1 with CRC off (0x04). A new master should read capabilities, then explicitly select V2 with CRC off (0x24).
1.2 The five things that must be configured
Order
Configure
Minimum action
Pass condition
1
PDO mapping and capacity
Use the released ESI; keep 256 bytes
SM2/SM3 equal the master domain sizes
2
PDO protocol
0x8010/0x8011:07=0x24
Both Apply Status values are 0
3
Channel scope
:04=0x01
Only CAN0 is allowed
4
CAN bit timing
Write 1M + 5M, then Apply
0x8001:02=0
5
Cyclic image
Build V2 header and CAN_FRAME
Stable WKC and a correct CAN frame
!!! note "Direction names"
EtherCAT directions are named from the master. RxPDO goes from the master to ECAN-Lite and is transmitted on CAN. TxPDO returns from ECAN-Lite to the master and originates on CAN.
1.3 Preflight
The released ESI matches the product and the slave reaches PREOP.
CAN_H, CAN_L, ground, and termination are correct; the peer supports CAN FD ISO and BRS.
Configuration SDOs are written in PREOP/SAFEOP and every Apply Status is checked.
First bring-up uses one slave, one channel, and one fixed test frame.
In OP, observe WKC, a CAN analyzer, and module status together.
2. Send the first frame in ten minutes
This reproducible baseline uses slave 0, CAN0, V2, CRC off, standard ID 0x123, CAN FD+BRS, DLC 8, and data 11 22 33 44 55 66 77 88.
2.1 Follow the data
Figure 2. Write RxPDO to transmit CAN; read TxPDO to receive CAN.
0x8001:02 must return 0. The minimal path keeps Normal mode, CAN FD ISO, TDC enabled, and automatic timing. Configure exact sample points only when the peer requires them.
2.5 Build the V2 first frame
On a 4-channel device, V2 uses a 16-byte header followed by CAN_FRAME records. The first 28 bytes are shown below; fill the remainder of the PDO with zero.
!!! warning "Advance the sequence"
For each new PDO image, seq_begin and seq_end must be equal and advance together. Unequal values mark an update in progress; an unchanged completed image is idempotent and is not transmitted again.
2.6 Prove that it worked
The slave is OP and domain WKC remains stable.
A CAN analyzer sees ID 0x123, FD, BRS, DLC 8, and exact payload.
After the peer returns a frame, TxPDO payload and frame count change.
0x8001:02, 0x8010:02, and 0x8011:02 remain 0.
Run at least ten minutes before adding channels or load.
In 0x24, bit 0 is reserved and must remain zero; firmware rejects 0x25. Confirm application completion through the CAN peer response, and diagnose local congestion or bus errors through PDO channel status and SDO diagnostics.
3. Add only what the project needs
Change one class of parameters at a time. Read Apply Status and save the active configuration after each change.
3.1 Add channels
Device family
CAN channels
V2 header
Recommended progression
HPM5E family
4
16 bytes
CAN0 → CAN0/1 → CAN0..3
HPM6E family
8
20 bytes
Validate four channels, then expand to eight
Channel-mask bits 0..7 correspond to MCAN0..7. Change 0x8010/0x8011:04, then Apply. The CH field in each frame still chooses the output; a mask is not a broadcast command.
3.2 Set exact sample points
For nominal 1M at 76.5% and data 5M at 88.2%, disable automatic timing and set each minimum and maximum to the same value:
An Apply Status of 0x04 is a failure, not a configured value of four. Typical causes are an unrealizable integer timing solution, wrong write order, Message RAM conflicts, or values that do not apply to the current MCU.
3.3 Adjust PDO size
V2-capable firmware encodes coarse and fine size in an existing 8-bit selector, so no new SDO or SSC regeneration is needed:
!!! important "Three sizes must match"
ESI PDO/SM size, registered master-domain size, and firmware Active PDO bytes must be identical. Check 0xF000:16 bit7 before using fine sizing. A legacy IgH master that writes only the low five bits still gets the original 128-byte multiples.
The total process image for multiple slaves must also fit the actual Ethernet/EtherCAT frame budget. Validate the generated frame length, WKC, and cycle jitter rather than summing nominal slave maxima.
3.4 Choose V1, V2, and CRC
Figure 3. V2 lowers fixed overhead; V1 remains available for deployed masters.
Combination
OptionFlags
Use
V1, CRC off
0x04
legacy master and compatibility fallback
V1, CRC on
0x00
legacy protocol with payload CRC
V2, CRC off
0x24
recommended new-project baseline
V2, CRC on
0x20
V2 with payload CRC
With CRC off, incoming payload CRC is not checked and the reported value is 0. When CRC is enabled, both ends must use the same algorithm and coverage. EtherCAT FCS, CAN CRC, and PDO payload CRC are separate mechanisms.
3.5 Profiles, budgets, and results
Requirement
Adjust
Rule
Variable DLC, least overhead
profile 0
recommended default
Fixed records or timing information
corresponding profile
both ends use the same codec
Frames per cycle
RX/TX budget
estimate from wire time, then measure
Confirm transmission and completion
CAN peer response plus PDO/SDO diagnostics
bit0 is reserved; no per-frame result packet
Four-byte alignment
ALIGN4
padding changes capacity
Keep latest on overload
drop-oldest
suitable for feedback, not command queues
Always write fields, write Apply last, read Apply Status, read active values, then enter OP. Do not Apply repeatedly from the real-time loop.
4. Select cycle mode and load
4.1 Select by goal
Mode
Best fit
Direction behavior
Key setting
SM 250 µs
high-rate two-way exchange
SM2 and SM3 in the cycle frame
run every 250 µs without missed calls
DC 1 ms / Sync0 900 µs
deterministic multi-slave system
logical read/write separation
1 ms cycle, 900 µs phase, collect in a later cycle
DC 800 µs receive cycle
throughput baseline
time-separated transfer
measure stable round trips per millisecond
Figure 4. SM exchanges both directions each subcycle; DC assigns a deterministic processing window.
4.2 Measure after estimating
CAN FD frame time includes arbitration, control, stuffing, CRC, ACK, and intermission. Do not calculate it as 8 bytes ÷ 5 Mbit/s. Two frames per channel in each 250 µs subcycle means eight frames per channel per millisecond, plus MCAN service, PDO parsing and packing, PDI access, multi-slave frame length, master jitter, peer latency, and retries.
Dimension
Minimum test matrix
Slaves
one; slaves 1+2; all three
Channels
1, 2, and 4 simultaneously
PDO
actual 128/256/272/384/400-byte combinations
Protocol
V2/no-CRC primary; V1/no-CRC and CRC-on regressions
Load
rated; 120% overload; return to rated
Duration
10-minute smoke; 1-hour stability; field target
Evidence
WKC, counts, loss, order, duplicates, bus-off, recovery time
4.3 Overload may drop frames but must recover
A passing overload test proves that the configured drop policy is visible, queues do not become permanently blocked, bus-off is recoverable, rated throughput returns within the limit, CAN overload does not leave EtherCAT WKC abnormal, and repeated overload/recovery runs behave consistently.
5. Integrate with IgH
5.1 Keep protocol details behind APIs
Layer
Responsibility
Typical API
Capability
firmware and feature discovery
capability decode
Configuration
protocol, size, channel, CAN timing
igh_mcan_port_select_pdo_protocol()
Codec
V1/V2 header, sequence, layout, CRC
codec API
Cycle
domain receive/process/queue/send
demo cycle API
Application
CAN ID, flags, payload
frame enqueue/dequeue
!!! important "Do not hand-code two layouts"
One application may support V1 and V2, but a single codec should build the active format. Read capabilities and use the protocol-selection API; a version string beginning with 2 is not sufficient by itself.
receive → domain_process → read TxPDO → build/write RxPDO
→ domain_queue → sync clocks if DC → send
Do not perform SDO Apply, dynamic allocation, heavy logging, or blocking waits in the real-time loop.
5.3 SM, DC, and test peers
Use absolute-time scheduling for the 250 µs SM loop and monitor application latency, WKC, and missed cycles. In DC mode, update application time every cycle, synchronize reference/slave clocks at a fixed cadence, and keep the 1 ms period aligned with the 900 µs Sync0 phase.
First bring-up: one slave, SM, V2/no-CRC, CAN0.
Throughput: slaves 1+2 self-loop, then add slave 0 and UCAN.
Final system: validate the actual PDO combination and host load.
Use the project Rust UCAN driver as the default test peer; SocketCAN is not the reference baseline.
5.4 Coexistence and records
When CiA402 and ECAN-Lite share a loop, record each domain WKC separately, prevent CAN logging or replies from blocking the motion state machine, keep layouts fixed in OP, and test combined frame length, CPU use, and worst-case execution time.
Record firmware/build/capabilities, ESI and SM sizes, demo parameters, CPU affinity, scheduler, NIC/master version, peer-driver version, duration, and complete statistics for every reproducible run.
6. Troubleshoot, upgrade, and maintain
6.1 Separate fault layers first
Figure 5. Separate WKC, configuration status, and CAN content before changing parameters.
Compare master domain, SM2/SM3, and Active PDO bytes.
Reproduce with one slave, 256-byte PDO, and a slower cycle.
Confirm every receive/process/queue/send step runs each cycle.
Add slaves, target period, and load one at a time.
Investigate CAN loss only after WKC is stable.
Preparing the next image from the previous cycle does not eliminate ESC/PDI ownership, access-window, application-cycle, or worst-case execution constraints.
6.4 FoE upgrade
Record old firmware, product, and configuration; use a packaged application image matching the bootloader and MCU family.
Stop the cyclic application and enter the allowed upgrade state.
Upgrade each slave separately and save complete logs.
Power-cycle and read version, build, and capabilities.
Run a V1/no-CRC compatibility smoke test, then explicitly enable V2/no-CRC.
duration, loss/duplicates/order, maximum recovery time
Reproduction
demo commit, config, commands, logs, captures
Appendix A: Minimal quick card
A.1 Recommended new-project path
text
capability passes → 0x8010/0x8011:04 = 0x01
→ 0x8010/0x8011:07 = 0x24
→ Apply each; status must be 0
→ CAN0 = 1M + 5M; Apply status must be 0
→ write V2 first frame; advance both sequence fields
A.2 Legacy fallback
text
V1 + CRC off: OptionFlags = 0x04
Keep the legacy PDO size and codec
Do not auto-select V2 merely because firmware is 2.x
Search the Technical Reference global object index for complete subindices, types, ranges, error codes, and capability bits.
Appendix C: Compatibility matrix
Device/master
V1
V2
16B fine size
Strategy
Legacy firmware + legacy IgH
yes
no
no
keep 0x04
2.x firmware + legacy IgH
yes
not used
low five bits remain compatible
do not auto-switch
2.x firmware + current IgH
yes
yes
when capability allows
use 0x24 for new projects
Third-party master
codec-dependent
V2 implementation required
synchronize ESI/SM
prove one frame first
Appendix D: Document boundary and revision
This Application Manual answers how to configure and run the product quickly. The Technical Reference defines every field, valid value, and error. V1/V2 differences are concentrated in the PDO header and its selection; the rest of the product remains one functional system.
Document version
Main change
V3.0
task-oriented structure; V2/no-CRC recommended for new projects; first-frame, cycle, overload, and compatibility workflows
Technical Reference
ECAN-Lite Technical Reference V3.0
This manual completely defines the product architecture, EtherCAT/CAN FD protocol, PDO byte layout, frame encoding, object dictionary, defaults, and diagnostics.
For wiring, master configuration, IgH examples, FoE update, operation, troubleshooting, and acceptance, see the
ECAN-Lite Application Manual V3.0.
Contents
[TOC]
1. Product positioning
ECAN-Lite is an EtherCAT-to-CAN/CAN FD real-time gateway slave. The master issues transmit requests through RxPDO and reads received frames, transmit results, and channel status through TxPDO.
Interface
Scope defined by this manual
EtherCAT
SM2/SM3, PDO mapping, CoE SDO, and FoE capability
CAN/CAN FD
Channel configuration, bit timing, frame encoding, status, and diagnostics
Master software
Continuous process image, field encoding, boundaries, and compatibility rules
Periodic data uses a fixed header followed by a continuous frame stream:
The fixed header self-describes its format and length through ver_ihl. CAN/CAN FD packets follow in the continuous frame area. Chapters 4 and 5 define PDO sizing, header formats, and capabilities.
!!! important "Normative language"
Must identifies a protocol requirement, should identifies a recommended implementation, and may identifies an optional capability. Object definitions, bit fields, defaults, and limits are normative here; operational procedures are defined in the Application Manual.
2. Core features
Item
Description
EtherCAT
2-port slave, 100Mbps, CoE, FoE
CAN channel
4 independent MCAN, 3 bits are reserved for the control word CH field, which can express 0..7
CAN Protocol
CAN 2.0A / CAN 2.0B / CAN FD ISO
CAN data length
Classic CAN 0..8B, CAN FD 0..64B, dynamic encoding by DLC
PDO size
TxPDO/RxPDO are configured independently as 128B*base + 16B*fine; default encoding 0x02 is 256B; legacy integers 1..10 remain compatible
PDO upper limit
1392B/direction; actual frame capacity equals total PDO length minus fixed-header length; see Chapters 4 and 5
PDO structure
Self-describing fixed header plus a continuous frame stream; see Chapter 5
Multi-channel multiplexing
Multiple CAN channels share the same direction frame area and share the remaining space according to the budget strategy
Timestamp
Optional per frame, supports off/delta16, delta32/full64 as capability extension
Reservation to send
RxPDO TSF_FULL64 format=1 can reserve the CAN frame to the specified phase in the next SYNC0 cycle
TDC
CAN FD is enabled by default; data segments of 5M and above are forced to be enabled; Offset/Filter defaults to 0 for automatic calculation, and non-0 supports manual override
Diagnosis
PDO quick status + SDO detailed status; PDO parsing errors and overflows have count records
Upload CAN/CAN FD receive frames and compressed channel status
RxPDO / Output PDO
Master -> Slave
Master writes output process data
Issues CAN/CAN FD send request
TxPDO and RxPDO are independent directions. PDO size, channel mask, encapsulation profile, budget policy, and direction options can be selected separately.
Channel enable and PDO length do not replace each other. Disabling a CAN channel changes only the active channel mask and scheduling budget; it does not change SM2/SM3 length.
It is useful to read the protocol in three layers:
Layer
What the master does
Manual Entry
EtherCAT mapping layer
Select the first N 128B PDO chunks to obtain continuous RxPDO/TxPDO buffers
Technical Reference Chapter 4
PDO frame-stream layer
Read/write the versioned header at offset 0 and CAN_FRAME packets from HeaderBytes=4*(ver_ihl&0x0F)
Technical Reference Chapters 5 through 11
Configuration and diagnostics layer
Configure PDO profiles and MCAN channels, then read status through SDO
Chapter 12
For first traffic, follow Application Manual Chapter 1. A custom PDO codec must implement Chapters 4 through 11 of this manual.
!!! warning "Direction mistakes can fail silently"
RxPDO/SM2 is written by the master and read by the slave. TxPDO/SM3 is written by the slave and read by the master. Process-image registration, buffer names, and send/receive APIs must preserve this definition.
3.1 Document markup description
The following tables in this article use the following notation:
Mark
Meaning
RO
Read Only, read only. The master can only read via SDO, writes are invalid or rejected.
RW
Read Write, read and write. The master can write configuration via SDO and can also read echo or current values.
WO
Write Only, write only command. The master writes to trigger the action, and the read value is not used as a basis for status.
M2S
Master to Slave, master to slave. Commonly seen in RxPDO/SM2 Output or configuration SDO writes.
S2M
Slave to Master, slave to master. Commonly seen in TxPDO/SM3 Input or Status/Capability SDO reads.
CFG
Configuration or command path, usually done through CoE SDO, is not part of the periodic PDO data flow.
Access in the PDO table refers to the master's access method for process data: RxPDO/SM2 is written by the master and read by the slave; TxPDO/SM3 is written by the slave and read by the master.
PDO mapping is assembled from 128B chunks. Each chunk is split into 8 STRING(16) mapping units in the object dictionary to avoid the bit-length limit of a PDO mapping entry.
text
RxPDO chunk maps: 0x1600..0x1617
TxPDO chunk maps: 0x1A00..0x1A17
SM2 assignment: 0x1C12 selects the first N RxPDO chunks
SM3 assignment: 0x1C13 selects the first N TxPDO chunks
A chunk is an EtherCAT mapping and length-selection unit, not a protocol parsing layer. The base area uses complete 128B chunks. If fine sizing is requested, one tail mapping is appended and only its first fine 16B entries are enabled. FramePacketStream may span those boundaries; the receiver parses only the valid frame area described by payload_len.
!!! danger "PDO assignment must match the active length"
The effective bytes mapped by 0x1C12/0x1C13 must equal ActivePDOBytes in the corresponding direction. A mismatch rejects the profile and may prevent OP. Never change the PDO length while the slave is in OP.
4.1.1 How the master assembles multiple chunks
On the master side, do not treat 0x1600..0x1617 / 0x1A00..0x1A17 as multiple independent protocols. They are only 128B mapping blocks used to satisfy EtherCAT PDO mapping limits. The application should combine the first N chunks in the same direction into one continuous byte buffer in assignment order:
text
RxPDO/SM2 output buffer:
chunk0[128B] + chunk1[128B] + ... + chunkN-1[128B]
"..." means the omitted chunks continue in the same order, 128B each
TxPDO/SM3 input buffer:
chunk0[128B] + chunk1[128B] + ... + chunkN-1[128B]
"..." means the omitted chunks continue in the same order, 128B each
Each 128B chunk contains 8 STRING(16) mapping units. If the master exposes them as separate variables, copy them in the following order:
text
for chunk = 0 .. N-1:
for unit = 0 .. 7:
dst_offset = chunk * 128 + unit * 16
copy 16 bytes to/from process image entry
The following table expands the 8 mapping units of chunk=0 and shows the first unit of chunk=1. All later chunks follow the formula below.
Direction
Data flow
Master access
Chunk
Unit
PDO map
Data object
Buffer offset
RxPDO / SM2 Output
M2S
Write
0
0
0x1600
0x7000
0
RxPDO / SM2 Output
M2S
Write
0
1
0x1600
0x7010
16
RxPDO / SM2 Output
M2S
Write
0
2
0x1600
0x7020
32
RxPDO / SM2 Output
M2S
Write
0
3
0x1600
0x7030
48
RxPDO / SM2 Output
M2S
Write
0
4
0x1600
0x7040
64
RxPDO / SM2 Output
M2S
Write
0
5
0x1600
0x7050
80
RxPDO / SM2 Output
M2S
Write
0
6
0x1600
0x7060
96
RxPDO / SM2 Output
M2S
Write
0
7
0x1600
0x7070
112
RxPDO / SM2 Output
M2S
Write
1
0
0x1601
0x7080
128
TxPDO / SM3 Input
S2M
Read
0
0
0x1A00
0x6000
0
TxPDO / SM3 Input
S2M
Read
0
1
0x1A00
0x6010
16
TxPDO / SM3 Input
S2M
Read
0
2
0x1A00
0x6020
32
TxPDO / SM3 Input
S2M
Read
0
3
0x1A00
0x6030
48
TxPDO / SM3 Input
S2M
Read
0
4
0x1A00
0x6040
64
TxPDO / SM3 Input
S2M
Read
0
5
0x1A00
0x6050
80
TxPDO / SM3 Input
S2M
Read
0
6
0x1A00
0x6060
96
TxPDO / SM3 Input
S2M
Read
0
7
0x1A00
0x6070
112
TxPDO / SM3 Input
S2M
Read
1
0
0x1A01
0x6080
128
Complete mapping rules:
Direction
Data flow
Master access
Chunk c
Unit u
PDO map
PDO map subindex
Data object
Buffer offset
RxPDO / SM2 Output
M2S
Write
0..N-1
0..7
0x1600 + c
u + 1
0x7000 + c * 0x80 + u * 0x10
c * 128 + u * 16
TxPDO / SM3 Input
S2M
Read
0..N-1
0..7
0x1A00 + c
u + 1
0x6000 + c * 0x80 + u * 0x10
c * 128 + u * 16
General formula:
text
unit_index = chunk * 8 + unit
offset = unit_index * 16
RxPDO data object index = 0x7000 + unit_index * 0x10
TxPDO data object index = 0x6000 + unit_index * 0x10
So chunk=1 is not only unit=0. For example, RxPDO 0x1601 contains eight 16B units: 0x7080, 0x7090, ..., 0x70F0. TxPDO 0x1A01 contains 0x6080, 0x6090, ..., 0x60F0. In both examples, ... only omits the middle objects that increase by 0x10.
For example, when N=3, the continuous buffer in each direction is 384B:
The versioned header is located at offset 0 of the continuous buffer. The frame area starts at HeaderBytes=4*(ver_ihl&0x0F) and ends at ActivePDOBytes-1. The factory default is V1 (24B on HPM5E and 32B on HPM6E); explicitly selected V2 is 16B/20B. CAN_FRAME packets may cross a chunk or tail boundary. The master must use payload_len, the applied profile and the optional CRC field to determine the valid area.
In TwinCAT, CODESYS, or a custom master, if the tool can map PDO data to a continuous byte array, create ARRAY[0..ActivePDOBytes-1] OF BYTE. If the tool exposes each STRING(16) as a separate variable, assemble and split the data in the application layer using the offset formula above.
4.2 Relationship between total PDO length and header overhead
Total PDO length and fixed-header version are independent configuration dimensions, but together they determine the space available for CAN frames:
!!! important "Length and header version are independent"
Changing the header version does not change SM2/SM3 length or require rebuilding the PDO assignment. It changes only the frame-stream offset and usable bytes. Changing total PDO length does not select another header version, but it does require matching EtherCAT mapping changes.
base = PdoSizeEncoding & 0x1F
fine = PdoSizeEncoding >> 5
ActivePDOBytes = 128 * base + 16 * fine
ECAN-Lite: base=1..10, fine=0..7
The requested values at 0x8010/0x8011:03 both default to 0x02, or 256B. The low 5 bits select complete 128B base chunks. When capability-gated, the high 3 bits append 0..7 tail units of 16B. Legacy masters writing 1..10 keep a zero high field and therefore retain the original 128B steps.
Use a nonzero fine field only when 0xF000:16 bit7 FINE_SIZE_16=1. When fine>0, 0x1C12/0x1C13 must assign the first base complete chunks plus a tail mapping whose first fine 16B entries are enabled. This read-only capability is not a configuration switch.
4.2.2 Actual frame area for the same total PDO length
The table separates total process-image length from protocol overhead. Each frame-area value is ActivePDOBytes-HeaderBytes:
Size encoding
Active PDO
5E default V1: header/frame
5E explicit V2: header/frame
6E default V1: header/frame
6E explicit V2: header/frame
0x01
128B
24B / 104B
16B / 112B
32B / 96B
20B / 108B
0x21
144B
24B / 120B
16B / 128B
32B / 112B
20B / 124B
0x02
256B
24B / 232B
16B / 240B
32B / 224B
20B / 236B
0x22
272B
24B / 248B
16B / 256B
32B / 240B
20B / 252B
0x03
384B
24B / 360B
16B / 368B
32B / 352B
20B / 364B
0x08
1024B
24B / 1000B
16B / 1008B
32B / 992B
20B / 1004B
0xEA
1392B
24B / 1368B
16B / 1376B
32B / 1360B
20B / 1372B
V2 gains frame space by compressing the fixed header: 8B per PDO image on 5E and 12B on 6E. The total EtherCAT PDO byte count does not change. Chapter 5 lists the removed fields and reduced status precision; do not switch versions only to gain a few bytes without confirming master-codec support.
4.2.3 Effect of each configuration change
Target change
:03 size field
:07 OptionFlags
0x1C12/0x1C13 and SM length
Master PDO codec
Keep default 256B V1, CRC disabled
0x02
0x04
First two 128B chunks
Parse frame stream at 24B on 5E or 32B on 6E
Change total PDO length only
Target 5+3 encoding
Keep 0x04
Rebuild to exactly ActivePDOBytes
Header layout unchanged; capacity and tail mapping change
Switch same length from V1 to V2
Keep unchanged
0x04 -> 0x24
Keep unchanged
Use ver_ihl and V2 fields/new frame offset
Return same length from V2 to V1
Keep unchanged
0x24 -> 0x04
Keep unchanged
Restore V1 fields and header length; legacy IgH uses this path
Change size and version together
Target encoding
Explicitly write 0x24
Rebuild mapping
Update buffer length, IHL, field layout, and capacity checks
Enable payload CRC only
Keep unchanged
V1=0x00; V2=0x20
Keep unchanged
Header length unchanged; calculate and verify CRC16
4.2.4 Capability checks and active readback
Check the following objects before and after configuration; a successful requested-SDO write alone is not sufficient:
Search key
Purpose
Decision
0xF000:05/06
Firmware major/minor
Enable V2 and 16B fine sizing only on the matching 2.x firmware
0xF000:09
PDO header version mask
Must advertise the requested header version
0xF000:16 bit7
FINE_SIZE_16
Allows the high 3 size bits to represent 16B tail units
0xF000:16 bit13
HEADER_V2
Allows explicit OptionFlags.bit5 selection
0x8010/0x8011:09
Active PDO bytes
Must equal the actual process-image mapping length
0x8010/0x8011:10
Active frame-area bytes
Must equal ActivePDOBytes minus actual HeaderBytes
0x8010/0x8011:11
Active layout CRC
Master and slave layout contracts must agree
0x8010/0x8011:12
Active profile word
Echoes the effective base, fine, and OptionFlags combination
Recommended sequence:
Read capabilities.
Select total length and construct the mapping.
Select the header version and apply.
Read :02 and :09..12.
In OP, calculate HeaderBytes from ver_ihl in every image.
!!! caution "Capacity is not real-time performance"
A larger PDO increases process-image capacity, EtherCAT frame length, and PDI copy work. Validate WKC, cycle jitter, and drop counters with the target cycle, slave count, and CAN load.
4.3 ESI and PDO mapping requirements
Use the ESI file supplied with the product release and do not modify the device SII/EEPROM.
The actual PDO length used by the master is determined by the first N chunks selected by
the 0x1C12/0x1C13 assignment and must match the active profile at 0x8010/0x8011.
If the ESI, device firmware, and master configuration versions do not match, restore the
matching release package and contact technical support.
5. PDO fixed header
TxPDO and RxPDO use the same version rules. ver_ihl stores the version in the high nibble and the number of 4B words in the low nibble. OptionFlags.bit5=HEADER_V2 selects V2; clearing it selects V1. The factory, reset, and current IgH default is OptionFlags=0x04 (V1 plus NO_CRC16); the master must set bit5 explicitly for V2. HPM5E uses 0x24/16B for V2 and 0x16/24B for V1; HPM6E uses 0x25/20B and 0x18/32B.
The first 12 bytes are common: ver_ihl, flags, seq_begin, seq_end, payload_len, payload_crc16, and layout_id. V1 then carries channel_mask, frame_count, overflow_sat, crc_alg, and 16-bit channel status. V2 starts 8-bit per-channel status at offset 12; the removed fields are derived from the Active Profile or SDO diagnostics.
5.1 Version selection, byte layout, and compatibility boundary
ver_ihl is the final runtime authority: its high nibble is the header version and its low nibble is the number of 4B words. OptionFlags requests a version; ver_ihl confirms the version and length actually used by the current PDO image. Firmware 2.x indicates V2 capability, not a V2 default.
Preserve unrelated option bits with read-modify-write
Common value with payload CRC
0x00
0x20
CRC selection does not change HeaderBytes for that version
Common fields
offsets 0..11
offsets 0..11
Double sequence, length, CRC field, and layout ID are shared
Channel status
16 bits per channel
8 bits per channel
V2 does not retain every V1 status bit
In-header diagnostics
channel_mask/frame_count/overflow_sat/crc_alg
Omitted
Derive from Active Profile, stream traversal, header flag, and SDO diagnostics
5E HeaderBytes
24B
16B
V2 adds 8B frame capacity at the same total PDO length
6E HeaderBytes
32B
20B
V2 adds 12B frame capacity at the same total PDO length
EtherCAT PDO mapping
Determined by ActivePDOBytes
Determined by ActivePDOBytes
Mapping and SM length stay unchanged when only version changes
Frame-stream start
4*(ver_ihl&0x0F)
4*(ver_ihl&0x0F)
Never hard-code 24/32 or 16/20 as the only valid offset
!!! danger "Never infer the header from firmware or PDO size"
Firmware 2.x advertises V2 capability; it does not mean the current image uses V2. :03 selects total length, :07 bit5 requests the version, and active readback confirms the configuration. The actual image format and length must come from ver_ihl.
The fixed header is not an SDO object and does not have the RO/RW attribute; its master access direction follows the PDO direction: the RxPDO header is written by the master and parsed by the slave, and the TxPDO header is written by the slave and parsed by the master.
Common fields in both versions:
Offset
Size
Field
Description
0
1
ver_ihl
Version in the high nibble and 4B-word count in the low nibble
1
1
header_flags
overflow, error, reserved bit, status change, sequence number wraparound
2
2
seq_begin
Release starting sequence number
4
2
seq_end
Release completion sequence number, must be equal to seq_begin to be valid
6
2
payload_len
The number of valid bytes in the frame encapsulation area of this cycle
8
2
payload_crc16
Frame encapsulation area CRC-16/CCITT-FALSE when enabled; 0 by default
10
2
layout_id
The current PDO layout ID, changes when the layout or profile changes
V1 carries channel_mask, frame_count, overflow_sat, and crc_alg at offsets 12..15, followed by 16-bit status per channel. V2 omits those four bytes and starts 8-bit status per channel at offset 12. In V2 the channel mask and CRC policy come from the applied Active Profile, frame count is derived while traversing the stream, and overflow is reported by header_flags.bit5.
Publishing rules: The sender first constructs the complete frame area and header, then writes seq_end = seq_begin last. The receiver parses only when the sequence and length are valid and the CRC field matches the applied direction option. Factory-default V1+NO_CRC16 requires payload_crc16=0; clearing NO_CRC16 enables CRC-16/CCITT-FALSE without changing the selected header version or length. This prevents either side from consuming a half-updated PDO.
5.2 Key field explanation and reception judgment
seq_begin, seq_end, and layout_id are common running fields rather than separately configured SDO parameters. V1 additionally carries crc_alg and overflow_sat; V2 derives the CRC mode from Active Profile and replaces overflow count with the header overflow flag.
Field
How the sender fills in
How the receiver determines
seq_begin
The PDO image is incremented every time it is released, 16bit wraps
When it is not equal to seq_end, it means that it is being updated or half a packet has been read, and the data in this cycle should be discarded
seq_end
After all payload, CRC and header fields are written, they are finally written with the same value as seq_begin
Only seq_begin == seq_end is allowed to continue to check the CRC and parse the payload
layout_id
16bit layout short identifier generated based on active PDO profile
If there is a sudden change during continuous operation, it means that the PDO size, channel mask, profile or option flags have changed, and you need to re-analyse according to the active profile
Either indication or STREAM_TRUNCATED=1 means that the cycle may be incomplete; use SDO counters for detail
Notes:
layout_id is a short identifier in the PDO header. It lets the master quickly detect whether the current PDO layout has changed. For full configuration readback, read 0x8010/0x8011:12 Active profile word and :11 Active layout CRC.
If overflow_set appears in the document or debugger, it corresponds to this header field overflow_sat: it is not a switch, but "the saturation count after overflow/truncation in this cycle."
When enabled, payload_crc16 covers PDO offset [HeaderBytes, HeaderBytes + payload_len) and never includes the versioned header. The factory default disables this CRC and requires the field to be 0.
payload_len is the actual number of valid frame encapsulation bytes in this cycle, not the total length of PDO.
!!! caution "Clear unused space and alignment padding"
Unused frame-area bytes shall be zero. With ALIGN_4_ENABLE, padding bytes shall also be zero and shall be included in payload_len; the receiver shall advance by the aligned packet length.
Recommended judgment sequence for the receiving end:
text
1. Read fixed header A.
2. Check seq_begin == seq_end; if not equal, ignore the PDO of this cycle.
3. Derive the CRC policy from the applied profile.
Under factory-default NO_CRC16, require payload_crc16 == 0.
With CRC enabled, V1 also reports crc_alg == 1; V2 omits that field.
4. Check payload_len <= ActiveFrameAreaBytes.
5. When enabled, calculate CRC-16/CCITT-FALSE for payload_len bytes
starting at HeaderBytes.
6. Read fixed header B again. If the key fields of A and B differ,
the PDO changed during the read; ignore this cycle.
7. Parse CAN_FRAME packets; reject all reserved packet kinds.
8. If overflow_sat != 0 or STREAM_TRUNCATED=1, mark this cycle as incomplete data.
Configuration example: When the master wants both TxPDO/RxPDO to use the default N=2, CAN0..CAN3, profile 0, Balanced, V2 header and no payload CRC:
Read 0x8010/0x8011:09..12 after apply. If Active PDO bytes, Active frame area bytes, Active layout CRC, Active profile word are as expected, layout_id in subsequent PDO headers should remain stable.
header_flags:
Bit
Name
Description
0
STREAM_TRUNCATED
The frame area of this cycle is insufficient and there are frames that are not packed
1
ANY_CHANNEL_ERROR
Any channel is in error, BusOff, or congested
2
Reserved
Must be 0; a set bit is a protocol error
3
STATUS_CHANGED
Channel status changes compared to the previous cycle
4
SEQ_WRAP
seq_begin Wraparound this cycle
5
OVERFLOW_SAT_VALID
overflow_sat valid
6
reserved
The sender writes 0 and the receiver ignores
7
reserved
The sender writes 0 and the receiver ignores
6. Channel status word
Each channel status is compressed to 16 bits and placed in the PDO header. PDO only carries fast status, detailed reasons are read through SDO.
Bits
Field
Description
0..2
state
0=disabled,1=init,2=run,3=busoff,4=error,5=listen
3
fd_enabled
Current channel enables CAN FD
4
warn
error warning / error passive / bus degraded summary
5
bus_off
BusOff
6
rx_pressure
RX FIFO nearly full or overflow
7
tx_pressure
TX FIFO/Queue congestion
8
detail_pending
New detail snapshot available in SDO
9
counter_sat
pending count saturated
10..12
rx_pending_sat
RX pending 0..7 saturated
13..15
tx_pending_sat
TX pending 0..7 saturated
When warn/bus_off/rx_pressure/tx_pressure/detail_pending is set, the master should read 0x9000..0x9003 to obtain a detailed register and count snapshot. If the error comes from the PDO encapsulation layer, LastPDOError / PDOErrorCounter / PDOOverflowCounter of 0x8010/0x8011 should be read.
7. Frame encapsulation package
Each frame encapsulation packet starts with a 2B control word, which determines the length of subsequent CAN ID, timestamp and data.
The frame encapsulation packet follows the PDO direction: CAN_FRAME in RxPDO is the master's request for the slave to send to the CAN bus; CAN_FRAME in TxPDO is received by the slave from the CAN bus and uploaded to the master.
Unless otherwise specified, multi-byte values in PDO fixed headers, frame packets and SDO use little-endian. On the master side, do not cast unaligned byte buffers directly to host structures. Read and write fields explicitly from the byte stream.
text
Byte0:
bit0..2 CH CAN channel id, currently using 0..3
bit3..6 DLC original CAN DLC, 0..15
bit7 IDE 0=11bit standard id,1=29bit extended id
Byte1:
bit0 FDF 0=classic CAN,1=CAN FD
bit1 BRS CAN FD bit rate switch
bit2 X When FDF=0, it is RTR, when FDF=1, it is ESI
bit3..4 TSF 0=no timestamp,1=delta16,2=delta32,3=full64
bit5..6 KIND 0=CAN_FRAME, 1..3=reserved
bit7 D64 0=data length by DLC,1=fixed 64B data window
The current protocol only accepts KIND=0 CAN_FRAME. KIND=1..3 are reserved and must be rejected by the receiver.
0=normal,1=high priority,2=dedicated buffer,3=queue hint
When not used, the sender must write 0 and the receiver ignores it.
7.2 DLC and data length
DLC
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Bytes
0
1
2
3
4
5
6
7
8
12
16
20
24
32
48
64
DLC<=8, BRS=0, D64=0 in classic CAN. If FDF=0 && X=1, the frame is RTR, and the data length must be 0. X in CAN FD represents ESI, and there is no RTR.
!!! caution "Capacity is checked at complete-packet boundaries"
The unused frame area must be filled with 0. If 4-byte alignment is enabled, padding bytes must be 0 and counted in payload_len. If the remaining area cannot contain a complete packet, the sender shall not write a partial packet.
7.3.1 Enable 4-byte alignment
4-byte alignment is controlled by the direction option ALIGN_4_ENABLE, not the 0xF000 read-only capability object that is turned on directly. 0xF000:15 (0x0F) is used to confirm whether the device claims to support this capability; the real switch is 0x8010/0x8011:07 (0x07) Option flags bit1.
Direction
Control object
bit1 meaning
TxPDO / SM3 Input / Upload from the slave
0x8010:07 (0x07)
Each frame package uploaded by the slave is padded by 4 bytes. When the master parses, it jumps to the next packet according to the aligned length
RxPDO / SM2 Output / Sent by the master
0x8011:07 (0x07)
Each frame packet sent by the master must be completed by 4 bytes, and the slave will parse the next packet according to the aligned length
Turn on steps:
text
1. Read 0xF000:15 and confirm that bit1 ALIGN4 option mask is 1.
You can also read 0xF000:16 and confirm that bit5 ALIGN4 feature is 1.
2. Write 0x8010/0x8011 requested profile in PREOP/SAFEOP.
3. Set 0x8010:07 or 0x8011:07 bit1 of the target direction to 1.
4. Write 0x8010:01 = 1 or 0x8011:01 = 1 apply.
5. Read 0x8010/0x8011:02 and confirm Status = 0.
6. Read 0x8010/0x8011:12 and confirm that OptionFlags bit1
is set in the Active profile word.
Example: Leave other direction options unchanged and only turn on RxPDO 4-byte alignment:
text
old = read_u8(0x8011:07)
write_u8(0x8011:07, old | 0x02)
write_u8(0x8011:01, 1)
check read_u8(0x8011:02) == 0
Example: Turn off TxPDO 4-byte alignment:
text
old = read_u8(0x8010:07)
write_u8(0x8010:07, old & ~0x02)
write_u8(0x8010:01, 1)
check read_u8(0x8010:02) == 0
After ALIGN4 is enabled, the sender must pad each frame packet to a 4-byte boundary. Padding bytes must be 0 and must be included in the fixed header payload_len. The receiver must also advance by the aligned packet_bytes when parsing the next packet, not by the raw CAN data length alone.
Length example:
CAN_FRAME
raw_packet_bytes
ALIGN4 post packet_bytes
payload_len counts
Standard frame, DLC=8, no timestamp
2 + 2 + 8 = 12
12
12
Extended frame, DLC=8, no timestamp
2 + 4 + 8 = 14
16
16, the last 2B padding must be 0
Standard CAN FD, DLC=15, no timestamp
2 + 2 + 64 = 68
68
68
Extended CAN FD, DLC=15, delta16
2 + 4 + 2 + 64 = 72
72
72
7.4 Timestamp field
TSF determines whether CAN_FRAME carries the timestamp field. In the ordinary TxPDO upload direction, the timestamp is used to describe the time when the slave receives the CAN frame; in the RxPDO delivery direction, TSF_NONE means immediate transmission, and TSF_FULL64 can be multiplexed by the reserved transmission format.
TSF
Number of bytes
General semantics
Description
0
0
No timestamp
Default mode, lowest overhead
1
2
delta16
The lower 16 bit difference relative to the reference time within the same PDO cycle, suitable for short-cycle compressed timestamps
2
4
delta32
The lower 32 bit difference relative to the reference time; the capability bit exists but the current default profile is not actively enabled
3
8
full64
64 bit full timestamp, or RxPDO reservation sending extended format
delta16/delta32 within the same Packet sequence in TxPDO is referenced to the first available time base of the cycle. The master should handle wrap as an unsigned difference when used for sorting and diagnostics. If the master does not need timestamps, it is recommended to use profile 0/4 to reduce the overhead of each frame.
RxPDO reservation sending only uses the 8B field of TSF_FULL64, and the required format is as follows:
text
format:u8 = 1
flags:u8 = 0
tag:u16
offset_ns:u32
offset_ns represents the target phase relative to the starting point of the next SYNC0 cycle. This format is not an absolute timestamp; if the target phase has been missed, the firmware will not delay the frame until the next cycle and the master should reserve sufficient phase margin.
8. Encapsulation Profile and direction options
0x8010 controls the TxPDO profile, and 0x8011 controls the RxPDO profile. Currently, the following profiles are supported out of the factory:
Direction options are controlled by 0x8010/0x8011:07 Option flags. 0x8010 acts in the TxPDO/SM3/Input upload direction, and 0x8011 acts in the RxPDO/SM2/Output delivery direction.
8.1 Option flags bit table
Option flags is an 8-bit bitmap. Writing the requested value does not make it active.
!!! caution "Apply and read back"
After writing options, issue 0x8010:01=1 or 0x8011:01=1. Use the new layout only when :02=0 and :12 Active profile word matches the request. Reserved bits must remain 0; use read-modify-write for a single-option change.
Bit
Mask value
Name
Applicable direction
Default state
Description
0
0x01
Reserved
TxPDO / RxPDO
0
Must be 0; writing 1 is rejected
1
0x02
ALIGN_4_ENABLE
TxPDO / RxPDO
Off
Each CAN_FRAME packet is padded on a 4-byte boundary; padding must be 0 and counted towards payload_len
2
0x04
NO_CRC16_ENABLE
TxPDO / RxPDO
On
Disable payload CRC16; clear this bit to restore CCITT-FALSE
3
0x08
APP_BYPASS_ENABLE
TxPDO / RxPDO
Off
Bypass the real MCAN application path for data-path diagnostics only; never enable it for motor control or gateway traffic
4
0x10
PAYLOAD_ONLY_ENABLE
TxPDO / RxPDO
Off
Update only the valid payload for a stable layout; the master codec must ignore bytes beyond payload_len
5
0x20
HEADER_V2_ENABLE
TxPDO / RxPDO
Off
Select compact V2; clear for V1 compatibility
6..7
0xC0
reserved
reserved
Off
Masters must write 0
Commonly written values:
Write value
Function
Typical scenarios
0x00
V1 header with CRC16
Legacy IgH compatibility
0x24
V2 header without CRC16
Explicit selection after capability check
0x01
Invalid reserved value
Rejected by 0x8010/0x8011:07
0x02
Turn on 4-byte alignment
0x8010:07 (0x07) or 0x8011:07 (0x07), the customer master hopes that the frame packet is naturally 32bit aligned
0x03
Invalid reserved value
bit0 is set, so the write is rejected
0x04
V1 header with CRC16 disabled
Factory, reset, and current IgH compatibility default
0x08
Bypass the real MCAN application path
Data-path diagnostics only; not for normal gateway traffic
0x10
Update only the valid payload
Use when both the master and firmware use the current codec and the layout is stable
Ability judgment:
Ability object
Judgment method
Description
0xF000:15 PDO option flags mask
Check whether the corresponding bit is 1
Indicates that the option flag can be written 0x8010/0x8011:07
0xF000:16 PDO feature flags
Check the corresponding feature bit
Indicates the device protocol capabilities, such as ALIGN4, scheduled sending, etc.
The current capability mask is based on 0xF000. The master should read the capability object first and then select the profile and option flags.
!!! important "Default CRC policy"
Payload CRC16 is disabled by default for both V1 and V2. When disabled, TxPDO payload_crc16 shall be zero and the firmware skips the field in master RxPDO input. To enable CRC protection, the master shall explicitly clear NO_CRC16_ENABLE.
8.2 Default switch state when not configured
If the master does not write the profile-related SDO of 0x8010/0x8011, the default value of requested in the device object dictionary is as follows. Note: 0xF000 means "support capability" and does not mean enabled by default; the actual enabled status is determined by the requested profile of 0x8010/0x8011 and the active readback after apply.
Function
Control object
Default value
Status when not configured
Remarks
PDO size multiplier
0x8010/0x8011:03
2
Default request 256B/direction
Master site mapping must also select the first 2 chunks, otherwise apply will return mapping reload required
Channel mask
0x8010/0x8011:04
0x0F
CAN0..CAN3 default request to enable
To close the channel, you need to explicitly change the mask and apply
Encapsulation profile
0x8010/0x8011:05
0
profile 0 on
variable DLC, no timestamp
Budget policy
0x8010/0x8011:06
0
Balanced on
Reserve the minimum budget for each enabled channel, and the remaining space is shared
Reserved option
0x8010/0x8011:07 bit0
0
Must remain 0
Writing 1 is rejected; use CAN peer response or bus diagnostics to confirm application-level completion
4-byte alignment
0x8010/0x8011:07 bit1
0
Close
Supported but not padded by default. After opening, padding is included in payload_len
Disable CRC16
0x8010/0x8011:07 bit2
1
On
payload_crc16=0; clear to enable CCITT-FALSE
Header V2
0x8010/0x8011:07 bit5
0
Off
Explicit only; 16B on 5E, 20B on 6E
Application-path bypass
0x8010/0x8011:07 bit3
0
Off
Data-path diagnostics only; keep disabled for normal gateway traffic
Valid-payload-only update
0x8010/0x8011:07 bit4
0
Off
Requires matching payload_len handling in the master codec
delta16 timestamp
0x8010/0x8011:05=1/5
0
Off
Select profile 1 or 5 before enabling
D64 data window
0x8010/0x8011:05=4/5
0
Close
Select profile 4 or 5 before enabling
RxPDO scheduled transmission
RxPDO CAN_FRAME TSF_FULL64 format=1
No ordinary default frame
Close
The master must actively send frames according to the scheduled format, and it is recommended to confirm 0xF000:16 bit8 first
CAN FD
0x8001..0x8004:15
1
Enable
Each MCAN channel is configured according to CAN FD by default; classic CAN needs to write 0 and apply
TDC
0x8001..0x8004:16
1
Open
Data segment 5M or above will be forced to open even if you write 0
It is recommended that masters not rely on the assumption that implicit defaults are in effect. When starting up, you should explicitly configure 0x1C12/0x1C13, write 0x8010/0x8011:03..07, then write 0x8010/0x8011:01=1 apply, and read :09..12 to confirm the active status.
9. Reserved protocol values
OptionFlags.bit0, header_flags.bit2, and packet KIND=1..3 are reserved. A master must transmit zero in reserved option and header bits and must reject reserved packet kinds. Firmware does not provide per-frame transmit-result packets. Confirm end-to-end completion through the CAN peer response; use PDO channel status and SDO diagnostics for local congestion and bus-state diagnosis.
10. CRC and integrity strategy
By default, CRC32 is not added to each CAN_FRAME.
Reason:
The CAN/CAN FD bus itself already has CAN CRC.
EtherCAT frame has link FCS and working counter.
per-frame CRC32 will increase 4B/frame, and the classic 8B standard frame overhead increases from 12B to 16B, about 33%.
Frame-by-frame CRC32 adds jitter to the packet calculation in 1ms periods.
By default, ActiveLayoutCrc, double sequence commit and length checks protect the layout and update boundary, while payload CRC16 is disabled for the hot path. Clear OptionFlags.bit2 to enable CRC-16/CCITT-FALSE without changing the selected header version or length.
11. Multi-channel shared budget
PDO no longer provides fixed slots for each CAN channel. The scheduler works on a frame area byte budget:
Reserve a minimum packet budget for each enabled channel, and compete for remaining space sharing; Default
1
SharedOnly
No channel reservation, all frames share contention
2
Deterministic
Allocate the budget evenly according to the enabled channels, and do not borrow between channels
3
Reserved
Reserved
A CAN_FRAME must be put into the frame area of this cycle as a whole, and splitting across cycles is not allowed. If there is insufficient space, set the device to STREAM_TRUNCATED, add overflow_sat and SDO PDOOverflowCounter.
12. SDO object dictionary
The previous chapters describe periodic PDO data, which is exchanged every EtherCAT cycle after OP. The SDO object dictionary is the configuration and diagnostics entry point: use it before OP to configure PDO profiles and MCAN channels, and use it during operation to read capabilities, error counters, and detailed status. If you only need to look up an object, start from this chapter. For bring-up, read 13.1, 13.2, 13.4, and 13.8 first.
This chapter lists only the public objects intended for customer integration. Objects not listed here are manufacturer-reserved, carry no compatibility commitment, and must not be accessed by customer applications. U8/U16/U32 denote unsigned 8/16/32-bit values.
12.1 Quick lookup by object index
In a PDF reader, start with the Bookmarks or Contents pane. If the address is known, search the complete hexadecimal token, such as 0x8010:07 or 0xF000:16. If only the function is known, search the English keywords below. Ranged objects also list each member address so a search for 0x8002 or 0x9023 lands directly in this index.
Exact index or range members
Object/keywords
Direction and purpose
Detail section
0x1C12
RxPDO assignment, SM2, Output mapping
Select continuous RxPDO chunks and optional 16B tail mapping
4.1, 4.3
0x1C13
TxPDO assignment, SM3, Input mapping
Select continuous TxPDO chunks and optional 16B tail mapping
4.1, 4.3
0x1600..0x1617
RxPDO map, M2S
Each object maps one 128B chunk
4.1
0x1A00..0x1A17
TxPDO map, S2M
Each object maps one 128B chunk
4.1
0x6000..
TxPDO data, Input process image
16B slave-to-master process-image units
4.1
0x7000..
RxPDO data, Output process image
16B master-to-slave process-image units
4.1
0x8000
System Config, reboot, pin rotation
System configuration, reboot, and CAN pin rotation
12.3
0x8001, 0x8002, 0x8003, 0x8004
MCAN Channel Config, bit timing, FIFO
CAN0..CAN3 timing, mode, filters, and Message RAM
12.4
0x8010
TxPDO Profile Control, S2M
TxPDO size, channels, profile, options, and active readback
12.2
0x8011
RxPDO Profile Control, M2S
RxPDO size, channels, profile, options, and active readback
12.2
0x8021, 0x8022, 0x8023, 0x8024
MCAN Data Path Control, budget
Per-channel receive/transmit service budgets and apply
12.2.1
0x9000, 0x9001, 0x9002, 0x9003
MCAN Channel Information, ECR, PSR
Detailed channel status, error counters, and register snapshots
12.5
0x9011
Cycle Performance Diagnostics, PDI timing
Worst-case PDI, Sync0, mapping, and hot-path timing
12.2.4
0x9020, 0x9021, 0x9022, 0x9023
MCAN Data Path Diagnostics, drop, cache
Per-channel cache, drop, backpressure, BusOff, and service timing
12.2.5
0xF000
Device Objects, capability, version
Firmware version, PDO limits, header versions, and feature capabilities
12.7
Frequently searched subindices:
Search key
Name
Typical use
0x8010:03, 0x8011:03
PDO size encoding
Configure total length as 128B*base+16B*fine
0x8010:07, 0x8011:07
Option flags
Select V1/V2, CRC, ALIGN4, and other supported options; bit0 is reserved
0x8010:02, 0x8011:02
Apply status
Determine whether the profile applied and why it failed
0x8010:09..12, 0x8011:09..12
Active readback
Read PDO bytes, frame area, layout CRC, and profile word
0x8001:07..24
MCAN mode and bit timing
Automatic/manual timing, CAN FD, TDC, and sample points
0x8001:61..73
MCAN Message RAM
FIFO/Buffer counts and element sizes; other channel objects are isomorphic
0xF000:05/06
Firmware version
Read firmware major/minor
0xF000:09
PDO header version mask
Discover V1/V2 header capability
0xF000:16
PDO feature flags
Discover fine sizing, V2, scheduled transmit, and other features
12.1.1 Object overview
Object
Name
Access Overview
Direction/Purpose
Description
0x8000
System Config
RW/RO
CFG
System clock, restart, CAN pin rotation
0x8001..0x8004
MCAN Channel Config
RW/RO
CFG
Each CAN/CAN FD configuration
0x8010
TxPDO Profile Control
RW/RO
S2M profile
Slave upload direction PDO profile
0x8011
RxPDO Profile Control
RW/RO
M2S profile
Master sends direction PDO profile
0x8021..0x8024
MCAN Data Path Control
RW/RO
CFG
Per-channel receive/transmit service budgets; written on demand by the advanced IgH API
0x9000..0x9003
MCAN Channel Information
RO
S2M diagnostic
Channel state, error counters, and active configuration readback
0x9011
Cycle Performance Diagnostics
RO/RW
S2M diagnostic
Cycle interrupt and critical-path timing statistics
0x9020..0x9023
MCAN Data Path Diagnostics
RO
S2M diagnostic
Per-channel cache, drop, backpressure, and service timing statistics
0x8010 controls the TxPDO/Input direction, and the data flow is S2M; 0x8011 controls the RxPDO/Output direction, and the data flow is M2S. SI1/3/4/5/6/7/8 is the requested configuration or command written by the master, and SI2/9..16 is the status and active readback returned by the slave.
SI
Name
Type
Access
Default
Description
1
Apply command
U8
RW
0
Write 1 Apply requested profile
2
Status
U8
RO
0
apply/parser Status
3
PDO size encoding
U8
RW
0x02
low 5 bits=base, high 3 bits=fine; bytes=128*base+16*fine
4
Channel mask
U8
RW
0x0F
bit0..7 corresponds to CAN0..CAN7
5
Encapsulation profile
U8
RW
0
Encapsulation profile; default profile 0, no timestamp, variable DLC
6
Budget policy
U8
RW
0
Budget policy; default Balanced
7
Option flags
U8
RW
0x04
Default V1 header with NO_CRC16; V2 requires explicit bit5
8
Command
U8
RW
0
bit0 reset session, bit1 clear errors
9
Active PDO bytes
U16
RO
0
Current PDO bytes
10
Active frame area bytes
U16
RO
0
Current frame area bytes
11
Active layout CRC
U32
RO
0
layout contract CRC
12
Active profile word
U32
RO
0
active profile package echo
13
Packet sequence
U16
RO
0
Recent direction sequence number
14
Last PDO error
U16
RO
0
Last encapsulation layer error
15
PDO error counter
U32
RO
0
Packaging layer error count
16
PDO overflow counter
U32
RO
0
Overflow/backpressure count
Status Common values:
value
description
0
OK
1
invalid state, usually the OP trying to change the layout
2
invalid PDO size multiplier
3
invalid channel mask
4
invalid encapsulation profile
5
master mapping reload required
7
PDO encapsulation error
8
PDO overflow/backpressure
9
requested profile pending apply
10
unsupported option flag
Active profile word packaging format:
Bits
Field
Description
0..4
base - 1
128B base count minus one
5..12
ChannelMask
bit0..3 corresponds to CAN0..CAN3, the current product only uses the lower 4 bits
13..18
EncapsulationProfile
See Chapter 9 profile table
19..20
BudgetPolicy
See Chapter 12 Budgeting Strategies
21..28
OptionFlags
Direction options, see Chapter 8
29..31
fine
number of 16B fine units, 0..7
Command bit definition:
Bit
Name
Description
0
reset session
Clear the running state serial number, error status and temporary session information in this direction
1
clear errors
Clear LastPDOError, PDOErrorCounter and PDOOverflowCounter
2
reserved
Must be 0
3
reserved
Must be 0
4
reserved
Must be 0
5
reserved
Must be 0
6
reserved
Must be 0
7
reserved
Must be 0
Last PDO error common values:
value
name
description
0
OK
No errors
2
frame overrun
A single frame exceeds the encapsulation capability supported by the current profile
3
packet overrun
frame packet exceeds this cycle frame area
4
unknown kind
KIND is illegal or not currently supported
5
invalid DLC
DLC does not match classic CAN/CAN FD rules
6
invalid channel
The channel number exceeds the capability range or is not enabled in the channel mask
7
invalid TSF
The timestamp format is not supported by the current profile or direction
8
truncated
The payload length is insufficient and the frame packet is truncated
9
unsupported profile
EncapsulationProfile is not in the capability mask
10
duplicate sequence
Duplicate RxPDO images received, usually treated as idempotent no-op
11
unsupported option
option flags contain unsupported bits
12
active area
active PDO/frame area is inconsistent with the master mapping
13
reserved bit
Control word or fixed header reserved bit is not 0
14
bad header
Fixed header version, length or field illegal
15
bad CRC
payload_crc16 verification failed
16
bad schedule
The reservation sending format is illegal or the capability is not supported
PDO error counter counts encapsulation layer errors such as parsing, CRC, and illegal fields; PDO overflow counter counts overflow or discarding caused by insufficient frame area in this cycle and TX/RX back pressure. During on-site inspection, first check Status, and then check LastPDOError and whether the two counters continue to increase.
12.2.1 0x8021..0x8024 MCAN Data Path Control
0x8021..0x8024 correspond to MCAN0..MCAN3. Normal applications should keep the firmware defaults. Override these values only when measurements under real CAN/CAN FD load show that the per-service budget is insufficient. These objects do not change bit timing, filters, or Message RAM configuration.
Object
Channel
0x8021
MCAN0
0x8022
MCAN1
0x8023
MCAN2
0x8024
MCAN3
The stable customer-facing subindices are listed below. Other subindices in these objects are advanced policies or reserved extensions and are not part of the customer interface contract.
SI
Name
Type
Access
Default
Description
1
Enable
U8
RW
1
0=disable the explicit data-path policy; 1=enable it
2
Apply command
U8
RW
0
Write 1 after the requested fields; the command returns to 0 after processing
3
Apply status
U8
RO
0
Result of the latest apply; 0=OK
5
RX drain budget max
U8
RW
2
Maximum frames drained from the MCAN receive path per service, range 0..8; 0 selects the firmware limit
12
TX budget max
U8
RW
4
Maximum frames written to the MCAN transmit path per service, range 0..8; 0 selects the firmware default
20
Active control word
U32
RO
0
Packed readback of the active policy, used to confirm that apply took effect
The following IgH MCAN Port API calls use these indices:
API
Startup SDO generated
igh_mcan_port_set_channel_rx_drain_budget()
0x8021 + channel : 0x05
igh_mcan_port_set_channel_tx_write_budget()
0x8021 + channel : 0x0C
After either budget setter is called, igh_mcan_port_apply_config() also writes SI1=1 for that channel and finally writes SI2=1. The default configuration does not write 0x8021..0x8024, preserving old-firmware compatibility and the factory policy. Raising a budget can increase instantaneous CAN bursts and CPU service load; always repeat loss-counter and latency-tail tests with real traffic.
12.2.2 Data-path budget configuration sequence
For manual configuration, use this order:
Confirm that the target firmware provides the object. If old firmware reports “object does not exist,” retain its default policy instead of failing the entire startup.
Write SI1=1.
Write only the required SI5 and/or SI12 override, in the range 0..8.
Write SI2=1 to apply.
Read SI3 and SI20 to confirm success and the active value.
12.2.3 Manufacturer test and maintenance objects
Data-path bypass tests, direct-register access, persistent maintenance, and manufacturing objects are reserved for manufacturer support. Customer applications must not depend on or write them. For advanced troubleshooting, read 0x9011, 0x9020..0x9023, the standard status and error counters, and export the runtime log.
12.2.4 0x9011 Cycle Performance Diagnostics
0x9011 exposes interrupt counts, PDI/DC phase, and worst-case firmware critical-path timing. All fields below are read-only except Clear command. Timing values are CPU cycles and can be converted using the CPU clock returned by 0x8000:04. A field may remain zero when its corresponding measurement is not enabled in the firmware build.
SI
Name
Type
Access
Description
1
PDI IRQ count
U32
RO
PDI interrupt count
2
Sync0 IRQ count
U32
RO
Sync0 interrupt count
3
Sync1 IRQ count
U32
RO
Sync1 interrupt count
4
PDI to Sync0 phase min
I32
RO
Minimum PDI-to-Sync0 phase difference
5
PDI to Sync0 phase max
I32
RO
Maximum PDI-to-Sync0 phase difference
6
APPL OutputMapping max cycles
U32
RO
Maximum RxPDO/OutputMapping execution time
7
APPL InputMapping max cycles
U32
RO
Maximum TxPDO/InputMapping execution time
8
MCAN PDO service max cycles
U32
RO
Maximum MCAN PDO service time
10
RxPDO parse max cycles
U32
RO
Maximum RxPDO parse time
11
ESC read max cycles
U32
RO
Maximum PDI/ESC read-path time
12
ESC write max cycles
U32
RO
Maximum PDI/ESC write-path time
13
Schedule service max cycles
U32
RO
Maximum scheduled-transmit service time
14
Clear command
U8
RW
Write 1 to clear these statistics; firmware clears the command after processing
Unlisted subindices are compatibility or manufacturer diagnostic extensions. Customer software must not interpret their bit layouts.
12.2.5 0x9020..0x9023 MCAN Data Path Diagnostics
0x9020..0x9023 correspond to MCAN0..MCAN3. They distinguish CAN receive backlog, insufficient PDO capacity, MCAN TX backpressure, bus-off, and an insufficient channel service budget.
SI
Name
Type
Access
Description
1
RX cache count
U16
RO
Receive frames currently waiting to be packed
2
RX cache high watermark
U16
RO
Historical receive-cache high watermark
3
RX drain last
U16
RO
Receive frames drained by the latest service
4
RX drain max
U16
RO
Historical maximum frames drained by one service
5
RX dropped total
U32
RO
Total receive drops
6
RX dropped old
U32
RO
Old-frame drop count
7
RX dropped new
U32
RO
New-frame drop count
8
RX dropped critical
U32
RO
Drops associated with critical-frame protection
9
TxPDO consumed last
U16
RO
Frames consumed by the latest TxPDO pack operation
10
TxPDO consumed max
U16
RO
Historical maximum frames consumed by one TxPDO pack operation
11
TX FIFO full count
U32
RO
MCAN TX FIFO/queue full or unavailable count
12
TX stale dropped
U32
RO
Expired transmit-frame drop count
13
Bus-off count
U32
RO
Bus-off count
14
Recovery attempts
U16
RO
Automatic recovery attempts
15
Degraded state
U16
RO
0=normal; nonzero=degraded or protected state
16
Last error
U32
RO
Latest data-path or low-level error code
17
Service max cycles
U32
RO
Maximum service time for this channel
18
Service last cycles
U32
RO
Latest service time for this channel
If RX cache high watermark stays near the cache limit while RX dropped total rises, CAN input or PDO packing is exceeding the configured capacity. A rising TX FIFO full count instead indicates insufficient CAN transmit capacity or a non-responsive downstream node. Interpret both together with the 0x8010/0x8011 overflow counters and the master's WKC.
12.3 0x8000 System Config
SI
Name
Type
Access
Default
Description
1
Reboot command
U8
WO
0
Write 1 to request software restart
4
CPU clock Hz
U32
RO
runtime
CPU clock used to convert the cycle counts in 0x9011
10
Config version
U32
RW
0
Master configuration version echo
11
Last apply result
U32
RO
0
Last apply result of system configuration
12
CAN pin rotation
U8
RW
0
Rotation of logical CAN channel to fixed pin group
13
Active CAN pin rotation
U8
RO
0
Current active rotation
14
CAN pin rotation mask
U8
RO
0x0F
Supported rotation bit mask
15
CAN pin apply status
U8
RO
0
Recent pin rotation application status
CAN pin rotation only allows rotation of logical channels between fixed sets of CAN pins at the chip/board level and does not provide arbitrary GPIO muxing configurations.
12.4 0x8001..0x8004 MCAN Channel Config
Each channel has the same structure. 0x8001 corresponds to CAN0, and 0x8004 corresponds to CAN3.
The subindices are grouped by function below. Most applications only need to configure SI15/16/19/20 and the required FIFO/Queue parameters; filters, TSU, and timeout settings are advanced options.
SI
Name
Type
Access
Default
Description
1
Apply command
U8
WO
0
Write 1 Apply channel configuration
2
Apply status
U8
RO
0
Recent apply results
3
Flash command
U8
WO
0
bit0 save, bit1 load, bit2 factory reset
4
Flash status
U8
RO
0
Recent flash command results
5
Command sequence
U32
RO
0
Command completion sequence number
6
Command Pad0
U32
RO
0
Reserved
7
Bit timing mode
U8
RW
0
0=automatic baud rate solution, 1=manual bit timing
8
Node mode
U8
RW
0
Normal / Loopback / Listen
9
Non-ISO enable
U8
RW
0
CAN FD Non-ISO mode
10
Transmit pause
U8
RW
0
MCAN transmit pause
11
Edge filter enable
U8
RW
0
Edge filter
12
Protocol exception disable
U8
RW
0
Disable protocol exception
13
Wide message marker enable
U8
RW
0
Extended message marker
14
External timestamp use
U8
RW
0
Use external timestamp source
15
FD enable
U8
RW
1
1=CAN FD, 0=classic CAN
16
TDC enable
U8
RW
1
CAN FD transmission delay compensation
17
Restricted mode disable
U8
RW
0
restricted operation mode control
18
Disable auto retransmission
U8
RW
0
1=Disable MCAN automatic retransmission
19
Nominal bitrate
U32
RW
500000
Arbitration section baud rate
20
Data bitrate
U32
RW
5000000
CAN FD data segment baud rate
21
Nominal SP min
U16
RW
750
Nominal sample point lower bound, unit 0.1%; when the peer sample point is known, write the peer target value
22
Nominal SP max
U16
RW
875
Nominal sample point upper bound, unit 0.1%; when the peer sample point is known, write the peer target value
23
Data SP min
U16
RW
750
CAN FD data sample point lower bound, unit 0.1%; when the peer sample point is known, write the peer target value
24
Data SP max
U16
RW
875
CAN FD data sample point upper bound, unit 0.1%; when the peer sample point is known, write the peer target value
25
Nominal BRP
U16
RW
0
Manual nominal prescaler, valid only when SI7=1
26
Nominal TSEG1
U8
RW
0
Manual nominal TSEG1, valid only when SI7=1
27
Nominal TSEG2
U8
RW
0
Manual nominal TSEG2, valid only when SI7=1
28
Nominal SJW
U8
RW
0
Manual nominal SJW, valid only when SI7=1
29
Data BRP
U16
RW
0
Manual CAN FD data prescaler, valid only when SI7=1
30
Data TSEG1
U8
RW
0
Manual CAN FD data TSEG1, valid only when SI7=1
31
Data TSEG2
U8
RW
0
Manual CAN FD data TSEG2, valid only when SI7=1
32
Data SJW
U8
RW
0
Manual CAN FD data SJW, valid only when SI7=1
33
TDC offset
U8
RW
0
0=automatic, not 0=manual TDCO
34
TDC filter
U8
RW
0
0=automatic, not 0=manual TDCF
36
Accept non-match std
U8
RW
0
Standard-frame action when no filter matches
37
Accept non-match ext
U8
RW
0
Extended-frame action when no filter matches
38
Reject remote std
U8
RW
0
Whether to reject standard remote frames
39
Reject remote ext
U8
RW
0
Whether to reject extended remote frames
40
Ext ID mask
U32
RW
0x1FFFFFFF
Extended ID global AND mask
41
Std list max
U8
RO
64
Maximum number of standard filters
42
Ext list max
U8
RO
24
Maximum number of extended filters
43
Std current index
U8
RW
0
Current standard filter index
44
Ext current index
U8
RW
0
Current extended filter index
45
Std entry cmd
U8
RW
0
Standard filter edit command
46
Ext entry cmd
U8
RW
0
Extended filter edit command
47
Std entry status
U8
RO
0
Standard filter command result
48
Ext entry status
U8
RO
0
Extended filter command result
49
Std filter count
U8
RW
0
Number of valid standard filters
50
Std filter type
U8
RW
0
Standard filter type
51
Std filter action
U8
RW
0
Action after a standard-frame filter hit
52
Std filter sync
U8
RW
0
Standard-frame sync message tag
53
Std ID1
U32
RW
0
Standard filter ID1
54
Std ID2
U32
RW
0
Standard filter ID2
55
Ext filter count
U8
RW
0
Number of valid extended filters
56
Ext filter type
U8
RW
0
Extended filter type
57
Ext filter action
U8
RW
0
Action after an extended-frame filter hit
58
Ext filter sync
U8
RW
0
Extended-frame sync message tag
59
Ext ID1
U32
RW
0
Extended filter ID1
60
Ext ID2
U32
RW
0
Extended filter ID2
61
RX FIFO0 op mode
U8
RW
0
FIFO0 operation mode
62
RX FIFO0 size
U8
RW
48
Number of FIFO0 elements
63
RX FIFO1 op mode
U8
RW
0
FIFO1 operation mode
64
RX FIFO1 size
U8
RW
12
Number of FIFO1 elements
65
RX FIFO0 data size
U8
RW
7
FIFO0 element data size enumeration
66
RX FIFO1 data size
U8
RW
7
FIFO1 element data size enumeration
67
RX buffer count
U8
RW
12
Number of RX buffer elements
68
RX buffer data size
U8
RW
7
RX buffer element data size enumeration
69
TX FIFO queue mode
U8
RW
0
0=FIFO, 1=Queue
70
TX FIFO queue size
U8
RW
32
Number of TX FIFO/Queue elements
71
TX dedicated buffer count
U8
RW
0
Number of dedicated TX buffers
72
TX buffer data size
U8
RW
7
TX element data size enumeration
73
TX event FIFO size
U8
RW
32
Number of TX Event FIFO elements
74
Timestamp selection
U8
RW
0
MCAN timestamp selection
75
Timestamp prescaler
U8
RW
0
MCAN timestamp prescaler
76
TSU enable
U8
RW
0
Enable TSU
77
TSU use external timebase
U8
RW
0
Use external timebase
78
TSU capture on SOF
U8
RW
0
SOF capture
79
TSU enable 64-bit
U8
RW
0
64 bit TSU
80
Pad2
U8
RO
0
Reserved
81
TSU prescaler
U16
RW
1
TSU prescaler, min 1
82
TSU external timebase source
U8
RW
0
External timebase source
83
TSU TBSEL option
U8
RW
0
TBSEL option
84
Timeout enable
U8
RW
0
Enable MCAN timeout
85
Timeout select
U8
RW
0
Timeout selection, 0..3
86
Pad3
U16
RO
0
Reserved
87
Timeout period
U16
RW
0
Timeout period
Channel commands and status:
Field
Value
Description
Apply command
0
no-op
Apply command
1
Apply the current SDO configuration to the runtime MCAN channel
Apply status / Flash status
0
OK
Apply status / Flash status
1
fail
Apply status / Flash status
3
build fail, configuration conversion failed
Apply status / Flash status
4
apply runtime fail, MCAN restart or driver application failed
Flash command bit0
1
Save current channel configuration to Flash
Flash command bit1
1
Load channel configuration from Flash
Flash command bit2
1
Restore the channel to factory default configuration
Node mode value:
value
description
0
Normal, normal sending and receiving
1
Restricted/monitor debugging mode, valid according to chip driver support
2
Internal loopback, internal loopback test
3
External loopback/listen debugging mode, valid according to chip driver support
Manual bit timing only takes effect at SI7 Bit timing mode = 1. In automatic mode, the master configures Nominal/Data bitrate and the sample point range, and the firmware solves BRP/TSEG/SJW according to the MCAN source clock. The sample point range should follow the peer device configuration: when the peer sample point is known, set both min and max to the target sample point; otherwise start from the peer documentation recommendation and verify frame exchange quality. In manual mode, SI25..32 is used.
Filter global fields:
SI
Name
Type
Access
Description
36
Accept non-match std
U8
RW
Processing strategy when the standard frame misses the filter
37
Accept non-match ext
U8
RW
Processing strategy when the extended frame misses the filter
38
Reject remote std
U8
RW
Whether to reject standard remote frames
39
Reject remote ext
U8
RW
Whether to reject extended remote frames
40
Ext ID mask
U32
RW
Extended ID global mask
41
Std list max
U8
RO
Maximum number of standard filters, currently 64
42
Ext list max
U8
RO
Maximum number of extended filters, currently 24
Filter editing window:
SI
Name
Type
Access
Description
43
Std current index
U8
RW
Current standard filter index
44
Ext current index
U8
RW
Current extended filter index
45
Std entry cmd
U8
RW
Execute command on the current standard filter index
46
Ext entry cmd
U8
RW
Execute command on the current extended filter index
47
Std entry status
U8
RO
Standard filter command result
48
Ext entry status
U8
RO
Extended filter command result
49
Std filter count
U8
RW
Number of valid standard filters
50
Std filter type
U8
RW
Standard filter type
51
Std filter action
U8
RW
Action after a standard-frame filter hit
52
Std filter sync
U8
RW
Standard-frame sync message tag
53
Std ID1
U32
RW
Standard filter ID1
54
Std ID2
U32
RW
Standard filter ID2
55
Ext filter count
U8
RW
Number of valid extended filters
56
Ext filter type
U8
RW
Extended filter type
57
Ext filter action
U8
RW
Action after an extended-frame filter hit
58
Ext filter sync
U8
RW
Extended-frame sync message tag
59
Ext ID1
U32
RW
Extended filter ID1
60
Ext ID2
U32
RW
Extended filter ID2
Entry cmd:
value
description
0
no-op
1
load current, read the current index entry into the editing window
2
save current, write the editing window to the current index
3
clear current, disable the current index entry
4
flash current, reserved; currently it is recommended to use channel Flash command to save uniformly
Entry status:
value
description
0
OK
1
index is invalid
2
command invalid
Typical filter configuration process:
Read Std list max / Ext list max to confirm the capacity.
Write Std filter count or Ext filter count.
Write current index.
Write filter type/action/sync/id1/id2.
Write entry cmd = 2 to save the current index.
Repeat to configure multiple entries.
Write Apply command = 1 to make the channel configuration take effect.
If you need to save when power off, write Flash command bit0 = 1.
RAM/FIFO/Buffer fields:
Note: the SI column below is decimal. Many master tools display subindices in hexadecimal. The commonly mentioned 0x41/0x42/0x44 are decimal 65/66/68, corresponding to the RX FIFO0, RX FIFO1, and RX Buffer element data sizes. These fields only define the maximum data bytes stored in one MCAN Message RAM element. They do not define the CAN FD DLC inside a PDO packet; the actual DLC is still carried by the frame packet in RxPDO/TxPDO.
SI decimal
SI hex
Name
Type
Access
Recommended default
Description
61
0x3D
RX FIFO0 op mode
U8
RW
0
FIFO0 operation mode, 0=blocking. When full, new frames do not overwrite old frames; observe diagnostics counters
62
0x3E
RX FIFO0 size
U8
RW
48
Number of FIFO0 elements; normally used for common receive frames
63
0x3F
RX FIFO1 op mode
U8
RW
0
FIFO1 operation mode, 0=blocking
64
0x40
RX FIFO1 size
U8
RW
12
Number of FIFO1 elements; can be used with filters for selected frames
65
0x41
RX FIFO0 data size
U8
RW
7
FIFO0 element data size enumeration; use 7 for 64B CAN FD
66
0x42
RX FIFO1 data size
U8
RW
7
FIFO1 element data size enumeration; use 7 for 64B CAN FD
67
0x43
RX buffer count
U8
RW
12
Number of RX buffer elements; used directly only when filters route to RXBUF
68
0x44
RX buffer data size
U8
RW
7
RX buffer element data size enumeration; use 7 for 64B CAN FD
69
0x45
TX FIFO queue mode
U8
RW
0
0=FIFO, 1=Queue; Queue is sorted by CAN ID arbitration priority
70
0x46
TX FIFO queue size
U8
RW
32
Number of TX FIFO/Queue elements; current recommendation is to use TX FIFO for all TX resources
71
0x47
TX dedicated buffer count
U8
RW
0
Number of dedicated TX buffers; current recommendation is 0 to avoid mixing with the FIFO path
72
0x48
TX buffer data size
U8
RW
7
TX FIFO/Buffer element data size enumeration; use 7 for 64B CAN FD
73
0x49
TX event FIFO size
U8
RW
32
Number of TX Event FIFO elements; recommended not less than TX FIFO/Queue count
data size uses the HPM MCAN driver enumeration and is not the byte value itself. Common values are:
Enum
Maximum data bytes
Typical use
0
8B
Classic CAN, or minimal RAM setup for 8B CAN FD only
1
12B
CAN FD 12B
2
16B
CAN FD 16B
3
20B
CAN FD 20B
4
24B
CAN FD 24B
5
32B
CAN FD 32B
6
48B
CAN FD 48B
7
64B
CAN FD 64B, current recommended default
The Message RAM budget is determined by both element counts and data size. The general CAN FD default is RXFIFO0=48, RXFIFO1=12, RXBUF=12, TXFIFO=32, TXBUF=0, TXEVENT=32, data size=7. Classic CAN may reduce data size to 0 to save RAM for more elements. If the configuration is illegal or exceeds the per-channel Message RAM budget, Apply status reports an error and the runtime channel does not switch to the new layout.
Timestamp/TSU/Timeout fields:
SI
Name
Type
Access
Description
74
Timestamp selection
U8
RW
MCAN timestamp selection, 0..2
75
Timestamp prescaler
U8
RW
MCAN timestamp prescaler
76
TSU enable
U8
RW
Enable TSU
77
TSU use external timebase
U8
RW
Use external timebase
78
TSU capture on SOF
U8
RW
SOF capture
79
TSU enable 64-bit
U8
RW
64 bit TSU
80
Pad2
U8
RO
Reserved
81
TSU prescaler
U16
RW
TSU prescaler, min 1
82
TSU external timebase source
U8
RW
External time base source
83
TSU TBSEL option
U8
RW
TBSEL option
84
Timeout enable
U8
RW
Enable MCAN timeout
85
Timeout select
U8
RW
timeout select, 0..3
86
Pad3
U16
RO
Reserved
87
Timeout period
U16
RW
timeout period
TDC Strategy:
CAN FD default TDC enable=1.
When the data segment is less than 5M, the master can turn off TDC through SDO.
When the data segment reaches 5M or more, the firmware ignores TDC enable=0 and forcibly turns on TDC.
TDC offset/filter defaults to 0, which means it is automatically calculated by the HPM MCAN driver according to the actual data segment timing.
TDC offset/filter that is not 0 is still retained by the firmware and distributed to the MCAN driver for debugging by on-site experts.
It is recommended to configure offset/filter in pairs when manually overwriting.
12.5 0x9000..0x9003 MCAN Channel Information
These objects are RO and use the S2M direction. The master reads them when it needs detailed channel status beyond the compact PDO header state.
SI
Name
Type
Access
Description
1
ECR raw
U32
RO
Error count register
2
PSR raw
U32
RO
Protocol status register
3
IR raw
U32
RO
Interrupt bit snapshot
4
RXF0S raw
U32
RO
RX FIFO0 status
5
RXF1S raw
U32
RO
RX FIFO1 status
6
TXFQS raw
U32
RO
TX FIFO/Queue status
7
TXEFS raw
U32
RO
TX Event FIFO status
8
HPMS raw
U32
RO
High priority message status
9
PDO channel status
U16
RO
Status word with the same semantics as the PDO header
10
RX pending count
U16
RO
Not saturated RX pending
11
TX pending count
U16
RO
Not saturated TX pending
12
Channel event flags
U16
RO
latched warning/busoff/pressure/state-change
13
RX dropped counter
U32
RO
PDO frame dropped count before packaging
14
TX backpressure counter
U32
RO
TX queue full/backpressure count
15
Bus off counter
U32
RO
BusOff migration count
16
Detail sequence
U32
RO
Detail snapshot change sequence number
12.6 Manufacturer maintenance interfaces
!!! danger "Non-public interfaces"
Register access, factory maintenance, and persistent-storage repair are not public product APIs. Never modify controller registers or device storage through SDO at a customer site. Use the official service process for recovery or advanced diagnosis.
12.7 0xF000 Device Objects
The master must read the 0xF000 capability object before selecting the PDO profile.
The object is RO and the direction is S2M. It is used by the master to identify the device capabilities, version and protocol upper limit.
SI
Name
Type
Access
Default
Description
1
Device type
U8
RO
runtime
Product type: 0=ECAN-Lite; other values identify customized models
2
Channel count
U8
RO
4
MCAN channel count
3
Capability version
U16
RO
0x0001
Capability object version
4
Hardware revision
U32
RO
runtime
Device hardware revision; returns 0 when unavailable
5
Firmware version major
U16
RO
runtime
Firmware major-version field
6
Firmware version minor
U16
RO
runtime
Firmware minor/build field
7
Serial number low
U32
RO
runtime
Low 32 bits of the device serial number; returns 0 when unavailable
8
Serial number high
U32
RO
runtime
High 32 bits of the device serial number; returns 0 when unavailable
9
PDO header version mask
U16
RO
0x0006
Support header versions 1 and 2
PDO capabilities and upper limits:
SI
Name
Type
Access
Default
Description
10
PDO size base min
U8
RO
1
Minimum low-5-bit 128B base count
11
PDO size base max
U8
RO
10
Maximum low-5-bit 128B base count, not the maximum encoded U8 value
Supports fine-grained data-path bypass diagnostics; not for normal applications
13
HEADER_V2
Supports the compact V2 PDO header
Device service flags:
Bit
Description
0
Support FoE firmware update
2
Support configuration persistence saving/loading
4
Support maintenance access-level status
RxPDO reserves the TSF_FULL64 field of the multiplexed dynamic frame and does not change the ordinary CAN frame packet structure:
text
format:u8 = 1
flags:u8 = 0
tag:u16
offset_ns:u32
TSF_NONE is still sent immediately; TSF_FULL64 format=1 means offset_ns phase sending is reserved for the next SYNC0 cycle. The same phase is queued in PDO frame order.
Reservation delivery implementation constraints:
The master must first confirm that bit 8 (mask 0x00000100) is set in 0xF000:16, indicating RxPDO TSF scheduled-transmit support.
offset_ns takes the current EtherCAT DC/SYNC0 cycle as a reference. It is recommended to use 100000ns or a larger conservative phase for bring-up first.
The device schedules reserved frames according to the SYNC0 phase; frames that have exceeded the target phase will not be retransmitted across cycles, and the master should reserve sufficient offset_ns margin.
Scheduled sending and direct sending share the CAN sending path; when the channel is congested or sending is abnormal, feedback is provided through PDO status and SDO diagnostic count.
When the master is stopped, the ESC process data area may keep the last frame of RxPDO image; the firmware treats the exact same repeated image as idempotent no-op and does not record it as a real parsing error.
12.8 Comparison of real-time performance between scheduled delivery and direct delivery
Method
Characteristics
Recommended use
Direct sending
Submits a CAN frame as soon as possible after a valid RxPDO arrives; the phase follows the master's PDO arrival time
Normal control, functional validation, and communication without a fixed-phase requirement
Scheduled sending
Releases a CAN frame at offset_ns within a DC/SYNC0 cycle
A stable master cycle that requires a fixed CAN transmit phase
Scheduled sending cannot compensate for an unstable master cycle. Before enabling it,
verify a stable EtherCAT cycle, DC state, and WKC, then validate the transmit phase with a
CAN analyzer under the actual cabling and load.
13. Technical specifications
Parameters
Specifications
Main Control
HPMicro HPM5E00 Series RISC-V MCU
EtherCAT
2-port, 100Mbps, CoE/FoE
CAN
4-channel MCAN
CAN Protocol
CAN 2.0A/B, CAN FD ISO
CAN FD data field
Maximum 64B
Recommended real-time PDO
SM: 128B RxPDO and 256B TxPDO; DC: 384B in each direction; revalidate the target cycle when using a larger PDO
Max PDO
1392B/direction
PDO size unit
128B base blocks with optional 16B fine adjustment
PDO fixed header
Default V1: 24B on HPM5E, 32B on HPM6E; explicit V2: 16B/20B
PDO package
2B control word + CAN ID + optional timestamp + Data
Standard ID Field
2B
Extended ID field
4B
timestamp/reservation packaging
off / delta16, delta32/full64; RxPDO full64 format=1 for SYNC0 phase reservation
TDC
turned on by default, forced to turn on for 5M and above
Parameter persistence
Flash configuration image, CRC32
Firmware Maintenance
FoE Support
CPU/mchtmr
CPU 400MHz, mchtmr 24MHz
Validated master profiles
sm_250us_1ms (default, 250us subcycle/1ms per channel) and dc_1ms_cross_cycle (1ms, Sync0 shift 900us)
14. Revision history
Version
Date
Description
V3.0
2026-08
Split the combined manual into a technical reference and an application workflow without dropping protocol, object-dictionary, or diagnostic detail; unified the default as V1 with CRC disabled (OptionFlags=0x04), with V2 described in the PDO-header chapter and selected explicitly by the master