NMEA парсер для обработки данных GPS/ГЛОНАСС приемника

При разработке микроконтроллерной системы, содержащей GPS/ГЛОНАСС приемник, необходимо получать и декодировать его сообщения, превращая текстовые посылки в удобочитаемый формат. Как правило, GPS приемник выдает сообщения через последовательный порт в формате NMEA. NMEA парсер превращает данные в формате NMEA, получаемые от GPS-приемника, в массив более удобоваримой информации (широта, долгота, высота над уровнем моря и т. д.).

Программа тестировалась на микроконтроллере STM32F217 при совместной работе с GPS/ГЛОНАСС модулем Geos-1M, но, думаю, с минимальными переделками подойдет для любого другого контроллера, так как не использует никаких специфических ресурсов STM32. При использовании другого микроконтроллера необходимо только переписать процедуру void USART1_IRQHandler(void) (т. е. собственно процедуру получения данных из UART).

Вид структуры, получаемой из NMEA, показан на иллюстрации справа. В структуру транслируются все имеющиеся данные, от времени и географических координат до списка видимых спутников. Ключевые показатели, вычлененные из NMEA-посылки, показаны на иллюстрации красными прямоугольниками. NMEA посылка содержит множество данных, часть из которых может показаться вам избыточной. Исходный код ниже представляет собой фактически три отдельных парсера: uint8_t NMEA_Parser_GGA(void), uint8_t NMEA_Parser_ZDA(void) и uint8_t NMEA_Parser_GSV(void), которые соответственно обрабатывают GGA, ZDA и GSV сентенции NMEA последовательности.

Разумеется, если часть этой информации вам не нужна, то и соответствующий парсер можно не использовать. Кроме того, как правило, GPS приемники поддерживают команды отключения выдачи части сентенций, так что вы можете блокировать выдачу по последовательному порту лишней для вас информации.

 

Закладка Постоянная ссылка.

Добавить комментарий

  • Несколько случайная, но довольно любопытная информация:

    «Я беру на себя смелость предсказать, что метод освобождения энергии синтеза термоядерной реакции контролируемым способом будет найден в ближайшие два десятилетия. Когда это произойдет, энергетическая проблема всего мира будет поистине разрешена навсегда, потому что топлива тогда будет так же много, как и тяжелой воды в океанах», — индийский физик-теоретик Хоми Баба, председатель Международной Конференции по мирному использованию атомной энергии, Дворец наций, Женева, 1956 год.