Commit graph zephyr/drivers/sensor
Author SHA1 Message Date
Luis Ubieda
836e6fb882 icm45686: stream: Remove memset when completing stream event
As it's not required, so we rather spare the cycles.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-09-30 11:02:12 +02:00
Luis Ubieda
ea708cf9e1 icm45686: Add warning log when event triggered while busy
In order to detect when events are being missed.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-09-30 11:02:12 +02:00
Luis Ubieda
7921ca4090 icm45686: stream: Add missing call to drop RTIO Bus queue when full
Not handled otherwise.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-09-30 11:02:12 +02:00
Luis Ubieda
fdc359547b icm45686: stream: Refactor completion actions through helper function
In order to simplify code-logic.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-09-30 11:02:12 +02:00
Luis Ubieda
532c80a764 icm45686: Replace assert for check-if when buffer alloc fails
In order to allow the error-handling scheme to take action, instead
of crashing when asserts are enabled. Now possible since we have RTIO
error handling for streaming mode.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-09-30 11:02:12 +02:00
Luis Ubieda
bab0723972 icm45686: Update RTIO bus API to simplify async transfers
Similar pattern applied to other in-tree sensor drivers, where
preparing a set of SQEs for writing/reading on registers is a recurrent
syntax.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-09-30 11:02:12 +02:00
Armando Visconti
b390cbd6b2 drivers/sensor: iis3dwb: add streaming capabality
Add read_and_decode streaming APIs support.

Triggers supported:
    - SENSOR_TRIG_FIFO_WATERMARK
    - SENSOR_TRIG_FIFO_FULL
    - SENSOR_TRIG_DATA_READY

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2025-09-30 11:01:12 +02:00
Armando Visconti
93a30e7806 drivers/sensor/st: add support to IIS3DWB accel
The IIS3DWB is a system-in-package featuring a 3-axis digital vibration
sensor with low noise over an ultrawide and flat frequency range.
The wide bandwidth, low noise, very stable and repeatable sensitivity,
together with the capability of operating over an extended temperature
range (up to +105 C), make the device particularly suitable for vibration
monitoring in industrial applications.

Datasheet: https://www.st.com/en/mems-and-sensors/iis3dwb.html

This driver is currently only supporting the polling-mode read_and_decode
APIs (both blocking and non-blocking).

This driver is based on stmemsc HAL i/f v2.9.1.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2025-09-30 11:01:12 +02:00
Tobias Kässer
9cbcdda587 drivers: sensor: adxl345: Add support for motion trigger
Adding minimal support for using motion trigger interrupts
with the adxl345

Signed-off-by: Tobias Kässer <t.kaesser@gmail.com>
2025-09-30 11:00:14 +02:00
Anthony Williams
e6ff45d38a sensor: rm3100: Add support for SPI
Add support for SPI

Signed-off-by: Anthony Williams <anthony289478@gmail.com>
2025-09-30 10:59:21 +02:00
Michał Stasiak
a0b008bef4 drivers: sensor: qdec_nrfx: add conditional PM ISR safety
Requesting/releasing QDEC device may be ISR safe, but
it cannot be reliably known whether managing its power
domain is. Is is then assumed that if power domains are used,
device is no longer ISR safe. This macro let's us check if
we will be requesting/releasing power domains and determines
PM device ISR safety value.

Signed-off-by: Michał Stasiak <michal.stasiak@nordicsemi.no>
2025-09-25 09:22:45 +02:00
Thomas Schmid
bab5484ed8 sensor: mcp9600: extend driver functionality
Add support for runtime and devicetree configuration of themocouple
type, ADC resolution, filter coefficient and cold junction temperature
resolution. Extend device specific sensor channels to include cold
junction temperature, delta tempereature, hot junction temperature and
raw ADC values while still maintaining backwards compability with the
existing SENSOR_CHAN_AMBIENT_TEMP channel.

Signed-off-by: Thomas Schmid <tom@lfence.de>
2025-09-24 19:18:43 -04:00
Manoj Purushothama
75b98415fa drivers: sensor: tsl2591: fix sign extension
Explicitly cast data->atime to uint32_t to
prevent signed promotion and sign extension
when multiplying with data->again.

