AD4000 驱动程序

Analog Devices Inc. AD4000 系列 ADC 和类似设备的设备驱动程序。

支持的设备

接线连接

AD4000 系列设备可以通过几种不同的模式连接到 SPI 主机控制器。

CS 模式,3 线 turbo 模式

数据手册中的“3 线”模式最类似于标准的 SPI 连接,对于这些设备而言,包括将控制器 CS 线连接到设备 CNV 引脚,以及像往常一样连接其他 SPI 线。 这种配置在数据手册中(具有误导性地)称为“CS 模式,3 线 Turbo 模式”连接。注意:AD4000 系列的 3 线模式的数据手册定义与标准 spi-3wire 模式不同。 这是唯一允许配置寄存器访问的连接模式,但它要求 SPI 控制器支持 SPI_MOSI_IDLE_HIGH 功能。

在设备树中省略 adi,sdi-pin 属性以选择此模式。

                                    +-------------+
+ ----------------------------------| SDO         |
|                                   |             |
|               +-------------------| CS          |
|               v                   |             |
|    +--------------------+         |     HOST    |
|    |        CNV         |         |             |
+--->| SDI   AD4000   SDO |-------->| SDI         |
     |        SCK         |         |             |
     +--------------------+         |             |
               ^                    |             |
               +--------------------| SCLK        |
                                    +-------------+

CS 模式,3 线,无 busy 指示器

另一种支持的接线配置称为“3 线”模式,它将 SDI 引脚硬连线到数字输入/输出接口电源 (VIO)。 在这种设置中,控制器不需要支持 SPI_MOSI_IDLE_HIGH,但无法进行寄存器访问。 这种连接模式节省了一根导线,并且可以与任何 SPI 控制器一起使用。

adi,sdi-pin 设备树属性设置为 "high" 以选择此模式。

                                     +-------------+
                +--------------------| CS          |
                v                    |             |
VIO   +--------------------+         |     HOST    |
 |    |        CNV         |         |             |
 +--->| SDI   AD4000   SDO |-------->| SDI         |
      |        SCK         |         |             |
      +--------------------+         |             |
                ^                    |             |
                +--------------------| SCLK        |
                                     +-------------+

或者,可以将 GPIO 连接到设备 CNV 引脚。 这与之前的接线配置类似,但节省了 CS 线的使用。

                                     +-------------+
                +--------------------| GPIO        |
                v                    |             |
VIO   +--------------------+         |     HOST    |
 |    |        CNV         |         |             |
 +--->| SDI   AD4000   SDO |-------->| SDI         |
      |        SCK         |         |             |
      +--------------------+         |             |
                ^                    |             |
                +--------------------| SCLK        |
                                     +-------------+

CS 模式,4 线,无 busy 指示器

在数据手册中的“4 线”模式中,控制器 CS 线连接到 ADC SDI 引脚,GPIO 连接到 ADC CNV 引脚。 这种连接模式可能更适合多个 ADC 可以共享一个 CNV 触发器的场景。

adi,sdi-pin 设置为 "cs" 以选择此模式。

                                    +-------------+
+ ----------------------------------| CS          |
|                                   |             |
|               +-------------------| GPIO        |
|               v                   |             |
|    +--------------------+         |     HOST    |
|    |        CNV         |         |             |
+--->| SDI   AD4000   SDO |-------->| SDI         |
     |        SCK         |         |             |
     +--------------------+         |             |
               ^                    |             |
               +--------------------| SCLK        |
                                    +-------------+

IIO 设备特性

AD4000 系列驱动程序支持差分和伪差分 ADC。

AD4000 系列设备中提供的跨度压缩功能可以通过更改电压通道的 _scale_available 属性来启用/禁用。 请注意,跨度压缩配置需要写入 AD4000 配置寄存器,这只有在 ADC 以 3 线 turbo 模式接线,且 SPI 控制器支持 SPI_MOSI_IDLE_HIGH 时才有可能。 如果不满足这些条件,则不提供 _scale_available 属性。

除此之外,差分和伪差分电压通道呈现略有不同的 sysfs 接口。

伪差分 ADC

伪差分 AD4000 系列设备的典型电压通道属性

电压通道属性

描述

in_voltage0_raw

原始 ADC 输出码。

in_voltage0_offset

将原始值转换为 mV 的偏移量。

in_voltage0_scale

将原始值转换为 mV 的比例因子。

in_voltage0_scale_available

切换输入跨度压缩

差分 ADC

差分 AD4000 系列设备的典型电压通道属性

电压通道属性

描述

in_voltage0-voltage1_raw

原始 ADC 输出码。

in_voltage0-voltage1_scale

将原始值转换为 mV 的比例因子。

in_voltage0-voltage1_scale_available

切换输入跨度压缩

SPI 卸载支持

为了能够实现最大采样率,可以将驱动程序与 SPI 卸载引擎一起使用,例如通常存在于 AXI SPI Engine 中的 SPI 卸载引擎,以提供 SPI 卸载支持。

为了跟上 SPI 卸载的传输速度,ADC 必须以 3 线 turbo 模式或 3 线无 busy 指示器模式连接,并且 SPI 控制器 CS 线连接到 CNV 引脚。

当设置为 SPI 卸载支持时,IIO 设备将提供不同的接口。

  • 提供 in_voltage0_sampling_frequencyin_voltage0-voltage1_sampling_frequency 文件以允许设置采样率。

  • 不提供 IIO 触发设备(没有 trigger 目录)。

  • 不提供 timestamp 通道。

此外,由于当设备以“3 线”模式接线时,ADC 输出具有一个样本的延迟(延迟),并且在使用 SPI 卸载时每个样本仅完成一次传输,因此缓冲区中的第一个数据样本无效,因为它包含较早转换结果的输出。