Resetting when UART left floating and Micropython running a program


Module: XBee-3, Micro-Module
Firmware: DigiMesh 3002
Issue: Keeps resetting when UART Lines (RX) are left floating (DIO14)

I developed a custom board allowing to remote-control 16 PWM channels using a XBee-3 module. The modules have the latest (3002) DigiMesh Firmware installed and are running a Micro-Python Program at startup, which receives frames and set the PWM Channels according to the data in the Frame. The PWM itself is generated by a second IC and the XBee-3 is communicating with it using I2C.

I also mounted an FTDI IC on Board to allow on-board programming. When I remove the USB Port and power the module using a Battery, the XBee keeps resetting when a frame is received, approximatly every 5-6 seconds. In this case, both UART-Lines are switched to a connector using a MUX and they are left floating at the connector. So, when USB is connected, the MUX switches the UART-Lines to the FTDI chip instead of the connector.

I found out that, when i add a Pull-Up resistor on RX pin, everything is working fine. When left floating this pin stays IDLE low and may receive noise as no other UART receiver is connected.

So, are those Pull-Ups mandatory? Can I somehow activate an internal Pull-Up on the UART Pins?
I also would suggest, if that PULL-Up is mandatory in case of running micropython in a standalone-manner with no receiver present on the UART Lines, to mention that in the Hardware-Reference Manual.

Anyone had same experience?

It is not recommended to leave that line floating.
If a break (low) is asserted on the RX line of the XBee for more than five seconds the device is reset. You can set the pull-up resistor with the PR command (bit 7 for DIN) to fix this.

I already activated the Pull-Ups on RX line - so they are even activated on default I have seen - but that does not help. In my case, I use a TMUX1574 to switch the RX/TX Lines between FTDI-Chip and connector - so when USB is connected and FTDI is active, the RX/TX lines are automatically routed to FTDI, otherwise to the connector. The FTDI of course ensures correct IDLE State on RX while the connector leaves the RX Line floating.

I really don’t think that the TMUX has a pull down active, so it seems that Pull-Up on RX Line of the XBee seems not to work - it even states in the manual that this only works for Pins configured as Digital Inputs or Disabled. So the RX Pin could be configured as Digital Input - but that is not a proper solution as I would still like it to be the RX Pin.

For me now adding an external Pull-Up ensuring safe IDLE-State on UART even if there is no other Device Present as the Receiver worked as a solution.

Do I Still miss something with the Pull-Ups on UART Lines here?

Thanks in Advance!

Beyond the internal pull-ups (which aren’t strong) there are no other major factors that the XBee could have on that line. I think the best course of action at this point is to provide an external pull-up on that line.

Yeah, I added pullups in revision 2 as my solution. Here is a link to the final project if someone is interested (including ressources):

That is a cool project. I’m glad everything worked out and you had a good experience with the XBee. I’ll definitely share your project, well done.