Signed-off-by: Manoj Purushothama <hpmanoj@umich.edu>
2025-09-22 17:51:44 -04:00
Guillaume Gautier
43bf0b3344 drivers: sensor: st: qdec: remove init struct
Remove the calls to LL_TIM_ENCODER_StructInit and LL_TIM_ENCODER_Init
in the QDEC driver. This avoids calling functions from stm32xxxx_ll_tim.c.
They are replaced by a set of simpler functions from the header file.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2025-09-19 12:46:46 -04:00
Dipak Shetty
c85922f97c drivers: sensor: ti: tmp1075: fix one-shot conversion for shutdown mode
Add missing one-shot conversion logic in sample_fetch when driver is
configured for shutdown mode. Previously, the driver would attempt to
read temperature without triggering conversion, resulting in stale data.

Signed-off-by: Dipak Shetty <shetty.dipak@gmx.com>
2025-09-18 19:09:11 -04:00
Arthur Gay
acf7657c45 drivers: sensor: lis2dh: Add self-test attribute
Add support for enabling and configuring the self-test mode of the
LIS2DH accelerometer through a dedicated sensor attribute.

Signed-off-by: Arthur Gay <arthur.gay@marshmallow.kids>
2025-09-18 19:08:32 -04:00
Steffen Schulz
4ae52ca220 drivers: sensors: add a sensor driver for INA7xx
Add a sensor driver for the TI current sensor.
INA700, INA745, INA780

Signed-off-by: Steffen Schulz <steffenschulz@gmx.de>
2025-09-18 13:41:50 -04:00
Jonas Berg
f683bc53d1 drivers: sensor: ti: ina2xx: Add INA228 test
Add test for Texas Instruments INA228 current sensor via I2C.

Signed-off-by: Jonas Berg <jonas.s.t.berg@gmail.com>
Signed-off-by: Wilkins White <ww@novadynamics.com>
2025-09-16 16:06:38 +02:00
Wilkins White
8ed9787089 drivers: sensor: ti: ina2xx: Add INA228
Add the Texas Instruments INA228 Power/Energy/Charge
monitor. This chip is similar to the INA237, but has
a more precise ADC and added energy/charge channels.

Signed-off-by: Wilkins White <ww@novadynamics.com>
2025-09-16 16:06:38 +02:00
Wilkins White
685fec5809 drivers: sensor: ti: ina2xx: Convert INA226
Convert the INA226 driver to INA2XX

Signed-off-by: Wilkins White <ww@novadynamics.com>
2025-09-16 16:06:38 +02:00
Wilkins White
5ffb8c6305 drivers: sensor: ti: ina2xx: Convert INA230
Convert the INA230 driver to INA2XX

Signed-off-by: Wilkins White <ww@novadynamics.com>
2025-09-16 16:06:38 +02:00
Wilkins White
9c113d0a00 drivers: sensor: ti: ina2xx: Convert INA237
Convert the INA237 driver to INA2XX

Signed-off-by: Wilkins White <ww@novadynamics.com>
2025-09-16 16:06:38 +02:00
Wilkins White
bb570cbea4 drivers: sensor: ti: ina2xx: Add common functions
This commit adds a common framework to reduce repeated
code in the INA2XX family.

Signed-off-by: Wilkins White <ww@novadynamics.com>
2025-09-16 16:06:38 +02:00
Wilkins White
06b1440890 drivers: sensor: ti: Rename ina23x to ina2xx
This commit renames the ina23x folder and common files to ina2xx.
The more generic name will support, e.g., the INA237 and INA228
series chips.

Signed-off-by: Wilkins White <ww@novadynamics.com>
2025-09-16 16:06:38 +02:00
Tom Burdick
e8c676be47 rtio: More useful callback OPs
Callbacks now take a result parameter which may, if the callback was
linkd to by a previous submissions, have the result code from the last
submission.

Additionally the userdata is now const by default making it easier to
use the device pointer as the userdata which is very common.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2025-09-16 09:53:14 +02:00
Jordan Yates
1c7f1e56cc sensor: current_amp: improve output resolution
Improve the output resolution by converting internally to microvolts
rather than millivolts.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-09-15 19:44:36 -04:00
Jordan Yates
1f144307cf sensor: current_amp: optional high-range gain fallback
Add the option to specify an alternate ADC gain value to use if the
initial measurement saturates the range. This enables higher data
resolutions when the values are small compared to the maximum signal
values, while still supporting the maximum.

As a concrete example, measuring charge currents from a small solar
panel (0 - 50mA), while also supporting high USB charge currents
(up to 1A).

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-09-15 19:44:36 -04:00
Anthony Williams
3e7a941094 sensor: icm45686: Fix one-shot missing shift value for XYZ channels
Fix missing shift values in `sensor_three_axis_data`  when performing
one-shot reads on SENSOR_CHAN_ACCEL_XYZ and SENSOR_CHAN_GYRO_XYZ

