0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AN-2011: AD7606B:在軟件模式下啟用的高級特性和系統(tǒng)級優(yōu)勢

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-06-13 14:49 ? 次閱讀

AD7606B是AD7606模數(shù)數(shù)據(jù)采集系統(tǒng)(DAS)的增強(qiáng)版。AD7606B可用作AD7606的引腳替代直接引腳,稱為硬件模式,其優(yōu)點(diǎn)如表1所示。但是,軟件模式下的AD7606B具有以下高級特性:

基于每個(gè)通道的獨(dú)立范圍選擇,包括 ±2.5 V 范圍選項(xiàng)

系統(tǒng)增益/相位/失調(diào)片內(nèi)校準(zhǔn)

模擬輸入開路檢測

額外的過采樣率(OSR = 128 和 256)

可選的 1、2 或 4 個(gè)串行數(shù)據(jù)輸出配置

診斷和監(jiān)測

參數(shù) AD7606 AD7606B (硬件模式) AD7606B (軟件模式)
典型輸入阻抗 1兆安 5兆安 5兆安
最大吞吐率 200 千秒 800 千秒 800 千秒
溫度范圍 ?40°C 至 +85°C ?40°C 至 +125°C ?40°C 至 +125°C
在駕駛范圍 2.3 V 至 5.25 V 1.71 V 至 3.6 V 1.71 V 至 3.6 V
絕對最大輸入電壓 ±16.5 V ±21 V ±21 V
模擬輸入范圍 ±10 V 或 ±5 V1 ±10 V 或 ±5 V1 ±10 V、±5 V
或 ±2.5 V2
系統(tǒng)增益、相位和失調(diào)片內(nèi)校準(zhǔn) 不適用 無法訪問 可用2
過采樣率 從無過采樣
到 OSR = 64
從無操作系統(tǒng)
到 OSR = 64
從無操作系統(tǒng)
到 OSR = 256
開路檢測 不適用 無法訪問 可用2
串行數(shù)據(jù)輸出線 2 2 可選:
1、2 或 4
診斷 不適用 無法訪問 可用

1不是基于每個(gè)通道。
2以每個(gè)通道為基礎(chǔ)。

軟件或寄存器模式通過將三個(gè)過采樣數(shù)字輸入(OS2、OS1和OS0)連接高電平來啟用,從而允許訪問配置寄存器映射以利用前面所述的功能。有關(guān)向后兼容性、如何在硬件模式和軟件模式下從AD1559遷移到AD7606B以及如何在串行(SDI引腳)和并行接口(WR引腳)中寫入寄存器映射的完整詳細(xì)信息,請參見AN-7606應(yīng)用筆記。

本應(yīng)用筆記介紹了AD7606B在軟件模式下提供的各種高級特性及其對系統(tǒng)級的影響。有關(guān)AD7606B的完整詳細(xì)信息,請參見AD7606B數(shù)據(jù)手冊。請結(jié)合本應(yīng)用筆記查閱本數(shù)據(jù)手冊。

通知

本應(yīng)用筆記中包含的軟件片段版權(quán)歸ADI公司2021所有?。保留所有權(quán)利。本軟件歸ADI公司及其許可方所有。本軟件按“原樣”提供,不作任何形式的陳述、保證、擔(dān)?;蜇?zé)任。該軟件的使用受 Clear BSD 許可證的條款和條件的約束。有關(guān)固件示例代碼的更多信息,請?jiān)L問AD7606 Mbed IIO應(yīng)用維基頁面。

初始化AD7606B

上電時(shí)進(jìn)入軟件模式

要在軟件模式下初始化AD7606B,請確保滿足以下條件:

所有三個(gè)過采樣引腳(OS2、OS1 和 OS0)必須連接到邏輯高電平。

PAR/SER 引腳連接得低或高,具體取決于所使用的數(shù)據(jù)接口,分別是并行或串行。

RANGE引腳可以連接為低電平或高電平,因?yàn)樵谲浖J较聲?huì)被忽略。范圍通過每個(gè)通道的相應(yīng)寄存器進(jìn)行選擇。

在上一個(gè)列表中提到的初始化過程之后,AD7606B配置為軟件模式,寄存器處于默認(rèn)狀態(tài)。在本應(yīng)用筆記和“通知”部分,以軟件串行模式下使用AD7606B為例。

初始化后,電壓引腳通常如下:

AVCC = 5.0 V

在駕駛= 3.3 V、2.5 V 或 1.8 V

REGCAP = 1.9 V

精煉/重新輸出 = 2.5 V

REFCAPA, REFCAPB = 4.4 V

驗(yàn)證上述引腳上的電壓時(shí),發(fā)出復(fù)位可確保AD7606B上正確加載默認(rèn)參數(shù)。若要發(fā)出重置,請使用以下代碼:

int32_t ad7606_reset(struct ad7606_dev *dev)
{
int32_t ret; ret = gpio_set_value(dev->gpio_reset, 1); udelay(3); ret = gpio_set_value(dev->gpio_reset, 0); ad7606_reset_settings(dev);



return ret;

}

AD7606B 通過寄存器讀取進(jìn)行檢查

