ESP32-C3 Periodic ripple on 3.3V
Posted: Tue Sep 10, 2024 2:34 pm
I cannot connect to clients over bluetooth with my ESP-C3. I program with Arduino and can scan and list nearby clients with success (BLE/Scan example), but I can't connect to my iPhone app BLE Scanner (for this I used BLE/Write arduino example). BLE scanner just reports connection time out. I read in a few forums, connecting to a client requires much more precision (frequency/crystal, voltage ripple, etc), than just listing nearby clients.
I then checked the power rail with an oscilloscope, and saw periodic ripple when bluetooth was active. I see 3 rather large dips, then stable, then dips again. I didn't measure the periode between the dips. The shape and amplitude vary depending on if I draw power from a li-ion battery or USB (both through the same voltage regulator) or directly inject 3.3V from my RD6006 power supply.
I also wrote other code that did not activate bluetooth (turning on and off LEDs, reading switches, etc.), and the power is stable with no ripple.
I'm not sure if the ripple is the actual cause of the problem, or maybe timing. I measured the crystal in circuit and it swings at ~40MHz, but it's difficult to get precise measurement down to 10ppm (which is the requirement).
I've followed the ESP32-C3 hardware design guidelines with all decoupling/bypass capacitors, inductors, resistors, etc (and recommended values). 40MHz crystal is 10ppm.
This should be battery powered, so it's crucial I can make it work on battery (which at the time experience the largest rippe of them all, strangely enough).
Anyone have an idea what could be wrong?
I then checked the power rail with an oscilloscope, and saw periodic ripple when bluetooth was active. I see 3 rather large dips, then stable, then dips again. I didn't measure the periode between the dips. The shape and amplitude vary depending on if I draw power from a li-ion battery or USB (both through the same voltage regulator) or directly inject 3.3V from my RD6006 power supply.
I also wrote other code that did not activate bluetooth (turning on and off LEDs, reading switches, etc.), and the power is stable with no ripple.
I'm not sure if the ripple is the actual cause of the problem, or maybe timing. I measured the crystal in circuit and it swings at ~40MHz, but it's difficult to get precise measurement down to 10ppm (which is the requirement).
I've followed the ESP32-C3 hardware design guidelines with all decoupling/bypass capacitors, inductors, resistors, etc (and recommended values). 40MHz crystal is 10ppm.
This should be battery powered, so it's crucial I can make it work on battery (which at the time experience the largest rippe of them all, strangely enough).
Anyone have an idea what could be wrong?