From 92696b589fcc50095ab8ba01a74e0f01424bcce0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Mi=C5=A1i=C4=87?= Date: Mon, 16 Aug 2021 20:21:51 +0200 Subject: [PATCH] sdp3x: stop continuous measurement while reconfig --- src/drivers/differential_pressure/sdp3x/SDP3X.cpp | 7 ++++++- src/drivers/differential_pressure/sdp3x/SDP3X.hpp | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) 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