B@tto

MT3339 + MSP430G2553 issue

12 posts in this topic

Hi everyone,

 

I designed a custom board which combines an MSP430G2553 SMD and a GPS based on MT3339 like this one : http://www.adafruit.com/products/790

 

I tested the combination on a launchpad and after building my own routines to be able to drive it with a very low RAM footprint (13 bytes buffer + variables you want to store) everything seemed to work well. But when I tried my board, GPS could not get a fix. Serial link is okay, but after a bug tracking I found where was the bug : when the mcu is not sleeping, even wtih a blank program, the GPS cannot get any satellite signal. When he is sleeping, it's ok. During this last tests, of course I used and external TTL serial <-> USB converter to control the GPS. Most of pcb under GPS is a ground plane. Moreover, I tried to connect GPS away from my PCB, wire by wire and I was ok. So there is a perturbation somewhere ...

 

I will post photos soon (and the rest of my work of course when I will be done) but if for now someone has any idea ...

 

To resume : GPS connected away : OK GPS soldered on board, MSP active (blank loop() ): not OK GPS soldered on board, MSP not active (sleep() ) : OK Regards

Share this post


Link to post
Share on other sites

When you tested it away from the board, was it still getting it's power from the same supply? I'm wondering if it is a decoupling issue (or something simpler like your power supply is having a voltage drop under the load of both the GPS and the MCU).

 

Do you have the power to both the MCU and the GPS adequately decoupled with capacitors situated as close as possible to the power pins of the IC's?  Generally I would use decoupling capacitors of 0.1uF and 10-47uF with the MSP430. The 0.1uF covers the system clock frequency range, while the larger capacitor covers the frequencies used by the low speed oscillator (VLO clock or the crystal), UART etc. Using a GPS, I'd probably also put in a 0.001uF to cover the gigahertz range of frequencies that GPS uses.  These are typical values - the actual theory behind optimal decoupling capacitor values is quite complex, but the figures above will do the job fine on most designs.

B@tto and bluehash like this

Share this post


Link to post
Share on other sites

For now I built a routine with sleep() and digitalRead() on 3D-Fix pin. So the mcu sleeps until fix is ok and it works. But I really would like to know why it's not working when it's not sleeping ....

 

Sounds like a good idea/workaround ... I made some MT3329/39 boards last year and had the same problems on some boards (I tried different designs). I were not able to meet all the design recommendations regarding ground plane etc. given in the data sheet, so this could be a problem with my designs, too. Sometimes it took minutes (10-20) until I had a fix. On other boards/designs I got a fix in less than one minute.

 

So I will try your workaround as soon as I find some time ...

 

Best wishes

B@tto likes this

Share this post


Link to post
Share on other sites

Be happy, you had a fix ! Blank loop(), I simply could not get any satellite signal, even in a complete open area and blue sky.

 

For my next design I think I will put GPS on a separated sub board, doubling ground plane and get it a litlle bit farer from the mcu ... 

 

About my workaround : I did not checked that but detecting 3D-fix is not very friendly because when it's not fix, it outputs a 1 pulse per second signal and when it's fixed, stays low. It's pretty simple but just to if something is ok or not it could have been easier .... I would like to see if 1-PPS signal and 3D-fix are synchronised, so I would just have to compare this two to know if it's fixed or not.

Share this post


Link to post
Share on other sites

I have experienced similar problem with my latest boards. My SMD board was OK, but the one with DIP wasn't (GPS worked great when MCU was away, not in the socket.)

BoosterPack version works fairly good, but there are days when it takes several minutes to get 3D fix.

Share this post


Link to post
Share on other sites

Connected directly to computer throught a serial converter, I had very good fix times. The fact is, if you let it powered up and fixed during several minutes, you can shut it off with a supply on VRTC, and if within 2h you try to do a new fix, it will take only fex seconds (EASY function). It's a little bit like EPO. It's why I choose this module for my design : compact, efficient and low power. 

 

I discovered another thing yestereday : even if I play with mcu sleeping, position is not good at all (almost 10 km of error !!).

 

My SMD board was OK, but the one with DIP wasn't (GPS worked great when MCU was away, not in the socket.)

 

It's strange because my design looks like a lot with yours ... I use SMD version of MSP430G2553 and it's located on the other side of the gps.

 

If I had time, I will try with and external antenna, so we will now if the problem comes from antenna perturbation or "smart" part of the GPS.

 

I took a look to adafruit design : https://learn.adafruit.com/adafruit-ultimate-gps/downloads-and-resources

I have no ferrite, and there is no ground plane on top. Maybe if ground plane is to close from antenna it may cause troubles like resonnance/capacitance with mcu activity ?

Share this post


Link to post
Share on other sites

Hi @@B@tto

 

I had the chance to try your workaround on one of my boards - it works great. I got a fix within 30-60 seconds (cold start!) using sleepSeconds().

Share this post


Link to post
Share on other sites

Good news :)

 

Try to first let it stay fix during 10-20 minutes. After that, normally it will be able to fix very quickly (few seconds) in a limit of 2 hours ;)

bluehash likes this

Share this post


Link to post
Share on other sites

Good news :)

 

Try to first let it stay fix during 10-20 minutes. After that, normally it will be able to fix very quickly (few seconds) in a limit of 2 hours ;)

It maybe soft starting, meaning storing the latest fix in memory/flash.

Share this post


Link to post
Share on other sites

It maybe soft starting, meaning storing the latest fix in memory/flash.

 

No, it's the EASY function as they call it. If the first fix is long enought, the GPS has the abitlity to predict the satellites movements to get a faster fix

Share this post


Link to post
Share on other sites

Hey guys,

 

Some news : at this moment I was not looking for it but I found this http://www.alphamicrowireless.com/media/433544/gtop%20module%20application%20note%20-a00%20_mt3339%20series_.pdf

 

The hardware design application note ! So I think my troubles comes from my tracks : a large major part of the surface under the GPS module is GND plane, but some tracks pass througth it. I think it's the only explanation ... For now I stop to work with this module.

 

Now I'm working with SIM808 which has, looking to its specifications, an MT3339 as GPS chip (the specs are exactly the same). Only one UART needed and all the job is done by the SIM808, you just have to parse the GPS message when position is ok :) 

 

But I also noticed that I still have this big error on position. After spending almost an afternoon, I found the solution : https://labs.mediatek.com/forums/posts/list/124.page  I just needed to convert to "real" decimal coordinates, so multipliate decimal parts by 100/60

 

Hope it will help

yosh and bluehash like this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now