Base M5GO BOTTOM: Issues with UART (Port C)



  • Hello,
    I am posting this question in this section, as it is related to the base, even though this base was part of an M5Stack Fire Kit.

    1. UART / Port C
    It seems the wiring on my board is not according the schematics.
    Question: Which wrong is "wrong"? The schematics or the board? What is the recommended implementation?

    On my equipment there are additional resistors & cross links:

    This is how it should be according the schematics (as far as I understand) https://docs.m5stack.com/#/en/base/m5go_bottom?id=schematic
    Gnd== Connector Pin on Port C
    5V=== Connector Pin on Port C
    Tx=== Connector Pin on Port C
    Rx=== Connector Pin on Port C

    This is the implementation on my board:
    There are additional links to GND via resistors for the TX and RX line. I hope you can understand my sketch :)
    The additional wiring has been placed on top of the board, directly below the label "UART" on the board.

    GND== Connector Pin on Port C
    5V=== Connector Pin on Port C
    =Tx== Connector Pin on Port C
    ||
    Resistor
    ||
    GND

    =Rx== Connector Pin on Port C
    ||
    Resistor
    ||
    GND

    2. M5Core does not see data from GPS-module when the "M5GO Bottom" is installed
    I assume this is linked to (1.) above.

    I have added the GPS-module
    https://docs.m5stack.com/#/en/module/gps
    This works fine (I see all the data via the UART in the M5Core), until I mount the "M5GO BOTTOM".

    As soon as I add the "M5GO BOTTOM", the M5Core cannot read the serial data any more.
    ==> How to solve this issue?

    The UART on the "M5GO BOTTOM" Port C is the same which is used per default by the GPS-module.
    I can link an external RS232-to-USB converter to the "M5GO BOTTOM" on Port C and I can read the GPS data without problem.
    This is why I think it is linked to the additional wiring mentioned in (1.) above.

    3. No access to the GPS via "M5GO BOTTOM" Port C for configuration
    As said, the UART on the "M5GO BOTTOM" Port C is the same which is used per default by the GPS-module. This is quite helpful.
    I would like to configure the u-Blox GPS-module regarding baud rate and update rate. This is possible via the u-blox Software u-center and works fine on other u-Blox GPS-modules.

    But I cannot access the GPS via "M5GO BOTTOM" Port C for configuration. u-center cannot read and write the config properly. So I assume there is an communication issue, which may be again linked to (1.) above.

    ==> Any idea to solve this?

    Thank you & best regards
    jpk



  • You are using the M5Stack Fire?
    Have you tried swapping the connections from UART1 to uart2

    M5Stack Fire has occupied GPIO16 / 17 to connect with the PSRAM by default, it’s conflict with TXD / RXD (GPIO16, GPIO17) of GPS module. Therefore, when using the GPS module with the M5Stack Fire, you might have to cut the TXD and RXD from GPS module and wire fly to another set of UART pin, if you gonna use the PSRAM.



  • Hi

    You are using the M5Stack Fire?

    Yes, I do. I am not sure about the HW revision, see here:
    http://forum.m5stack.com/topic/1130/identify-m5stack-fire-revision-issues

    Have you tried swapping the connections from UART1 to uart2
    M5Stack Fire has occupied GPIO16 / 17 to connect with the PSRAM by default, it’s conflict with TXD / RXD (GPIO16, GPIO17) of GPS module. Therefore, when using the GPS module with the M5Stack Fire, you might have to cut the TXD and RXD from GPS module and wire fly to another set of UART pin, if you gonna use the PSRAM.

    I am aware of this issue. As long one does not utilize the PSRAM, the GPS works fine w/o modification (at least it works for me). And as said before: GPS works fine without the "M5GO Bottom" installed.

    You are writing:

    Have you tried swapping the connections from UART1 to uart2

    Now you are confusing me. Why should I switch from UART1 to UART2?
    For my understanding (and as the code works like this for me), the default GPS HW Mapping is on UART2 (see also
    https://docs.m5stack.com/#/en/module/gps).
    I never used UART1.

    As written in the original post: If possible I would like to use UART2 this is the one which is accessible also via the Port C on the "M5GO BOTTOM".

    Additional issue with UART0:
    In a complete differrent setup I have been using UART0 (GPIO1/3) with an external GPS.
    The problem here is: You cannot flash your M5Core, as long as the GPS is transmitting on UART0!
    And it is a bit difficult to always disconnect the GPS for flashing, especially the internal GPS-module... any idea here? :)
    tokuhira had a similar problem; don't ask why he had this issue on UART2:
    http://forum.m5stack.com/topic/544/gps-module-customize-about-uart-port/5

    tokuhira: At first, I have tried to use TXD=16 and RXD=17. However, it conflicts downloading a bin by Arduino IDE. On this configuration, the program could be download without GPS Module. Later, stacked GPS Module works.

    Best regards
    jpk



  • We are very sorry, I test it, found M5GO Bottom will affect gps module, it make uart high level only 1.5v you can try use do this, connect TXD to 34 then Knife cutting TXD to 16, and change code GPSRaw.begin(9600, SERIAL_8N1, 34, 17);
    0_1563158319589_57dd90cb-d4c2-476a-95a0-6f8b30c05a6a-image.png



  • Thank you for your proposal. Two questions:
    1.) Using GPIO34 for TX on the GPS module does not cause any issues with the "Base M5Go Bottom"? As far as I understand the schematics, GPIO34 is linked to the max4466 on the "Base M5Go Bottom".

    Would it make sense to use GPIO36 instead, as this is linked to the GPIO-Connector Grove-B/Pin1? So the GPS-TX is accessible outside the M5 stack via this pin. Not a nice solution, as it needs 2x Grove connectors to access TX and RX. But it should work.

    2.) I would rather modify the "Base M5Go Bottom" to increase the voltage level on the UART.

    Again, I do not find the resistors (240 Ohm) described in the original post in any schematic. I also did not find any document defining this UART as 1.5V interface... This is somehow misleading, as there is a 5V reference output on the Grove-C. I would expect 5V (or 3.3V, but not 1.5V).

    ==> Please confirm or correct me: Removing the 240 Ohm resistors from the Grove-C Connector on the "Base M5Go Bottom" should solve the problem as well. What will be typical the voltage level then? 5V or 3.3V?

    Thank you & best regards
    jpk



  • Hello,

    I have ordered the GPS-module for my M5Stack. Is my statement correct when I say "I disable the PSRAM and the GPS-module will work correct on port-c"
    On this moment I don't use the PSRAM

    Thanks, and regards

    Jan



  • @powersoft
    Hi Jan,

    I am not the official support, just another customer.

    Your question is not very precise.
    Assumptions for your use case:
    a) You do not care about UART/Port C on the "M5GO Bottom"; you just want to use the GPS serial data internally in the M5 stack?
    b) You have a " M5Stack Fire Kit" and want to use the UART/Port C on the "M5GO Bottom" to send the serial GPS data to an external device?

    Answer:
    a) If you do not use the PSRAM, it should work. At least this works for me.
    b) Answer a) and: May work or not.
    As @heybin wrote above, the current HW implementation reduces the voltage level on the UART/Port C to 1.5V (I do not have an osci to check this, my voltage meter is too slow).
    I connected an RS232-to-USB converter to the UART/Port C for debugging. I was able to read the data with this converter.
    But i was not able to configure the GPS via this setup (via u-center) .

    Maybe @heybin can answer the question above, if removal of the (undocumented) resistors changes the voltage level and which level will be available then.

    This not a recommendation, it is just my setup:
    I have removed the undocumented resistors (see my story above) and it worked, at least if the configuration is executed in the same moment of GPS powering up.

    jpk

    Edit 2019-08-03:
    If you also use the "M5GO Bottom", try removing it from the stack. See the first post, issue 2.)



  • @jpk Interesting.
    Have you got any photos and a write up about this resistor issue?
    Can you consider creating a Hackster.io project documenting this modification please?



  • @ajb2k3

    Have you got any photos and a write up about this resistor issue?

    Sorry, no photos. My cutter was faster than my camera. But the issue is described in the first post.
    Removing the resistors resolved the issues described above - for me. I do not recommend this procedure. Maybe someone from M5Stack can answer this.

    All photos I find online do not have these resistors installed - at least not in the way it was done on my module. Maybe this "feature" has been integrated into the PCB directly with later revisions.
    Again, at least for my module there is a mismatch between hardware and documentation. I cannot tell which one is "correct".

    Can you consider creating a Hackster.io project documenting this modification please?

    Hmmm no.
    Please correct me if I am wrong, but both Hackster.io and the M5Stack-Facebook-Site need registration before even reading the existing posts?
    I see this somehow critical:

    1. Essential information about M5Stack is distributed on several platforms ==> You always have to check all sites...
    2. I don't like being forced to register before reading content provided by other users for free.
      Yes, some more features would be nice, but this forum is more than sufficient for discussing technical issues.

    BR,
    jpk



  • @jpk said in Base M5GO BOTTOM: Issues with UART (Port C):

    @ajb2k3

    Have you got any photos and a write up about this resistor issue?

    Sorry, no photos. My cutter was faster than my camera. But the issue is described in the first post.
    Removing the resistors resolved the issues described above - for me. I do not recommend this procedure. Maybe someone from M5Stack can answer this.

    All photos I find online do not have these resistors installed - at least not in the way it was done on my module. Maybe this "feature" has been integrated into the PCB directly with later revisions.
    Again, at least for my module there is a mismatch between hardware and documentation. I cannot tell which one is "correct".

    Can you consider creating a Hackster.io project documenting this modification please?

    Hmmm no.
    Please correct me if I am wrong, but both Hackster.io and the M5Stack-Facebook-Site need registration before even reading the existing posts?
    I see this somehow critical:

    1. Essential information about M5Stack is distributed on several platforms ==> You always have to check all sites...
    2. I don't like being forced to register before reading content provided by other users for free.
      Yes, some more features would be nice, but this forum is more than sufficient for discussing technical issues.

    BR,
    jpk

    Facebook yes, hackster no.
    Also there is github which is useful for storing code and files which you don't need to register to read files.