AD4695 驅動程式

用於 Analog Devices Inc. AD4695 和類似裝置的 ADC 驅動程式。模組名稱是 ad4695

支援的裝置

該驅動程式支援以下晶片

支援的功能

SPI 接線模式

該驅動程式目前支援以下 SPI 接線配置

4 線模式

在這種模式下,CNV 和 CS 連線在一起,並且只有一條 SDO 線。

+-------------+         +-------------+
|          CS |<-+------| CS          |
|         CNV |<-+      |             |
|     ADC     |         |     HOST    |
|             |         |             |
|         SDI |<--------| SDO         |
|         SDO |-------->| SDI         |
|        SCLK |<--------| SCLK        |
+-------------+         +-------------+

要使用此模式,請在裝置樹中省略 cnv-gpiosspi-rx-bus-width 屬性。

SPI 解除安裝接線

與 SPI 解除安裝一起使用時,支援的接線配置為

+-------------+         +-------------+
|    GP0/BUSY |-------->| TRIGGER     |
|          CS |<--------| CS          |
|             |         |             |
|     ADC     |         |     SPI     |
|             |         |             |
|         SDI |<--------| SDO         |
|         SDO |-------->| SDI         |
|        SCLK |<--------| SCLK        |
|             |         |             |
|             |         +-------------+
|         CNV |<-----+--| PWM         |
|             |      +--| GPIO        |
+-------------+         +-------------+

在這種情況下,需要 cnv-gpiospwms 屬性。還需要 #trigger-source-cells = <2> 屬性以連接回 SPI 解除安裝。SPI 解除安裝將具有 trigger-sources 屬性,其中包含單元以指示忙訊號和使用的 GPx 引腳,例如 <&ad4695 AD4695_TRIGGER_EVENT_BUSY AD4695_TRIGGER_PIN_GP0>

另請參閱

SPI 解除安裝支援

通道配置

由於晶片支援多種配置每個通道的方式,因此必須在裝置樹中根據實際連線到輸入的配置進行描述。

有三種典型的配置

INx 引腳用作正輸入,REFGNDCOM 或下一個 INx 引腳用作負輸入。

與 REFGND 配對

每個 INx 引腳都可以與 REFGND 引腳結合使用,作為偽差分輸入。裝置樹將如下所示

channel@0 {
    reg = <0>; /* IN0 */
};

如果不需要其他通道屬性(例如 adi,no-high-z),則可以完全省略通道節點。

這將以 voltage0 通道的形式出現在 IIO 總線上。處理後的值(原始值 × 比例)將是 IN0 引腳上相對於 REFGND 的電壓。(與 REFGND 配對時,偏移量始終為 0。)

與 COM 配對

每個 INx 引腳都可以與 COM 引腳結合使用,作為偽差分輸入。裝置樹將如下所示

com-supply = <&vref_div_2>;

channel@1 {
    reg = <1>; /* IN1 */
    common-mode-channel = <AD4695_COMMON_MODE_COM>;
    bipolar;
};

這將以 voltage1 通道的形式出現在 IIO 總線上。處理後的值((原始值 + 偏移量)× 比例)將是在 IN1 引腳上相對於 REFGND 測量的電壓。(偏移量由 com-supply 電壓確定。)

宏來自

#include <dt-bindings/iio/adc/adi,ad4695.h>

配對兩個 INx 引腳

偶數編號的 INx 引腳和以下奇數編號的 INx 引腳可以用作偽差分輸入。使用 IN2 作為正輸入和 IN3 作為負輸入的裝置樹將如下所示

in3-supply = <&vref_div_2>;

channel@2 {
    reg = <2>; /* IN2 */
    common-mode-channel = <3>; /* IN3 */
    bipolar;
};

這將以 voltage2 通道的形式出現在 IIO 總線上。處理後的值((原始值 + 偏移量)× 比例)將是在 IN1 引腳上相對於 REFGND 測量的電壓。(偏移量由 in3-supply 電壓確定。)

VCC 電源

該晶片支援透過 VCC 輸入由外部 LDO 供電,或透過 LDO_IN 輸入由內部 LDO 供電。驅動程式會檢視裝置樹以確定使用哪種方式。如果存在 ldo-supply,則使用內部 LDO。如果存在 vcc-supply,則使用外部 LDO,並且停用內部 LDO。

