當(dāng)前位置:首頁 > 技術(shù)學(xué)院 > 技術(shù)前線
[導(dǎo)讀]文章目錄 AD7606接線圖 AD7606SPI通訊接口說明 AD7606時(shí)序圖 AD7606時(shí)序圖講解 AD7606 STM32引腳配置 AD7606 程序模塊 遇到的問題以及總結(jié)

由于訓(xùn)練電賽,需要選取一塊測(cè)量速度快,精度更高速度更快的外部ADC,所以選了一塊AD7606。

AD7606是一塊八通道,雙極性輸入,同步采樣16位ADC。內(nèi)置2.5V基準(zhǔn)電壓。由于AD7606沒有內(nèi)部的寄存器,需要直接利用引腳配置ADC的模式,所以AD7606的控制原理也是很簡(jiǎn)單,但是需要占用的I/O口的資源很多。

AD7606接線圖

AD7606 SPI的串行接口接線圖:

AD7606 16位并口接線圖:

由這兩張圖可見除了必須要連接的一些控制線一樣之外不同的是數(shù)據(jù)線的連接,SPI串行通訊用的數(shù)據(jù)總線的數(shù)量只需要一根,而并行通訊的數(shù)據(jù)總線的數(shù)量為16根,對(duì)于I/O口不是非常多的單片機(jī)還是推薦使用串行通訊。(注:根據(jù)數(shù)據(jù)手冊(cè)需要把芯片的6腳SER接到高電平上,選擇芯片工作在串口模式)

AD7606SPI通訊接口說明

AD7606 必須使用單5V供電。

AD7606 和MCU之間的通信接口電平由VIO引腳控制。也就是說 VIO必須接單片機(jī)的電源,可以是3.3V也可以是5V。

OS2 OS1 OS2 : 的組合狀態(tài)選擇過采樣模式。

000表示無過采樣,最大200Ksps采樣速率。

001表示2倍過采樣, 也就是硬件內(nèi)部采集2個(gè)樣本求平均

010表示4倍過采樣, 也就是硬件內(nèi)部采集4個(gè)樣本求平均

011表示8倍過采樣, 也就是硬件內(nèi)部采集8個(gè)樣本求平均

100表示16倍過采樣, 也就是硬件內(nèi)部采集16個(gè)樣本求平均

101表示32倍過采樣, 也就是硬件內(nèi)部采集32個(gè)樣本求平均

110表示64倍過采樣, 也就是硬件內(nèi)部采集64個(gè)樣本求平均

(注:過采樣倍率越高,ADC轉(zhuǎn)換時(shí)間越長,可得到的最大采樣頻率就越低。)

CVA,CVB : 啟動(dòng)AD轉(zhuǎn)換的控制信號(hào)。CVA決定1-4通道,CVB決定5-8通道??梢詫VA和CVB接到一起用同一個(gè)引腳控制。(若想控制轉(zhuǎn)換速率可以將引腳設(shè)置為PWM輸出的模式以控制轉(zhuǎn)換速率)

RAGE : 量程范圍選擇。0表示正負(fù)5V, 1表示正負(fù)10V.

RD : SPI總線時(shí)鐘信號(hào)

RST : 復(fù)位信號(hào)

BUSY : 忙信號(hào)

CS : 片選信號(hào)

FRST : 第1個(gè)通道樣本的指示信號(hào)(可不接)

VIO : 通信接口電平

DB7 : 數(shù)據(jù)總線

DB15:接地

AD7606時(shí)序圖

圖一圖二

圖三

(個(gè)人認(rèn)為只需要這三張圖就可以完全利用SPI總線將AD7606用起來)

AD7606時(shí)序圖講解

圖一是整體的一個(gè)時(shí)序框圖,大體的邏輯就是在使用AD7606之前要先復(fù)位一下,復(fù)位信號(hào)是高電平有效,時(shí)間至少為50ns。然后就是對(duì)采樣速率和量程的配置,也就是對(duì)OS0,OS1,OS2和RANGE腳的配置,然后再對(duì)一些引腳進(jìn)行一些初始化(也可以直接在GPIO配置的時(shí)候進(jìn)行初始化)。之后就是發(fā)送啟動(dòng)信號(hào),也就是將CVA,CVB拉低至少25ns后再拉高(啟動(dòng)信號(hào)上升沿有效)。之后AD7606開始轉(zhuǎn)換,BUSY信號(hào)線拉高,如果BUSY信號(hào)線拉低則表明轉(zhuǎn)換已經(jīng)完成。轉(zhuǎn)換完成后將CS片選信號(hào)線拉低才可以進(jìn)行數(shù)據(jù)讀取,讀取完成后將CS片選信號(hào)線拉高即可。(還有一種是在轉(zhuǎn)換時(shí)進(jìn)行數(shù)據(jù)讀取的,由于對(duì)于采樣速率要求并不是特別的高,所以也沒有深入研究)

