Reference
The Ultimate Guide to the BL0942 Energy Meter IC
A calibration-free, register-driven single-phase energy metering IC: active power, RMS, line frequency and zero-crossing, all exposed over UART or SPI instead of pulse-counting alone. This guide covers its pinout, digital interfaces, and how it compares to the older BL0937.
- Single-phase energy meter
- UART or SPI
- Less than 0.1 % energy error
- 3.3 V supply
The BL0942 is a highly integrated, calibration-free single-phase energy metering IC designed for smart plugs, smart sockets, power strips, and energy-aware appliances. It provides accurate measurement of active power, voltage RMS, current RMS, line frequency, and zero-crossing information, while supporting both pulse output and register-based digital interfaces.
Often compared with the popular BL0937, the BL0942 is not merely a pin-compatible refresh, but a more capable, register-driven metering IC intended for modern connected energy products.
The chip numbers in this guide come from the Belling BL0942 datasheet. Mains wiring details are the responsibility of the builder: read the safety notes first.
What Is the BL0942?
A Calibration-Free Energy Meter IC
At its core, the BL0942 is a single-phase energy metering IC developed by Shanghai Belling. It integrates all essential analog and digital blocks required for accurate AC power measurement:
- Two independent Sigma-Delta ADCs (one for voltage, one for current)
- Programmable gain amplifiers (PGA)
- An on-chip 1.218 V precision reference
- A dedicated DSP engine for power and RMS calculations
- An internal oscillator and clock system
- Configurable logic outputs and digital communication interfaces
Unlike simpler pulse-only metering chips, the BL0942 exposes internal measurement results via registers, allowing firmware to access raw and processed electrical data directly.
Measurement Capabilities
The BL0942 continuously samples voltage and current waveforms and computes:
- Active power (signed)
- Active energy (via pulse output or counter register)
- Voltage RMS
- Current RMS
- Fast current RMS (for over-current detection)
- Line frequency
- Zero-crossing of voltage and current
All waveform processing is performed internally by the DSP, eliminating the need for MCU-side signal processing.
Accuracy and Performance
The BL0942 is designed for consumer-grade but highly reliable energy measurement:
- Active energy accuracy: less than 0.1% error over a 4000:1 dynamic range
- Active power accuracy: 0.2–0.6% depending on signal level
- RMS accuracy: high accuracy at normal loads, reduced accuracy at very low currents (as expected in shunt-based designs)
- Anti-creep protection: prevents false energy accumulation under no-load conditions
These characteristics allow many designs to operate without per-unit calibration, provided the external components are well chosen.
Package and Power
The BL0942 is available in SSOP-10 and TSSOP-14. Key electrical parameters:
- Supply voltage: 3.0–3.6 V (3.3 V typical)
- Typical power consumption: ≈10 mW
- On-chip reference voltage: 1.218 V (typ.)
There is no SOP-8 version of the BL0942.
Dimensions
The BL0942 comes in a 10-pin SSOP package (SSOP10L) and a 14-pin TSSOP package (TSSOP14L). The TSSOP14L version can be cascaded up to four chips on one UART. Smart plug boards differ in size, so measure the board you use before you design a case, and leave enough room for the clearances between the mains side and the low-voltage side.
Source: Belling BL0942 datasheet for the packages.
Pinout Fundamentals (SSOP-10)
Power and Ground
VDD (Pin 1): power supply input. Operates from a single 3.0 V–3.6 V supply (3.3 V typical). Proper decoupling close to the pin is essential for stable measurements.
GND (Pin 5): ground reference for both the analog and digital sections of the device.
Current Measurement Channel
IP (Pin 2) & IN (Pin 3): differential inputs for the current channel. These pins connect across a low-value shunt resistor (typically 1–2 mΩ).
- Maximum differential input: ±42 mV peak (30 mV RMS)
- High input impedance (~370 kΩ)
- Used for current RMS, active power, and energy calculation
Voltage Measurement Channel
VP (Pin 4): voltage channel input. Typically connected to a resistor divider from the AC mains.
- Maximum input: ±100 mV peak (70 mV RMS)
- High input impedance (~370 kΩ)
This channel provides the voltage waveform required for both RMS and active power computation.
Digital Outputs and Control
CF1 (Pin 6) – configurable output. Logic output pin. Depending on configuration, CF1 can output active energy calibration pulses, over-current indication, voltage zero-crossing signal, or current zero-crossing signal.
SEL (Pin 7) selects the communication interface: SEL = 0 → UART mode, SEL = 1 → SPI mode. An internal pull-down resistor ensures UART mode by default.
SCLK_BPS (Pin 8): SPI clock input when SPI mode is selected, or UART baud-rate configuration pin when UART mode is selected.
RX / SDI (Pin 9): UART receive input or SPI data input. An external pull-up resistor is required when using UART mode.
TX / SDO (Pin 10): UART transmit output or SPI data output. An external pull-up resistor is required when using UART mode.
How the BL0942 Measures Energy
- Voltage and current are sampled by independent Sigma-Delta ADCs
- Waveforms are filtered and aligned digitally
- Instantaneous voltage and current are multiplied
- A digital low-pass filter extracts true active power
- Active power is accumulated internally, converted into energy pulses, and exposed via registers
Energy can be obtained in two ways: counting pulses on the CF output, or reading the CF_CNT register via UART or SPI.
Digital Interfaces
UART and SPI
The BL0942 supports either UART or SPI, selected by the SEL pin.
- UART: 4800–38400 bps
- SPI: Slave mode, up to 900 kHz
- All registers are 24-bit wide
This allows firmware to read RMS values, active power, energy counters, frequency, status flags, and raw waveform samples (for analysis).
Typical Smart-Plug Application (Real-World Mapping)
Hardware Mapping
Current sensing: low-ohmic shunt (typically 1–2 mΩ), connected across IP and IN, Kelvin routing recommended.
Voltage sensing: high-value resistor divider from mains to VP, scaled to stay within ±100 mV peak.
MCU connections: CF1 → GPIO interrupt pin (energy pulse or zero-crossing), RX/TX or SPI pins → MCU serial interface, SEL hard-wired based on interface choice.
Register Configuration Example
Typical firmware setup:
- Enable energy pulse output (
MODE.CF_EN) - Select CF1 function (
OT_FUNX) - Configure accumulation mode (signed or absolute)
- Select 50 Hz or 60 Hz operation
- Optionally adjust anti-creep threshold, fast RMS timing, and over-current threshold
The MCU then counts pulses for energy, reads RMS and power values periodically, and uses zero-crossing or frequency data if needed.
BL0937 vs BL0942 – A True Engineering Comparison
1. Interface Philosophy
| Feature | BL0937 | BL0942 |
|---|---|---|
| Output type | Pulse-only | Pulse + registers |
| MCU integration | GPIO counting | UART/SPI + GPIO |
| Data visibility | Limited | Full internal data |
2. Measurement Access
BL0937: energy via pulse only, RMS inferred from pulse frequency. BL0942: direct RMS registers, direct power registers, frequency and waveform access. This is the single biggest architectural difference.
3. Calibration and Production
| Aspect | BL0937 | BL0942 |
|---|---|---|
| Factory trimming | Basic | Improved |
| Calibration-free use | Sometimes | Common |
| Production robustness | Moderate | Higher |
4. Output Flexibility
BL0937: fixed CF / CF1 meanings. BL0942: CF1/CF2/ZX fully configurable, over-current and zero-crossing available on pins.
5. Migration Reality
- Not drop-in at firmware level
- Hardware often reusable
- Firmware must be adapted to register-based model
Real gotchas
- The IC is not isolated. Most smart plug designs run the whole circuit at mains potential. Never connect a computer, a programmer or a scope while it is plugged in.
- SEL picks the interface. SEL low (internal pull-down) is UART, SEL high is SPI. Wire it on purpose and do not leave it to chance.
- The UART needs a pull-up. The RX line needs an external pull-up resistor in UART mode.
- The baud rate is set with a pin. In UART mode the SCLK_BPS pin configures the baud rate (4800 to 38400 bps), so check the setting before you wonder why nothing arrives.
- The input ranges are small. The current channel takes ±42 mV peak (30 mV rms) and the voltage channel ±100 mV peak (70 mV rms) at the default gain. Size the shunt and the divider for that.
- It needs 3.3 V. A higher voltage destroys the chip.
- SPI is slow. It runs at 900 kHz at most.
- All registers are 24 bit. Read three bytes per register and mind the checksum of the packet.
- Calibrate your design. Scale factors depend on the shunt and divider. Check against a reference meter before you trust the numbers.
- Cascading needs addressing. Up to four TSSOP14L chips can share a UART, each with its own address.
Safety notes
Before you wire anything up
- This chip measures mains voltage. Mains voltage can kill you. Only build with it if you know how to work safely on mains, and use a certified module in a finished product.
- Never touch the board while it is plugged in. The ground of the circuit is at mains potential.
- Use a proper enclosure, fuses and insulation. Keep the clearances between the mains side and the low-voltage side.
- Never test with your hands in the circuit. Use an isolating transformer and a residual-current device.
- Never connect the board to mains voltage. Keep it on a low-voltage supply.
- Disconnect the power before you change the wiring.
Final Verdict
BL0937: suitable for ultra-simple, pulse-only, legacy designs.
BL0942: the correct choice for modern smart plugs and sockets, offering better observability, easier calibration, more robust firmware integration, and a future-proof feature set.
If you are designing a connected energy product, the BL0942 is not just a replacement, it is a fundamentally more capable metering platform.
More guides
Keep building.
From ESP32 HomeKit accessories to Arduino and ATtiny reference guides, there’s more where this came from.
All guides