AD7606B初始化后,寄存器值均為默認(rèn)值,如AD7606B數(shù)據(jù)手冊所示。用戶可以檢查 DEVICE_ID、SILICON_REVISION 或 RESET_DETECT 位 內(nèi)存映射,例如,確認(rèn)收到有效的完全或部分重置。以下代碼中顯示了單個(gè)AD7606B寄存器讀取功能作為基準(zhǔn)。將寄存器地址替換為包含DEVICE_ID位、SILICON_REVISION位或RESET_DETECT位的寄存器。串行外設(shè)接口(SPI)模式2可用于微控制器MCU)或數(shù)字信號處理器DSP)與AD7606B之間的直接連接。

int32_t ad7606_spi_reg_read(struct ad7606_dev
*dev,
uint8_t reg_addr,
uint8_t *reg_data)
{
uint8_t buf[3];
uint32_t sz = 2;
int32_t ret;
buf[0] = AD7606_RD_FLAG_MSK(reg_addr);
buf[1] = 0x00;
ret = spi_write_and_read(dev->spi_desc,buf, sz);
if (ret < 0)
return ret;
dev->reg_mode = true;
buf[0] = AD7606_RD_FLAG_MSK(reg_addr);
buf[1] = 0x00;
ret = spi_write_and_read(dev->spi_desc,buf, sz);
if (ret < 0)
return ret;
if (reg_data)
*reg_data = buf[1];
return ret;
}

寄存器配置

在電壓正確且SPI正常工作后,必須根據(jù)所需的應(yīng)用寫入寄存器以加載工作配置,例如范圍、過采樣或診斷等參數(shù)。無操作系統(tǒng)驅(qū)動(dòng)程序中包含的某些函數(shù)(如 ad7606_ set_oversampling() 或 ad7606_set_ch_range())有助于寫入寄存器,如過采樣或范圍配置。反過來,這些函數(shù)使用 ad7606_spi_reg_write() 函數(shù),該函數(shù)通常用于寫入任何設(shè)備寄存器。若要寫入寄存器,請使用以下代碼:

int32_t ad7606_spi_reg_write(struct ad7606_dev *dev,
uint8_t reg_addr,
uint8_t reg_data)
{
uint8_t buf[3];
int32_t ret;
uint32_t sz = 2;
/* Dummy read to place the chip in register mode. */
if (!dev->reg_mode) {
ret = ad7606_spi_reg_read(dev, reg_addr, NULL);
}
buf[0] = AD7606_WR_FLAG_MSK(reg_addr);
buf[1] = reg_data;
ret = spi_write_and_read(dev->spi_desc, buf, sz);
return ret;
}

校準(zhǔn)功能

雖然AD7606B選擇了硬件模式,但該器件的引腳和功能與AD7606完全兼容。如AN-7606應(yīng)用筆記所述,AD1559B帶來的優(yōu)勢是更高的輸入阻抗、更高的吞吐速率、更寬的溫度范圍和更低的數(shù)字電源電壓工作范圍。但是,通過將三個(gè)過采樣引腳(引腳 3、引腳 4 和引腳 5)連接高電平進(jìn)入軟件模式,可以實(shí)現(xiàn)許多高級功能,從而帶來系統(tǒng)級優(yōu)勢,如以下部分所述。

模擬輸入范圍

在AD7606上,數(shù)字輸入RANGE引腳(引腳8)上的極性決定了八個(gè)模擬輸入通道的輸入范圍。如果該引腳連接到邏輯高電平,則所有通道的模擬輸入范圍均為±10 V。如果該引腳連接到邏輯低電平,則所有通道的模擬輸入范圍均為±5 V。該引腳上的邏輯變化會(huì)立即影響模擬輸入范圍。

同樣,在硬件模式下的AD7606B上,所有通道的模擬輸入范圍通過RANGE引腳選擇。但是,在軟件模式下,模擬輸入范圍是按通道選擇的。為此,使用寄存器0x03到寄存器0x06分別設(shè)置每個(gè)通道的范圍。

例如,在圖1所示的RANGE_CH2_CH0寄存器(地址03x1)中,四個(gè)MSB確定通道2上的模擬輸入范圍,四個(gè)LSB確定通道1上的模擬輸入范圍。模擬輸入電壓可選擇±2.5 V、±5 V或±10 V單端。

wKgZomSIEXKALD3aAAF1_l5qlr0550.gif

圖1.RANGE_CH1_CH2 注冊,地址0x03

這種每通道模擬輸入范圍選擇允許在每個(gè)通道上設(shè)置不同的范圍,例如,如果電壓和電流通道在能源監(jiān)控應(yīng)用中需要不同的范圍,這可能是有益的。每通道模擬輸入范圍選擇還可用于在測量和保護(hù)通道上設(shè)置不同的范圍,例如,在能量保護(hù)應(yīng)用中。

系統(tǒng)失調(diào)誤差校準(zhǔn)

軟件模式下的AD7606B具有寄存器,用于補(bǔ)償系統(tǒng)中存在的失調(diào)誤差,無論這些誤差是由于傳感器的固有失調(diào)誤差還是傳感器之間的不匹配引起的。 每個(gè)模擬輸入端的前端電阻(Vx和VxGND),例如圖2所示的濾波電阻(RFILTER)。

wKgaomSIEXSADWxpAAEyZ9wEtp8145.gif

圖2.片內(nèi)增益/失調(diào)校準(zhǔn)

