Es können keine GPS-Daten vom Quectel L80 GPS-Modul empfangen werden

Ich habe ein Quectel L80 GPS- Modul mit PIC24fj128ga202. Ich verwende UART2, um GPS-Daten vom Modul zu erhalten, und übertrage die empfangenen Daten mit UART1 an das Hyperterminal. Zwischen PIC und PC I befindet sich ein RS3232-Konverter. Hier habe ich keine Antwortdaten vom GPSmodul im Hyperterminal erhalten.

Mein Code:

void silicon(void)
{
    OSCCON = 0x0000;
    CLKDIV   =  0x0000;  
    OSCTUN = 0; 
    RPINR18bits.U1RXR   = 7;
    RPOR4bits.RP8R  =   3;
    RPINR19bits.U2RXR   = 14;
    RPOR6bits.RP13R  =   5;      
    ANSA = 0x0000;
    ANSB = 0x0000;
    PORTA = 0x0000;
    TRISA = 0x0000;
    PORTB = 0x0000;
    TRISB = 0xc000;
    U1MODE = 0x0000;
    U1STA = 0x0400;     
    U1BRG = 25;
    U1MODEbits.UARTEN = 1;
    U2STA = 0x0400;     
    U2BRG = 25;
    U2MODEbits.UARTEN = 1;
    PORTBbits.RB15=1;
    TMR1 = 0;
    while (TMR1 < DELAY)
    {

    }
    PORTBbits.RB15 =0;
    TMR1 = 0;
    while (TMR1 < DELAY)
    {

    }        
}

void uartsend(char in_c)
{
    while(U1STAbits.UTXBF != 0);
    U1TXREG = in_c;
}

char uartrec()
{
    char c;
    while(U1STAbits.URXDA == 0); 
    c = U1RXREG;
    return c;   
}
void uartsend2(char in_c)
{
    while(U2STAbits.UTXBF != 0);
    U2TXREG = in_c;
}

char uartrec2()
{
    char c;
    while(U2STAbits.URXDA == 0); 
    c = U2RXREG;
    return c;   
}

int main()
{
    int i,j;
    led = 1;
    silicon();
    while(1)
    {
        uartsend(uartrec2());
        led =!led;
        for(j=0;j<250;j++)
        {
            for(i=0;i<1275;i++);
        }
    }
    return 0;
}
Können Sie mit UART1 etwas anderes an das Hyperterminal senden, z. B.: uartsend('T');?
Warum haben Sie eine so große Verzögerung, nachdem jedes Zeichen verarbeitet wurde? (250*1275 = 318750 Iterationen der inneren Schleife)
Bringen Sie zuerst jeden EUSART zum Laufen. PC an 2 anschließen, testen. PC an 1 anschließen, testen. GPS an 1 anschließen, testen. Blinken Sie eine LED oder so etwas, wenn Daten eingehen. Verbinden Sie dann GPS mit 2, testen Sie. Schließen Sie dann den PC an 1 an. Wenn Sie sicher sind, dass beide wie beabsichtigt funktionieren, seien Sie auf etwas Dummheit vorbereitet, wenn Sie den PIC dazu bringen, Daten bidirektional zu "puffern". Am Ende habe ich Interrupts für beide EUSARTs verwendet, da Abfragen und Verzögerungen viel zu langsam waren.
uart1 funktioniert einwandfrei@bence

Antworten (1)

Wenn keine Antenne extern angeschlossen ist, greift das Modul selbst auf die interne Antenne zurück. Gemäß Ihrer Beschreibung testen Sie Innenräume, die für L80 nicht geeignet sind. Bitte überprüfen Sie dies unter freiem Himmel.