參考電壓

該晶片支援透過 REF 輸入的外部參考電壓或透過 REFIN 輸入的內部緩衝參考電壓。驅動程式會檢視裝置樹以確定使用哪種方式。如果存在 ref-supply,則使用外部參考電壓,並且停用內部緩衝器。如果存在 refin-supply,則使用內部緩衝參考電壓。

增益/偏移校準

透過 calibscalecalibbias 屬性,分別使用通道增益和偏移暫存器來支援系統校準。

過取樣

當使用 SPI 解除安裝時,晶片支援每通道過取樣,可用的過取樣率 (OSR) 為 1(預設)、4、16 和 64。在通道上啟用過取樣會將取樣資料的有效位數提高到 17 (OSR == 4)、18 (16) 或 19 (64)。這可以透過 oversampling_ratio 屬性進行設定。

設定通道的過取樣率也會更改該通道的取樣率,因為它需要每次取樣進行多次轉換。具體來說,新的取樣頻率是 PWM 取樣頻率除以特定的 OSR。這會在設定 oversampling_ratio 屬性時由驅動程式自動設定。例如,如果裝置的當前 sampling_frequency 為 10000,並且在通道 voltage0 上設定了 4 的 OSR,則該通道的新報告取樣率將為 2500(忽略 PWM API 舍入),而所有其他通道將保持在 10000。隨後在該通道上將取樣頻率設定為更高的值將調整所有通道的 CNV 觸發週期,例如,如果 voltage0 的取樣頻率從 2500(OSR 為 4)調整為 10000,則 in_voltage0_sampling_frequency 報告的值將為 10000,但所有其他通道現在將報告 40000。

為簡單起見,應首先設定裝置的取樣頻率(考慮要使用的最高期望 OSR 值),然後再為特定通道配置過取樣。

未實現的功能

  • 其他接線模式

  • 閾值事件

  • GPIO 支援

  • CRC 支援

SPI 解除安裝支援

為了能夠實現最大采樣率,該驅動程式可以與 AXI SPI 引擎 一起使用,以提供 SPI 解除安裝支援。

另請參閱

SPI 解除安裝接線

當使用 SPI 解除安裝時,某些屬性將有所不同。

  • trigger 目錄將被刪除。

  • 添加了 in_voltage0_sampling_frequency 屬性,用於設定取樣率。

  • 添加了 in_voltage0_sampling_frequency_available 屬性,用於查詢最大采樣率。

  • timestamp 通道將被刪除。

  • 與不使用解除安裝時相比,緩衝區資料格式可能不同,例如 buffer0/in_voltage0_type 屬性。

裝置緩衝區

該驅動程式支援硬體觸發緩衝區。這使用晶片的“高階序列器”功能來觸發一系列轉換。

另請參閱 工業 IIO 裝置緩衝區 以獲取更多常規資訊。

緩衝讀取的有效取樣率

當不使用 SPI 解除安裝時,取樣率由使用者空間中手動配置的觸發器確定。收到觸發器時,將以突發方式讀取所有啟用的通道。

當使用 SPI 解除安裝時,取樣率是按通道配置的。所有通道都將具有相同的速率,因此只需要設定一個 in_voltageY_sampling_frequency 屬性。由於該速率確定了每次單獨轉換之間的延遲,因此每個取樣的有效取樣率實際上是緩衝讀取中每個啟用通道的週期之和。換句話說,它是 in_voltageY_sampling_frequency 屬性的值除以啟用的通道數。因此,如果啟用了 4 個通道,並將 in_voltageY_sampling_frequency 屬性設定為 1 MHz,則有效取樣率為 250 kHz。

啟用過取樣後,有效取樣率還取決於分配給每個通道的 OSR。例如,如果前面提到的 4 個通道中的一個通道配置了 4 的 OSR,則該通道的有效取樣率變為(1 MHz / 4)= 250 kHz。然後,所有四個通道的有效取樣率為 1 / ((3 / 1 MHz) + (1 / 250 kHz)) ~= 142.9 kHz。請注意,在這種情況下,“取樣”是指對所有啟用通道的一次讀取(即,透過自動序列器的一個完整週期)。