每個(gè)通道的8位長寄存器(地址0x11到地址0x18)允許AD7606B以數(shù)字方式將?128 LSB(寫入寄存器0x00)到+127 LSB(寫入寄存器0xFF)的失調(diào)添加到模數(shù)轉(zhuǎn)換器ADC)轉(zhuǎn)換數(shù)據(jù),以補(bǔ)償此類系統(tǒng)失調(diào)誤差。

換言之,添加到ADC代碼的失調(diào)(以LSB為單位)等于CHx_OFFSET寄存器減去128。表2顯示了CHx_OFFSET寄存器數(shù)據(jù)寫入以及從ADC代碼增加/減去相應(yīng)失調(diào)的示例。

wKgZomSIEXWANgoOAAAOn_hKXEA974.gif

CH1_OFFSET注冊 偏移校準(zhǔn)
0x00 ?128 LSB
0x45 ?59 LSB
0x80(默認(rèn)) 0 LSB
0x83 +3 LSB
0xFF +127 LSB

如圖2所示,通過將兩個(gè)輸入連接在一起并將它們連接到模擬地(AGND),可以通過讀取ADC代碼獲得系統(tǒng)失調(diào)。然后可以通過寫入相應(yīng)的寄存器來校準(zhǔn)該系統(tǒng)偏移。

例如,如果連接在通道1上的傳感器的失調(diào)相當(dāng)于10 LSB(多個(gè)ADC數(shù)據(jù)讀取的平均值,以消除噪聲引起的分布),或者當(dāng)輸入接地時(shí),前端電阻上的不匹配導(dǎo)致ADC代碼為10 LSB,則必須在每次轉(zhuǎn)換時(shí)從ADC代碼中減去10 LSB以消除該失調(diào)。由于128是失調(diào)寄存器上的默認(rèn)值,因此使用1x0(11d(十進(jìn)制))寫入CH0_OFFSET寄存器(地址76x118),AD7606B有效地從每個(gè)ADC轉(zhuǎn)換代碼中減去10個(gè)LSB。因此,該系統(tǒng)失調(diào)誤差可以通過片內(nèi)寄存器進(jìn)行內(nèi)部補(bǔ)償,從而消除了在后端通過軟件進(jìn)行補(bǔ)償?shù)呢?fù)擔(dān)。要了解有關(guān)如何對CHx_OFFSET寄存器進(jìn)行編程的更多信息,請參考AD7606B產(chǎn)品頁面中的AD7606x軟件型號。

wKgaomSIEXeAGG12AAEC7oYorPM507.gif

圖3.CH1_OFFSET寄存器、地址0x11、默認(rèn)值0x80

要執(zhí)行失調(diào)誤差校準(zhǔn),請使用以下代碼:

int32_t ad7606_set_ch_offset(struct ad7606_dev
*dev, uint8_t ch, int8_t offset)
{
int ret;
uint8_t value = (uint8_t)(offset - 0x80);
if (ch >= dev->num_channels)
return -EINVAL;
ret = ad7606_spi_reg_write(dev,
AD7606_REG_OFFSET_CH(ch), value);
dev->offset_ch[ch] = offset;
return ret;
}

系統(tǒng)增益誤差校準(zhǔn)

根據(jù)每個(gè)通道上選擇的模擬輸入范圍,可編程增益放大器(PGA)配置為選擇適當(dāng)?shù)脑鲆妫ǚ答侂娮瑁≧FB)/輸入電阻(RIN)) 調(diào)整模擬輸入信號以滿足ADC的輸入范圍。

wKgZomSIEXmAA89ZAACxQjCKhVw566.gif

圖4.模擬輸入電路,AD7606的RIN為1 MΩ,而AD7606B的RIN為5 MΩ

在內(nèi)部,AD7606B對R具有嚴(yán)格的控制FB和 R在,使得該理想增益通過工廠調(diào)整精確設(shè)置,假設(shè)前端沒有電阻。但是,如果在前端放置一個(gè)外部電阻,例如用于保護(hù)或額外濾波,則實(shí)際增益不再是理想的RFB/R在.

添加 R濾波器串聯(lián)到 R在修改除數(shù),通過添加額外的增益誤差來改變實(shí)際系統(tǒng)增益。R 越大濾波器使用時(shí),引入的增益誤差越大,如圖5所示。對于給定的 R濾波器,因?yàn)?R在AD7606B的增益誤差(5 MΩ)比AD7606(1 MΩ)大得多,增益誤差由R濾波器與AD7606相比,AD7606B的尺寸要小得多。因此,AD7606B對放置外部R引入的增益誤差不太敏感。濾波器到設(shè)備。

wKgZomSIFreAW2uoAABmCnnCpFI178.png

圖5.R引入的系統(tǒng)增益誤差濾波器AD7606或AD7606B(校準(zhǔn)使能或禁用)通過片內(nèi)校準(zhǔn)

了解AD7606數(shù)據(jù)手冊和AD7606B數(shù)據(jù)手冊中提供的典型輸入電阻后,如果有可用資源,可以對控制器側(cè)的后端校準(zhǔn)(現(xiàn)場可編程門陣列(FPGA)、DSP)進(jìn)行編程。但是,如果在軟件模式下使用AD7606B,則每個(gè)通道的片內(nèi)寄存器可以自動(dòng)補(bǔ)償此系統(tǒng)增益誤差。由于AD7606B的輸入阻抗在每個(gè)器件上都是內(nèi)部準(zhǔn)確的,因此其自動(dòng)增益校準(zhǔn)始終比基于輸入阻抗典型值編程的任何后端校準(zhǔn)更精確,從而減輕了在控制器端進(jìn)行所有校準(zhǔn)計(jì)算的負(fù)擔(dān)。圖6所示,在AD7606B上針對特定范圍的R進(jìn)行校準(zhǔn)的示例濾波器值。

