Key advantages of CW32 in this project
: Wide operating temperature range: -40~105℃;
Wide operating voltage range: 1.65V~5.5V (STM32 only supports 3.3V systems);
Strong anti-interference: HBM ESD 8KV; All ESD reliability reaches the highest international standard level (STM32 ESD 2KV)
; Project focus - Better ADC: 12-bit high-speed ADC, achieving ±1.0LSB INL 11.3ENOB; Multiple Vref reference voltages... (STM32 only supports VDD=Vref);
Stable and reliable eFLASH technology.
1. Power Supply Circuit

LDO (Low Dropout Linear Regulator) Selection: This project uses an LDO as the power supply. Considering that most voltage meter products are used in industrial scenarios with 24V or 36V power supplies, the SE8550K2 with a maximum input voltage of up to 40V was selected as the power supply. The main reason for not using a DC-DC step-down circuit to handle large voltage differences in this project is to avoid introducing DC-DC ripple interference during the design process. A secondary reason is to reduce project costs.
2. Voltage Sampling Circuit
: The voltage divider resistors in this project are designed to be 220K+10K, therefore the voltage division ratio is 22:1 (ADC_IN11).
The voltage divider resistor selection
is based on the maximum voltage to be measured; for safety reasons, this project uses 30V (the actual maximum display value can be 99.9V or 100V).
The ADC reference voltage is 1.5V in this project, and this reference voltage can be configured through the program.
To reduce the power consumption of the sampling circuit, the low-side resistor (R7) is usually chosen as 10K based on experience.
Then, the high-side resistance of the voltage divider resistor can be calculated using the above parameters.
The required voltage division ratio is calculated, i.e., the ADC reference voltage. The input voltage is designed; using known parameters, 1.5V/30V = 0.05 can be calculated.
The high-side resistance is calculated as the low-side resistance/voltage division ratio; using known parameters, 10K/0.05 = 200K can be calculated.
A standard resistor is selected: a resistor slightly higher than the calculated value of 200K is chosen. We usually choose E24 series resistors; therefore, in this project, 220K, which is greater than 200K and closest to the calculated value, is selected.
If, in actual use, the voltage to be measured is lower than 2/3 of the module's design voltage (66V), the voltage divider resistor can be replaced and the program modified to improve measurement accuracy. The following example illustrates this:
Assuming the measured voltage is no higher than 24V and other parameters remain unchanged,
calculations show 1.5V/24V = 0.0625, 10K/0.0625 = 160K. 160K is a standard E24 resistor and can be directly selected, or a higher value 180K can be chosen with some redundancy.
If, in actual use, the voltage to be measured is higher than the module's 99V design voltage, a different resistor can be selected. To achieve a wider voltage measurement range, one can choose to replace the voltage divider resistor or modify the reference voltage. The following example illustrates this:
Assuming the measured voltage is 160V, the solution is to increase the voltage reference to expand the range.
Given that the voltage division ratio of the selected resistor is 0.0145, we can calculate 160V * 0.0145 = 2.32V using the formula. Therefore, we can choose a 2.5V voltage reference to expand the range (increasing the range will reduce accuracy).
Considering the potential fluctuations in the measured power supply, a 10nF filter capacitor is connected in parallel with the low-side voltage divider resistor to improve measurement stability.
Range switching:
In this project, an additional voltage sampling circuit was added. Therefore, we can discuss the significance of range switching for improving measurement accuracy. Multimeters often have multiple range settings for more accurate measurements. By adjusting different ranges, the optimal measurement accuracy of the measured point within the corresponding range can be obtained.
This project requires a combination of hardware and software to achieve this function. When we first use the ADC_IN11 channel mentioned earlier to measure voltages below 30V... If the measured voltage is within 0~3V, use the ADC_IN9 channel for measurement. At this time, due to the reduced voltage division ratio, the measurement accuracy is greatly improved.
3. Current Sampling Circuit
This project uses a low-side current sampling circuit for current detection. The low-side of the sampling circuit shares a common ground with the development board's meter interface.

The
sampling current designed for this project is 3A, and the selected sampling resistor (R0) is 100mΩ. The selection of the sampling resistor mainly needs to consider the following aspects:
the maximum value of the pre-designed measurement current; in this project
, the voltage difference caused by the 3A current sensing resistor is generally not recommended to exceed 0.5V
; the power consumption of the current sensing resistor should be selected according to this parameter. Considering the power consumption (temperature) problem under high current, a 1W packaged metal wire-wound resistor was selected.
The voltage amplification factor on the current sensing resistor: No operational amplifier was used to build the amplification circuit in this project, so the factor is 1.
Then... The current sensing resistor value was selected based on the above parameters:
Since this project does not use an amplifier circuit, a larger sampling resistor is needed to obtain a higher measured voltage for measurement.
Considering that a larger resistor would result in a larger voltage drop and higher power consumption, an unlimited selection of a larger resistor is not possible.
This project uses a 1W package resistor, corresponding to a power rise of 1W.
Based on the above data, a 100mΩ current sensing resistor was selected. According to the formula, 3A * 100mΩ = 300mV, 900mW can be calculated.
To cope with different usage environments, especially high current scenarios, the R0 resistor can be replaced with constantan wire or a shunt. The replacement can be selected according to the actual usage scenario. For safety and educational purposes, this project will not discuss measurements exceeding 3A, but the principle is the same.
5. Digital Tube Display
This project uses a digital tube as the display unit.

