STM32驅動ADC0809詳解

文章下方附學習資源,自助領取。

開發環境與工具

  • Keil 5主芯片為 STM32F103RET6下載工具為 JLINKXCOM V2.0 串口助手PC 為 Win10

準備工作

購買 ADC0809 芯片

習慣購買元器件多買一個,方便替換驗證。

因為做過一次驗證之後,這個板子就沒有用瞭,所以購買 DIP-28 寬體底座,讓底座焊板子上,芯片插底座上,方便芯片的二次使用,節約成本。

PCB 打板

下圖這種模塊:

STM32 要想驅動 ADC0809 這個芯片需要很多個引腳(不考慮復用的話,需要 16 個引腳),如果這些引腳都用杜邦線連接的話會很亂,如果哪個杜邦線再接觸不好,那麼對於程序的調試很不方便,所以我就采用核心板+底板的形式來實現,避免使用過多的杜邦線。

現在打樣很便宜,線很多,時間來得及的話,推薦使用線路板的方式來驗證。

我這次網友問答超時瞭,買件+PCB 打樣+調試程序,一共用瞭 9 天時間,如果不需要打樣的實例,一周之內應該可以完成的。

ADC0809 簡介

ADC0809 是采樣精度為 8 位的、以逐次逼近原理進行模—數轉換的器件。其內部有一個 8 通道多路開關,它可以根據地址碼鎖存譯碼後的信號,隻選通 8 路模擬輸入信號中的一個進行 A/D 轉換。

534ed5dd91754c0cca0798b6328b3c62

主要特性

1)8 通道輸入,擁有一個 8 位的 A/D 轉換器,即分辨率 8 位;

2)具有轉換起停控制端;

3)轉換時間為 100μs(時鐘為 640KHz 時),130μs(時鐘為 500KHz 時);

4)單個+5V 電源供電;

5)模擬輸入電壓范圍 0~+5V,不需零點和滿刻度校準;

6)工作溫度范圍為 -40~+85 攝氏度;

7)低功耗,約 15mW。

引腳圖與功能

c2ea0ddb7c1b5b2d0e4f616ab6ae2a74

管腳功能說明:

IN0-IN7:模擬量輸入通道,共計 8 個通道;

ADD A-C:通道選擇引腳,通過這三根地址線的不同組合選擇 IN0 - IN7 中的一個作為模擬量的輸入通道;

ALE:地址鎖存允許信號;

START:啟動 A/D 轉換信號;

D0-D7:數據輸出口,ADC 轉換後的結果通過這 8 個引腳並行輸出;

OE(OUTPUT ENABLE):輸出允許信號,此引腳為輸入端,高電平有效。當 A/D 轉換結束時,此端輸入一個高電平,才能打開輸出三態門,輸出數字量;

CLOCK:時鐘信號,輸入脈沖。ADC0809 內部沒有時鐘電路,需由外部提供時鐘脈沖信號。時鐘頻率范圍為 10KHz-1280KHz,典型值 640KHz;

EOC:轉換結束狀態信號。輸出信號,EOC=0,標識正在進行轉換。EOC=1,標識轉換結束,可以進行下一步輸出操作;即當 A/D 轉換結束時,此端輸出一個高電平(轉換期間一直為低電平);

Vref(+)、Vref(-):參考電壓(基準電壓)。參考電壓用來與輸入的模擬量進行比較,作為測量的基準。一般 Vref(+)=+5V ,Vref(-)=0V;

VCC:電源引腳,單電源 +5V;

GND:地 。

61e938281f9cc17ee71612d9192c537d

3年嵌入式物聯網學習資源整理分享:C語言、Linux開發、數據結構;軟件開發,STM32單片機、ARM硬件開發、物聯網通信開發、綜合項目開發教程資料;筆試面試真題。點擊下方插件免費領取↓↓↓

原理圖

數據手冊中的典型應用圖:

STM32 與 ADC0809 接線

