Thanks @d3irb!
So looks like the older firmware version has better labels and makes more sense to me. From what I can gather, the Holley CAN ID is similar to the Racepak protocol and runs at 1mbps but has a slightly different structure for the ID:
Bits 28:28 – Command Bit (=0 for broadcast i think)
Bits 27:25 – Target ID (I think 101= broadcast)
Bits 24:22 – Source ID (haven't confirmed if 010 is hefi like Racepak but pretty sure it is)
Bits 21:11 – Target Serial (used as a channel # index, index #1 is RPM)
Bits 10:0 – Source Serial Number (11 bits)
So assuming the structure above, the CAN ID for RPM with the source serial number masked out (using 0xfffff800) would be 0x14100001.
For the data:
First 4 Bytes: This would be the Value field. These bytes are combined into a 32-bit value. I haven't found any evidence of a scale or offset factor being applied.
Second 4 Bytes: This would be the Status field. Usage is TBD.
RPM = (RxMessage.Data[1] << 8 ) | RxMessage.Data[0];
Example:
If the CAN message has:
CAN_ID = 0x14100001
RxMessage.Data[3] = 0x0
RxMessage.Data[2] = 0x0
RxMessage.Data[1] = 0x09
RxMessage.Data[0] = 0xC4
---------------
uint32_t RPM = RxMessage.Data[0] |
(RxMessage.Data[1] <<
|
(RxMessage.Data[2] << 16) |
(RxMessage.Data[3] << 24);
Then:
RPM = 2500 RPM
My car is currently not operational or else I'd log and confirm. Anyone have a Holley CAN trace / log they can share?