wKgZomSIEX6Af5rHAACgZ-ALAzw015.gif

圖6.應(yīng)用后端校準(zhǔn)(假設(shè)RIN等于典型輸入阻抗值)與應(yīng)用片上校準(zhǔn)相比的總誤差

wKgaomSIEYCAaquoAAD2J4EkEro139.gif

圖7.具有每通道增益校準(zhǔn)功能的模擬信號鏈,可減輕后端數(shù)字控制器的負(fù)擔(dān)

要使用增益校準(zhǔn)功能,分配寄存器0x09到寄存器0x10以對R進(jìn)行編程濾波器在每個(gè)通道上使用,最高可達(dá)65 kΩ,分辨率為1024 Ω。使用此功能,系統(tǒng)增益誤差可以保持在0.02%以下,與R無關(guān)濾波器,如圖 5 所示。如果使用后端校準(zhǔn),則由于輸入阻抗的不確定性,請考慮額外的誤差幅度。

例如,27 kΩ R引入的系統(tǒng)增益誤差濾波器通道5前端使用,通過將0x1B(27d)寫入CH5_GAIN寄存器(地址0x0D)進(jìn)行自動(dòng)補(bǔ)償,如圖8所示。要了解有關(guān)如何對CHx_GAIN寄存器進(jìn)行編程的更多信息,請參考AD7606B產(chǎn)品頁面中的AD7606x軟件模型。

wKgZomSIEYGAJiMQAAEKIgYrcBo392.gif

圖8.CH5_GAIN 寄存器,地址0x0D

為了配置通道的增益,以下代碼執(zhí)行前面提到的功能:

int32_t ad7606_set_ch_gain(struct ad7606_dev
*dev, uint8_t ch,
uint8_t gain)
{
int ret;
if (ch >= dev->num_channels)
return -EINVAL;
gain = field_get(AD7606_GAIN_MSK, gain);
ret = ad7606_spi_reg_writewrite(dev,
AD7606_REG_GAIN_CH(ch), gain);
dev->>gain_ch[ch] = gain;
return ret;

系統(tǒng)相位誤差校準(zhǔn)

當(dāng)通過電流互感器測量同一電源線上的電壓和電流時(shí),兩個(gè)通道之間存在相位不匹配。如果 R 不匹配,則可能會(huì)發(fā)生類似的事情濾波器和濾波電容(C濾波器) 之間 必須同時(shí)采樣的兩個(gè)通道。

AD7606B可通過延遲內(nèi)部采樣時(shí)刻來內(nèi)部補(bǔ)償系統(tǒng)相位誤差。在圖 9 所示的示例中,存在輕微的延遲 (tPHASE_REG) 在通道 1 和通道 4 之間。如果知道此時(shí)間延遲,則通過編程 它返回到CH4_PHASE寄存器(地址0x1C),通道4實(shí)際上是采樣的tPHASE_REGV1之后的時(shí)間,補(bǔ)償兩個(gè)通道之間的相位失配并提供同相輸出。

請注意,延遲任何通道都意味著延長BUSY 引腳高電平時(shí)間,即轉(zhuǎn)換時(shí)間(t卷積) 的擴(kuò)展與編程最延遲的通道一樣多,因此,最大吞吐速率可能會(huì)受到影響。

wKgaomSIEYOAYI5yAABxU-RVUSw335.gif

圖9.系統(tǒng)相位校準(zhǔn)功能

每個(gè)通道有一個(gè)相位寄存器,地址0x19到地址0x20,允許以1.25 μs的分辨率單獨(dú)補(bǔ)償每個(gè)通道上的相位誤差,并且每個(gè)通道中相對于CONVST引腳信號的時(shí)間延遲高達(dá)318.75 μs。

要檢查此功能,請執(zhí)行以下步驟:

向所有信號鏈輸入施加一個(gè)交流電源(或具有精確相位控制的多通道校準(zhǔn)器),如50 Hz或60 Hz。

捕獲足夠的通道代碼,以通過快速傅里葉變換 (FFT)、離散傅里葉變換 (DFT) 或其他方法計(jì)算通道到通道組的延遲匹配。

以1.25 μs的步長計(jì)算CHx_PHASE_OFFSET寄存器值。

將相位匹配誤差寄存器寫入AD7606B。

若要寫入相位匹配錯(cuò)誤寄存器,請使用以下代碼:

int32_t ad7606_set_ch_phase(struct ad7606_dev
*dev, uint8_t ch, uint8_t phase)
{
int ret;
if (ch >= dev->num_channels)
return -EINVAL;
ret = ad7606_spi_reg_write(dev,
AD7606_REG_PHASE_CH(ch), phase);
dev->phase_ch[ch] = phase;
return ret;
}

開路檢測

如AN-1559應(yīng)用筆記所述,因?yàn)锳D7606B具有更大的R在比AD7606(5 MΩ對比1 MΩ)更容易檢測傳感器何時(shí)斷開 通過使用給定的下拉電阻(R帕金森) 允許與傳感器并聯(lián)。R的增加在當(dāng)傳感器斷開連接時(shí),ADC輸出代碼較低。