This project uses two 0.28-inch three-digit common-cathode LED displays as the display device. Compared to a display screen, LED displays offer better visibility in complex environments. The brightness of the LED displays can be increased by using smaller current-limiting resistors, depending on the specific needs of the application environment. Furthermore, LED displays have better mechanical properties and are not as easily damaged by external forces as display screens. They are widely used in industrial applications where stability and reliability are crucial. From a development board learning perspective, this makes it easier to learn electronic measurement principles and related development in a targeted manner.
In this project, actual testing showed that the current-limiting resistors (R1~R6) for the LED displays were configured to 300Ω. The corresponding brightness for both red and blue LED displays was good and the brightness was soft and not glaring.
Strictly speaking, the current-limiting resistors should be added to the segments; adding them to the digits would affect the display effect. Our actual design places them in the digits to save a few resistors, but the impact on the display is not significant. Therefore, we add them to the digits for convenience.
The

driving principle of LED displays mainly involves controlling the switching state of each segment of the LED display to display numbers, letters, or symbols. The following is a detailed explanation of the driving principle:
Basic structure of a digital tube:
A digital tube is usually composed of seven or eight LED segments (this project uses eight segments). Each segment represents a part of the digital tube and can display numbers 0-9, letters AF, and other characters.
Digital tube displays come in two types: common cathode and common anode. The difference lies in whether the common terminal COM (connected to all LEDs) is connected to the negative or positive terminal of the power supply.
Driving methods:
Segment selection: The desired number or character is displayed by controlling the on/off state of each segment of the digital tube. Each segment corresponds to a control signal; when the control signal is on, the segment lights up, and vice versa. (a, b, c, d, e, f, g, dp)
Bit selection: The digital tube to be displayed is selected by controlling its bit lines. Bit line control sets the bit line of the desired digital tube to a high level, and the bit lines of other digital tubes to a low level. By continuously switching the state of the bit lines, display switching between multiple digital tubes can be achieved.
Driving circuit:
The digital tube driving circuit can be implemented using hardware circuits, such as integrated circuits like digital signal processors (DSPs), microcontrollers (MCUs), or shift registers to generate control signals suitable for the LEDs.
These control signals can be in the form of pulse width modulation (PWM) signals, serial data signals, etc. By controlling the frequency, width, and amplitude of these signals, the brightness of the digital tube can be controlled, thereby displaying the desired numbers or letters.
Software Control:
In addition to hardware driver circuits, digital tubes can also be driven by software. By programming and generating control signals suitable for the digital tube, more flexible and complex display effects can be achieved, such as scrolling or alternating display of numbers.
Driving Common Cathode and Common Anode Digital Tubes:
For common cathode digital tubes, the common cathode pin is connected to the negative terminal of the power supply, and the control pin is connected to the output pin of the control chip. When a number needs to be displayed, the control chip outputs the corresponding encoded signal to the control pin, causing the corresponding LED segment to light up.
For common anode digital tubes, the working principle is similar to that of common cathode digital tubes, except that the common anode pin is connected to the positive terminal of the power supply, and the control pin is connected to the output pin of the control chip.
Encoded Display:
In order for the digital tube to display the corresponding numbers or characters, the segment data port must output the corresponding character encoding. For example, to display the number "0", the character code for a common anode seven-segment display is 11000000B (i.e., C0H), while the character code for a common cathode seven-segment display is 00111111B (i.e., 3FH). The specific code depends on the actual seven-segment display.
Dynamic and Static Display:
Seven-segment displays can use either static or dynamic display methods. In static display, each of the eight segments of each seven-segment display is connected to an 8-bit I/O port address. As long as the I/O port outputs a segment code, the corresponding character is displayed and remains unchanged. Dynamic display, on the other hand, lights up each segment of the seven-segment display one by one, achieving simultaneous visual display through rapid switching.
In summary, the driving principle of seven-segment displays is to control the switching state of each segment of the seven-segment display to display numbers, letters, or symbols, and to achieve display switching between multiple seven-segment displays through segment selection and digit selection. Furthermore, the driving of seven-segment displays can be implemented through hardware circuits or software control, and common cathode or common anode seven-segment displays can be selected as needed.
This project actually uses dynamic scanning display to drive the seven-segment display.
Calculating the required current for the digital tube:
This project actually uses dynamic scanning to drive the digital tube, so at any given time, only a maximum of 8 segments of the digital tube (or LEDs) can be lit, or in other words, only one digit can be lit. According to the design, the required driving current is approximately 11mA (IO port high-level voltage 3.3V ÷ 300Ω).
At this point, it's important to ensure the selected MCU has sufficient current sinking/pulling capability.


