如何用STM32阅读Adafruit GPS数据?

时间:2018-01-12 08:35:06

标签: gps raspberry-pi3 stm32 mbed adafruit

我正在使用STM32 Nucleo-F334R8 boardUltimate GPS Breakout V3 from Adafruit

我尝试做的是使用串行通信在我的计算机上使用Putty读取GPS数据。

最后,我想在我的F334R8主板上获取GPS数据,然后通过串行通信将其发送到RaspberryPi 3。到目前为止,我遇到了很多麻烦,我在Mbed Compiler Online进行编码,每当我有找到解决方案的感觉就会变得更糟。

有没有人为我提供解决方案?

编辑: 好的,谢谢!我也试图通过串行通信将我收到的数据发送到Raspberry Pi 3。我已将D15和D14连接到Raspberry的TX和RX,但当我使用时:

#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控制台上没有收到任何内容。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

这是一个示例应用程序,用于读取Adafruit董事会上GPS芯片的数据:https://os.mbed.com/users/embeddedartists/code/app_gps/

通过引脚D8 / D2上的UART将GPS芯片连接到F334R8板(D0 / D1不能用于该板上的UART,因为它用于与计算机通信)。然后将main.cpp中的第5行更改为:

static MTK3339 gps(D8, D2);