![]() |
no-OS
|
Source file of AD74413r Driver. More...
#include "ad74413r.h"#include "no_os_crc8.h"#include "no_os_delay.h"#include "no_os_error.h"#include "no_os_util.h"#include "no_os_alloc.h"Macros | |
| #define | AD74413R_FRAME_SIZE 4 |
| #define | AD74413R_CRC_POLYNOMIAL 0x7 |
| #define | AD74413R_DIN_DEBOUNCE_LEN NO_OS_BIT(5) |
Functions | |
| NO_OS_DECLARE_CRC8_TABLE (_crc_table) | |
| int | ad74413r_range_to_voltage_range (enum ad74413r_adc_range range, uint32_t *val) |
| Convert the measuring range of the ADC from range enum values to millivolts. | |
| int | ad74413r_range_to_voltage_offset (enum ad74413r_adc_range range, int32_t *val) |
| Convert the measuring range of the ADC from range enum values to millivolts. | |
| int | ad74413r_dac_voltage_to_code (uint32_t mvolts, uint32_t *code) |
| Converts a millivolt value in the corresponding DAC 13 bit code. | |
| int | ad74413r_reg_read_raw (struct ad74413r_desc *desc, uint32_t addr, uint8_t *val) |
| Read a raw communication frame. | |
| int | ad74413r_reg_write (struct ad74413r_desc *desc, uint32_t addr, uint16_t val) |
| Write a register's value. | |
| int | ad74413r_reg_read (struct ad74413r_desc *desc, uint32_t addr, uint16_t *val) |
| Read a register's value. | |
| int | ad74413r_reg_update (struct ad74413r_desc *desc, uint32_t addr, uint16_t mask, uint16_t val) |
| Update a register's field. | |
| int | ad74413r_nb_active_channels (struct ad74413r_desc *desc, uint8_t *nb_channels) |
| Get the number of active channels. | |
| int | ad74413r_clear_errors (struct ad74413r_desc *desc) |
| Clear the ALERT_STATUS register. | |
| int | ad74413r_set_info (struct ad74413r_desc *desc, uint16_t mode) |
| Select which information the device will respond with (in the readback field) when a read operation is performed. | |
| int | ad74413r_reset (struct ad74413r_desc *desc) |
| Perform either a software or hardware reset and wait for device reset time. | |
| int | ad74413r_set_channel_function (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_op_mode ch_func) |
| Set the operation mode for a specific channel. | |
| int | ad74413r_get_raw_adc_result (struct ad74413r_desc *desc, uint32_t ch, uint16_t *val) |
| Read the raw ADC raw conversion value. | |
| int | ad74413r_set_adc_channel_enable (struct ad74413r_desc *desc, uint32_t ch, bool status) |
| Enable/disable a specific ADC channel. | |
| int | ad74413r_set_diag_channel_enable (struct ad74413r_desc *desc, uint32_t ch, bool status) |
| Enable conversions on a diagnostic register. | |
| int | ad74413r_get_adc_range (struct ad74413r_desc *desc, uint32_t ch, uint16_t *val) |
| Get the ADC measurement range for a specific channel. | |
| int | ad74413r_get_adc_rejection (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_rejection *val) |
| Get the rejection setting for a specific channel. | |
| int | ad74413r_get_adc_diag_rejection (struct ad74413r_desc *desc, enum ad74413r_rejection *val) |
| Get the rejection setting for a specific channel. | |
| int | ad74413r_set_adc_rejection (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_rejection val) |
| Set the rejection setting for a specific channel. | |
| int | ad74413r_get_adc_rate (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_adc_sample *val) |
| Get the ADC sample rate. | |
| int | ad74413r_set_adc_rate (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_adc_sample val) |
| Set the ADC sample rate. | |
| int | ad74413r_get_adc_diag_rate (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_adc_sample *val) |
| Get the ADC sample rate for the diagnostics channels. | |
| int | ad74413r_set_adc_diag_rate (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_adc_sample val) |
| Set the ADC sample rate for the diagnostics channels. | |
| int | ad74413r_set_adc_conv_seq (struct ad74413r_desc *desc, enum ad74413r_conv_seq status) |
| Start or stop ADC conversions. | |
| int | ad74413r_get_adc_single (struct ad74413r_desc *desc, uint32_t ch, uint16_t *val, bool is_diag) |
| Get a single ADC raw value for a specific channel, then power down the ADC. | |
| int | ad74413r_adc_get_value (struct ad74413r_desc *desc, uint32_t ch, struct ad74413r_decimal *val) |
| Get the ADC real value, according to the operation mode. | |
| int | ad74413r_get_temp (struct ad74413r_desc *desc, uint32_t ch, uint16_t *temp) |
| Read the die's temperature from the diagnostic register. | |
| int | ad74413r_set_channel_dac_code (struct ad74413r_desc *desc, uint32_t ch, uint16_t dac_code) |
| Set and load a code for the DAC on a specific channel. | |
| int | ad74413r_set_diag (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_diag_mode diag_code) |
| Set which diagnostic value to be loaded in the DIAG_RESULT register. | |
| int | ad74413r_get_diag (struct ad74413r_desc *desc, uint32_t ch, uint16_t *diag_code) |
| Get the diagnostic value for a specific channel. | |
| int | ad74413r_set_debounce_mode (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_debounce_mode mode) |
| Set the debounce mode for the IOx inputs when the ADC is running in digital input mode. | |
| int | ad74413r_set_debounce_time (struct ad74413r_desc *desc, uint32_t ch, uint32_t time) |
| Set the debounce settle time for the IOx inputs when the ADC is running in digital input mode. | |
| int | ad74413r_gpo_get (struct ad74413r_desc *desc, uint32_t ch, uint8_t *val) |
| Get the GPO value for a specific channel. | |
| int | ad74413r_set_gpo_config (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_gpo_select config) |
| Set the GPO operation mode. | |
| int | ad74413r_set_threshold (struct ad74413r_desc *desc, uint32_t ch, uint32_t threshold) |
| Set the threshold, for which a signal would be considered high, when the ADC is running in digital input mode. | |
| int | ad74413r_gpo_set (struct ad74413r_desc *desc, uint32_t ch, uint8_t val) |
| Set the logic value of a GPO pin. | |
| int | ad74413r_gpo_set_multiple (struct ad74413r_desc *desc, uint32_t mask) |
| Set multiple GPO values at once. | |
| int | ad74413r_get_live (struct ad74413r_desc *desc, union ad74413r_live_status *status) |
| Read the live status bits. | |
| int | ad74413r_set_dac_clear_code (struct ad74413r_desc *desc, uint32_t ch, uint16_t code) |
| The code value will be loaded into the DACs when the CLR_EN bit in the OUTPUT_CONFIGx registers is asserted and the DAC clear key is written. | |
| int | ad74413r_clear_dac (struct ad74413r_desc *desc, uint32_t ch) |
| Clear the DAC (to the code in DAC_CLR_CODE register) | |
| int | ad74413r_dac_slew_enable (struct ad74413r_desc *desc, uint32_t ch, enum ad74413r_slew_lin_step step, enum ad74413r_lin_rate rate) |
| Configure and enable slew rate control for a DAC on a specific channel. | |
| int | ad74413r_dac_slew_disable (struct ad74413r_desc *desc, uint32_t ch) |
| Disable the slew rate control. | |
| int | ad74413r_set_therm_rst (struct ad74413r_desc *desc, bool enable) |
| Enable or disable the higher thermal reset. | |
| int | ad74413r_init (struct ad74413r_desc **desc, struct ad74413r_init_param *init_param) |
| Initialize the device structure. | |
| int | ad74413r_remove (struct ad74413r_desc *desc) |
| Free the device descriptor. | |
Source file of AD74413r Driver.
Copyright 2022(c) Analog Devices, Inc.
SPDX-License-Identifier: BSD-3-Clause
| #define AD74413R_CRC_POLYNOMIAL 0x7 |
| #define AD74413R_DIN_DEBOUNCE_LEN NO_OS_BIT(5) |
| #define AD74413R_FRAME_SIZE 4 |
| int ad74413r_adc_get_value | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| struct ad74413r_decimal * | val ) |
Get the ADC real value, according to the operation mode.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The ADC real measurement value (the unit depends on the operation mode). |
I_Rsense = (Vmin + (ADC_CODE/65535) * range) / Rsense
| int ad74413r_clear_dac | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch ) |
Clear the DAC (to the code in DAC_CLR_CODE register)
| desc | - The device structure. |
| ch | - The channel index. |
| int ad74413r_clear_errors | ( | struct ad74413r_desc * | desc | ) |
Clear the ALERT_STATUS register.
| desc | - The device structure. |
| int ad74413r_dac_slew_disable | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch ) |
Disable the slew rate control.
| desc | - The device structure. |
| ch | - The channel index. |
| int ad74413r_dac_slew_enable | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_slew_lin_step | step, | ||
| enum ad74413r_lin_rate | rate ) |
Configure and enable slew rate control for a DAC on a specific channel.
| desc | - The device structure. |
| ch | - The channel index. |
| step | - Number of codes per increment. |
| rate | - Number of increments per second. |
| int ad74413r_dac_voltage_to_code | ( | uint32_t | mvolts, |
| uint32_t * | code ) |
Converts a millivolt value in the corresponding DAC 13 bit code.
| mvolts | - The millivolts value. |
| code | - The resulting DAC code. |
| int ad74413r_get_adc_diag_rate | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_adc_sample * | val ) |
Get the ADC sample rate for the diagnostics channels.
| desc | - The device structure. |
| ch | - The diagnostics channel index. |
| val | - The ADC sample rate value. |
| int ad74413r_get_adc_diag_rejection | ( | struct ad74413r_desc * | desc, |
| enum ad74413r_rejection * | val ) |
Get the rejection setting for a specific channel.
| desc | - The device structure. |
| val | - The ADC rejection setting. |
| int ad74413r_get_adc_range | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint16_t * | val ) |
Get the ADC measurement range for a specific channel.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The ADC range value. |
| int ad74413r_get_adc_rate | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_adc_sample * | val ) |
Get the ADC sample rate.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The ADC sample rate value. |
| int ad74413r_get_adc_rejection | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_rejection * | val ) |
Get the rejection setting for a specific channel.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The ADC rejection setting. |
| int ad74413r_get_adc_single | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint16_t * | val, | ||
| bool | is_diag ) |
Get a single ADC raw value for a specific channel, then power down the ADC.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The ADC raw result. |
| is_diag | - Select which channel type does the index refer to (I/O or diagnostics). |
Wait for all channels to complete the conversion.
| int ad74413r_get_diag | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint16_t * | diag_code ) |
Get the diagnostic value for a specific channel.
| desc | - The device structure. |
| ch | - The channel index. |
| diag_code | - The diagnostic setting. |
| int ad74413r_get_live | ( | struct ad74413r_desc * | desc, |
| union ad74413r_live_status * | status ) |
Read the live status bits.
| desc | - The device structure. |
| status | - The register's value. |
| int ad74413r_get_raw_adc_result | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint16_t * | val ) |
Read the raw ADC raw conversion value.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The ADC raw conversion value. |
| int ad74413r_get_temp | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint16_t * | temp ) |
Read the die's temperature from the diagnostic register.
| desc | - The device structure. |
| ch | - The diagnostic channel on which the temperature reading is assigned and enabled. |
| temp | - The measured temperature (in degrees Celsius). |
| int ad74413r_gpo_get | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint8_t * | val ) |
Get the GPO value for a specific channel.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The debounce time. |
| int ad74413r_gpo_set | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint8_t | val ) |
Set the logic value of a GPO pin.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The output logic state. |
| int ad74413r_gpo_set_multiple | ( | struct ad74413r_desc * | desc, |
| uint32_t | mask ) |
Set multiple GPO values at once.
| desc | - The device structure. |
| mask | - Active channels mask. |
| int ad74413r_init | ( | struct ad74413r_desc ** | desc, |
| struct ad74413r_init_param * | init_param ) |
Initialize the device structure.
| desc | - The device structure to be initialized. |
| init_param | - Initialization parameter for the device descriptor. |
| int ad74413r_nb_active_channels | ( | struct ad74413r_desc * | desc, |
| uint8_t * | nb_channels ) |
Get the number of active channels.
| desc | - The device structure. |
| nb_channels | - The number of active channels |
| int ad74413r_range_to_voltage_offset | ( | enum ad74413r_adc_range | range, |
| int32_t * | val ) |
Convert the measuring range of the ADC from range enum values to millivolts.
| range | - ADC sample rate |
| val | - Rejection register value |
| int ad74413r_range_to_voltage_range | ( | enum ad74413r_adc_range | range, |
| uint32_t * | val ) |
Convert the measuring range of the ADC from range enum values to millivolts.
| range | - ADC sample rate |
| val | - Rejection register value |
| int ad74413r_reg_read | ( | struct ad74413r_desc * | desc, |
| uint32_t | addr, | ||
| uint16_t * | val ) |
Read a register's value.
| desc | - The device structure. |
| addr | - The register's address. |
| val | - The register's read value. |
| int ad74413r_reg_read_raw | ( | struct ad74413r_desc * | desc, |
| uint32_t | addr, | ||
| uint8_t * | val ) |
Read a raw communication frame.
| desc | - The device structure. |
| addr | - The register's address. |
| val | - A raw comm frame. |
Reading a register on AD74413r requires writing the address to the READ_SELECT register first and then doing another spi read, which will contain the requested register value.
| int ad74413r_reg_update | ( | struct ad74413r_desc * | desc, |
| uint32_t | addr, | ||
| uint16_t | mask, | ||
| uint16_t | val ) |
Update a register's field.
| desc | - The device structure. |
| addr | - The register's address. |
| val | - The register's value. |
| mask | - The mask for a specific register field. |
| int ad74413r_reg_write | ( | struct ad74413r_desc * | desc, |
| uint32_t | addr, | ||
| uint16_t | val ) |
Write a register's value.
| desc | - The device structure. |
| addr | - The register's address. |
| val | - The register's value. |
| int ad74413r_remove | ( | struct ad74413r_desc * | desc | ) |
Free the device descriptor.
| desc | - The device structure. |
| int ad74413r_reset | ( | struct ad74413r_desc * | desc | ) |
Perform either a software or hardware reset and wait for device reset time.
| desc | - The device structure. |
| int ad74413r_set_adc_channel_enable | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| bool | status ) |
Enable/disable a specific ADC channel.
| desc | - The device structure. |
| ch | - The channel index. |
| status | - Enabled or disabled status. |
| int ad74413r_set_adc_conv_seq | ( | struct ad74413r_desc * | desc, |
| enum ad74413r_conv_seq | status ) |
Start or stop ADC conversions.
| desc | - The device structure. |
| status | - The ADC conversion sequence. |
The write to CONV_SEQ powers up the ADC. If the ADC was powered down, the user must wait for 100us before the ADC starts doing conversions.
| int ad74413r_set_adc_diag_rate | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_adc_sample | val ) |
Set the ADC sample rate for the diagnostics channels.
| desc | - The device structure. |
| ch | - The diagnostics channel index. |
| val | - The ADC sample rate value. |
| int ad74413r_set_adc_rate | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_adc_sample | val ) |
Set the ADC sample rate.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The ADC sample rate value. |
| int ad74413r_set_adc_rejection | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_rejection | val ) |
Set the rejection setting for a specific channel.
| desc | - The device structure. |
| ch | - The channel index. |
| val | - The ADC rejection setting. |
| int ad74413r_set_channel_dac_code | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint16_t | dac_code ) |
Set and load a code for the DAC on a specific channel.
| desc | - The device structure. |
| ch | - The channel index. |
| dac_code | - The code for the DAC. |
| int ad74413r_set_channel_function | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_op_mode | ch_func ) |
Set the operation mode for a specific channel.
| desc | - The device structure. |
| ch | - The channel index. |
| ch_func | - The operation mode. |
| int ad74413r_set_dac_clear_code | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint16_t | code ) |
The code value will be loaded into the DACs when the CLR_EN bit in the OUTPUT_CONFIGx registers is asserted and the DAC clear key is written.
| desc | - The device structure. |
| ch | - The channel index. |
| code | - The DAC code to be loaded |
| int ad74413r_set_debounce_mode | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_debounce_mode | mode ) |
Set the debounce mode for the IOx inputs when the ADC is running in digital input mode.
| desc | - The device structure. |
| ch | - The channel index. |
| mode | - The debounce mode. |
| int ad74413r_set_debounce_time | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint32_t | time ) |
Set the debounce settle time for the IOx inputs when the ADC is running in digital input mode.
| desc | - The device structure. |
| ch | - The channel index. |
| time | - The debounce time. |
| int ad74413r_set_diag | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_diag_mode | diag_code ) |
Set which diagnostic value to be loaded in the DIAG_RESULT register.
| desc | - The device structure. |
| ch | - The channel index. |
| diag_code | - The diagnostic setting. |
| int ad74413r_set_diag_channel_enable | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| bool | status ) |
Enable conversions on a diagnostic register.
| desc | - The device structure. |
| ch | - Diagnostic channel index. |
| status | - Enabled or disabled status. |
| int ad74413r_set_gpo_config | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| enum ad74413r_gpo_select | config ) |
Set the GPO operation mode.
| desc | - The device structure. |
| ch | - The channel index. |
| config | - The configuration setting. |
| int ad74413r_set_info | ( | struct ad74413r_desc * | desc, |
| uint16_t | mode ) |
Select which information the device will respond with (in the readback field) when a read operation is performed.
| desc | - The device structure. |
| mode | - Possible values: 0 - Respond with the readback address. 1 - Respond with status bits. |
| int ad74413r_set_therm_rst | ( | struct ad74413r_desc * | desc, |
| bool | enable ) |
Enable or disable the higher thermal reset.
| desc | - The device structure. |
| enable | - The thermal reset status. false: reset at 110 deg. Celsius. true: reset at 140 deg. Celsius. |
| int ad74413r_set_threshold | ( | struct ad74413r_desc * | desc, |
| uint32_t | ch, | ||
| uint32_t | threshold ) |
Set the threshold, for which a signal would be considered high, when the ADC is running in digital input mode.
| desc | - The device structure. |
| ch | - The channel index. |
| threshold | - The threshold value (in millivolts). The actual threshold set might not match this value (~500mV max. error), since it's fairly low resolution (29 possible values). |
Set a fixed range (0 - 16 V) for the threshold, so it would not depend on Vadd.
| NO_OS_DECLARE_CRC8_TABLE | ( | _crc_table | ) |