У меня есть модуль 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;
}
Когда внешняя антенна не подключена, модуль сам переключается на внутреннюю антенну. Согласно вашему описанию, вы тестируете в помещении, что не подходит для L80. Пожалуйста, проверьте это в состоянии открытого неба.
Бенс Кауликс
uartsend('T');
:Дэйв Твид
РДЦК
арун