Power and Pin Reset problems in custom PCB

Hi,

Big picture first.

I have a Particle Boron board that connects to an external device and gets data through a kind of serial RS232 port (kind of because the external device also power supplies my board using the same RS232 port). The Boron stores temporally the received data in the external EEPROM, and after all data is received then it is sent to a private TCP server using cellular 2G/3G connection and 3rd party SIM.

The pinout of the RS-232 in the device is:

 1: 24V
 2: Tx
 3: Rx
 5: GND
 9: GND
 4, 6, 7, 8: NC

You can see the board design here:

PCB has this size and distribution to fit in a Raspberry PI 2 case.

I think it’s better to describe the main blocks of the design, and then start with the problems. If you want to avoid those block descriptions, you can go directly to the end to know my problem.

- EEPROMs
Just 2 EEPROMs where the Boron stores temporally the data gathered and pendant to send.

- Boron
Self explained (2G/3G type)

- Serial Comm
The interface with the external device. A MAX3232 to adapt signals and the RS-232 connector.

- Main Switch
To power On/Off the board. Has 3 positions:

  • On: Connects 2-3 and 5-6. Powers the board with the battery and the external power supply from the device.
  • Off: All disconnected.
  • Batt: Only connects 1-2, to power the board with the battery (just for testing purposes)

- Boron Breackout
Since the board is in development, just to have free pins if I need to mess with.

- Voltage Regulator 3.3V
LDO regulator to have 3.3V from 5V. It also has jumper to select if I want to use 3.3V from the regulator (3V3R) or 3.3V from the Boron (3V3)

- Voltage Regulator 5V
Switching regulator to have 5V from device 24V.

- Watchdog
A TPL5010. Just an external watchdog for security, to reset the Boron if user firmware is not responding (long reset period, around 55m).

- Wake Signal
Just to wake up the Boron when external device is plugged.

- Microdip
A switch block just for testing.
1-12: Is for use or don’t ENable Boron pin (described in On/Off Logic block).
The others are not used.

- Batt Connector
There are two connectors, but it’s only to have the option to use one or the other depending of stock.

- On/Off Logic
This is a simple OR gate. Since the external device can be powered down while the Boron is doing its stuff, this block controls the ENable pin. When the Boron detects that no external power supply is applied, it continues working with battery. While this, in this OR gate there is ‘0’ (from 3V3R) and a ‘1’ from (GPIO A4). When the Boron ends its jobs (that is it reaches an idle state after sending all data to the server), then puts A4 to 0 to provoque ENable pin goes down.

- Antenna Connector
Just a pair of connectors to put an external antenna.

- PCB Antenna
A PCB antenna to avoid the use of an external antenna. Depending on what antenna I want to use, I connect the Boron to one or the other.

Now come the problems:

The first one. If I set the jumper JP1 to make 3V3O = 3V3R, that is the Watchdog is powered by 3V3 regulator, when the device is disconnected RESET pin seems to go to 0, and then in less than a second, it goes to 1.3V and maintains that value.
I tried removing R5 pull-up resistor and change R5 to be connected to 3V3 instead of 3V3O, and the situation is the same. I don’t know where this 1.3V comes from.

The second one. When using the On/Off Logic (Microdip SW2 1-12 is ON), if I power on the device and power it off just after the Boron gets power, then sometimes the Boron doesn’t wake up when powering on the device again. This not always happens, maybe it happens 1 of 10 times or something like this. And to recover the Boron, it’s enough to turn off and on the device a few times in order to have the Boron on again.

Any clue about what is happening?

Also, any idea to improve the design will be welcome :slightly_smiling_face: