wiki/ CanNodeFirmwareGps

LV2 GPS CAN Node Firmware

This node interfaces a Rockwell AKA Conexant now AKA SiRF "Jupiter" GPS Board (firmware v2.30) to the LV2 CAN bus. The current board is a PIC16F877+SJA1000 PCB modified to use a PIC18F458.

Jupiter GPS Messages We care about:

1000 -- Geodetic Position Status Output
1003 -- Visible Satellites
1009 -- ECEF Position Status Output

These three messages contain the position date from the Jupiter board - position output in ECEF (preferred) and lat/lon/alt coordinates. We don't really need the lat/lon/alt data since they can be converted directly from the ECEF data, but they are essentially free from the GPS and thus there's no reason to make the FC or the ATV node (which needs to display lat/lon/alt on the ATV overlay) redo the calculation.

1102 -- Measurement Time mark Message (Measurement Engine Raw Data)

Here's the real information. We currently have no idea what it means, but we'll grab it and store it for future post-processing (i.e., DGPS post-processing). In the future, the FC will be munching on this data itself doing GPS measurements.

Jupiter EEPROM Settings:

Here's the list of bits we set on the Jupiter board using LABMON:

Current Firmware Features:

  1. Only sends CAN messages if the GPS message checksums (header and data) are ok (example: bit errors on the serial line).
  2. Doesn't miss a GPS message if the previous GPS message is incomplete - in other words, it's continuously looking for headers (example: GPS board reset due to brown outs).

Future Firmware Features (in no particular order):

  1. Do a BIT on the GPS board and interpret the results.
  2. Make sure all of the EEPROM settings on the Jupiter board are correct.
  3. GPS operating properly alogrithm: Check for screwups (dropped messages, timing of messages, etc.) and report to the FC.

Questions to pose to SiRF: