What is the latest ROM version for the ISM420? How do I read it?

The base part number is ISM420R1-C33. The ROM Code part number can be read from the GPS in OSP (Sirf Binary) mode only and the version is :  “GS4e -4.1.2-P1”.

The GPS will initially come up in OSP at 115200 baud, unless you change it with the strapping pins 4 and pin 5 or have a SPI or EEPROM attached and then unit will start in NMEA 4800.

OPS MID 129 routine (switch from OPS to NMEA) for ISM420-480 EVB

Function: OSPMID129

Description: Send SiRF MID 129 (Switch to NMEA Protocol) to GPS in OSP mode


// where: A0A20018 - Start sequence/Payload length
// 81020101000101010501010100010001001000012580 - Payload
// 01ABB0B3 - Checksum/End sequence
// 81 MID
// 02 Mode: 00-Enable NMEA debug msg
// 01-Disable NMEA debug msg
// 02-Don't change last set value
// 01 GGA message rate (sec)
// 01 Checksum GGA message
// 00 GLL message rate (sec)
// 01 Checksum GLL message
// 01 GSA message rate (sec)
// 01 Checksum GSA message
// 05 GSV message rate (sec)
// 01 Checksum GGA message
// 01 RMC message rate (sec)
// 01 Checksum RMC message
// 00 VTG message rate (sec)
// 01 Checksum VTG message
// 00 MSS message rate (sec)
// 01 Checksum MSS message
// 00 EPE message rate (sec)
// 01 Checksum EPE message
// 00 ZDA message rate (sec)
// 01 Checksum ZDA message
// 00 Unused
// 00 Unused
// 2580 Bit rate 0480=1200, 0960=2400, 12C0=4800, 2580=9600,
// 4B00=19200, 9600=38400, E100=57600
//
void OSPMID129(char mode[], char GGA[], char GLL[], char GSA[], char GSV[],
char RMC[], char VTG[], char MSS[], char EPE[], char ZDA[],
char rate[])
{
char msg[65] = "A0A2001881"; // OSP msg start
char bmsg[32];
char csum[6];
char tmp[2];
unsigned int checksum = 0;
int i;
int j = 0;
strcat(msg,mode); // Add mode
strcat(msg,GGA); // Rate/CS
strcat(msg,GLL); // Rate/CS
strcat(msg,GSA); // Rate/CS
strcat(msg,GSV); // Rate/CS
strcat(msg,RMC); // Rate/CS
strcat(msg,VTG); // Rate/CS
strcat(msg,MSS); // Rate/CS
strcat(msg,EPE); // Rate/CS
strcat(msg,ZDA); // Rate/CS
strcat(msg,rate); // Add bit rate
strcat(msg,"0000"); // Add unused
for (i=8;i<strlen(msg);i+=2)
{
memcpy(&tmp,&msg[i],2);
checksum += axtoi(tmp); // Sum
checksum &= 0x7FFF;
}
sprintf(csum,"%04X",checksum); // Convert hex string
strcat(msg, csum); // Add checksum
strcat(msg,"B0B3"); // Add End sequence
strcat(msg, NULL); // Terminate
/* Convert to binary & send */
for (i=0;i<strlen(msg);i+=2)
{
memcpy(&tmp,&msg[i],2);
bmsg[j] = axtoi(tmp); // Convert & store
USART_SendChar(GPS_USART, bmsg[j]); // Send byte
j++;
}
DPRINT(msg); // Send to console
}

Is flash enable required on the GPS? Reset?

  • The FLASH_EN is only needed to Flash the GPS.
  • Reset is needed is you want to exit Flash mode without powering off the GPS. Otherwise not needed in normal operation
  • The ISM480 powers up in an off state. The On/Off pin needs to be toggled to turn ON the GPS.
  • Once the On/Off pin has been toggled you monitor Wake-up pin to change from low to high.
  • This indicates the GPS is running and data should start streaming out of the serial port.

What inductor do you use for the RF antenna connection?

The ISM420 requires the use of the following circuit in the front end if you plan on using an active antenna. The circuit is not required if you elect to have no power and use a passive antenna.

RFin connects to the Antenna and the input to the GPS. In the case of the ISM420 inputs are 3.3V tolerant. So no protection needed to the GPS

Antenna Global Positioning System Front-End

We use the 0603HP – 33NXGLW inductor you can find at digi-Key.

How do I set the data rate of the NEMA messages used?

Here is the function call:

/* Set the rate of the NMEA messages used */
PSRF103("00", "00", "01", "02");
// GGA at 1 sec rate
Here is the function:
//-----------------------------------------------------------------------------
// Function:    PSRF103
// Description: Send SiRF msg 103 to GPS
//-----------------------------------------------------------------------------
// where:        $PSRF103,05,00,01,01*20
//   $PSRF103
//   05         00=GGA
//              01=GLL
//              02=GSA
//              03=GSV
//              04=RMC
//              05=VTG
//   00         mode, 0=set rate, 1=query
//   01         rate in seconds, 0-255
//   01         checksum 0=no, 1=yes
//   *20        checksum
void PSRF103(char nmeamsg[], char mode[], char rate[], char chksum[])
{
char msg[25] = "$PSRF103";                              // NMEA msg
char csum[2];
unsigned short checksum = 0;
int i;
strcat(msg,",");
strcat(msg,nmeamsg);                                    // Add NMEA msg
strcat(msg,",");
strcat(msg,mode);                                       // Add mode
strcat(msg,",");
strcat(msg,rate);                                       // Add rate
strcat(msg,",");
strcat(msg,chksum);                                     // Add checksum mode
for (i=1;i<strlen(msg);i++)
checksum ^= msg[i];                                   // XOR
sprintf(csum,"%02X",checksum);                          // Convert hex string
strcat(msg,"*");                                        // Add checksum delimeter
strcat(msg, csum);                                      // Add checksum
strcat(msg,"\r\n");                                     // Add CR, LF
USART_SendString(GPS_USART,msg);                        // Send msg
DPRINT(msg);
}

How do you change the GPS output rate from a true 1Hz to 5Hz?

To enable the 5 Hz, use OSP MID 136.  The field “Position Calc Mode” can be interpreted this way:

Bit Mapped.  When set to 1, a bit enables the function.

Bit     Function

—-      ———–

0     Almanac Based Positioning

1     Reverse EE

2     5 Hz Navigation

3     SBAS Ranging

4     Fast time Sync

So set bit 2 to a 1 to enable 5 Hz navigation.

reference OSP document

What is the difference between the Sirf Binary and the OSP One Socket Protocol?

CSR (SirF) change the binary protocol whne they introduced the Sirf IV gps modules. The protocols are very similar but OSP has additional features.

Is you are using the ISM300x family of GPS modules use the Sirf Binary. If you are using the ISM4xx family then use OSP.

How do I confirm my firmware revision on the GPS module?

The GPS modules do not come marked with the Firmware version. You can poll the software using Sirf Binary for the ISM300fx modules and use OSP (one Socket Protocol) for the ISM4xx version of gps modules.

If you want to run your GPS in Nema, you will need to switch to either Sirf Binary or OSP and send the module the message ID 132 – Poll Software version.

What application do you have to help troubleshoot the GPS design?

Ideally, if you can connect your PC to the UART for any of the ISM300x or ISM400x GPS modules you can run the Sirf Live. Sirf Live will show you all the satellites and C/no and allow you to send commands and become familiar with the GPS.

Simply contact sales@inventeksys.com for a free copy of the software.