Today I received the NavSpark and two NS-RAW GPS receivers I preordered from SkyTraq back in January. The NavSpark is a programmable SPARC-based GPS receiver, while the NS-RAW is one of the cheapest GPS receivers available with raw measurement output for RTK positioning. In recent months, it became clear that the two receivers would be virtually identical hardware-wise, just with different firmware.
On receiving the boards, the first thing I did was look for the differences. The most obvious difference is that the NavSpark has version 1.4 of the PCB, while the NS-RAW is built using version 1.3. The only difference I could find between the revisions is that version 1.3 left out the pull-up resistor on the SDA I2C line. SkyTraq seems to have used the flawed boards for the NS-RAW since it is not supposed to be programmable and thus won’t make use of I2C. This extra resistor can be seen below; version 1.3 is on the left, while version 1.4 is on the right.
I can also identify one, possibly two component differences between the two boards. The boards have different TCXOs; my guess is the one on the NS-RAW is more accurate, but I haven’t been able to determine the part numbers or find datasheets. The SAW filters might also be different, but I’m not certain. The one on the NavSpark is marked JF3, while the one on the NS-RAW is marked JF2. They might be different parts, but the markings could also just be different date or batch codes on the same part. The different TCXOs can be seen in the lower-left in the image below, while the SAW filters can be seen at the top, just right of center; the NavSpark is on the left, while the NS-RAW is on the right.
Lastly, there may also be differences in the values of some of the passive components, but that cannot be gleaned from visual inspection.
From a software perspective, the NavSpark is designed to be programmed, while the NS-RAW is not, but it also outputs raw measurement data. I suspect one could probably program the NS-RAW with a file for the NavSpark, but I don’t want to try it without a copy of the NS-RAW firmware to put back. However, since both boards have the same Vensus822 chip, the NavSpark is capable of raw measurements as well, albeit likely at lower quality due to the different crystal. One would either need a copy of the NS-RAW firmware to flash or need to reverse engineer the ASIC’s carrier-phase interface and the provided GPS library’s pseudorange interface.
On the topic of the provided GPS library, some interesting information can be gleaned from running the
strings command on the library, namely the filenames of all the C source files used to compile it. In my opinion, the most interesting are the existence of files that reference raw measurement output and differential GPS. Unfortunately on disassembly, the corresponding object files proved empty. The contents are probably surrounded with
#endif statements that were not enabled when compiling the library, explaining why the files are there but the code is not. The complete list of C files is below.