国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM32和AD5791的高精度數(shù)模轉(zhuǎn)換電路設(shè)計

2020-07-24 02:14:37崔海朋
電子產(chǎn)品世界 2020年6期

摘要:現(xiàn)在很多智能儀表中,要求有超高精度的電壓信號輸出,而且要求刷新率高、噪聲低,常規(guī)的處理電路比較復(fù)雜,難以實現(xiàn)自動校準(zhǔn)。為了解決該問題,采用了20位的高精度數(shù)模轉(zhuǎn)換器( DAC) AD5791,并應(yīng)用于基于STM32的測量儀表中。本文詳細(xì)介紹了軟硬件設(shè)計。此系統(tǒng)實現(xiàn)了超高精度的單路可調(diào)電壓輸出,精度高和噪聲低。

關(guān)鍵詞:數(shù)模轉(zhuǎn)換器;STM32;AD5791

0 引言

現(xiàn)在很多智能測量儀表要求具有超高精度的電壓信號,同時要求高穩(wěn)定性、高線形度和低噪聲、低溫度漂移。這樣的模擬系統(tǒng)設(shè)計面臨復(fù)雜的工程技術(shù)挑戰(zhàn),常規(guī)的方法是采用多個較低分辨率的DAC和大量分立元件與支持IC整合在一起,同時伴隨著相當(dāng)大的開發(fā)風(fēng)險和高代價的修改時間,才能優(yōu)化電路參數(shù)、減小誤差和設(shè)計出復(fù)雜的自動校準(zhǔn)電路,這樣不僅增加了硬件設(shè)計的復(fù)雜性,通常達(dá)到的精度也不是很高。本系統(tǒng)設(shè)計的基于STM32微處理器和AD5791的20位超高精度測量系統(tǒng)中,實現(xiàn)了單路超高精度可調(diào)電壓信號的輸出,輸出電壓信號的幅值可以通過軟件來設(shè)置。該系統(tǒng)可靠性高,不需要校準(zhǔn)電路。

AD5791是美國ADI公司推出的一款高性能的單路20位電壓輸出數(shù)模轉(zhuǎn)換器,它是業(yè)界首款具有真正1 ppm(百萬分之一)分辨率和精度的DAC器件[1-2]。雙極工作電壓高達(dá)33 V。同時AD5791具有1 ppm的分辨率和精度、低噪聲1 ppm以下)、快速刷新率(1 us)和非常低的輸出漂移(在1 ppm以下)。該器件采用了多功能三線串行接口,并與SPI、QSPITM、MICROWIRE TM 和DSP接口標(biāo)準(zhǔn)兼容。該器件集成了一個上電復(fù)位電路,以確保DAC輸出能達(dá)到OV,并保持在已知輸出阻抗?fàn)顟B(tài),直到有效寫入為止。該器件還提供了一個輸出鉗位功能,這使得其輸出在一個限定的負(fù)載狀態(tài)。綜上知,采用該款芯片,減少了復(fù)雜校準(zhǔn)算法的必要性,能極大地簡化設(shè)計任務(wù)、減少開發(fā)和維護(hù)成本,同時降低風(fēng)險。國內(nèi)相關(guān)學(xué)者在精密電壓源和醫(yī)療儀器中也得到了應(yīng)用[3-4]。

本系統(tǒng)的Cortex- M3處理器為意法半導(dǎo)體公司推出的32位RISC處理器STM32F103VCT6,主頻最高可達(dá)72 MHz,應(yīng)用也比較廣泛[5]。該處理器具有256KB的程序存儲器,48 KB的RAM,同時它有8個定時器、5路串口、3路SPI、2路I2C,具有獨立看門狗和窗口看門狗,非常適合于與AD5791構(gòu)成高精度的測量系統(tǒng)。

1 硬件電路設(shè)計

數(shù)模轉(zhuǎn)換電路中采用了1片參考電壓基準(zhǔn)產(chǎn)生芯片REF02AZ、1片超高精度雙路軌至軌輸出運算放大器AD8676、1片高精度單路軌至軌輸出運算放大器AD8675和20位超高精度數(shù)模轉(zhuǎn)換芯片AD5791構(gòu)成。該電路性能穩(wěn)定,運行效果非常好。下面對電路進(jìn)行詳細(xì)分析。

