Automotive and Embedded Networks

cancel
Showing results for 
Search instead for 
Did you mean: 

ncSetAttr.vi returns error for setting Transciver mode with USB8472 hardware

I am using a NI-USB 8472 (low speed CAN @ 33333kbps) device and am trying to set it up for the wakeup mode which states in the devices spec that it has this capability.  However, attached is the quick test code that returns and error when using the ncSetAttr.vi to change the transciver mode from normal to wakeup
 
The error returned from the ncSetAttr.vi is 0xBFF62104: The property ID, attribute ID, or operation code that you provided is invalid.  Solution: Read the function description and verify that you provide ad valid ID.
 
As far as I can see I have everything configured and set appropriately for it to work.  Anyone that could help out with why the hardware is not properly being configured for this mode would be appreciated.
 

0 Kudos
Message 1 of 8
(7,368 Views)

Your example VI uses the "Transmit Mode" property that is not supported for USB hardware. You should use the "Transceiver Mode" property to initiate a local wakeup. 😉

DirkW

0 Kudos
Message 2 of 8
(7,361 Views)

Thanks for the overlook.  However, if I change it to Transciever Mode with a value of 2 for wakeup (or any value) I now get the following error when the ncSetAttr.vi runs:

Error -1074388987 occurred at NI-CAN Configure
Network Interface Object
(ncConfigCANNet.vi)

Possible reason(s):

NI-CAN:  (Hex 0xBFF62005) The value of one or more properties (attributes) is invalid. This error occurs for Set (one value bad) or Initialize/Config (one or more values bad).  Solution: Consult the Programmer Reference to verify the values of each property.

 

I looked at the help and the values allowed are 0-3 so not sure why it is generating an error?

0 Kudos
Message 3 of 8
(7,359 Views)

Hi Jim,

The CAN BaudRate control on the front panel is determining the baud rate for your application. I have modified your code and it is working now.

Thank you,

Simran K
National Instruments
Applications Engineer
0 Kudos
Message 4 of 8
(7,341 Views)
That may have been generating that error and yes it does work as long as the value is set to 0.  However, if I try to set it to a value of 2 or 3 in your example I get the following error:
 
Possible reason(s):
NI-CAN:  (Hex 0xBFF6211E) You set a transceiver mode that is not supported by your CAN hardware. For example, Single-Wire modes are not supported for High-Speed or Low-Speed / Fault-Tolerant transceivers. Solutions: Consult the manual to determine the valid transceiver modes for your hardware.
 
 
I notice in MAX that my hardware is listed as Low-Speed/Fault Tolerant so that is why it is generating that error.  However, all documentation for the USB-8472 states that sleep mode/wakeup mode is supported for this device so why does it not allow it.  Can the type be changed from Low-Speed / Fault tolerant to  Single-Wire or is this a hardware component (i.e. transciever) inside the hardware. 
 
Also if this is not supported for this device then why does it state so in documentation (copied below)?  If not supported for this device, the documentation is very misleading!
 

CAN Interfaces

USB-847x CAN interfaces feature the industry-standard Philips SJA1000

CAN controller, which implements ISO 11898 CAN functionality. The

SJA1000 offers additional features to aid in system development,

including listen-only mode, sleep/wakeup mode, error counter access,

and self-reception (echo) mode. USB-847x CAN interfaces recognize

standard (11-bit) and extended (29-bit) arbitration IDs and are compatible

with J1939 networks.

 

0 Kudos
Message 5 of 8
(7,339 Views)

Hi,

To set your  Low Speed/fault tolerant module to sleep just use the set attribute function with transceiver mode "sleep" (1). From there you have two ways to wakeup the transceiver again. The Local wakeup would be the set attribute function call with transceiver mode "normal" (0). The remote wakeup would be a transmitted frame from any other connected CAN node.

See the function help for the transceiver mode property for more information.

DirkW

0 Kudos
Message 6 of 8
(7,319 Views)
I realize that would normally work.  However, the ECU we are using needs the HVWU (setting = 3) to wakeup but using that value returns the error mentioned above.
0 Kudos
Message 7 of 8
(7,316 Views)
The 4 values for transceiver mode are:
0 - Normal
1 - Sleep
2 - Single-Wire Wakeup
3 - Single-Wire High-Speed

You have a USB-8472, which has a Low-Speed transceiver, which is different from a single-wire transceiver. Options 2 and 3 are not valid for this hardware. Is your bus a low-speed bus or a single-wire bus?
0 Kudos
Message 8 of 8
(7,311 Views)