| # Copyright (c) 2023 Michal Morsisko |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| description: Texas Instruments TMAG5170 high-precision, linear 3D Hall-effect sensor. |
| |
| compatible: "ti,tmag5170" |
| |
| include: [sensor-device.yaml, spi-device.yaml] |
| |
| properties: |
| int-gpios: |
| type: phandle-array |
| description: | |
| This property specifies the connection to ALERT sensor pin. |
| It will be used by the driver to notify the application about |
| data ready event. For this property to take effect, the |
| TMAG5170_TRIGGER must be set in project configuration |
| operating-mode: |
| type: int |
| required: true |
| description: | |
| Operating mode of the device. |
| 1 - stand-by mode - in this mode the device waits for application to trigger |
| the measurement. |
| 2 - active measure mode - continuous sampling on all enabled channels |
| as fast as possible. Recommended for devices that haven't got |
| strict power requirements and need frequent sampling. |
| 3 - active trigger mode - in this mode, similar to stand-by mode, the device |
| wait for application to trigger the measurement, but the time needed to finish |
| the conversion is shorter than in stand-by mode, on the cost of increased power |
| consumption. |
| 4 - duty-cycled - after each sample the device goes to sleep and then |
| automatically wakes up to take another sample. The sleep time is determined |
| by `sleep-time` property. Recommended for low-power devices that don't need |
| high frequency sampling. |
| enum: |
| - 1 |
| - 2 |
| - 3 |
| - 4 |
| magnetic-channels: |
| type: string |
| default: "XYZ" |
| description: | |
| Enables data acquisition of the magnetic axis channel(s) |
| If axis is enabled more than once, sensor will do pseudo-simultaneous |
| sampling. Refer to datasheet for more information, By default all axes |
| are enabled (XYZ) to allow the user to check if the sensor work as expected. |
| Following options are allowed: |
| None (chip reset value) |
| X |
| Y |
| XY |
| Z |
| ZX |
| YZ |
| XYZ (default) |
| XYX |
| YXY |
| YZY |
| ZYZ |
| ZXZ |
| XZX |
| XYZYX |
| XYZZYX |
| enum: |
| - "None" |
| - "X" |
| - "Y" |
| - "XY" |
| - "Z" |
| - "ZX" |
| - "YZ" |
| - "XYZ" |
| - "XYX" |
| - "YXY" |
| - "YZY" |
| - "ZYZ" |
| - "ZXZ" |
| - "XZX" |
| - "XYZYX" |
| - "XYZZYX" |
| x-range: |
| type: int |
| default: 0 |
| description: | |
| The maximum and minimum values that can be measured on X axis. |
| The wider the range, the worse the resolution. |
| 0 = ±50mT (TMAG5170A1)/ ±150mT(TMAG5170A2) - (default; chip reset value) |
| 1 = ±25mT (TMAG5170A1)/ ±75mT(TMAG5170A2) |
| 2 = ±100mT (TMAG5170A1)/ ±300mT(TMAG5170A2) |
| enum: |
| - 0 |
| - 1 |
| - 2 |
| y-range: |
| type: int |
| default: 0 |
| description: | |
| The maximum and minimum values that can be measured on Y axis. |
| The wider the range, the worse the resolution. |
| 0 = ±50mT (TMAG5170A1)/ ±150mT(TMAG5170A2) - (default; chip reset value) |
| 1 = ±25mT (TMAG5170A1)/ ±75mT(TMAG5170A2) |
| 2 = ±100mT (TMAG5170A1)/ ±300mT(TMAG5170A2) |
| enum: |
| - 0 |
| - 1 |
| - 2 |
| z-range: |
| type: int |
| default: 0 |
| description: | |
| The maximum and minimum values that can be measured on Z axis. |
| The wider the range, the worse the resolution. |
| 0 = ±50mT (TMAG5170A1)/ ±150mT(TMAG5170A2) - (default; chip reset value) |
| 1 = ±25mT (TMAG5170A1)/ ±75mT(TMAG5170A2) |
| 2 = ±100mT (TMAG5170A1)/ ±300mT(TMAG5170A2) |
| enum: |
| - 0 |
| - 1 |
| - 2 |
| oversampling: |
| type: int |
| default: 1 |
| description: | |
| Enables additional sampling of the sensor data to reduce the noise |
| effect. If temperature channel is enabled, temperature will be oversampled |
| too, unless `disable-temperature-oversampling` property is present. |
| Following options are allowed: |
| 1 (default; chip reset value) |
| 2 |
| 4 |
| 8 |
| 16 |
| 32 |
| enum: |
| - 1 |
| - 2 |
| - 4 |
| - 8 |
| - 16 |
| - 32 |
| enable-temperature-channel: |
| type: boolean |
| description: | |
| Enables temperature measurement |
| magnet-type: |
| type: string |
| default: "None" |
| description: | |
| Enables temperature compensation basing on the type of magnet. |
| Following options are allowed: |
| None (default; chip reset value) |
| NdBFe = 0.12%/deg C |
| SmCo = 0.03%/deg C |
| Ceramic = 0.2%/deg C |
| enum: |
| - "None" |
| - "NdBFe" |
| - "SmCo" |
| - "Ceramic" |
| angle-measurement: |
| type: string |
| default: "None" |
| description: | |
| Enable angle calculation using two axis data: |
| None (default; chip reset value) |
| XY |
| YZ |
| XZ |
| enum: |
| - "None" |
| - "XY" |
| - "YZ" |
| - "XZ" |
| disable-temperature-oversampling: |
| type: boolean |
| description: | |
| If true, temperature is always sampled once per conversion set |
| If false, temperature is oversampled according to `oversampling` |
| property. |
| sleep-time: |
| type: int |
| default: 1 |
| description: | |
| The time in milliseconds the sensor will be in sleep during conversions. |
| For this property to take effect sensor must be in `duty-cycled` mode. |
| Note that to calculate total time between conversions, the conversion time |
| itself must be taken into account. The conversion time is dependent |
| on the values of `oversampling`, `magnetic-channels`, `temperature-channel-enabled` |
| and `disable-temperature-oversampling` properties. |
| Following value are allowed: |
| 1 (default; chip reset value) |
| 5 |
| 10 |
| 15 |
| 20 |
| 30 |
| 50 |
| 100 |
| 500 |
| 1000 |
| enum: |
| - 1 |
| - 5 |
| - 10 |
| - 15 |
| - 20 |
| - 30 |
| - 50 |
| - 100 |
| - 500 |
| - 1000 |