MAX194在ARM單片機(jī)系統(tǒng)中的應(yīng)用
本文引用地址:http://www.ex-cimer.com/article/171765.htm
2 LPC2104芯片簡(jiǎn)介
LPC2104 包含一個(gè)支持仿真的ARM7TDMI-S CPU、與片內(nèi)存儲(chǔ)器控制器進(jìn)行接口的ARM7局部總線、與中斷控制器接口的AMBA高性能總線(AHB)以及用于連接片內(nèi)外設(shè)的VLSI外設(shè)總線VPB與ARM7 高級(jí)外設(shè)總線相兼容的超集。主要特點(diǎn)有:128 K 片內(nèi)Flash 程序存儲(chǔ)器帶ISP 和IAP 功能;Flash 編程時(shí)間1 ms;可編程512字節(jié);扇區(qū)擦除和整片擦除只需400 ms;16 K 靜態(tài)RAM;向量中斷控制器;仿真跟蹤模塊支持實(shí)時(shí)跟蹤;標(biāo)準(zhǔn)ARM 測(cè)試/調(diào)試接口兼容現(xiàn)有工具;雙UART的其中一個(gè)帶有完全的調(diào)制解調(diào)器接口;高速I2C 串行接口400 kB/s;SPI 串行接口;兩個(gè)定時(shí)器分別具有4 路捕獲/比較通道;多達(dá)6 路輸出的PWM 單元;實(shí)時(shí)時(shí)鐘;看門狗定時(shí)器;通用I/O 口;CPU 操作頻率可達(dá)60 MHz。
3 MAX194與LPC2104接口設(shè)計(jì)
3.1 硬件接口
MAX194和LPC2104都帶有標(biāo)準(zhǔn)的SPI接口,可以非常方便地實(shí)現(xiàn)它們的硬件和軟件接口。其硬件接口如圖2所示。SPI 是一個(gè)全雙工的串行接口,它被設(shè)計(jì)成用于處理在一個(gè)給定總線上多個(gè)互連的主機(jī)和從機(jī)。在一定數(shù)據(jù)傳輸過程中,接口上只能有一個(gè)主機(jī)和一個(gè)從機(jī)通信。在一次數(shù)據(jù)傳輸中,主機(jī)總是向從機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù),而從機(jī)也總是向主機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù)。
在該系統(tǒng)中,LPC2104設(shè)置為主機(jī),MAX194設(shè)置為從機(jī)主機(jī)操作。
3.1 軟件實(shí)現(xiàn)
軟件的流程圖如圖4所示。主要分為三大部分。
1、SPI配置部分:首先,配置LPC2104的SPI引腳模塊;隨后,設(shè)置SPI_SPCCR和SPI_SPCR,并將LPC2104的SPI模塊設(shè)置為主模式,MSB(最高位)先傳輸,禁止SPI中斷,SPI接口速率為1 MHz,CPOL=0、CPHA=0在SCLK下降沿觸發(fā)。
2、MAX194轉(zhuǎn)換部分:通過向MAX194的CONV引腳發(fā)低脈沖啟動(dòng)A/D轉(zhuǎn)換,轉(zhuǎn)換開始后MAX194的EOC引腳變?yōu)楦唠娖剑赏ㄟ^檢測(cè)EOC引腳是否變?yōu)榈碗娖絹砼袛郃/D轉(zhuǎn)換的完成。
3、MAX194數(shù)據(jù)讀取部分:首先置低MAX194的CS片選引腳,將無效數(shù)據(jù)0XFF送至SPI_SPDR以啟動(dòng)SPI總線,通過判SPIF位的置位來判斷SPI總線傳輸是否完成,讀取SPI_SPDR后,獲得A/D轉(zhuǎn)換結(jié)果的第一個(gè)字節(jié)(BIT13-BIT6)并調(diào)整數(shù)據(jù);將無效數(shù)據(jù)0XFF再送至SPI_SPDR,然后再啟動(dòng)SPI總線,仍通過判SPIF位的置位來判斷SPI總線傳輸?shù)耐瓿汕闆r,讀取SPI_SPDR后,獲得A/D轉(zhuǎn)換結(jié)果的第二個(gè)字節(jié)(BIT13-BIT6)并調(diào)整數(shù)據(jù),最后將MAX194 的14位A/D轉(zhuǎn)換數(shù)據(jù)存儲(chǔ)在16位無符號(hào)變量rcv_data中。
#include “LPC2104.H”// 調(diào)用LPC2104寄存器頭文件
#define MAX194_CS 0x00000100 // P0.8口為MAX194的片選和信號(hào)
#define MAX194_EOC 0x00000100 // P0.9口為MAX194的轉(zhuǎn)換結(jié)束信號(hào)
#define MAX194_UP 0x00000400 //P0.10口為MAX194的三態(tài)選擇信號(hào)
#define MAX194_CONV 0x00000800 //P0.10口為MAX194的轉(zhuǎn)換啟動(dòng)信號(hào)
int main(void)
{ uint16 rcv_data; //存儲(chǔ)A/D 轉(zhuǎn)換后的14位數(shù)據(jù)的變量
PINSEL0 = 0x00005500; //設(shè)置SPI管腳連接
PINSEL1 = 0x00000000;
IODIR = MAX194_CS|MAX194_UP|MAX194_CONV;// 設(shè)置P0.8,P0.10,P0.11為輸出
……
MSpiIni( ); // 初始化SPI接口
MSendData(0xFF,rcv_data); // 進(jìn)行A/D轉(zhuǎn)換病讀取數(shù)據(jù)
……
}
評(píng)論