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