wKgZomSIEYWAdOETAADN8wG1zfs223.gif

圖 10.帶 R 的模擬前端帕金森

進(jìn)入AD7606B的軟件模式時(shí),有一個(gè)開路檢測功能,默認(rèn)情況下禁用,有兩種可能的模式:手動(dòng)和自動(dòng)開路檢測。

手動(dòng)模式

默認(rèn)情況下,開路檢測功能處于禁用狀態(tài),但將0x01寫入OPEN_DETECT_QUEUE寄存器(地址0x2C)可啟用手動(dòng)開路檢測模式。

wKgaomSIEYeAeGoIAAFC_ZYORrM299.gif

圖 11.OPEN_DETECT_QUEUE 寄存器,地址0x2C

在手動(dòng)模式下,如果ADC代碼重復(fù)多次轉(zhuǎn)換,則在假設(shè)傳感器已斷開連接之前,可以通過更改PGA共模來驗(yàn)證斷開連接。PGA的共模電壓由OPEN_DETECT_ENABLE寄存器(地址0x23)中相應(yīng)的CHx_OPEN_DETECT_EN位控制,每個(gè)通道,如圖12所示。如果更改給定通道上的PGA共模會(huì)更改ADC輸出代碼,則表示傳感器已斷開連接。否則,傳感器仍連接到模擬輸入。

wKgZomSIEYiASEO-AAH_u5lLfXQ276.gif

圖 12.OPEN_DETECT_ENABLE 寄存器,地址0x23

此方法仍然需要一些后端工作。檢測N個(gè)重復(fù)采樣(低于閾值),更改PGA共模,然后驗(yàn)證ADC輸出代碼是否隨共模變化而變化。通過啟用自動(dòng)模式可以消除這種負(fù)擔(dān),該模式允許AD7606B自動(dòng)檢測何時(shí)發(fā)生開路。若要在手動(dòng)模式下實(shí)現(xiàn)開路檢測算法,請使用以下代碼:

/* Enter into manual open circuit detection mode */
do {
if (ad7606_spi_reg_write(device, AD7606_REG_OPEN_DETECT_QUEUE, 1) == SUCCESS) {
/* Read the ADC on selected chnnel (first reading post open circuit detection start) */
prev_adc_code = single_data_read(device,
channel->ch_num - 1,
attr_polarity_val[channel->ch_num - 1]);
/* Perform N conversions and monitor the code delta */
for (cnt = 0; cnt < MANUAL_OPEN_DETECT_CONV_CNTS; cnt++) {
/* Check if code is within 350LSB (nearest ZS code) */
if (prev_adc_code>= 0 && prev_adc_code < MANUAL_OPEN_DETECT_ENTRY_TRHLD)
{
/* Perform next conversion and read the result */
curr_adc_code = single_data_read(device,
channel->ch_num - 1,
attr_polarity_val[channel->ch_num - 1]);
/* Check if delta b/w current and previus reading is within 10 LSB code */
if (abs(curr_adc_code - prev_adc_code) > MANUAL_OPEN_DETECT_CONV_TRSHLD) {
open_detect_done = true;
break;
}
/* Get the previous code */
prev_adc_code = curr_adc_code;
} else {
open_detect_done = true;
break;
}
}
/* Break if open circuit detection aborted (in case above conditions not met) */
if (open_detect_done)
break;
/* Set common mode high (enabling open circuit detect on selected channel) */
if (ad7606_spi_reg_write(device,
AD7606_REG_OPEN_DETECT_ENABLE,
(1 << ((channel->ch_num) - 1))) == SUCCESS) {
/* Perform next conversions (~2-3) and read the result (with common mode set high) */
for (cnt = 0; cnt < MANUAL_OPEN_DETECT_CM_CNV_CNT; cnt++) {
udelay(100);
curr_adc_code = single_data_read(device,
channel->ch_num - 1,
attr_polarity_val[channel->ch_num - 1]);
}
/* Check if delta b/w common mode high code and previous N conversion code is >
threshold */
if ((curr_adc_code - prev_adc_code) < MANUAL_OPEN_DETECT_THRESHOLD_RPD50K) {
open_detect_done = true;
break;
}
} else {
return -EINVAL;
}
/* Break if open circuit detection aborted (in case above conditions not met) */
if (open_detect_done)
break;
/* Set common mode low (disabling open circuit detect on channel) */
if (ad7606_spi_reg_write(device,
AD7606_REG_OPEN_DETECT_ENABLE,
0) == SUCCESS) {
/* Perform next conversion and read the result (with common mode set low) */
curr_adc_code = single_data_read(device,
channel->ch_num - 1,
attr_polarity_val[channel->ch_num - 1]);
/* Check if delta b/w common mode low code and previous N conversion code is <
threshold */
if (abs(curr_adc_code - prev_adc_code) < MANUAL_OPEN_DETECT_THRESHOLD_RPD50K) {
open_detect_flag = true;
open_detect_done = true;

}
} else {
return -EINVAL;
}
} else {
return -EINVAL;
}
} while (0);

自動(dòng)模式