Signed-off-by: Anthony Williams <anthony289478@gmail.com>
2025-09-15 19:44:25 -04:00
Jan Kablitz
e93bf00d5d drivers: sensor: st: lis2du12: fix missing power down before sw reset
According to the LIS2DU12 datasheet (p.30), the device must be
inpower-down mode before executing a software reset.
Entering power-down requires setting the ODR field to 0x000.
This commit adds the missing call to set ODR=0x000 before issuing the
reset. Without this step, the sensor does not recover after a controller
reset and only resumes operation after a full power cycle.

Signed-off-by: Jan Kablitz <jan.kablitz@8tronix.de>
2025-09-15 13:59:25 -04:00
Jan Kablitz
b7c971d1d1 drivers: sensor: st: lis2du12: relocate definition of reboot function
Relocate private reboot function to allow ODR configuration before
execution. This will ensure proper power-down sequence prior to software
reset.

Signed-off-by: Jan Kablitz <jan.kablitz@8tronix.de>
2025-09-15 13:59:25 -04:00
Anders Bjørn Nedergaard
18bff321be drivers: sensor: temperature: Add i.MX RT die temperature sensor
Added driver for i.MX RT118X die temperature sensor

Signed-off-by: Anders Bjørn Nedergaard <abn@polytech.com>
2025-09-12 16:06:31 -04:00
Matthias Hauser
5d0644627f drivers: sensor: include z-axis in Anymotion interrupt on the BMI270
include z-axis in Anymotion interrupt on the BMI270

Signed-off-by: Matthias Hauser <Matthias.Hauser@we-online.de>
2025-09-12 16:05:40 -04:00
Jordan Yates
1e307bcae2 sensor: voltage_divider: request calibration
Request calibration of the ADC in the voltage divider driver to improve
the accuracy of the measured voltages.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-09-09 20:40:11 -04:00
Marc Reilly
cc0fecd299 sensor: shell_battery: display labels for capacity are mAh
Update the units labels to be mAh

Signed-off-by: Marc Reilly <marc@cpdesign.com.au>
2025-09-09 11:44:59 +02:00
Marc Reilly
5bc2d0758a sensor: shell_battery: fix current value display
The sensor interface gives current channel values in Amps, but the "I"
(current) value is displayed in mA, so needs to be converted accordingly.

Signed-off-by: Marc Reilly <marc@cpdesign.com.au>
2025-09-09 11:44:59 +02:00
Vinayak Sunilkumar Priyadarsini
a87ed22fe1 drivers: sensor: adxl367: fix for temperature readout
Fix to ensure temperature is sampled at the same timestamp as x,y,z axis
data.

Signed-off-by: Vinayak Sunilkumar Priyadarsini <Vinayak.SunilkumarPriyadarsini@analog.com>
2025-09-09 07:35:00 +02:00
Benjamin Cabé
e9bcda38ca drivers: sensor: a01nyub: use logical AND in condition
Fix typo where a bitwise AND was used instead of a logical AND.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-09-04 21:04:51 +02:00
Benjamin Cabé
1185829f3b drivers: sensor: bmi270: fix off-by-one error
When the loop completes without breaking, tries would be
BMI270_CONFIG_FILE_RETRIES + 1 so the error check was never hit.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-09-04 21:04:30 +02:00
Wajdi ELMuhtadi
f9081725cf drivers: sensor: wsen_isds_2536030320001: add sensor driver
Add wsen_isds_2536030320001 driver with
the corrected name and compatibility with
the hal update as well as added new features.

Signed-off-by: Wajdi ELMuhtadi <wajdi.elmuhtadi@we-online.com>
2025-09-04 21:03:10 +02:00
Benjamin Cabé
89fef8aa6d doc: correct the spelling of "comparison"
s/comparision/comparison/

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-09-03 17:04:13 +02:00
Miguel Gazquez
84cfd706e9 drivers: sensor: lsm9ds1: use consistent variable name data
In both lsm9ds1 and lsm9ds1_mag drivers, the device data structure is
generally referenced with the variable name data.
However, in the initialization functions, the variable was named
lsm9ds1 (or lsm9ds1_mag for the magnetometer), which breaks this
convention.

Rename these variables to data for consistency across the driver.

Signed-off-by: Miguel Gazquez <miguel.gazquez@bootlin.com>
2025-09-03 14:58:30 +01:00
Miguel Gazquez
6ce58d4d71 drivers: sensor: lsm9ds1: add device PM support
Adds support for device PM for the lsm9ds1 sensor, putting the sampling
frequency of both the accelerometer and the gyroscope at 0 when the device
is suspended.

