05-16-2026 03:39 AM
Hello NI Community,
I am developing an automated CAN physical layer validation system in LabVIEW using a PXIe-5111 oscilloscope. The goal is to validate CAN electrical characteristics against ISO 11898-2.
Oscilloscope: NI PXIe-5111
Driver: NI-SCOPE in labview
CAN speed: 250 kbps (Classical CAN, ISO 11898-2)
CH0 → CAN_H
CH1 → CAN_L
Probe: 10x passive probe, 1 MΩ input impedance
Sample rate: 10 MS/s
Record length: 50,000 samples
Trigger: Rising edge on CH0 at 3.0V
I am currently validating:
CAN_H dominant/recessive
CAN_L dominant/recessive
Differential voltage (Vdiff)
Peak dominant Vdiff
Recessive Vdiff floor
Peak-to-peak differential amplitude
Thresholds are derived from ISO 11898-2:2024:
Table 3 → recessive state
Table 5 → dominant state
My current LabVIEW flow is:
Initialize NI-SCOPE
Configure vertical/horizontal timing
Configure analog edge trigger
Acquire CAN_H and CAN_L waveforms
Extract Y arrays
Use:
Array Max → dominant levels
Array Min → recessive levels
Compute:
Vdiff = CAN_H − CAN_L
Compare against ISO thresholds
Generate PASS/FAIL result
The issue is that CAN edges contain ringing and overshoot artifacts.
Because I am using raw Array Max and Array Min, even a single transient sample can corrupt the measurement.
Example:
True dominant CAN_H level ≈ 3.65V
One ringing spike reaches 4.10V
Array Max reports 4.10V
Similarly:
Recessive ringing can briefly drive Vdiff slightly negative
Array Min then produces false failures
So the measurement becomes sensitive to edge artifacts rather than representing the steady-state bus condition intended by ISO 11898-2.
Use a percentile (95th/99th) instead of raw max/min.
Pros:
Simple implementation
Rejects isolated spikes
Concern:
Percentile selection feels somewhat arbitrary for compliance testing
Use histogram analysis to identify dominant and recessive voltage clusters, then calculate the mean of each cluster.
Pros:
Physically representative
Similar to oscilloscope statistical measurements
Concern:
More implementation complexity
Create a dominant-state mask using:
Vdiff > 0.9V
Then:
Extract only confirmed dominant samples
Compute mean CAN_H / CAN_L values from masked samples
This naturally excludes:
recessive bits
transitions
ringing regions
This feels closest to measuring the actual steady-state dominant bus voltage.
Use NI-SCOPE scalar measurements such as:
VOLTAGE_HIGH
VOLTAGE_LOW
I understand these internally use histogram/statistical methods.
However, I am unsure whether they are appropriate for a two-state CAN waveform versus a more traditional periodic digital waveform.
For CAN electrical compliance measurements, which methodology is generally considered most appropriate?
Are NI-SCOPE measurements like VOLTAGE_HIGH / VOLTAGE_LOW suitable for CAN waveforms with dominant/recessive states?
Is the threshold-masked mean approach considered valid for ISO-oriented automated testing?
Has anyone implemented a similar CAN physical-layer validation system using PXI hardware and NI-SCOPE? If so, what measurement strategy did you use to avoid ringing-related false readings?
Any guidance or practical experience would be greatly appreciated.
Thank you.