Receiving NMEA messages over SPI
NMEA is a data message format supported by most GPS receivers. The ZOE-M8Q outputs NMEA sentences by default. These sentences are ASCII text, starting with the $
character, followed by comma-separated fields. Raw NMEA messages are not always easy to read, so we will use a parser to add helpful annotations to the data fields.
What we want to do is read the stream of NMEA sentences from the ZOE-M8Q out of the /dev/spidev0.0
interface. Since SPI is full-duplex, this also means writing to /dev/spidev0.0
, although we can simply write the same 0xFF value over and over again. There is a program called spi-pipe
that is designed to do this sort of thing. It is part of the spi-tools
package, along with spi-config
. Rather than relying on spi-pipe
, I chose to modify spidev-test
so that it streams the ASCII input from the GPS module to stdout. The source for my spidev-read
program can be found in this book's code archive, inside the MELP/Chapter12/spidev...