在自動(dòng)模式下,以前的方法是在芯片上實(shí)現(xiàn)的,消除了檢測傳感器斷開連接的后端軟件的負(fù)擔(dān)。自動(dòng)模式通過在標(biāo)志觸發(fā)之前寫入轉(zhuǎn)換次數(shù) (N) 來啟用,如圖 11 所示。然后,可以通過OPEN_DETECT_ENABLE寄存器單獨(dú)啟用或禁用每個(gè)通道檢查器(圖 12)。

該算法在圖13的圖表中進(jìn)行了簡化,在后臺運(yùn)行,如果在特定通道中觸發(fā)錯(cuò)誤標(biāo)志,則可以在OPEN_檢測到寄存器(地址0x24)或STATUS報(bào)頭(如果附加到ADC數(shù)據(jù))或STATUS寄存器中檢查該算法。

wKgaomSIEYqACy9VAABvNPwUnvg603.gif

圖 13.自動(dòng)開路檢測算法

以下代碼在自動(dòng)模式下實(shí)現(xiàn)開路檢測算法。自動(dòng)檢測開路所需的時(shí)間取決于其他元件,如外部RC元件和過采樣率。要計(jì)算此時(shí)間,建議訪問AD7606B產(chǎn)品頁面并下載“工具和仿真”部分提供的設(shè)計(jì)工具。該工具允許用戶了解有關(guān)本應(yīng)用筆記中描述的其他校準(zhǔn)功能的更多信息。

/* Enter into open circuit auto open detect mode */
if (ad7606_spi_reg_write(device,
AD7606_REG_OPEN_DETECT_QUEUE,
open_detect_queue_cnts[channel->ch_num - 1]) == SUCCESS) {
/* Enable open circuit detection on selected channel */
if (ad7606_spi_reg_write(device,
AD7606_REG_OPEN_DETECT_ENABLE,
(1 << ((channel->ch_num) - 1))) == SUCCESS) {
/* Monitor the open detect flag for max N+15 (open detect queue count) conversions.
* Note: In ideal scenario, the open detect flash should be monitored continuously while
* background N conversions are in progress */
for (conv_cnts = 0;
conv_cnts < (open_detect_queue_cnts[channel->ch_num - 1] +
AUTO_OPEN_DETECT_QUEUE_EXTRA_CONV_CNT);
conv_cnts++) {
if (ad7606_convst(device) == SUCCESS) {
udelay(100);
/* Monitor the open detect flag */
if (ad7606_spi_reg_read(device,
AD7606_REG_OPEN_DETECTED,
&open_detect_flag) == SUCCESS) {
open_detect_flag >>= (channel->ch_num - 1);
open_detect_flag &= 0x1;
rw_status = SUCCESS;
if (open_detect_flag) {
break;
}
} else {
rw_status = FAILURE;
break;
}
} else {
rw_status = FAILURE;
break;
}
}
}

監(jiān)視和診斷功能

過壓 (OV)/欠壓 (UV)

AD7606B上的每個(gè)模擬輸入V1至V8和V1GND至V8GND均內(nèi)置比較器電路,用于監(jiān)控過壓和欠壓事件。默認(rèn)情況下,此電路處于禁用狀態(tài)。這些比較器中的任何一個(gè)都可以通過AIN_OV_UV_DIAG_ENABLE寄存器(地址0x25)單獨(dú)使能,以便監(jiān)控模擬輸入電壓,并在超過OV閾值或UV閾值時(shí)觸發(fā)警報(bào)。

wKgZomSIEYyAH3mxAACJTEZZR5M552.gif

圖 14.每個(gè)模擬輸入上的過壓和欠壓電路

電路使能時(shí),當(dāng)任何模擬輸入引腳上的電壓超過AD7606B數(shù)據(jù)手冊中顯示的OV閾值時(shí),AIN_OV_DIAG_ERROR寄存器(地址0x26)顯示哪個(gè)或多個(gè)通道發(fā)生過壓事件。

當(dāng)任何模擬輸入引腳上的電壓低于AD7606B數(shù)據(jù)手冊中所示的UV閾值時(shí),AIN_UV_ DIAG_ERROR寄存器(地址0x27)顯示哪個(gè)或哪些通道發(fā)生欠壓事件。

這些監(jiān)控標(biāo)志允許用戶或控制器快速了解電路保護(hù)應(yīng)用中的模擬輸入何時(shí)超過滿量程電壓,并超過可能對電路其余部分構(gòu)成潛在風(fēng)險(xiǎn)的電壓電平,從而允許控制器采取任何措施幫助保護(hù)系統(tǒng)。

接口檢查

使用接口檢查確保數(shù)據(jù)從AD7606B正確傳輸?shù)綌?shù)字控制器。通過DIGITAL_DIAG_ENABLE寄存器(地址7x0)上的第21位進(jìn)行接口檢查,無論是定期還是在發(fā)生可能導(dǎo)致數(shù)據(jù)傳輸錯(cuò)誤的事件時(shí),使AD7606B時(shí)鐘輸出固定數(shù)據(jù)值而不是轉(zhuǎn)換結(jié)果。這樣,如果接收的數(shù)據(jù)與AD7606B發(fā)送的固定數(shù)據(jù)匹配,則驗(yàn)證通信是否執(zhí)行時(shí)沒有數(shù)據(jù)損壞。

wKgaomSIFs2AAw_2AAA2b4C4-GU279.png

