AD7380 驱动程序

Analog Devices Inc. AD7380 及类似设备的 ADC 驱动程序。模块名称为 ad7380

支持的设备

该驱动程序支持以下芯片

支持的特性

SPI 接线模式

ad738x ADC 可以在多个 SDO 线上输出数据 (1/2/4)。驱动程序目前只支持 1 条 SDO 线。

参考电压

ad7380-4

ad7380-4 仅支持外部参考电压(2.5V 至 3.3V)。必须在设备树中声明为 refin-supply

ad7389-4

ad7389-4 仅支持内部参考电压。在这种情况下,refin-supplyrefio-supply 属性都被省略。

ADAQ 设备

ADAQ 设备没有外部参考,但使用从其电源之一(refin-supply)导出的 3.3V 内部参考。

ad738x 系列中的所有其他设备

ad738x 系列中的所有其他设备支持 2 种可能的参考电压源

  • 内部参考 (2.5V)

  • 外部参考 (2.5V 至 3.3V)

该源由设备树确定。如果存在 refio-supply,则将其用作外部参考,否则使用内部参考。

过采样和分辨率提升

此系列支持 2 种类型的过采样:正常平均和滚动平均。驱动程序仅支持正常平均,因为滚动平均可以通过处理捕获的数据缓冲区来实现。以下比率可用:1(禁用过采样)/2/4/8/16/32。

当启用片上过采样功能时,ADC 的性能可以超过默认分辨率。为了适应可实现的的性能提升,可以启用额外的两位分辨率。因为只有在启用过采样时才能启用分辨率提升功能,并且如果没有分辨率提升,过采样就没有那么有用,所以如果启用过采样,驱动程序会自动启用分辨率提升。

由于分辨率提升功能会导致 16 位芯片现在具有 18 位数据,这意味着 storagebits 必须从 16 位更改为 32 位,因此我们使用新的 ext_scan_type 功能来允许在运行时更改 scan_type。不幸的是,libiio 不支持它。因此,当启用或禁用过采样时,用户必须使用以下命令重新启动 iiod

root:~# systemctl restart iiod

警告

ad738x 系列的 2 通道变体,当配置为 1 SDO 线模式时,可以使用 SDOB 线作为警报引脚。4 通道变体,当配置为 1 或 2 SDO 线模式时,可以使用 SDOD 作为警报引脚,但驱动程序目前仅支持 1 SDO 线模式(参见SPI 接线模式)。

在转换结束时,如果转换结果超过警报上限或低于警报下限,则会断言低电平有效的警报引脚。它在 CS 的下降沿被清除。警报引脚是所有通道共用的。

用户可以使用常规 iio 事件属性启用警报

events/thresh_either_en

高和低阈值是所有通道共用的,也可以使用常规 iio 事件属性进行设置

events/in_thresh_falling_value
events/in_thresh_rising_value

如果 debugfs 可用,用户可以读取 ALERT 寄存器来确定故障通道和方向。

在大多数用例中,用户会将警报引脚硬连接以触发关机。

通道选择和序列器(仅限单端芯片)

该系列的单端芯片 (ad7386/7/8(-4)) 在每个 ADC 前面都有一个 2:1 多路复用器。它们还包括额外的配置寄存器,允许手动选择或自动切换(序列器模式)多路复用器输入。

从 IIO 的角度来看,所有输入都被导出,即 ad7386/7/8 导出 4 个通道,而 ad7386-4/7-4/8-4 导出 8 个通道。

多路复用器的输入 AinX0 对应于 IIO 通道的前半部分(即 0-1 或 0-3),而输入 AinX1 对应于后半部分(即 2-3 或 4-7)。AD7386/7/8(2 通道部件)的示例

   IIO   | AD7386/7/8
         |         +----------------------------
         |         |     _____        ______
         |         |    |     |      |      |
voltage0 | AinA0 --|--->|     |      |      |
         |         |    | mux |----->| ADCA |---
voltage2 | AinA1 --|--->|     |      |      |
         |         |    |_____|      |_____ |
         |         |     _____        ______
         |         |    |     |      |      |
voltage1 | AinB0 --|--->|     |      |      |
         |         |    | mux |----->| ADCB |---
voltage3 | AinB1 --|--->|     |      |      |
         |         |    |_____|      |______|
         |         |
         |         +----------------------------

当启用序列器模式时,有效采样率将除以 2。

增益(仅限 ADAQ 设备)

ADAQ 设备在每个 ADC 前面都有一个引脚可选的增益。可以使用 adi,gain-milli 属性从设备树中选择适当的增益。有关引脚接线,请参阅数据表的典型连接图部分。

未实现的特性

  • 2/4 SDO 线

  • 滚动平均过采样

  • 掉电模式

  • CRC 指示

SPI 卸载支持

为了能够实现最大采样率,该驱动程序可以与 AXI SPI 引擎 一起使用,以提供 SPI 卸载支持。

当使用 SPI 卸载时,某些属性将有所不同。

  • trigger 目录将被删除。

  • 添加了 in_voltage0_sampling_frequency 属性,用于设置采样率。

  • 添加了 in_voltage0_sampling_frequency_available 属性,用于查询最大采样率。

  • timestamp 通道将被删除。

  • 与未使用卸载时相比,缓冲区数据格式可能不同,例如 in_voltage0_type 属性。

设备缓冲区

此驱动程序支持 IIO 触发的缓冲区。

有关更多信息,请参见 工业 IIO 设备缓冲区