Невозможно получить данные GPS от модуля GPS Quectel L80

У меня есть модуль GPS Quectel L80 с PIC24fj128ga202. Я использую UART2 для получения данных GPS от модуля и передаю полученные данные в гипертерминал, используя UART1. Между PIC и ПК у меня стоит преобразователь RS3232. Здесь я не получил данные ответа от GPSmodule в гипертерминале.

Мой код:

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;
}
Можете ли вы отправить что-то еще с UART1 на гипертерминал, например uartsend('T');:
Почему у вас такая огромная задержка после обработки каждого символа? (250*1275 = 318750 итераций внутреннего цикла)
Сначала заставьте каждый EUSART работать сам по себе. Подключить ПК к 2, проверить. Подключить ПК к 1, проверить. Подключите GPS к 1, проверьте. Мигайте светодиодом или чем-то еще, когда приходят данные. Затем подключите GPS к 2, проверьте. Затем подключите ПК к 1. Убедившись, что оба работают должным образом, будьте готовы к некоторому дурачеству, чтобы заставить PIC «буферизировать» данные в двух направлениях. В итоге я использовал прерывания для обоих EUSART, так как опрос и задержки были слишком медленными.
uart1 работает нормально @bence

Ответы (1)

Когда внешняя антенна не подключена, модуль сам переключается на внутреннюю антенну. Согласно вашему описанию, вы тестируете в помещении, что не подходит для L80. Пожалуйста, проверьте это в состоянии открытого неба.