From 8258cd63ba7e5fb06d21b1d8c179c0be0d92f725 Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Sat, 15 Jun 2024 13:22:39 +1200 Subject: [PATCH] ist8310: do reset before WHOAMI call (#23161) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ist8310: do reset before WHOAMI call Apparently, the IST8310's WHOAMI register is writeable. Presumably, this can get corrupted by bus noise. It is only reset if powered off for 30s. Therefore, we do a reset before doing the WHOAMI. * ist8310: improve comment Co-authored-by: Beat Küng --------- Co-authored-by: Beat Küng --- src/drivers/magnetometer/isentek/ist8310/IST8310.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp b/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp index b7d8512ce9..d48321d148 100644 --- a/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp +++ b/src/drivers/magnetometer/isentek/ist8310/IST8310.cpp @@ -85,6 +85,15 @@ void IST8310::print_status() int IST8310::probe() { + // Apparently, the IST8310's WHOAMI register is writeable. Presumably, + // this can get corrupted by bus noise. It is only reset if powered off + // for 30s or by a reset. + // + // Therefore, we do a reset before doing the WHOAMI. + RegisterWrite(Register::CNTL2, CNTL2_BIT::SRST); + + px4_usleep(10000); + const uint8_t WAI = RegisterRead(Register::WAI); if (WAI != Device_ID) {