Analysis of the datasheet shows that CW32 is fine. (Some chips are not suitable.)
6. LED Indicator:
This project additionally designed a power indicator and an IO working indicator.

LD_PWR is the power working indicator .

Since chip I/O often has a greater current sinking capability than current pulling capability, LED1 is designed to be I/O low-level active (on).
To reduce the current consumption of the LED, some LED brightness is sacrificed, the number of component parameters is reduced, and the LED current-limiting resistor is chosen to be 10K.
7. Button Circuit Design:

There are various design methods for the button control circuit. Thanks to the CW32's internal I/O ports which can be configured with pull-up and pull-down resistors, the button control circuit on the outside of the chip does not need to be configured. One end of the button is connected to the MCU's I/O, and the other end is grounded. When the button is pressed, the I/O is pulled low.
8. TL431 Circuit Design for Voltage Measurement and
Calibration: This project adds an extra TL431 circuit to provide a 2.5V reference voltage. This can be used to provide an external voltage reference for the chip to calibrate the AD converter. From a product design perspective, due to the inherent ADC performance advantages of the CW32, this circuit is not necessary. This circuit is designed on the development board to learn the relevant application principles.

The TL431 is a relatively "old" device, very classic, and widely used; it is still found in many electronic products.
Many beginners may be encountering this device for the first time. We will briefly explain the principles of this product to help everyone better apply the TL431.
TI defines it as a "Precision Programmable Reference" in its name. We can focus on several key characteristics on the first page of the references.
Precision: Precision indicates that its output voltage is very accurate. I used a TL431 with ±0.5% accuracy, which measured 2.495V on the board at room temperature. Compared to common Zener diodes, the accuracy is vastly different. In the application circuit diagram, the TL431 is represented by a Zener diode symbol.
Adjustable Output Voltage: The adjustable output voltage is between Vref and 36V. We use the output Vref voltage in our project. Vref voltage is approximately 2.5V. Therefore, we use 2.5V in the description, which is approximately equal to Vref.
Sinking Current Capability: This refers to how much current the output voltage pin can provide. This is greatly related to the resistance value (R13) in the application circuit. It should not be less than 1mA. If there is no need for sinking current, do not design the current to be too high, causing unnecessary power consumption.
Please calibrate after completion. Please calibrate after completion. Please calibrate after completion. (Important: I'll say it three times!)
The method
defines 5 operating modes. The K1 key is used to switch display modes. The K2 key sets the parameter values for the corresponding mode and saves them to FLASH. Press K3 to return to Mode 0.
Mode 0: Displays normal voltage and current values (the upper digital tube displays the voltage value *.V or .*V automatically, the lower tube displays the current value _.**A).
Mode 1: 5V voltage calibration setting. (JP1 can be shorted to use the built-in voltage source). The upper digital tube displays 5.05. The lower tube displays the current voltage value _.V or ._V. In this mode, the multimeter should be set to 5.00V to measure the measured value. Pressing K2 will calibrate the current value to 5V.
Mode 2: 15V voltage calibration setting. (JP1 cannot be shorted). The upper digital tube displays 5.15. The lower tube displays the current voltage value _.V or ._V. In this mode, the multimeter should be set to 15.0V to measure the measured value. Pressing K2 will calibrate the current value to 15V.
Mode 3: 0.5A current calibration setting. (JP2 can be shorted to use the built-in current source setting) The upper row of the digital tube displays A.0.5. The lower row displays the current value _.**A. After pressing the K2 key, the current value is set to 0.5A.
Mode 4: 1.5A Current Calibration Setting. (JP2 can be shorted to use the built-in current source for setting.) The top row of the digital tube displays A.1.5. The bottom row displays the current value *.**A. Pressing the K2 key calibrates the current value to 1.5A.
This project uses the LCSC-CW32F030C8T6 development board as the main controller, featuring a digital tube display, excellent cost-effectiveness, and a built-in current and voltage calibration circuit. It supports a maximum voltage of approximately 11V and a current of 2.5A (short-circuiting JP1 and JP2) to help you better understand the working principle of the ammeter and voltmeter. The video measures 15V, which can be measured directly without an independent power supply (remove the JP1 shorting cap). When measuring below 5V, please use DC power.