AD7606 驱动

用于 Analog Devices Inc. AD7606 和类似设备的 ADC 驱动。模块名称为 ad7606

支持的设备

此驱动程序支持以下芯片

支持的功能

SPI 接线模式

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

SPI 卸载接线

与 SPI 卸载一起使用时,支持的接线配置为

+-------------+         +-------------+
|        BUSY |-------->| TRIGGER     |
|          CS |<--------| CS          |
|             |         |             |
|     ADC     |         |     SPI     |
|             |         |             |
|         SDI |<--------| SDO         |
|       DOUTA |-------->| SDI         |
|        SCLK |<--------| SCLK        |
|             |         |             |
|             |         +-------------+
|      CONVST |<--------| PWM         |
+-------------+         +-------------+

在这种情况下,需要 pwms 属性。 还需要 #trigger-source-cells = <1> 属性以连接回 SPI 卸载。 SPI 卸载将具有 trigger-sources 属性,其中包含一个单元格来指示繁忙信号:<&ad7606 AD4695_TRIGGER_EVENT_BUSY>

并行接线模式

还有一个并行接口,有 16 条线(可以在字节模式下减少到 8 条)。 通过在设备树中将设备声明为平台(没有定义 io-backends 节点,见下文)来选择并行接口。

IIO-backend 模式

此模式允许达到最佳采样率,但它需要外部硬件(例如 HDL 或 APU)来处理底层通信。 通过在设备树中定义“io-backends”属性来启用后端模式。

当前 IIO-backend 模式实现的参考配置是 ADI 提供的 HDL 参考:https://wiki.analog.com/resources/eval/user-guides/ad7606x-fmc/hdl

此实现嵌入了一个 IIO-backend 兼容 IP (adi-axi-adc) 和一个连接到转换触发引脚的 PWM。

+---+                                       +----------------------------
|   |               +-------+               |AD76xx
| A |  controls     |       |               |
| D |-------------->|  PWM  |-------------->| cnvst
| 7 |               |       |               |
| 6 |               +-------+               |
| 0 | controls  +-----------+-----------+   |
| 6 |---------->|           |           |<--| frstdata
|   |           | Backend   |  Backend  |<--| busy
| D |           | Driver    |           |   |
| R |           |           |           |-->| clk
| I |  requests |+---------+| DMA       |   |
| V |----------->|  Buffer ||<----      |<=>| DATA
| E |           |+---------+|           |   |
| R |           +-----------+-----------+   |
|   |-------------------------------------->| reset/configuration gpios
+---+                                       +-----------------------------

软件和硬件模式

虽然所有 AD7606/AD7616 系列部件都可以使用 GPIO 进行配置,但其中一些可以使用寄存器进行配置。

支持软件模式的芯片具有更多可用于配置设备的值,以及更多设置,并允许控制每个通道的范围和校准。

以下设置在软件模式下可用于每个通道
  • 比例

此外,在软件模式下,过采样率有更广泛的选择。

转换触发

转换可以通过两种不同的方式触发

  • 一个 GPIO 连接到转换触发引脚,此 GPIO 由驱动程序直接控制。 在此配置中,驱动程序在读取所有转换后立即将转换触发引脚设置回高电平。

  • 外部源连接到转换触发引脚。 在当前的实现中,它必须是一个 PWM。 在此配置中,驱动程序不直接控制转换触发引脚。 相反,它可以控制 PWM 的频率。 仅为 iio-backend 启用此触发器。

参考电压

支持 2 种可能的参考电压源

  • 内部参考 (2.5V)

  • 外部参考 (2.5V)

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

过采样

此系列支持过采样以提高 SNR。 在软件模式下,以下比率可用:1(禁用过采样)/2/4/8/16/32/64/128/256。

未实现的功能

  • 2/4/8 SDO 线

  • CRC 指示

  • 校准

SPI 卸载支持

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

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

  • trigger 目录将被删除。

  • 添加 sampling_frequency 属性用于设置采样率。

  • timestamp 通道将被删除。

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

设备缓冲区

IIO 触发缓冲区

此驱动程序支持 IIO 触发缓冲区,带有“内置”触发器,即触发器由驱动程序分配和链接,并且一旦传输样本,就会触发新的转换,并且添加了一个时间戳通道,以弥补中断处理延迟引起的潜在抖动。

IIO 后端缓冲区

当使用 IIO 后端时,不需要触发器,并且采样率被认为是稳定的。 没有时间戳通道。 通信委托给外部逻辑,称为后端,后端的驱动程序处理缓冲区。 启用此模式后,驱动程序无法控制转换引脚,因为 busy 引脚绑定到后端。