diff --git a/src/drivers/differential_pressure/sdp3x/SDP3X.cpp b/src/drivers/differential_pressure/sdp3x/SDP3X.cpp index b5d4231d54..72001f539a 100644 --- a/src/drivers/differential_pressure/sdp3x/SDP3X.cpp +++ b/src/drivers/differential_pressure/sdp3x/SDP3X.cpp @@ -72,7 +72,12 @@ SDP3X::init_sdp3x() int SDP3X::configure() { - int ret = write_command(SDP3X_CONT_MEAS_AVG_MODE); + int ret = write_command(SDP3X_CONT_MODE_STOP); + + if (ret == PX4_OK) { + px4_udelay(500); // SDP3X is unresponsive for 500us after stop continuous measurement command + ret = write_command(SDP3X_CONT_MEAS_AVG_MODE); + } if (ret != PX4_OK) { perf_count(_comms_errors); diff --git a/src/drivers/differential_pressure/sdp3x/SDP3X.hpp b/src/drivers/differential_pressure/sdp3x/SDP3X.hpp index f740d7b3b1..8cba4d52ed 100644 --- a/src/drivers/differential_pressure/sdp3x/SDP3X.hpp +++ b/src/drivers/differential_pressure/sdp3x/SDP3X.hpp @@ -56,6 +56,7 @@ #define SDP3X_RESET_ADDR 0x00 #define SDP3X_RESET_CMD 0x06 #define SDP3X_CONT_MEAS_AVG_MODE 0x3615 +#define SDP3X_CONT_MODE_STOP 0x3FF9 #define SDP3X_SCALE_PRESSURE_SDP31 60 #define SDP3X_SCALE_PRESSURE_SDP32 240