圖二是串行通訊對(duì)數(shù)據(jù)進(jìn)行讀取的時(shí)序框圖,講的是在AD7606轉(zhuǎn)換完成后將CS片選信號(hào)拉低后的操作。轉(zhuǎn)換完成后CS片選信號(hào)拉低,開始讀取數(shù)據(jù)。由于是16位8通道ADC,一次讀取一個(gè)字節(jié),所以一個(gè)通道需要讀取兩次數(shù)據(jù)。因?yàn)槭歉呶辉谇暗臀辉诤笏跃褪窍茸x取的是MSB,后讀取的LSB,數(shù)據(jù)需要SCLK下降沿有效。經(jīng)過16*8 = 128個(gè)SCLK讀取后已經(jīng)全部將ADC轉(zhuǎn)換的數(shù)據(jù)全部讀取完了,之后就可以將CS片選信號(hào)拉高了(由于串行通訊FRSTDATA數(shù)據(jù)線可以不接,所以并沒有用到這個(gè)腳)。

圖三是對(duì)一個(gè)字節(jié)的讀取,順序也就是現(xiàn)將時(shí)鐘線拉高后拉低然后讀取一下當(dāng)前的值然后拉高,重復(fù)八次就是一個(gè)字節(jié)的讀取。(MSB的最高位為符號(hào)位,若為1則數(shù)據(jù)為負(fù)數(shù),若為0則數(shù)據(jù)為正數(shù))

AD7606 STM32引腳配置

用的MCU是STM32F103ZET6,系統(tǒng)時(shí)鐘是72MHz。

RANGE,OS0,OS1,OS2若是需要選擇量程和速率的話可以接到單片機(jī)引腳上,要是不需要的話可以直接接到地或VCC上(自己選擇)。RST,RD,CVA, CVB,CS需要設(shè)置為OUTPUT輸出模式,GPIO電平和模式默認(rèn)就可以(我在AD7606初始化的時(shí)候?qū)O口也進(jìn)行了初始化),DB7數(shù)據(jù)線接的INPUT腳要設(shè)為INPUT模式,需要內(nèi)設(shè)上拉電阻。BUSY信號(hào)腳就設(shè)置為外部中斷,下降沿觸發(fā),一定要把中斷使能(下降沿觸發(fā)說明ADC轉(zhuǎn)換已經(jīng)結(jié)束)。

AD7606 程序模塊

程序我也是根據(jù)提供的例程進(jìn)行的修改。

我對(duì)所有需要調(diào)用的函數(shù)都進(jìn)行了宏定義,以方便在程序中調(diào)用

#define OS0_1 HAL_GPIO_WritePin(OS0_GPIO_Port,OS0_Pin,GPIO_PIN_SET);//AD速率控制引腳

#define OS0_0 HAL_GPIO_WritePin(OS0_GPIO_Port,OS0_Pin,GPIO_PIN_RESET);

#define OS1_1 HAL_GPIO_WritePin(OS1_GPIO_Port,OS1_Pin,GPIO_PIN_SET);

#define OS1_0 HAL_GPIO_WritePin(OS1_GPIO_Port,OS1_Pin,GPIO_PIN_RESET);

#define OS2_1 HAL_GPIO_WritePin(OS2_GPIO_Port,OS2_Pin,GPIO_PIN_SET);

#define OS2_0 HAL_GPIO_WritePin(OS2_GPIO_Port,OS2_Pin,GPIO_PIN_RESET);

#define RAGE_1 HAL_GPIO_WritePin(RAGE_GPIO_Port,RAGE_Pin,GPIO_PIN_SET);//量程選擇

#define RAGE_0 HAL_GPIO_WritePin(RAGE_GPIO_Port,RAGE_Pin,GPIO_PIN_RESET);//0為+-5 1為+-10

#define CVB_1 HAL_GPIO_WritePin(CVB_GPIO_Port,CVB_Pin,GPIO_PIN_SET);

#define CVB_0 HAL_GPIO_WritePin(CVB_GPIO_Port,CVB_Pin,GPIO_PIN_RESET);

#define CVA_1 HAL_GPIO_WritePin(CVA_GPIO_Port,CVA_Pin,GPIO_PIN_SET);//啟動(dòng)AD轉(zhuǎn)換的控制信號(hào)

#define CVA_0 HAL_GPIO_WritePin(CVA_GPIO_Port,CVA_Pin,GPIO_PIN_RESET);//CVA決定1-4通道 CVB決定5-8通道

#define RD_1 HAL_GPIO_WritePin(RD_GPIO_Port,RD_Pin,GPIO_PIN_SET);//時(shí)鐘線

#define RD_0 HAL_GPIO_WritePin(RD_GPIO_Port,RD_Pin,GPIO_PIN_RESET);

#define RST_1 HAL_GPIO_WritePin(RST_GPIO_Port,RST_Pin,GPIO_PIN_SET);//復(fù)位信號(hào)

#define RST_0 HAL_GPIO_WritePin(RST_GPIO_Port,RST_Pin,GPIO_PIN_RESET);

#define CS_1 HAL_GPIO_WritePin(CS_GPIO_Port,CS_Pin,GPIO_PIN_SET);//片選信號(hào)

#define CS_0 HAL_GPIO_WritePin(CS_GPIO_Port,CS_Pin,GPIO_PIN_RESET);