Signed-off-by: Miguel Gazquez <miguel.gazquez@bootlin.com>
2025-09-03 14:58:30 +01:00
Aditya Chopra
32789e550d drivers: sensor: paj7620: Fix potential integer overflow in driver
Fix Coverity issue CID 524766: A potential integer overflow could occur
in paj7620_set_sampling_rate() due to multiplication of
sensor_value->val1 instance(which is of type int32_t) with 1000000
without typecasting it to int64_t.

Fixes #90482

Signed-off-by: Aditya Chopra <adityachopra2912@gmail.com>
2025-09-03 01:41:47 +02:00
Jeppe Odgaard
451193f2e3 drivers: sensor: explorir_m: check transceive return value in init
Check `explorir_m_uart_transceive`'s return value in `explorir_m_init` and
return the value if not 0.

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>
2025-09-03 01:32:37 +02:00
Rafal Dyla
8876a3bbd2 modules: hal_nordic: nrfs: Disabling subscription
- Code optimization for platforms which don't use subscription feature
in the temperature service.
- Test adaptation to code changes

Signed-off-by: Rafal Dyla <rafal.dyla@nordicsemi.no>
2025-08-21 11:08:09 +02:00
Dmitrii Sharshakov
3835d9ae0f sensor: adltc2990: correct emulator implementation
Fix an out of bounds access found by ASan.

Also remove mock_i2c_reg_error which seems to never be read.

Signed-off-by: Dmitrii Sharshakov <d3dx12.xx@gmail.com>
2025-08-20 02:17:53 +02:00
Jeppe Odgaard
0970aa2dc1 drivers: sensor: ti: tmp11x: clang-format files and change DEFINE_TMP11X
Run clang-format on tmp11x.c and tmp11x.h and change `DEFINE_TMP11X` to
prevent too long lines when clang-format is run.

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>
2025-08-15 15:34:12 +02:00
Jeppe Odgaard
0d01361e5b drivers: sensor: ti: tmp11x: reuse variable
Reuse `value` variable in `tmp11x_attr_set` to reduce the number of local
variables.

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>
2025-08-15 15:34:12 +02:00
Jeppe Odgaard
ec02138402 drivers: sensor: ti: tmp11x: add optional attribute storage
Enable optional storage of sensor attribute values in EEPROM. On reset, the
device goes through a POR sequence that loads the values programmed in the
EEPROM into the respective register map locations.

The driver stores sample frequency, offset, oversampling, lower threshold,
upper threshold, alert pin polarity, alert mode and conversion mode if the
value is continuous or shutdown.

The functionality has been tested with sensor shell and power cycling
sensor:

Test (undocumented) temperature offset is stored:
```shell
uart:~$ sensor attr_set ti_tmp11x@48 ambient_temp offset 0
ti_tmp11x@48 channel=ambient_temp, attr=offset set to value=0
uart:~$ sensor get ti_tmp11x@48 ambient_temp
[...] (25.523436)
uart:~$ sensor attr_set ti_tmp11x@48 ambient_temp offset 50
ti_tmp11x@48 channel=ambient_temp, attr=offset set to value=50
uart:~$ sensor get ti_tmp11x@48 ambient_temp
[...] (75.617186)
uart:~$
[15:12:20.088] Disconnected
[15:12:36.106] Connected
uart:~$ sensor get ti_tmp11x@48 ambient_temp
[...] (75.554686)
uart:~$ sensor attr_get ti_tmp11x@48 ambient_temp offset
ti_tmp11x@48(channel=ambient_temp, attr=offset) value=50.000000
```

Test one-shot mode is not stored:
```shell
uart:~$ sensor attr_set ti_tmp11x@48 ambient_temp 18 1
ti_tmp11x@48 channel=ambient_temp, attr=accel_x set to value=1
uart:~$ sensor get ti_tmp11x@48 ambient_temp
[...] (75.562499)
uart:~$ sensor get ti_tmp11x@48 ambient_temp
Read failed
[00:00:21.332,000] <wrn> sensor_compat: Failed to fetch samples
uart:~$
[15:16:24.529] Disconnected
[15:16:33.540] Connected
uart:~$ sensor get ti_tmp11x@48 ambient_temp
[...] (75.406249)
uart:~$ sensor get ti_tmp11x@48 ambient_temp
[...] (75.351561)
```

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>
2025-08-15 15:34:12 +02:00
Jeppe Odgaard
0eebb85297 drivers: sensor: ti: tmp11x: add eeprom await function
Move await eeprom programming into function and add poll loop timeout.

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>
2025-08-15 15:34:12 +02:00