AD5791中,VDD為+15 V,VSS為-15 V。VREFPS和VREFPF用以提供AD5791的正參考電壓輸入,輸入范圍5V到VDD-2.5 V,本測試系統(tǒng)中使用了+5 V的參考電壓。VREFNS和VREFNF用以提供AD5791的負(fù)參考電壓輸入,輸入范圍VSS+2.5到OV,本測試系統(tǒng)中使用了-5 V的參考電壓。AD5791的工作電壓為3.3 V。+5 V參考電壓由參考電壓產(chǎn)生芯片REF02AZ產(chǎn)生,負(fù)電壓是通過由OP177構(gòu)成的單位增益反向放大器來實現(xiàn)?!繱V電壓產(chǎn)生電路如圖1所示。

AD5791有7個用于與STM32處理器進(jìn)行通訊的引腳,下面逐一作詳細(xì)介紹:

RESET/:復(fù)位引腳,可以實現(xiàn)AD5791的復(fù)位;

CLR/:清零引腳,可以將AD5791內(nèi)部DAC寄存器的值恢復(fù)到用戶定義的值,并更新DAC的輸出;

LDAC/:用于更新AD5791內(nèi)部DAC寄存器的值,并更新DAC的輸出;

SDO:串行數(shù)據(jù)輸出引腳;

SDIN:串行數(shù)據(jù)輸入引腳;

SCLK:串行通訊時鐘信號輸入引腳,最高頻率可高達(dá)35 MHz;

SYNC/:串行輸入數(shù)據(jù)的幀同步信號;

由于STM32處理器采用了I/O口模擬SPI通訊的方式,所以通訊控制引腳可以連接到空余的STM32處理器的任何一個I/O引腳上,只要做相應(yīng)配置就可以。AD5791的應(yīng)用電路圖如圖2所示。其中,AD8675構(gòu)成電壓跟隨器,作為AD5791的輸出緩沖。硬件電路上模擬地和數(shù)字地分開,并在一點接地,同時各個電源都加有濾波電容,以消除干擾。

2 軟件設(shè)計

系統(tǒng)采用模擬SPI總線通信,軟件的關(guān)鍵是STM32處理器和AD5791之間的時序匹配,輸出電壓值到AD5791的DAC寄存器的值的計算,下面分別進(jìn)行詳細(xì)介紹。

2.1 AD 5791芯片配置

AD5791的配置,主要在于AD5791的控制寄存器的配置。為了使得AD5791和STM32處理器匹配使用,需要做如下配置,具體控制寄存器相關(guān)介紹和操作參見手冊。DBn( n=l¨-9)代表控制寄存器的第n位。

DBl RBUF=1 內(nèi)部運算放大器關(guān)閉

DB2 0PGND=O將DAC輸出下拉到地的功能切換掉,使得DAC處于正常模式

DB3 DACIRI=O使DAC處于正常操作模式

DB4 BrN/2sC=I使用直接二進(jìn)制編碼,不使用二進(jìn)制補(bǔ)碼編碼的形式

DB5 SDODIS=O SDO數(shù)據(jù)輸出使能

DB6-DB9 LrN—COMP=O參考電壓輸入范圍選擇為10 V

按照上述的配置,將相應(yīng)配置字寫入到AD5791的控制寄存器內(nèi)部,AD5791就可以正常工作了。此處值得注意的是DB4位,一定要選擇好相應(yīng)的編碼形式,否則輸出電壓會和計算值不符合。

2.2 STM 32接口配置

STM32處理器的SPI發(fā)送和接收都采用的是I/O口模擬的方式,因此I/O的初始化比較簡單,除了DACISDO網(wǎng)絡(luò)標(biāo)號的引腳設(shè)置為輸入模式外,其他通訊用的引腳都設(shè)置為輸出模式。

2.3 數(shù)模轉(zhuǎn)換輸出

數(shù)模轉(zhuǎn)換輸出,主要涉及3個子程序,芯片上電初始化子程序,芯片控制寄存器初始化子程序和電壓輸出子程序3個部分。下面給出AD5791讀寫函數(shù)和測試的例子。

u32 AD579I_Read(void)//讀取的24bit的數(shù)據(jù)