#define More_Rst RST_1;RST_1;RST_1;RST_1;RST_1;RST_1;//持續(xù)最少25ns高電平復(fù)位信號(hào)

#define Read_Dat HAL_GPIO_ReadPin(INPUT_GPIO_Port,INPUT_Pin)//讀取數(shù)據(jù)引腳狀態(tài)


對(duì)速度進(jìn)行選擇的函數(shù)

void AD7606_SetSpeed(uint8_t mode)//AD7606過采樣選擇

{

switch(mode)

{

case 0: OS0_0 OS1_0 OS2_0;

case 2: OS0_0 OS1_0 OS2_1;

case 4: OS0_0 OS1_1 OS2_0;

case 8: OS0_0 OS1_1 OS2_1;

case 16: OS0_1 OS1_0 OS2_0;

case 32: OS0_1 OS1_0 OS2_1;

case 64: OS0_1 OS1_1 OS2_0;

default: OS0_0 OS1_0 OS2_0;

}

}


量程進(jìn)行選擇的函數(shù)

void AD7606_SetRange(uint8_t range)//設(shè)置量程

{

if(range == 1)

{

RAGE_1;

}

else RAGE_0;

}


復(fù)位信號(hào)函數(shù)

void AD7606_Reset()//AD7606復(fù)位

{

RST_0;

More_Rst;

RST_0;

}

1

2

3

4

5

6

初始化函數(shù)

void AD7606_Init()//AD7606初始化

{

AD7606_SetRange(0);

AD7606_Speed_Set(0);

AD7606_Reset();

CVA_1;

CVB_1;

CS_1;

AD7606_ReadData();

}


起始信號(hào)函數(shù)

void AD7606_Init()//AD7606初始化

{

AD7606_SetRange(0);//設(shè)置采樣量程

AD7606_SetSpeed(0);//設(shè)置采樣速度

AD7606_Reset();

CVA_1;

CVB_1;

CS_1;

AD7606_ReadData();

}


讀單個(gè)字節(jié)函數(shù)

uint8_t AD7606_ReadByte(void)//讀一個(gè)字節(jié)

{

uint8_t usData = 0;

uint8_t i;

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

{

RD_0;

AD7606_Delay();

usData = usData << 1;

if(Read_Dat)

{

usData++;

}

RD_1;

AD7606_Delay();

}

return usData;

}


讀八個(gè)通道數(shù)據(jù)函數(shù)(BUSY拉低后進(jìn)中斷,進(jìn)中斷后就開始讀取數(shù)據(jù))

void AD7606_ReadData()//讀八個(gè)通道的數(shù)據(jù)

{

CS_0;

for (uint8_t i = 0; i < 8; i++)

{

adc_now[i] = AD7606_ReadByte();

adc_now[i] <<= 8;

adc_now[i] = adc_now[i] | AD7606_ReadByte();

}

CS_1;

AD7606_Start();//讀取數(shù)據(jù)結(jié)束后立馬開始下一次轉(zhuǎn)換

}

量程轉(zhuǎn)換和數(shù)據(jù)處理函數(shù)

for(uint8_t i=0;i<8;i++)

{

if(adc_now[i] >> 15 == 1)//判斷最高位是否為1

{

fushu_flag = 1;//負(fù)數(shù)標(biāo)志位置1

}

adc_now[i] &= 0x7fff;//將最高位屏蔽掉

s_volt[i] = (adc_now[i] * 5.0) / 32767;//5V量程 將數(shù)據(jù)轉(zhuǎn)換為電壓

if(fushu_flag == 1)//對(duì)正負(fù)數(shù)進(jìn)行判斷

{

fushu_flag = 0;

s_volt[i] = -s_volt[i];

}

}


遇到的問題以及總結(jié)

在調(diào)試過程中我發(fā)現(xiàn)和AGND連接在一起的腳一直都在0XFFFC到0X0001之間浮動(dòng),轉(zhuǎn)換成十進(jìn)制數(shù)也就是在0的上下浮動(dòng),所以我剛開始一直以為是錯(cuò)誤的,所以就一直在對(duì)著一個(gè)正確的程序找錯(cuò)誤,直到后來我接往引腳上接了一個(gè)3.3V的電壓,它返回回來的數(shù)據(jù)不再是這個(gè)范圍內(nèi)的值,并經(jīng)過換算是一個(gè)正確的電壓值。后來才知道這個(gè)浮動(dòng)是正常的,是AGND和采樣時(shí)有的一點(diǎn)干擾使他有一些小范圍的浮動(dòng),對(duì)于ADC來說這些都是正常的。

在測(cè)量過程中,由于AD7606的模擬電壓參考點(diǎn)是2.5V,所以我輸入3.3V的電壓經(jīng)過換算后得到的電壓值為0.8V,所以這個(gè)需要雙極性輸入測(cè)電壓,也就是一個(gè)通道接地,另一個(gè)通道測(cè)待測(cè)點(diǎn)電壓,之后待測(cè)點(diǎn)電壓就是被測(cè)電壓值與地的被測(cè)電壓值之間的差值,也稱偽差分輸入,雙極性輸入。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