ADC0809 引腳 STM32 引腳 GPIO 方向
START PA2 輸出
EOC PA3 輸入
OE PA4 輸出
CLOCK PA7 輸出
ALE PA6 輸出
ADD A PA5 輸出
ADD B PB10 輸出
ADD C PB11 輸出
ADC0809_D0 PA11 輸入
ADC0809_D1 PA12 輸入
ADC0809_D2 PC10 輸入
ADC0809_D3 PC11 輸入
ADC0809_D4 PC12 輸入
ADC0809_D5 PD2 輸入
ADC0809_D6 PB13 輸入
ADC0809_D7 PB12 輸入

註意:ADC0809_D0 為輸出數據的最低位,ADC0809_D7 為輸出數據的最高位。

時序圖

ADC0809 工作過程

(1)控制與 ADDA~ADDC 相連的引腳,選擇一個模擬輸入端;

(2)CLOCK 端輸入一個時鐘信號,本文通過 STM32 的 PWM 實現此脈沖,脈沖頻率 100 KHz;

(3)將 ALE 由低電平置為高電平,從而將 ADDA-ADDC 送進的通道代碼鎖存,經譯碼後被選中的通道的模擬量送給內部轉換單元;

(4)給 START 一個正脈沖。當上升沿時,所有內部寄存器清零。下降沿時,開始進行 A/D 轉換;在轉換期間,START 保持低電平;

(5)讀取 EOC 引腳的狀態,A/D 轉換期間,EOC 輸入低電平;A/D 轉換結束,EOC 引腳輸入高電平;

(6)當 A/D 轉換結束後,將 OE 設置為 1,這時 D0-D7 的數據便可以讀取瞭。

AD 轉換的代碼實現

float get_adc0809()
{
int i=0;
u8 sum=0;
float adc=0;
int AD_DATA[8] = {0};

ADC0809_ALE=0;
ADC0809_START=0;
delay_us(10);
ADC0809_ALE=1;
ADC0809_START=1;
delay_us(10);
ADC0809_ALE=0;
ADC0809_START=0; // 啟動 AD 轉換

while(0==ADC0809_EOC); // 等待轉換結束

ADC0809_OE=1;

AD_DATA[0]=ADC0809_D0*1 ;
AD_DATA[1]=ADC0809_D1*2 ;
AD_DATA[2]=ADC0809_D2*4 ;
AD_DATA[3]=ADC0809_D3*8 ;
AD_DATA[4]=ADC0809_D4*16 ;
AD_DATA[5]=ADC0809_D5*32 ;
AD_DATA[6]=ADC0809_D6*64 ;
AD_DATA[7]=ADC0809_D7*128 ;

ADC0809_OE=0;

for(i=0; i<8; i++)
{
sum += AD_DATA[i];
}

adc = (float)sum*5/256;
printf("sum=%d ad=%0.2f Vrn",sum,adc);

return adc;
}

发表回复

相关推荐

7号电池什么牌子的好,推荐7号电池品牌排行榜前十名

7号电池什么牌子的好,推荐7号电池品牌排行榜前十名 AAA电池是一种美国的干电池标准,中国大陆的7号电池或中国台湾省的4号电 ...

· 12秒前

【初中数学】人教版初一七年级上册数学第一章有理数单元测试题

大家好,我是张老师,致力于打造一个系统、优质的学习资料库,今天给大家分享人教版初一七年级上册数学第一章有理数单元测试题

· 2分钟前

卡特爾16pf-聰慧性 量表問題與爭議

16pf中有一項“聰慧性”不同於其他人格測試,“聰慧性”相關的題是有明確對錯的,然而這些題是否嚴謹呢。本文列舉中文版16pf的問...

· 2分钟前

射频放大器的主要类型及参数详解

射频放大器,根本上是我们射频系统中的正反馈系统,一般位于发射链路上。由于考虑无线传输的链路衰减,发射端需要辐射足够大 ...

· 2分钟前

【午间冷知识】摩氏硬度表:石头的PK排名

点击上面蓝色文字↑↑↑订阅我们! 搜索微信号:bowuzazhi或博物 木头比棉花硬,钢铁比木头硬,这是我们从小就熟悉的常识。但 ...

· 3分钟前

Copyright 2015-2025 www.icpchaxun.com ©All Rights Reserved.