MAX1247芯片在MCS-51系列中的應(yīng)用
摘要:MAX1247是美國MAXIM公司生產(chǎn)的一種新型12位A/D轉(zhuǎn)換器。文中介紹了它的功能、工作模式及轉(zhuǎn)換參數(shù),并給出了MAX1247與MCS-51的軟件接口程序。
MAX1247是一種12位的A/D轉(zhuǎn)換器。它帶有一個(gè)四通道的復(fù)用器一個(gè)高帶寬的采樣/保持器??刹捎?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/SPI">SPI總線結(jié)構(gòu)和單片機(jī)相連,其供電電壓在+2.7~+5.25V之間,可實(shí)現(xiàn)4路或2路的數(shù)據(jù)轉(zhuǎn)換,并可通過軟件實(shí)現(xiàn)多種轉(zhuǎn)換模式。
1 引腳排列
MAX1247的引腳排列如圖1所示,各引腳功能說明如下:
1腳(VDD):電源端
2~5腳(CH0~CH3):四個(gè)采樣模擬信號輸入端;
6腳(COM):模擬信號輸入的地參考電壓,在單通道模式中,該腳必須連至地且必須穩(wěn)定在-0.5LSB~+0.5LSB。
7腳(SHDN):關(guān)閉輸入控制端,為低時(shí),將使器件掉電;為高時(shí),將使參考緩沖區(qū)放大器處于內(nèi)部補(bǔ)償模式;將其浮動(dòng),則使參考緩沖區(qū)放大器處于外部補(bǔ)償模式;
8腳(VREF):ADC參考輸入,是模數(shù)轉(zhuǎn)換的參考電壓,可用此腳來控制模式輸入的電壓范圍。該腳電壓最大為5.05V;
9腳(REFADJ):參考緩沖區(qū)放大器的輸入,要使參考緩沖區(qū)放大器無效,需將其拉至VDD;
10腳(AGND):模擬地;
11腳(DGND):數(shù)字地;
12腳(DOUT):串行數(shù)據(jù)輸出,數(shù)據(jù)在SCLK的下降沿輸出。當(dāng)CS為高時(shí),該端為高阻態(tài);
13腳(SSTRB):轉(zhuǎn)換結(jié)束腳,當(dāng)處于內(nèi)部時(shí)鐘模式,且芯片開始轉(zhuǎn)換時(shí),該腳變低,但若轉(zhuǎn)換結(jié)束,該腳變高;在外部時(shí)鐘模式下,在MSB開始形成之前,該腳維持一個(gè)時(shí)鐘脈沖的高電平。
14腳(DIN):串行數(shù)據(jù)輸入,數(shù)據(jù)在SCLK的上升沿被鎖存;
15腳(CS):片選信號;
16腳(SCLK):串行時(shí)鐘輸入,用來進(jìn)行串行數(shù)據(jù)的輸入和輸出。
2 工作模式
MAX1247有四種工作模式,具體說明如下:
●UNIpolar/Bipolar:在UNIpolar模式下,模擬輸入的信號量可在0V~VREF之間,而在Bipolar模式下,模擬輸入的信號量可在-VREF/2~VREF/2之間;
●Full power-down/fast power-down:掉電模式;
●Internal clock mode/External clock mode(內(nèi)部時(shí)鐘/外部時(shí)鐘):在外部時(shí)鐘模式下,外部時(shí)鐘不僅要控制數(shù)據(jù)的移入和移出,而且要驅(qū)動(dòng)模數(shù)轉(zhuǎn)換,并要求模數(shù)轉(zhuǎn)換必須在一定的時(shí)間內(nèi)結(jié)束,否則將使轉(zhuǎn)換結(jié)果降低,如果外部時(shí)鐘的頻率低于100kHz,最好用內(nèi)部時(shí)鐘模式;在內(nèi)部時(shí)鐘模式下,芯片將自動(dòng)生成轉(zhuǎn)換用時(shí)鐘,這使得單片機(jī)不用主動(dòng)生成轉(zhuǎn)換用時(shí)鐘,使可將轉(zhuǎn)換結(jié)果讀入(讀入讀出時(shí)鐘可在0~2MHz范圍之內(nèi));
●Single-ended/Differential:在Single-ended模式下,輸入信號電壓量和COM口構(gòu)成相對電壓。在Differential模式下,CH0/CH1間也將構(gòu)成差分輸入,CH2/CH3間將構(gòu)成差分輸入,因而在Single-ended模式下,最大可構(gòu)成四路模擬量輸入,而在Differential模式下,最大可構(gòu)成兩路模擬量輸入,單通道模式和差分輸入模式下的通道選擇見表1。
表1 通道選擇
單通道模式 | SEL2 | SEL1 | SEL0 | CH0 | CH1 | CH2 | CH3 | COM |
0 | 0 | 1 | + | - | ||||
1 | 0 | 1 | + | - | ||||
0 | 1 | 0 | + | - | ||||
1 | 1 | 0 | + | - | ||||
差分輸入模式 | SEL2 | SEL1 | SEL0 | CH0 | CH1 | CH2 | CH3 | |
0 | 0 | 1 | + | - | ||||
0 | 1 | 0 | + | - | ||||
1 | 0 | 1 | - | + | ||||
1 | 1 | 0 | - | + |
3 模數(shù)轉(zhuǎn)換的開始和結(jié)束
當(dāng)CS為低時(shí),通過將一個(gè)控制字節(jié)由CLK端送入DIN腳,可以將第一個(gè)到達(dá)的邏輯“1”位定義為控制字的開始(MSB),控制字的格式如下:
表2 控制字各位的解釋
位 | 名 稱 | 解 釋 |
7 | START | 當(dāng)CS選通后,該位為1表示一個(gè)控制字的開始 |
6 | SEL2 | 這3位選擇四個(gè)通道中選擇那一個(gè)在本次轉(zhuǎn)換中使用(參見表3) |
5 | SEL1 | |
4 | SEL0 | |
3 | UNI/BIP | i=Single-end 0=differuantial |
2 | SGL/DIF | I=Single-end 0=differantial |
1 0(LSB) | PD1 PD0 | PD1 PD0 模式 0 0 完全掉電模式 0 1 快速掉電模式 1 0 內(nèi)部時(shí)鐘模式 1 1 外部時(shí)鐘模式 |
4 模擬量與數(shù)字量的關(guān)系
4.1 關(guān)系
對于Bipolar模式,其輸入模擬量的電壓范圍為-VREF+Vcom~+VREF+Vcom,將該電壓范圍分成4096等份,則1LSB=VREF/4096,相應(yīng)的數(shù)字電壓范圍為8FF~7FF,例如:000代表Vcom,7FF代表+VREF+Vcom。
對于UNIpolar模式,其輸入模擬量的電壓范圍為Vcom~VREF+Vcom,將該電壓范圍分為4096等份,則1LSB=VREF/4096,相應(yīng)的數(shù)字電壓范圍為000~FFF,例如:000代表Vcom,F(xiàn)FF代表+VREF+Vcom。
4.2 數(shù)字量的輸出
MAX1247一共輸出兩個(gè)字節(jié),每個(gè)字節(jié)都是高位在先,其結(jié)構(gòu)如下:
5 接口程序
以下以給主MAX1247發(fā)送命令字以及從MAX1247接收采樣數(shù)據(jù)為例,給出一個(gè)簡單的接口程序的示例。
send1247data: ;發(fā)送命令字子程序(A中為要發(fā)送的命令)
mov rotcount,#08h
clr do
clr cs ;將CS變低
rot-next:
nop
nop
clr clk ;將CLK變低
rlc a ;移出第一位
mov din,c
setb clk ;發(fā)送第一位
djnz rotcount,rot-next
nop
clr clk ;啟動(dòng)轉(zhuǎn)換
setb cs ;將片選拉高
ret
recdata: ;數(shù)據(jù)接收子程序
clr din
clr cs ;將片選拉低
nop
nop
setb clk
mov rotcount,#08h
recl-next:
clr clk ;發(fā)送下降沿
nop
nop
mov c,do ;移入數(shù)據(jù)
rlc a
setb clk
nop
dinz rotcount,recl-next
push a ;保存接收到的高位數(shù)據(jù)
mov rotcount,#08h ;為接收作準(zhǔn)備
rec2-next:
clr clk ;發(fā)下降沿
nop
nop
mov c,do
rlc a
setb clk
nop
djnz rotcount,rec2-next
setb cs
mov b,a
pop a
ret
評論