SparkFun Forums 

Where electronics enthusiasts find answers.

Tips and questions relating to the GPS modules from SFE
By jmumby
#43385
Hello all,

I have the following
Code: Select all
SETFREQ M8
SEROUT 7,T2400,("$PSRF103,00,00,00,01*24\r\n") 'Turn off GGA
SEROUT 7,T2400,("$PSRF103,01,00,00,01*25\r\n") 'Turn off GLL
SEROUT 7,T2400,("$PSRF103,02,00,00,01*26\r\n") 'Turn off GSA
SEROUT 7,T2400,("$PSRF103,03,00,00,01*27\r\n") 'Turn off GSV
SEROUT 7,T2400,("$PSRF103,04,00,00,01*20\r\n") 'Turn off RMC
SEROUT 7,T2400,("$PSRF103,05,00,00,01*21\r\n") 'Turn off VTG

SEROUT 7,T2400,("$PSRF103,01,01,00,01*24\r\n") 'Turn on GLL

LOOPX:
SERIN 1,T2400,("G"),B1,B2,B3,B4,B5
SERTXD("G",B1,B2,B3,B4,B5,"\r\n")
GOTO LOOPX
When I do this the GPS stops outputting data, in fact if I only put in one command it stops putting out data. If I remove all of the NEMA commands it scrolls thru all the GPGGA,GPGSA,GPGSV etc.

I am using a EM-406a and it uses 2.8v for the serial data, I have connected the TX from the GPS directly to the PICAXE and RX is connected via 2 zener diodes to drop the voltage. I figure this must work as the GPS stops when I send it anything.

Anyone have any ideas, I figure it is the string I am sending down but I have tried all sorts of combinations


Cheers
User avatar
By ohararp
#43501
EM406A is set from the factory to default to 4800 bps. Change this and you should be good to go. If you still have problems you may need to do some sort of logic level shifting if your uProcessor is running at 5V.
By zokko
#54598
What does logic level shifting. Also, did you get this to work?
By ryowens84
#54800
Zokko,

Logic level shifting is used when two devices that need to communicate use two different voltages. In this case, the uC is powered by 5V so the communication would be: Low-0V and High-5V (of course there is a little slack in there, but the point is if the voltage is somewhere in the middle, there is no gurantee that the uC will see high or low). The GPS module uses 3.3V, so the communication would be: Low-0V and High-3.3V.

So, if the GPS is sending a message to the uC without level shifting, then it will send signals between 0 and 3 volts. There is a good chance that the uC will only see low signals because it has to see 5V for a high. To remedy this, we use logic level shifting. A level shifter will take the 3.3V from the GPS and bump it up to 5V for the uC. It will also take the 5V from the uC and lower it down to 3.3V.

By using logic level shifting, two devices that use different voltages from communication can still talk to each other. I hope this makes sense, and let me know if you need more of an explanation.

Also, as long as jmumby changed the baud rate to 4800, and the checksum has been calculated correctly, his code should have worked.