{

unsigned int ij;

u32 data.c;

data=0;

AD579l_sync_0();

AD579l_sclk_0();

for(i=O;i<24;i++)

{

j=3;

data=data《l;

AD579l_sclk_l();

while(j--);

c=GET—AD579I_SO();

AD579l_sclk_0();

data=datalc;

AD579l_sclk_0();

AD579l_sync_l();

retum(data);

void AD579I_Write(unsigned long OutData) //寫-個24 bit的]數(shù)值

unsigned char i;

unsigned long value;

value = OutData & OxOOffffff;

/ /取低24bit

value = value《8;

//左移8位,ok

AD579l_ldac_l();

AD579l_sclk_l();

AD579l_sync_l();

AD579l_sync_0();

for (i= 0; i< 24; i++ )

AD579l_sclk_l();

ad579ldelay();

if《value & Ox80000000) == Ox80000000)

{

AD5791 sdin_l();else

AD5791sdin_0();

ad579ldelay();

AD5791 .sclk_0();

ad579ldelay();

value = value《 l;

AD579l_sync_l();

ad579ldelay();

AD579l_ldac_0();

ad579ldelay();

AD579l_ldac_l();

ad579ldelay();

/‘入口參數(shù):

outvalue輸出的電壓的值*/

void test ad579l(double outvalue)

double temp=0.0;

long templ=0;

Ad579l_gpio_init(); //AD5791 110口初始化

Ad5791一clr_init();//AD5791清零

Reset_ ad5791(); //AD5791復(fù)位

Write—ad5791一control_register();//5AD5791的控制寄存器

temp=((outvalue+5.0) *1048575.0)/10.0;//計算DAC輸出值

templ=(long)temp l Ox00100000;

Write—ad5791一dac_register(templ);//寫AD5791的dac寄存器,同時輸出相應(yīng)電壓

程序中對AD5791芯片進(jìn)行相應(yīng)初始化以及寫AD5791的相應(yīng)寄存器都采用I/O模擬相應(yīng)時序的方法。其中寫模式的時序如圖3所示。寫數(shù)據(jù)時,注意先寫高位,再寫低位,必須嚴(yán)格按照時序來寫入。

3 結(jié)束語

本系統(tǒng)成功實現(xiàn)了基于STM32處理器和AD5791的20位高精度電壓輸出系統(tǒng),給出了全新實用的硬件和軟件設(shè)計,適用于對輸出高精度模擬電壓有需要的智能儀表場合中。該系統(tǒng)精度高,漂移低,可靠性高,可以應(yīng)用于醫(yī)療儀器、測試測量儀表、工業(yè)控制以及高端科學(xué)和航空航天儀器中,具有很好的應(yīng)用前景。

參考文獻(xiàn):

[1]AD5791 Datasheet Rev.E[EB]. Analog Devices, Inc,2018.

[2]AD5791:20位電壓輸出數(shù)模轉(zhuǎn)換解決方案[J]世界電子元器件,2011(2):15-16.

[3]薛巨峰,李壯,魯志軍,基于20位DAC-AD5791的高精度電壓源的設(shè)計[J].電子技術(shù),201 5,44(09):59-62.

[4]Jan-Hein Broeders.采用ADI 20位DAC設(shè)計醫(yī)療成像系統(tǒng)[J].電子設(shè)計技術(shù)2011(7):58,

[5]王永虹,徐煒,郝立平.STM32系列ARMCortex-M3微控制器原理及實踐[M].北京:北京航空航天大學(xué)出版社,2008.

作者簡介:

崔海朋(1982-),男(漢),山東人,碩士,主要從事嵌入式系統(tǒng)研究、工業(yè)自動化系統(tǒng)設(shè)計。

渝北区| 海兴县| 芜湖市| 光泽县| 运城市| 渝北区| 德化县| 盈江县| 和龙市| 镇宁| 太康县| 宜兰市| 余姚市| 九龙县| 和龙市| 五莲县| 金川县| 兴城市| 阳东县| 都江堰市| 旬邑县| 金秀| 申扎县| 绥阳县| 万盛区| 白朗县| 宜阳县| 晋中市| 绿春县| 甘肃省| 津市市| 大田县| 木里| 阳谷县| 务川| 海伦市| 清远市| 巴塘县| 炉霍县| 桑植县| 西华县|