Re: Signed signal value in CAN bus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
On vr, 13 sep 2019 10:38:23 +0200, Romain Forlot [IoT.bzh] wrote:
> Hi everyone,
> 
> I have a question about signed numbers in CAN, but I try to handle sign of a
> signal's value whenever it is a signed value.
> 
> I would like to have something that works in any cases obviously but for
> what I found, signed value in CAN bus isn't standardized.
> 
> You can have:
> 
>  * signal on N-1 bits, with the subtracted bit representing the sign
>  * either with 1's complement
>  * or 2's complement.
> 
> You could have some bitfield not encoded within classics bytes but in 3 or
> 13 bits by example, so it could complicate the computing of the signed value
> depending on the chosen method.

A common method is to define a range, like -1000 to 1000 to be encoded
into 0..2000 unsigned.
In this example, you require 11bits.
The advantages of doing so are:
1) it's not so difficult to convert to/from bitfields, i.e.
   as you found, properly decoding a negative number from an 11bit value
   is a bit obscure.
2) it leaves explicit room for special/fault codes, above the defined range.

Kind regards,
Kurt




[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux