Datasheet SPS30
Particulate Matter Sensor for Air Quality Monitoring and Control
▪ Unique long-term stability
▪ Advanced particle size binning
▪ Superior precision in mass
concentration and number
concentration sensing
▪ Small, ultra-slim package
▪ Fully calibrated digital output
Product Summary
The SPS30 Particulate Matter (PM) sensor is a technological breakthrough in optical PM sensors. Its
measurement principle is based on laser scattering and makes use of Sensirion’s innovative contaminationresistance technology. This technology, together with high-quality and long-lasting components, enables precise
measurements from its first operation and throughout its lifetime of more than ten years. In addition, Sensirion’s
advanced algorithms provide superior precision for different PM types and higher-resolution particle size
binning, opening up new possibilities for the detection of different sorts of environmental dust and other particles.
With dimensions of only 41 x 41 x 12 mm3, it is also the perfect solution for applications where size is of
paramount importance, such as wall-mounted or compact air quality devices.
Content
1 Particulate Matter Sensor Specifications
2
2 Electrical Specifications
3
3 Hardware Interface Specifications
4
4 Functional Overview
5
5 Operation and Communication through the UART Interface
6 Operation and Communication through the
I2C
Interface
8
16
7 Mechanical Specifications
23
8 Shipping Package
24
9 Ordering Information
24
10 Revision History
24
11 Important Notices
25
12 Headquarters and Subsidiaries
26
www.sensirion.com
Version 1.0 – D1 – March 2020
1/26
1 Particulate Matter Sensor Specifications
1.1 Specification Overview
Parameter
Mass concentration range
Mass concentration size range
±10
Units
μg/m3
μm
μm
μm
μm
μg/m3
±10
% m.v.
±25
μg/m3
100 to 1000 μg/m3
±25
% m.v.
Maximum long-term mass concentration precision
limit drift
0 to 100 μg/m3
±1.25
μg/m3 / year
100 to 1000 μg/m3
% m.v. / year
Number concentration range
Number concentration size range
PM0.5
PM1.0
PM2.5
PM4
PM10
0 to 1000 #/cm3
±1.25
0 to 3’000
0.3 to 0.5
0.3 to 1.0
0.3 to 2.5
0.3 to 4.0
0.3 to 10.0
Mass concentration precision 1,2 for PM1 and PM2.5 3
Conditions
PM1.0
PM2.5
PM4
PM10
0 to 100 μg/m3
100 to 1000
Mass concentration
precision1,2
for PM4,
PM10 4
0 to 100
Number concentration precision1,2 for PM0.5, PM1
and PM2.53
Number concentration
precision1,2
for PM4,
μg/m3
μg/m3
1000 to 3000
PM104
Value
0 to 1’000
0.3 to 1.0
0.3 to 2.5
0.3 to 4.0
0.3 to 10.0
0 to 1000
#/cm3
#/cm3
1000 to 3000 #/cm3
Maximum long-term number concentration precision 0 to 1000 #/cm3
limit drift2
1000 to 3000 #/cm3
Sampling interval
Typical start-up
time 5
Sensor output characteristics
Lifetime 6
Acoustic emission level
Long term acoustic emission level drift
Additional T-dependent mass and number
concentration precision limit drift2
Weight
number
concentration
200 – 3000
100 – 200 #/cm3
50 – 100 #/cm3
PM2.5 mass concentration
PM2.5 number concentration
24 h/day operation
0.2 m
max.
0.2 m
max.
temperature
typ.
difference to 25°C
-
#/cm3
±100
#/cm3
μm
μm
μm
μm
μm
#/cm3
±10
% m.v.
±250
#/cm3
±25
% m.v.
±12.5
#/cm3 / year
±1.25
% m.v. / year
s
1±0.04
8
s
16
s
30
s
Calibrated to TSI DustTrak™
DRX 8533 Ambient Mode
Calibrated to TSI OPS 3330
> 10
years
25
dB(A)
+0.5
dB(A) / year
% m.v. / °C
±0.5
26.3 ±0.3
g
1
Also referred to as “between-parts variation” or “device-to-device variation”.
For further details, please refer to the document “Sensirion Particulate Matter Sensor Specification Statement”.
3 Verification Aerosol for PM2.5 is a 3% atomized KCl solution. Deviation to reference instrument is verified in end-tests for every sensor after calibration.
4 PM4 and PM10 output values are calculated based on distribution profile of all measured particles.
5 Time after starting Measurement-Mode, until a stable measurement is obtained.
6 Lifetime is based on mean-time-to-failure (MTTF) calculation. Lifetime might vary depending on different operating conditions.
2
www.sensirion.com
Version 1.0 – D1 – March 2020
2/26
Laser wavelength
(DIN EN 60825-1 Class 1)
typ.
660
nm
Table 1: Particulate matter sensor specifications. Default conditions of 25±2 °C, 50±10% relative humidity and 5 V supply voltage
apply unless otherwise stated. ‘max.’ means ‘maximum’, ‘typ.’ means ‘typical’, ‘% m.v.’ means ‘% of measured value’.
1.2 Recommended Operating Conditions
The sensor shows best performance when operated within recommended normal temperature and humidity range of
10 to 40 °C and 20 to 80 % RH, respectively.
2 Electrical Specifications
2.1 Electrical Characteristics
Parameter
Supply voltage
Supply current
Input high level voltage (VIH)
Input low level voltage (VIL)
Output high level voltage (VOH)
Output low level voltage (VOL)
Conditions
Sleep-Mode
Idle-Mode
Measurement-Mode
Measurement-Mode, first 200ms (fan start)
-
Min
4.5
300
45
2.31
0
2.9
0
Typ
5.0
38
330
55
3.3
0
Max
5.5
50
360
65
80
5.5
0.99
3.37
0.4
Unit
V
µA
mA
V
Table 2: Electrical specifications at 25°C.
2.2 Absolute Minimum and Maximum Ratings
Stress levels beyond those listed in Table 3 may cause permanent damage to the device. These are stress ratings only
and functional operation of the device at these conditions cannot be guaranteed. Exposure to the absolute maximum
rating conditions for extended periods may affect the reliability of the device.
Parameter
Supply voltage VDD
Interface Select SEL
I/O pins (RX/SDA, TX/SCL)
Max. current on any I/O pin
Operating temperature range
Storage temperature range
Operating humidity range
Min
-0.3
-0.3
-0.3
-16
-10
-40
0
Max
5.5
4.0
5.5
16
60
70
95
Unit
V
mA
°C
% RH
Table 3: Absolute minimum and maximum ratings.
www.sensirion.com
Version 1.0 – D1 – March 2020
3/26
2.3 ESD / EMC Ratings
Immunity (Industrial level)
Description
Electro Static Discharge
Power-Frequency Magnetic Field
Radio-Frequency EM-Field AM-modulated
Radio-Frequency EM-Field AM-modulated
Standard
IEC 61000-4-2
IEC 61000-4-8
IEC 61000-4-3
IEC 61000-4-3
Rating
±4 kV contact, ±8 kV air
30A/m, 50Hz and 60Hz
80MHz - 1000MHz, 10V/m, 80% AM @1kHz
1.4GHz – 6GHz, 3V/m, 80% AM @1kHz
Standard
IEC/CISPR 16
IEC/CISPR 16
IEC/CISPR 16
IEC/CISPR 16
Rating
40dB(µV/m) QP @3m
47dB(µV/m) QP @3m
70dB(µV/m) P, 50dB(µV/m) AP @3m
74dB(µV/m) P, 54dB(µV/m) AP @3m
Emission (Residential level)
Description
Emission in SAC for 30MHz to 230MHz
Emission in SAC for 230MHz to 1000MHz
Emission in SAC for 1GHz to 3GHz
Emission in SAC for 3GHz to 6GHz
3 Hardware Interface Specifications
The interface connector is located at the side of the sensor opposite to the air inlet/outlet. Corresponding female plug is
ZHR-5 from JST Sales America Inc. In Figure 1 a description of the pin layout is given.
Pin 1
Pin
Name
Description
Comments
1
VDD
Supply voltage
5V ± 10%
UART: Receiving pin for
communication
2
I C: Serial data input / output
TTL 5V and
LVTTL 3.3V
compatible
UART: Transmitting pin for
communication
2
I C: Serial clock input
TTL 5V and
LVTTL 3.3V
compatible
2
Pin 5
3
Figure 1: The communication interface connector is
located at the side of the sensor opposite to the air outlet.
RX
SDA
TX
SCL
4
SEL
Interface select
Leave floating to
select UART
Pull to GND to
select I2C
5
GND
Ground
Housing on GND
Table 4 SPS30 pin assignment.
The SPS30 offers both a UART 7 and an I2C interface. For connection cables longer than 20 cm we recommend using
the UART interface, due to its intrinsic robustness against electromagnetic interference.
Note, that there is an internal electrical connection between GND pin (5) and metal shielding. Keep this metal shielding
electrically floating in order to avoid any unintended currents through this internal connection. If this is not an option,
proper external potential equalization between GND pin and any potential connected to the shielding is mandatory. Any
current though the connection between GND and metal shielding may damage the product and poses a safety risk
through overheating.
7
Universal Asynchronous Receiver Transmitter.
www.sensirion.com
Version 1.0 – D1 – March 2020
4/26
4 Functional Overview
4.1 Operating Modes
Power on / Reset
Measurement
45 - 65 mA
1s
Start Measurement
Stop Measurement
Idle
~ 330 µA
Sleep
Wake-Up
Sleep
< 50 µA
Idle
•
•
•
•
After power on or reset the module is in Idle-Mode.
Most of the internal electronics switched off /reduced power consumption.
Fan and laser are switched off.
The module is ready to receive and process any command.
Measurement
•
•
•
•
The Measurement-Mode can only be entered from Idle-Mode.
All electronics switched on / max. power consumption.
The measurement is running and the module is continuously processing measurement data.
New readings are available every second.
Sleep
•
•
•
•
•
•
The Sleep-Mode can only be entered from Idle-Mode.
Most of the internal electronics switched off / reduced power consumption.
Fan and laser are switched off.
Microcontroller is in Sleep-Mode.
To minimize power consumption, the UART / I2C interface is also disabled.
A wake-up sequence is needed to turn the module back on. See Wake-up command in the interface description.
4.2 Fan Auto Cleaning
When the module is in Measurement-Mode an automatic fan-cleaning procedure will be triggered periodically following
a defined cleaning interval. This will accelerate the fan to maximum speed for 10 seconds in order to blow out the dust
accumulated inside the fan.
•
•
•
•
•
•
•
Measurement values are not updated while the fan-cleaning is running.
The default cleaning interval is set to 604’800 seconds (i.e., 168 hours or 1 week) with a tolerance of ±3%.
The interval can be configured using the Set Automatic Cleaning Interval command.
Set the interval to 0 to disable the automatic cleaning.
Once set, the interval is stored permanently in the non-volatile memory.
If the sensor is switched off, the time counter is reset to 0. Make sure to trigger a cleaning cycle at least every
week if the sensor is switched off and on periodically (e.g., once per day).
The cleaning procedure can also be started manually with the Start Cleaning command.
www.sensirion.com
Version 1.0 – D1 – March 2020
5/26
4.3 Measurement Output Formats
The measurement results can be read with the “Read Measured Values” command. The returned data structure depends
on the selected output format. The output format must be specified when stating the measurement with the “Start
Measurement command”.
IEEE754 float values
Byte #
SHDLC
I2C
0..3
0..5
4..7
6..11
8..11
12..17
12..15
18..23
16..19
24..29
20..23
30..35
24..27
36..41
28..31
42..47
32..35
48..53
36..39
54..59
Datatype
Description
big-endian float IEEE754
Mass Concentration PM1.0 [µg/m³]
Mass Concentration PM2.5 [µg/m³]
Mass Concentration PM4.0 [µg/m³]
Mass Concentration PM10 [µg/m³]
Number Concentration PM0.5 [#/cm³]
Number Concentration PM1.0 [#/cm³]
Number Concentration PM2.5 [#/cm³]
Number Concentration PM4.0 [#/cm³]
Number Concentration PM10 [#/cm³]
Typical Particle Size 8 [µm]
Unsigned 16-bit integer values 9
Byte #
SHDLC
I2C
0..1
0..2
2..3
3..5
4..5
6..8
6..7
9..11
8..9
12..14
10..11
15..17
12..13
18..20
14..15
21..23
16..17
24..26
18..19
27..29
Datatype
Description
big-endian unsigned 16-bit integer
Mass Concentration PM1.0 [µg/m³]
Mass Concentration PM2.5 [µg/m³]
Mass Concentration PM4.0 [µg/m³]
Mass Concentration PM10 [µg/m³]
Number Concentration PM0.5 [#/cm³]
Number Concentration PM1.0 [#/cm³]
Number Concentration PM2.5 [#/cm³]
Number Concentration PM4.0 [#/cm³]
Number Concentration PM10 [#/cm³]
Typical Particle Size8 [nm]
8
The typical particle size (TPS) gives an indication on the average particle diameter in the sample aerosol. Such output correlates with the weighted average of the
number concentration bins measured with a TSI 3330 optical particle sizer. Consequently, lighter aerosols will have smaller TPS values than heavier aerosols.
9 Requires at least firmware version 2.0
www.sensirion.com
Version 1.0 – D1 – March 2020
6/26
4.4 Device Status Register
The Device Status Register is a 32-bit register that contains information about the internal state of the module.
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
res.
res.
res.
res.
res.
3
2
1
0
res.
res.
res.
res.
Warning
res.
res.
res.
res.
res.
res.
res.
res.
res.
res.
15
14
13
12
11
10
9
8
7
6
res.
res.
Note:
res.
res.
res.
res.
res.
res.
res.
res.
SPEED
5
4
Error
Error
LASER
FAN
All “res.” bits are reserved for internal use or future versions. These bits can be both 0 and 1 and should therefore
be ignored.
Bit 21 SPEED: Fan speed out of range
0: Fan speed is ok.
1: Fan speed is too high or too low.
•
During the first 3 seconds after starting the measurement (fan start-up) the fan speed is not checked.
•
The fan speed is also not checked during the auto cleaning procedure.
•
Apart from the two exceptions mentioned above, the fan speed is checked once per second in the
measurement mode. If it is out of range twice in succession, the SPEED-bit is set.
•
At very high or low ambient temperatures, the fan may take longer to reach its target speed after start-up. In
this case, the bit will be set. As soon as the target speed is reached, this bit is cleared automatically.
•
If this bit is constantly set, this indicates a problem with the power supply or that the fan is no longer working
properly.
Bit 5 LASER: Laser failure
0: Laser current is ok.
1: Laser is switched on and current is out of range.
•
The laser current is checked once per second in the measurement mode. If it is out of range twice in
succession, the LASER-bit is set.
•
If the laser current is back within limits, this bit will be cleared automatically.
•
A laser failure can occur at very high temperatures outside of specifications or when the laser module is
defective.
Bit 4 FAN: Fan failure, fan is mechanically blocked or broken.
0: Fan works as expected.
1: Fan is switched on, but the measured fan speed is 0 RPM.
•
The fan is checked once per second in the measurement mode. If 0 RPM is measured twice in succession,
the FAN bit is set.
•
The FAN-bit will not be cleared automatically.
•
A fan failure can occur if the fan is mechanically blocked or broken.
www.sensirion.com
Version 1.0 – D1 – March 2020
7/26
5 Operation and Communication through the UART Interface
VDD
The following UART settings have to be used:
• Baud Rate: 115’200 bit/s
• Data Bits: 8
• Parity: None
• Stop Bit: 1
VDD (1)
Master TX
RX (2)
Master RX
TX (3)
NC
SPS30
Connector
SEL (4)
GND (5)
Figure 2: Typical UART application circuit.
5.1 Physical Layer
The SPS30 has separate RX and TX lines with unipolar logic levels. See Figure 3.
Bit Time
(1/Baudrate)
Start
Bit
Bit 0
Bit 1
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7
Stop
Bit
Figure 3: Transmitted byte.
5.2 SHDLC Frame Layer
On top of the UART interface, the SPS30 uses the very powerful and easy-to-implement SHDLC 10 protocol. It is a serial
communication protocol based on a master/slave architecture. The SPS30 acts as the slave device.
Data is transferred in logical units called frames. Every transfer is initiated by the master sending a MOSI 11 frame. The
slave will respond to the MOSI frame with a slave response, or MISO 12 frame. The two types of frames are shown in
Figure 4.
Frame Content
MOSI Frame
Start
(0x7E)
L
ADR
CMD
(1 Byte) (1 Byte) (1 Byte)
TX Data
0...255 Bytes
CHK
(1 Byte)
Stop
(0x7E)
Frame Content
MISO Frame
Start
(0x7E)
ADR
CMD
State
L
(1 Byte) (1 Byte) (1 Byte) (1 Byte)
RX Data
0...255 Bytes
CHK
(1 Byte)
Stop
(0x7E)
Figure 4: MOSI and MISO frames structure.
10
Sensirion High-Level Data Link Control.
Master Out Slave In. Frame direction from master to slave.
12 Master In Slave Out. Frame direction from slave to master.
11
www.sensirion.com
Version 1.0 – D1 – March 2020
8/26
Start/Stop Byte and Byte-Stuffing
The 0x7E character is sent at the beginning and at the end of the frame to signalize frame start and stop. If this byte
(0x7E) occurs anywhere else in the frame, it must be replaced by two other bytes (byte-stuffing). This also applies to the
characters 0x7D, 0x11 and 0x13. Use Table 5 for byte-stuffing.
Original data byte
Transferred data bytes
0x7E
0x7D, 0x5E
0x7D
0x7D, 0x5D
0x11
0x7D, 0x31
0x13
0x7D, 0x33
Table 5 Reference table for byte-stuffing.
Example: Data to send = [0x43, 0x11, 0x7F] Data transmitted = [0x43, 0x7D, 0x31, 0x7F].
Address
The slave device address is always 0.
Command
In the MOSI frame the command tells the device what to do with the transmitted data. In the MISO frame, the slave just
returns the received command.
Length
Length of the “TX Data” or “RX Data” field (before byte-stuffing).
State
The MISO frame contains a state byte, which allows the master to detect communication and execution errors.
b7
Error-Flag
b6
Execution error code
b0
Figure 5: Status byte structure.
The first bit (b7) indicates that at least one of the error flags is set in the Device Status Register.
The “Execution error code” signalizes all errors which occur while processing the frame or executing the command. The
following table shows the error codes which can be reported from the device. Note that some of these errors are system
internal errors which require additional knowledge to be understood. In case of a problem, they will help Sensirion to
localize and solve the issue.
Error Code
dec
hex
0
0x00
1
0x01
2
0x02
3
0x03
4
0x04
40
0x28
67
0x43
Meaning
No error
Wrong data length for this command (too much or little data)
Unknown command
No access right for command
Illegal command parameter or parameter out of allowed range
Internal function argument out of range
Command not allowed in current state
Table 6 Reference table for error codes.
www.sensirion.com
Version 1.0 – D1 – March 2020
9/26
Data
The data has a usable size of [0…255] bytes (original data, before byte-stuffing). The meaning of the data content
depends on the command.
Checksum
The checksum is built before byte-stuffing and checked after removing stuffed bytes from the frame. The checksum is
defined as follows:
1. Sum all bytes between start and stop (without start and stop bytes).
2. Take the least significant byte of the result and invert it. This will be the checksum.
For a MOSI frame use Address, Command, Length and Data to calculate the checksum.
For a MISO frame use Address, Command, State, Length and Data to calculate the checksum.
Example (MOSI frame without start/stop and without byte-stuffing):
Adr
CMD
L
Tx Data 2 Bytes
CHK
0x00
0x00
0x02
0x01, 0x03
0xF9
The checksum is calculated as follows:
Adr
CMD
L
Data 0
Data 1
0x00
0x00
0x02
0x01
0x03
Sum 0x06
Least Significant Byte of Sum 0x06
Inverted (=Checksum) 0xF9
5.3 SHDLC Commands
The following table shows an overview of the available SHDLC commands.
CMD
0x00
0x01
0x03
0x10
0x11
0x56
0x80
0xD0
0xD1
0xD2
0xD3
Command
Start Measurement
Stop Measurement
Read Measured Value
Sleep
Wake-up
Start Fan Cleaning
Read/Write Auto Cleaning Interval
Device Information
Read Version
Read Device Status Register
Reset
Read / Write / Execute
Execute
Execute
Read
Execute
Execute
Execute
Read / Write
Read
Read
Read
Execute
max. Response Time
20 ms
20 ms
20 ms
5 ms
5 ms
20 ms
20 ms
20 ms
20 ms
20 ms
20 ms
min. required Firmware
V1.0
V1.0
V1.0
V2.0
V2.0
V1.0
V1.0
V1.0
V1.0
V2.2
V1.0
Table 7 Reference table for SHDLC commands.
www.sensirion.com
Version 1.0 – D1 – March 2020
10/26
5.3.1 Start Measurement (CMD: 0x00)
Starts the measurement 13. After power up, the module is in Idle-Mode. Before any measurement values can be read,
the Measurement-Mode needs to be started using this command.
MOSI Data:
Byte # Datatype
0
uint8
1
uint8
Description
Subcommand, this value must be set to 0x01
Measurement Output Format:
0x03: Big-endian IEEE754 float values
0x05: Big-endian unsigned 16-bit integer values
MISO Data: No data.
Example Frames:
Start measurement with output format “Big-endian IEEE754 float values”:
0x7E 0x00 0x00 0x02 0x01 0x03 0xF9 0x7E
Empty response frame:
0x7E 0x00 0x00 0x00 0x00 0xFF 0x7E
MOSI
MISO
5.3.2 Stop Measurement (CMD: 0x01)
Stops the measurement 14. Use this command to return to the initial state (Idle-Mode).
MOSI Data: No data.
MISO Data: No data.
Example Frames:
MOSI
0x7E 0x00 0x01 0x00 0xFE 0x7E
Empty response frame:
0x7E 0x00 0x01 0x00 0x00 0xFE 0x7E
MISO
5.3.3 Read Measured Values (CMD: 0x03)
Reads the measured values from the module. This command can be used to poll for new measurement values. The
measurement interval is 1 second.
MOSI Data: No data.
MISO Data:
If no new measurement values are available, the module returns an empty response frame.
If new measurement values are available, the response frame contains the measurement results. The data format
depends on the selected output format, see 4.3 Measurement Output Formats.
Example Frames:
MOSI
13
14
0x7E 0x00 0x03 0x00 0xFC 0x7E
This command can only be executed in Idle-Mode.
This command can only be executed in Measurement-Mode.
www.sensirion.com
Version 1.0 – D1 – March 2020
11/26
Empty response frame:
0x7E 0x00 0x03 0x00 0x00 0xFC 0x7E
MISO
Or response frame with new measurement values:
0x7E 0x00 0x03 0x00 0x28 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xD4 0x7E
5.3.4 Sleep (CMD: 0x10) 15
Enters the Sleep-Mode with minimum power consumption. This will also deactivate the UART interface, note the wakeup sequence described at the Wake-up command.
MOSI Data: No data.
MISO Data: No data.
Example Frames:
MOSI
MISO
0x7E 0x00 0x10 0x00 0xEF 0x7E
0x7E 0x00 0x10 0x00 0x00 0xEF 0x7E
5.3.5 Wake-up (CMD: 0x11)
Use this command to switch from Sleep-Mode to Idle-Mode. In Sleep-Mode the UART interface is disabled and must
first be activated by sending a low pulse on the RX pin. This pulse is generated by sending a single byte with the value
0xFF.
If then a Wake-up command follows within 100ms, the module will switch on again and is ready for further commands in
the Idle-Mode. If the low pulse is not followed by the Wake-up command, the microcontroller returns to Sleep-Mode after
100ms and the interface is deactivated again.
The Wake-up command can be sent directly after the 0xFF, without any delay. However, it is important that no other
value than 0xFF is used to generate the low pulse, otherwise it’s not guaranteed the UART interface synchronize
correctly.
MOSI Data: No data.
MISO Data: No data.
Example Frames:
MOSI
MISO
Send 0xFF to generate a low pulse in order to wake-up the interface:
0xFF
Wake-up command, within 100ms:
0x7E 0x00 0x11 0x00 0xEE 0x7E
0x7E 0x00 0x11 0x00 0x00 0xEE 0x7E
Alternatively, if the software implementation does not allow to send a single byte with the value 0xFF, the Wake-up
command can be sent twice in succession. In this case the first Wake-up command is ignored, but causes the interface
to be activated.
15
This command can only be executed in Idle-Mode.
www.sensirion.com
Version 1.0 – D1 – March 2020
12/26
First Wake-up command (just, activates the interface):
0x7E 0x00 0x11 0x00 0xEE 0x7E
Second Wake-up command, within 100ms (this finally wakes up the module):
0x7E 0x00 0x11 0x00 0xEE 0x7E
0x7E 0x00 0x11 0x00 0x00 0xEE 0x7E
MOSI
MISO
5.3.6 Start Fan Cleaning (CMD: 0x56)
Starts the fan-cleaning manually 16. For more details, note the explanations given in 4.2 Fan Auto Cleaning.
MOSI Data: No data.
MISO Data: No data.
Example Frames:
MOSI
MISO
0x7E 0x00 0x56 0x00 0xA9 0x7E
0x7E 0x00 0x56 0x00 0x00 0xA9 0x7E
5.3.7 Read/Write Auto Cleaning Interval (CMD: 0x80)
Reads/Writes the interval [s] of the periodic fan-cleaning. For more details, note the explanations given in 4.2 Fan Auto
Cleaning.
MOSI Data:
Read Auto Cleaning Interval:
Byte # Datatype
0
uint8
Description
Subcommand, this value must be set to 0x00
Write Auto Cleaning Interval:
Byte # Datatype
0
uint8
1..4 uint32
Description
Subcommand, this value must be set to 0x00
Interval in seconds as big-endian unsigned 32-bit integer value.
MISO Data:
Read Auto Cleaning Interval:
Byte # Datatype
0..3 uint32
Description
Interval in seconds as big-endian unsigned 32-bit integer value.
Write Auto Cleaning Interval: No data.
Example Frames:
MOSI
MISO
16
Read Auto Cleaning Interval:
0x7E 0x00 0x80 0x01 0x00 0x7D 0x5E 0x7E
Write Auto Cleaning Interval to 0 (disable):
0x7E 0x00 0x80 0x05 0x00 0x00 0x00 0x00 0x00 0x7A 0x7E
Response frame for “Read Auto Cleaning Interval”:
0x7E 0x00 0x80 0x00 0x04 0x00 0x00 0x00 0x00 0x7B 0x7E
Response frame for “Write Auto Cleaning Interval”:
0x7E 0x00 0x80 0x00 0x00 0x7F 0x7E
This command can only be executed in Measurement-Mode.
www.sensirion.com
Version 1.0 – D1 – March 2020
13/26
5.3.8 Device Information (CMD 0xD0)
This command returns the requested device information. It is defined as a string value with a maximum length of 32
ASCII characters (including terminating null character).
MOSI Data:
Byte # Datatype
0
uint8
Description
This parameter defines which information is requested:
0x00: Product Type
0x01: Reserved
0x02: Reserved
0x03: Serial Number
MISO Data:
Byte # Datatype
0…n string
Description
Requested Device Information as null-terminated ASCII string. The size of the string is limited to 32 ASCII
characters (including null character).
Example Frames:
Product Type:
Recommended to use as product identifier, returns always the string “00080000” on this product.
MOSI
0x7E 0x00 0xD0 0x01 0x00 0x2E 0x7E
0x7E 0x00 0xD0 0x00 0x09 0x30 0x30 0x30 0x38 0x30 0x30 0x30 0x30 0x00 0x9B
0x7E
MISO
Serial Number:
MOSI
0x7E 0x00 0xD0 0x01 0x03 0x2B 0x7E
0x7E 0x00 0xD0 0x00 0x15 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30
0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x00 0x5A 0x7E
MISO
5.3.9 Read Version (0xD1)
Gets version information about the firmware, hardware, and SHDLC protocol.
MOSI Data: No data.
MISO Data:
Byte #
0
1
2
3
4
5
6
17
Datatype
uint8
uint8
uint8
uint8
uint8
uint8
uint8
Description
Firmware major version
Firmware minor version 17
Reserved: always 0
Hardware revision
Reserved: always 0
SHDLC protocol major version
SHDLC protocol minor version
Firmware minor version may change without notice, given full backwards compatibility.
www.sensirion.com
Version 1.0 – D1 – March 2020
14/26
Example Frame:
MOSI
0x7E 0x00 0xD1 0x00 0x2E 0x7E
Firmware V2.1, Hardware V6, SHDLC V2.0:
0x7E 0x00 0xD1 0x01 0x07 0x02 0x01 0x00 0x06 0x00 0x02 0x00 0x1C 0x7E
MISO
5.3.10 Read Device Status Register (0xD2)
Use this command to read the Device Status Register. For more details, note the explanations given in 4.4 Device Status
Register.
Note:
If one of the device status flags of type “Error” is set, this is also indicated in every SHDLC response frame by
the Error-Flag in the state byte.
MOSI Data:
Byte # Datatype
0
uint8
Description
0: Do not clear any bit in the Device Status Register after reading.
1: Clear all bits in the Device Status Register after reading.
MISO Data:
Byte # Datatype
0…3 big-endian, uint32
4
uint8
Description
Device Status Register
Reserved for future use
Example Frame:
MOSI
MISO
0x7E 0x00 0xD2 0x01 0x00 0x2C 0x7E
0x7E 0x00 0xD2 0x00 0x05 0x00 0x00 0x00 0x00 0x00 0x28 0x7E
5.3.11 Device Reset (CMD: 0xD3)
Soft reset command. After calling this command, the module is in the same state as after a Power-Reset. The reset is
executed after sending the MISO response frame.
Note:
To perform a reset when the sensor is in sleep mode, it is required to send first a wake-up sequence to activate
the interface.
MOSI Data: No data.
MISO Data: No data.
Example Frames:
MOSI
MISO
0x7E 0x00 0xD3 0x00 0x2C 0x7E
0x7E 0x00 0xD3 0x00 0x00 0x2C 0x7E
www.sensirion.com
Version 1.0 – D1 – March 2020
15/26
6 Operation and Communication through the I2C Interface
Usage:
• I2C address:
0x69
• Max. speed:
standard mode, 100 kbit/s
• Clock stretching: not used
VDD
Rp
Rp
SDA
VDD (1)
SDA (2)
SCL
SPS30
Connector
SCL (3)
SEL (4)
GND (5)
Both SCL and SDA lines are open drain I/Os. They should
be connected to external pull-up resistors (e.g. Rp = 10 kΩ).
Important notice: in order to correctly select I2C as
interface, the interface select (SEL) pin must be pulled to
GND before or at the same time the sensor is powered up.
Figure 6: Typical I2C application circuit.
Some considerations should be made about the use of the I2C interface. I2C was originally designed to connect two chips
on a PCB. When the sensor is connected to the main PCB via a cable, particular attention must be paid to
electromagnetic interference and crosstalk. Use as short as possible (< 10 cm) and/or well shielded connection cables.
We recommend using the UART interface instead, whenever possible: it is more robust against electromagnetic
interference, especially with long connection cables.
For detailed information on the I2C protocol, refer to NXP I2C-bus specification 18.
6.1 Transfer Types
Set Pointer
Sets the 16-bit address pointer without writing data to the sensor module. It is used to execute commands, which do not
require additional parameters.
P P P P P P P P
7 6 5 4 3 2 1 0
ACK
P P P P P P P P
15 14 13 12 11 10 9 8
ACK
A6 A5 A4 A3 A2 A1 A0
ACK
SDA
Pointer Address
Write
I2C Header
SCL
1
S
18
9
I2C Address
W A
1
9
Pointer MSB
1
A
9
Pointer LSB
A P
http://www.nxp.com/documents/user_manual/UM10204.pdf
www.sensirion.com
Version 1.0 – D1 – March 2020
16/26
Set Pointer & Read Data
Sets the 16-bit address pointer and read data from sensor module. It is used to read sensor module information or
measurement results. The data is ready to read immediately after the address pointer is set. The sensor module transmits
the data in 2-byte packets, which are protected with a checksum.
D D D D D D D D
7 6 5 4 3 2 1 0
ACK
A6 A5 A4 A3 A2 A1 A0
ACK
Read Data 0
Read
P P P P P P P P
7 6 5 4 3 2 1 0
ACK
P P P P P P P P
15 14 13 12 11 10 9 8
ACK
A6 A5 A4 A3 A2 A1 A0
ACK
SDA
I2C Header
Pointer Address
Write
I2C Header
...
...
SCL
D D D D D D D D
7 6 5 4 3 2 1 0
9
Read Data (n-2)
C C C C C C C C
7 6 5 4 3 2 1 0
...
...
9
1
Read Data (n-1)
D D D D D D D D
7 6 5 4 3 2 1 0
D D D D D D D D
7 6 5 4 3 2 1 0
Checksum
C C C C C C C C
7 6 5 4 3 2 1 0
...
1
S
1
Checksum
ACK
...
9
NACK
Read Data 1
1
ACK
9
ACK
1
ACK
9
1
9
I2C Address
...
W A
1
9
Pointer MSB
Data 1
A
A
9
Pointer LSB
Checksum 0
A
A P
...
S
1
9
Slave Address
R A
A
Data (n-1)
Data (n-2)
1
9
Data 0
A
A
...
Checksum
A P
It is allowed to read several times in succession without setting the address pointer again. This reduces the protocol
overhead for periodical reading of the measured values.
Set Pointer & Write Data
Sets the 16-bit address pointer and writes data to the sensor module. It is used to execute commands, which require
additional parameters. The data must be transmitted in 2-byte packets which are protected by a checksum.
D D D D D D D D
7 6 5 4 3 2 1 0
C C C C C C C C
7 6 5 4 3 2 1 0
ACK
D D D D D D D D
7 6 5 4 3 2 1 0
Checksum
ACK
P P P P P P P P
7 6 5 4 3 2 1 0
Write Data 1
ACK
Write Data 0
ACK
P P P P P P P P
15 14 13 12 11 10 9 8
ACK
A6 A5 A4 A3 A2 A1 A0
ACK
SDA
Pointer Address
Write
I2C Header
...
...
SCL
9
1
1
9
1
9
1
...
D D D D D D D D
7 6 5 4 3 2 1 0
1
Write Data (n-1)
ACK
Write Data (n-2)
9
D D D D D D D D
7 6 5 4 3 2 1 0
9
Checksum
C C C C C C C C
7 6 5 4 3 2 1 0
ACK
9
ACK
1
...
1
S
Slave Address
W A
Pointer MSB
A
Pointer LSB
...
www.sensirion.com
A
9
1
9
1
9
...
Data 0
A
Data 1
A
Checksum
A
Data (n-2)
A
Data (n-1)
A
Checksum
A P
Version 1.0 – D1 – March 2020
17/26
6.2 Checksum Calculation
The Read and Write Commands transmit the data in 2-byte packets, followed by an 8-bit checksum. The checksum is
calculated as follows:
Property
Name
Protected Data
Width
Polynomial
Initialization
Reflect Input
Reflect Output
Final XOR
Example
Value
CRC-8
read and/or write data
8 bit
0x31 (x^8 + x^5 + x^4 + 1)
0xFF
false
false
0x00
CRC(0xBEEF) = 0x92
uint8_t CalcCrc(uint8_t data[2]) {
uint8_t crc = 0xFF;
for(int i = 0; i < 2; i++) {
crc ^= data[i];
for(uint8_t bit = 8; bit > 0; --bit) {
if(crc & 0x80) {
crc = (crc