圖 15.AD7606B(目標(biāo))和主機(jī)控制器之間的數(shù)據(jù)傳輸線

有關(guān)數(shù)字接口檢查的更多信息,請參見AD7606B數(shù)據(jù)手冊。

SPI 讀/寫無效

嘗試讀回?zé)o效寄存器地址時(shí),將設(shè)置SPI_READ_ERR位(地址 0x22,位 4)??梢酝ㄟ^設(shè)置SPI_READ_ERR_EN位(地址 0x21,位 4)來啟用無效回讀地址檢測。如果觸發(fā)了 SPI 讀取錯(cuò)誤,則通過覆蓋該位或禁用檢查器來清除該錯(cuò)誤。

嘗試寫入無效寄存器地址或只讀寄存器時(shí),將設(shè)置SPI_WRITE_ERR位(地址0x22,位 3)??梢酝ㄟ^設(shè)置 SPI_WRITE_ERR_EN 位(地址 0x21,位 3)來啟用無效寫入地址檢測。如果觸發(fā)了 SPI 寫入錯(cuò)誤,則通過覆蓋該位或禁用檢查器來清除該錯(cuò)誤。

忙得不可開交

通過DIGITAL_DIAG_ENABLE寄存器(地址0x21,第5位)使能時(shí),BUSY_STUCK_HIGH_ERR_EN監(jiān)控位允許AD7606B在AD7606因任何不太可能的原因停止執(zhí)行轉(zhuǎn)換(BUSY 線路卡?。r(shí),通過置位BUSY_STUCK_HIGH_ERR位(地址0x22,第5位)向控制器發(fā)出警報(bào)。如果發(fā)生這種情況,則此位的斷言表示自動(dòng)發(fā)出部分復(fù)位以恢復(fù)正常操作。

有關(guān)BUSY 卡住高電平監(jiān)控功能的更多信息,請參見AD7606B數(shù)據(jù)手冊。

診斷多路復(fù)用器

所有3個(gè)輸入通道均在PGA前面包含一個(gè)診斷多路復(fù)用器,用于監(jiān)控表7606中所述的內(nèi)部節(jié)點(diǎn),以確保AD3B正常工作。例如,表1顯示了通道<>上診斷多路復(fù)用器寄存器的位解碼。選擇內(nèi)部節(jié)點(diǎn)時(shí),輸入引腳上的輸入電壓將從PGA中取消選擇。

地址0x28 通道 1 上的信號
位 2 位 1 位 0
0 0 0 V1 版
0 0 1 溫度傳感器
0 1 0 4 × V裁判
0 1 1 4 × 奧爾多
1 0 0 4 × DLDO
1 0 1 在駕駛
1 1 0 阿格德
1 1 1 之抄送

溫度傳感器

溫度傳感器可通過診斷多路復(fù)用器進(jìn)行選擇,并通過ADC進(jìn)行轉(zhuǎn)換,如AD7606B數(shù)據(jù)手冊所示。溫度傳感器電壓是測量的,與芯片溫度成正比,如下式所示。

wKgaomSIEY6AauZDAAATLg3PE2E146.gif

通常,溫度傳感器的采樣電壓在室溫下約為0.69 V。

基準(zhǔn)電壓源、模擬低壓差 (ALDO)、數(shù)字低壓差 (DLDO)、V駕駛邏輯電源電壓、AGND和AV抄送模擬電源電壓可以以相同的方式進(jìn)行自我檢測。

使用以下代碼讀取溫度傳感器。

ssize_t get_chn_temperature(void *device,
char *buf,
size_t len,
const struct iio_ch_info *channel)
{
int32_t adc_chn_data = 0;
float temperature;
float voltage;
/* Configure the channel multiplexer to select temperature read */
if (ad7606_spi_write_mask(device,
AD7606_REG_DIAGNOSTIC_MUX_CH(channel->ch_num - 1),
AD7606_DIAGN_MUX_CH_MSK(channel->ch_num - 1),
AD7606_DIAGN_MUX_CH_VAL((channel->ch_num - 1),
TEMPERATURE_MUX)) == SUCCESS) {
/* Allow to settle Mux channel */
udelay(100);
/* Sample the channel and read conversion result */
adc_chn_data = single_data_read(device, channel->ch_num - 1,
attr_polarity_val[channel->ch_num - 1]);
/* Convert ADC data into equivalent voltage */
voltage = convert_adc_raw_to_voltage(adc_chn_data,
attr_scale_val[channel->ch_num - 1]);
/* Obtain the temperature using equation specified in device datasheet */
temperature = ((voltage - 0.69068) / 0.019328) + 25.0;
return (ssize_t)sprintf(buf, "%f", temperature);
}
return -EINVAL;
}

wKgZomSIEZCAGnkcAAInjcpkHGo988.gif

圖 16.忙 卡在高處

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 電源
    +關(guān)注

    關(guān)注

    184

    文章

    17718

    瀏覽量

    250167
  • 溫度傳感器
    +關(guān)注

    關(guān)注

    48

    文章

    2940

    瀏覽量

    156073
  • DAS
    DAS
    +關(guān)注

    關(guān)注

    0

    文章

    107

    瀏覽量

    31080
收藏 人收藏

    評論

    相關(guān)推薦

    使用AD7606B采集數(shù)據(jù)時(shí),小概率的出現(xiàn)采集數(shù)據(jù)錯(cuò)位,或者全為零的情況,為什么?

    使用AD7606B采集數(shù)據(jù)時(shí),小概率的出現(xiàn)采集數(shù)據(jù)錯(cuò)位,或者全為零的情況。出現(xiàn)這兩種情況可能是什么原因?qū)е碌哪兀?/div>
    發(fā)表于 05-20 08:23

    AD7606B不掉電情況切換SER模式,采集數(shù)據(jù)異常的原因?

    AD7606B上電狀態(tài) PAR 模式,采集數(shù)據(jù)正常;不掉電情況 切換 SER 模式,采集數(shù)據(jù)異常; AD7606B上電狀態(tài)SER
    發(fā)表于 05-20 06:04

    AD7606B使用SPI讀取AD數(shù)據(jù)錯(cuò)誤是為什么?

    使用一根spi數(shù)據(jù)線讀取AD7606B的數(shù)據(jù),經(jīng)常出現(xiàn)讀取數(shù)據(jù)錯(cuò)誤的現(xiàn)象,數(shù)據(jù)為0,示波器觀察讀取時(shí),F(xiàn)RSTDATA信號會(huì)出現(xiàn)兩次,如下圖 綠色的時(shí)鐘,藍(lán)色的數(shù)據(jù),黃色的FRSTDATA,紫色
    發(fā)表于 12-04 08:06

    AD7606B相位校準(zhǔn)導(dǎo)致busy阻塞的原因?

    調(diào)試AD7606B相位校準(zhǔn),如果給任意通道PHASE寄存器寫一個(gè)值(如CH4_PHASE=1),busy就會(huì)被阻塞。如果CH1~8_PHASE=0,busy信號正常,采集正常。 第一張圖
    發(fā)表于 12-04 06:41

    求助,關(guān)于AD7606B的幾個(gè)異常問題

    最近在調(diào)試AD7606B,遇到了幾個(gè)問題: 1、通過CONVERT啟動(dòng)轉(zhuǎn)換失敗,必須先寫入寄存器0,再啟動(dòng)轉(zhuǎn)換才可以,每次都這樣,即使不在寄存器模式,也要寫入寄存器0,Datasheet中沒查相關(guān)
    發(fā)表于 12-04 07:25

    AD7606B模數(shù)轉(zhuǎn)換數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)手冊免費(fèi)下載

    AD7606B是一款16位、同步采樣、模數(shù)轉(zhuǎn)換數(shù)據(jù)采集系統(tǒng) (DAS),具有8個(gè)通道,每個(gè)通道均內(nèi)置模擬輸入箝位保護(hù)、可編程增益放大器(PGA)、低通濾波器和16位逐次逼近寄存器(SAR)模數(shù)轉(zhuǎn)換器
    發(fā)表于 03-27 08:00 ?8次下載
    <b class='flag-5'>AD7606B</b>模數(shù)轉(zhuǎn)換數(shù)據(jù)采集<b class='flag-5'>系統(tǒng)</b>的數(shù)據(jù)手冊免費(fèi)下載

    AD7606B Frequently Asked Questions (FAQs) (EngineerZone)

    AD7606B Frequently Asked Questions (FAQs) (EngineerZone)
    發(fā)表于 01-29 08:15 ?6次下載
    <b class='flag-5'>AD7606B</b> Frequently Asked Questions (FAQs) (EngineerZone)

    AD7606B Evaluation Software

    AD7606B Evaluation Software
    發(fā)表于 01-31 13:11 ?1次下載
    <b class='flag-5'>AD7606B</b> Evaluation Software

    AD7606B IBIS Model

    AD7606B IBIS Model
    發(fā)表于 01-31 16:10 ?8次下載
    <b class='flag-5'>AD7606B</b> IBIS Model

    AD7606B/AD7606C ACE遙控器

    AD7606B/AD7606C ACE遙控器
    發(fā)表于 03-22 17:34 ?7次下載
    <b class='flag-5'>AD7606B</b>/AD<b class='flag-5'>7606</b>C ACE遙控器

    AD7606B評估軟件

    AD7606B評估軟件
    發(fā)表于 03-23 10:43 ?12次下載
    <b class='flag-5'>AD7606B</b>評估<b class='flag-5'>軟件</b>

    AD7606B IBIS型號

    AD7606B IBIS型號
    發(fā)表于 03-23 11:53 ?2次下載
    <b class='flag-5'>AD7606B</b> IBIS型號

    AD7606B評估板布局

    AD7606B評估板布局
    發(fā)表于 05-11 20:14 ?21次下載
    <b class='flag-5'>AD7606B</b>評估板布局

    AN-2020:基于AD7606B ADC的電力自動(dòng)化EMC穩(wěn)健PCB設(shè)計(jì)

    AN-2020:基于AD7606B ADC的電力自動(dòng)化EMC穩(wěn)健PCB設(shè)計(jì)
    發(fā)表于 05-16 19:24 ?25次下載
    AN-2020:基于<b class='flag-5'>AD7606B</b> ADC的電力自動(dòng)化EMC穩(wěn)健PCB設(shè)計(jì)

    AD7606B物料清單

    AD7606B物料清單
    發(fā)表于 05-17 10:13 ?8次下載
    <b class='flag-5'>AD7606B</b>物料清單