Can you change CTS/RTS pins for Serial1 on Boron

I am working with the boron board and trying to get NMEA data from a GPS module:

The datasheet is short, but it seems like flow-control is necessary to get data from the GPS module, since it has RTS and CTS pins. Given that assumption, I saw this line in the particle docs:

"On the Argon, Boron, and B Series SoM hardware flow control is available on Serial1 on pins D3(CTS) and D2(RTS)."

Right now I have RTS and CTS hooked up to A2 and A4 respectively. Is there a way around having to use D3/D2?

If the above answer is not possible, since this is on a PCB and the connections cannot be severed easily, is it possible for me to make A2/A4 into INPUT pins and then connect D2/D3 to A2/A4 without issue?

1 Like

By the way, you did add a 1.8V power supply and level-shifters on the GPIO lines, correct? That's a 1.8V part.

It's weird that a GNSS would require flow control. However, you can probably get it to work by grounding either /CTS or /RTS. That will indicate to the GNSS that it can send data to the MCU. At 9600 baud, NEMA messages won't overflow the serial buffer so it should be fine.

If you have enough available GPIO, jumpering to A2 and A4 and leaving those pins set as input will probably work.

It's probably possible to reconfigure the RTS and CTS pins from user firmware. I was able to do so for SPI and it would probably also work for flow control. But I'm pretty sure the easiest solution is to just trick the GNSS into always sending.

Hey sorry for the late reply.

Yes I have 1.8V level shifters, but only for RX/TX. For the rest of the pins I have:

ON_OFF set to 3.3V
/RESET to 3.3V

I set A4 on the Boron to OUTPUT and am pulling it low when I want to read from the GPS sensor. A4 is hooked up directly to /CTS. So I am pulling CTS low when I want to read, then after the read, I pull it back high. this is set to 3.3V.

I have /RTS untouched (pin A2). I do not want to write to the device only read.

I tried to use:

GPSSerial.begin(9600, SERIAL_FLOW_CONTROL_RTS_CTS);

but I was not seeing pin D3/D2 doing anything when read/writing, so I elected to use my own RTS/CTS flow control using digitalWrite. That's why I am controlling A2/A4 directly.

I do notice that pin 6 on the GPS module (WAKEUP) is always low. "Operation mode status" might be high if its on? This documentation is so limited and its really hard to figure out what is going on. I am not even sure if I HAVE to use RTS/CTS.

Edit
Also wanted to mention that I did try grounding RTS/CTS as you suggested, still having gotten anything back.