Как читать данные GPS Adafruit с помощью STM32?

Я использую плату STM32 Nucleo-F334R8 и Ultimate GPS Breakout V3 от Adafruit.

Я пытаюсь прочитать данные GPS с помощью Putty на моем компьютере, используя последовательную связь.

В конце я хочу получить данные GPS на моей плате F334R8, а затем отправить их на RaspberryPi 3 с последовательной связью. У меня пока много проблем, я пишу код на Mbed Compiler Online и на всех время, когда я чувствую, чтобы найти решение, становится еще хуже.

У кого-нибудь есть решение для меня?

РЕДАКТИРОВАТЬ: Хорошо, спасибо! Я также пытаюсь отправить полученные данные на Raspberry Pi 3 через последовательную связь. Я подключил D15 и D14 к TX и RX Raspberry, но когда я использую:

#include "mbed.h"
#include "MTK3339.h"

static int waitData = 0;
static MTK3339 gps(D8, D2);
static float latitude = 0;
static float longitude = 0;

Serial rasp(D15, D14); // D15 = RX, D14 = TX

static void dataAvailable() {
    waitData |= gps.getAvailableDataType();
}

int main(void) {

    gps.start(&dataAvailable, (MTK3339::NmeaGga|MTK3339::NmeaVtg));

    while(1) {
        while(waitData == 0);

        if ((waitData & MTK3339::NmeaGga) != 0) {
            waitData &= ~(MTK3339::NmeaGga);
            latitude = gps.getLatitudeAsDegrees();
            longitude = gps.getLongitudeAsDegrees();
            //printf("%f,%f\n", gps.getLatitudeAsDegrees(), gps.getLongitudeAsDegrees());
            //printf("lat = %f, long = %f",latitude, longitude); 
            rasp.printf("%f\n", latitude);           
        }  

        waitData &= (MTK3339::NmeaGga|MTK3339::NmeaVtg);
    }
}

Но это не работает. На консоль Raspberry ничего не приходит. Может кто-нибудь помочь?


person Rosbibif    schedule 12.01.2018    source источник
comment
(Из обзора) Я добавил ссылки на таблицу данных и улучшил форматирование.   -  person zx485    schedule 14.01.2018


Ответы (1)


Вот пример приложения, которое считывает данные с чипа GPS, который находится на доске Adafruit: https://os.mbed.com/users/embeddedartists/code/app_gps/

Подключите чип GPS к плате F334R8 через UART на контактах D8 / D2 (D0 / D1 не могут использоваться для UART на этой плате, поскольку он используется для связи с компьютером). Затем измените строку 5 в main.cpp на:

static MTK3339 gps(D8, D2);
person Jan Jongboom    schedule 12.01.2018
comment
Спасибо большое, все работает! Знаете ли вы, возможно ли это, добавить прерывание в мою программу, например, заставить светодиод мигать в течение короткого периода (10 с), а затем вернуться к исходной программе, где она остановилась? - person Rosbibif; 13.01.2018
comment
Да, используя объект Ticker. Вы можете вызвать detach() для остановки тикера, а затем передать сигнал обратно в основной поток, чтобы продолжить выполнение другой работы. - person Jan Jongboom; 15.01.2018