After a bit more research, I realized that not only do you have to set up the PCAN-USB FD device parameters for communicating FD using the
command, you also have to explicitly specify for each message whether you want to send an FD message frame and whether to use brs (bit rate shifting) for the higher data rate. This is evident in the cansend man page
Code: Select all
Usage: cansend - simple command line tool to send CAN-frames via CAN_RAW sockets.
Usage: cansend <device> <can_frame>.
<can_frame>:
<can_id>#{R|data} for CAN 2.0 frames
<can_id>##<flags>{data} for CAN FD frames
<can_id>:
can have 3 (SFF) or 8 (EFF) hex chars
{data}:
has 0..8 (0..64 CAN FD) ASCII hex-values (optionally separated by '.')
<flags>:
a single ASCII Hex value (0 .. F) which defines canfd_frame.flags
The extra # tells cansend to send and FD frame, and the <flags> character needs to be a 1 to force BRS for the data bytes.
Still have to figure out how to have an application, say, in C++, tell the interface to use FD with BRS.