由ADuC812與K9S6408V0A構(gòu)成的便攜式數(shù)據(jù)采集系統(tǒng)
摘要:K9S6408V0A是三星公司生產(chǎn)的快閃存儲器,它具有容量大,接口簡單等特點。而ADuC812是內(nèi)嵌MCU的多通道12位AD轉(zhuǎn)換器。文中介紹了一種以ADuC812為主,配以K9S6408V0A快閃存儲器所構(gòu)成的便攜式數(shù)據(jù)采集系統(tǒng),并給出了AduC812與K9S6408V0A的硬件接口及軟件編程。
ADuC812是AD公司生產(chǎn)的內(nèi)嵌MCU的多通道12位AD轉(zhuǎn)換器,K9S6408V0A是三星公司的新型FLASH存儲器,其容量可達(dá)64M,只需3V供電便可進(jìn)行讀、編程、擦除等操作,而且與CPU的接口簡單。用K9S6408V0A和ADuC812構(gòu)成的數(shù)據(jù)采集系統(tǒng),具有體積小、功耗低等特點。
ADuC812是全集成的12位數(shù)據(jù)采集系統(tǒng),它在單個芯片內(nèi)包含了高性能的自校準(zhǔn)多通道ADC和兩個12位DAC及8位與8051兼容的MCU。ADuC812本身帶有8k字節(jié)的Flash程序存儲器、640字節(jié)的Flash數(shù)據(jù)存儲器以及256字節(jié)數(shù)據(jù)SRAM。另外,MCU還支持看門狗定時器、電源監(jiān)視器以及ADC等DMA功能。同時它還為多處理器接口和I/O擴展提供32條可編程的I/O線、I2C兼容的SPI和標(biāo)準(zhǔn)UART串行端口I/O。它的MCU內(nèi)核和模擬轉(zhuǎn)換器均有正常、空閑以及掉電工作模式,可提供適合于低功耗應(yīng)用的靈活的電源管理方案。
ADuC812的AD轉(zhuǎn)換模塊內(nèi)的所有部分均能方便的通過3個SFR來設(shè)置。
因此可見,ADuC812本身就是一個內(nèi)嵌MCU的高性能多通道數(shù)據(jù)采集系統(tǒng),只是內(nèi)部的數(shù)據(jù)存儲器容量有限。如果需要存儲大量數(shù)據(jù)的數(shù)據(jù)采集系統(tǒng),則可外接數(shù)據(jù)存儲器。本文介紹的即屬這類系統(tǒng),則可外接數(shù)據(jù)存儲器。本文介紹的即屬這類系統(tǒng),它是利用一片外接 K9s6408V0A閃速存儲器來設(shè)計的,其數(shù)據(jù)容量可達(dá)8M字節(jié)。
1 K9S6408V0A簡介
K9S6408V0A為22腳表面封裝器件,內(nèi)部有(8M+256k)bit×8位存儲空間,可組織成16384行,528列,其中后備的16列的列地址編碼為513至527??蛇M(jìn)行528字節(jié)為一頁的讀、寫和以8k字節(jié)為一塊的擦除操作。一個528位的數(shù)據(jù)寄存器可以用于在頁讀或頁編程操作時存儲單元的數(shù)據(jù)轉(zhuǎn)換。
K9S6408V0A的突出優(yōu)點在于其命令、地址和數(shù)據(jù)信息均通過8條I/O線傳輸,尋址內(nèi)存單元的地址線不作為芯片的引腳。23位地址分三次寫入地址寄存器,譯碼后找到相應(yīng)的單元。對單片機而言,當(dāng)需存儲空間超過64k時,尋址存在一定的困難,而且系統(tǒng)的連線比較復(fù)雜,可靠性低。采用這種快閃存儲器既可克服以上困難,又便于升級至更大容量而無須更改外部連接。圖1為其功能框圖。其中的信號線功能如下:
CLE:命令鎖存使能。當(dāng)其為高時,命令通過I/O口在WE信號的上升沿被鎖入命令寄存器。
ALE:地址鎖存使能。當(dāng)其為高時,地址在WE信號的上升沿被鎖入地址寄存器;為低時,鎖定輸入數(shù)據(jù)。
CE:片選。在讀操作期間,CE變高,器件轉(zhuǎn)入standby模式;在編程或擦除期間,器件處于忙狀態(tài),CE高將被忽略。
WE:寫使能。命令、地址和數(shù)據(jù)在WE信號的上升沿被鎖定。
RE:讀使能。下降沿有效。
WP:寫保護(hù)。在電源電壓過渡期間,當(dāng)WP為低電平時,將產(chǎn)生寫/擦保護(hù)。
R/B:操作狀態(tài)指示。為低時,指示正在編程、擦除或讀操作,操作結(jié)束后變成高,為開路輸出。
I/O口:(I/O0~I(xiàn)/O7)三態(tài)。輸出命令、地址和數(shù)據(jù)以及讀操作時輸出數(shù)據(jù)。
2 ADuC812與K9S6408V0A的接口
K9S6408V0A與ADuC812的連接非常簡單,并可為以后的升級提供良好的條件?;布涌陔娐啡鐖D2所示。連接時用ADuC812的P3口的P3.0~P3.3分別與K9S6408V0A的CE、CLE、ALE和R/B相連接,K9S6408V0A的I/O0~I(xiàn)/O7分別連至ADuC812的P0.0~P0.7,K9S6408V0A的RE、WE分別與ADuC812的RD(P3.7)、WE(P3.6)相連,而ADuC812的P1口(模擬輸入口)接至數(shù)據(jù)采集傳感器。這樣就構(gòu)成了一個數(shù)據(jù)采集系統(tǒng)。ADuC812負(fù)責(zé)采集,而K9S6408V0A負(fù)責(zé)存儲數(shù)據(jù)。K9S6408V0A的各種操作具有共同特點,即在I/O口上首先發(fā)送操作命令字到命令寄存器,其后的連續(xù)三個周期發(fā)送要操作單元的地址(順序為A0~A7,A9~A16,A17~A22,其中A8由命令字確定)。表1為其命令集。
表1 命令集
功能 | 第一周期 | 第二周期 | 忙時接受命令 |
連續(xù)數(shù)據(jù)輸入 | 80H | - | |
讀一 | 00H/01H | - | |
讀二 | 50H | - | |
讀ID | 90H | - | |
復(fù)位 | FFH | - | O |
頁編程 | 10H | - | |
塊擦除 | 60H | D0H | |
讀狀態(tài) | 70H | - | O |
下面以頁編程操作為例,給出K9S6408V0A的標(biāo)準(zhǔn)匯編編程方法。而頁讀以及塊擦除等方法則與頁編程類似,只是讀時是由RE來鎖存數(shù)據(jù),而擦除時只送兩個周期的地址即可。頁編程操作可向一個或若干個單元寫入數(shù)據(jù),以下是頁編程操作的程序:
入口地址:
R1,R2,R3-欲寫入數(shù)據(jù)所在單元的列地址和頁地址;
R7-寫入數(shù)據(jù)的個數(shù)
R0-源數(shù)據(jù)指針
R6-失敗標(biāo)志
START:MOV DPTR,#XXXXH ;地址
CLR P3.0 ;片選
CLR P3.2 ;清ALE
SETB P3.1 ;置CLE
MOV A,#80H
MOVK@DPTR,A ;命令80H
CLR P3.1 ;清CLE
SETB P3.2 ;置ALE
MOV A,R1
MOVX@DPTR,A
MOV A,R2
MOVX@DPTR,A
MOV A,R3
MOVX@DPTR,A ;輸出地址A0-A22
CLR P3.2 ;清ALE
PR1:MOVX A,@R0
MOVX@DPTR,A
DJNZ R7,PR1 ;循環(huán)寫入
SETB P3.1 ;置CLE
MOV A,#10H
MOVX@DPTR,A ;命令10H
PRAM2:MOV C,P3.3
JNC PRAM2 ;忙,循環(huán)
SETB P3.1 ;置CLE
MOV A,#70H
MOVX@DPTR,A ;命令70H,
CLR P3.1 ;清CLE
MOVX A,@DPTR ;讀狀態(tài)
JNB ACC.0,SUC ;SR.0=0,成功
ERR:MOV R6,#0FH
SUC:SETB P3.0
END
3 系統(tǒng)軟件
本數(shù)據(jù)采集系統(tǒng)為8通道順序采集,ADuC812的時鐘頻率為11.0592MHz,CPU用斷方式管理A/D轉(zhuǎn)換器。當(dāng)A/D轉(zhuǎn)換完成時,向CPU發(fā)請求信號,CPU響應(yīng)中斷,中斷處理子程序負(fù)責(zé)對轉(zhuǎn)換的數(shù)據(jù)進(jìn)行讀出并將其存儲至K9S6408V0A,然后通道號加1,相應(yīng)的Flash存儲器地址也加1。圖3圖4分別為系統(tǒng)主程序和中斷處理子程序的流程圖。
下面以標(biāo)準(zhǔn)匯編語言給出本系統(tǒng)的主程序及A/D中斷處理子程序。
ORG 0000H
FLAG EQU 60H ;外部存儲器滿標(biāo)志
CHAN EQU 61H ;通道號
JMP MAIN
;;以下為中斷處理子程序
ORG 0033H ;A/D中斷處理程序入口地址
CLR EA ;關(guān)中斷
MOV R0,ADCDATAH ;轉(zhuǎn)換結(jié)果高8位送R0
LCALL WRITEONE ;寫一個數(shù)據(jù)到外部Flash RAM程序,可參考前面給出的頁編程程序段;
INC R1 ;低位地址加1
CJNE R1,#0FFH,NEXT;未超出范圍則處理下一個
MOV R1,#00H ;超出范圍則低位地址清零
INC R2 ;中間地址加1
CJNE R2,#0FFH,NEXT;未超出范圍則處理下一個
MOV R2,#00H ;超出范圍則中間地址清零
INC R3 ;高位地址加1
CJNE R3,#03FH,NEXT;未超出范圍則處理下一個
MOV FLAG,#01H ;否則,標(biāo)準(zhǔn)位置1
SJMP RET1 ;返回
NEXT:MOV R0,#ADCDATAL;轉(zhuǎn)換結(jié)果低8位送R0
LCALL WRITEONE ;寫入一個數(shù)據(jù)
LCALL WRITEONE ;寫入一個數(shù)據(jù)
INC CHAN ;通道號加1
CJNE CHAN,#08H,CHANG ;通道號不等于8,則開始下一通道轉(zhuǎn)換
MOV CHAN,#00H ;否則通道號清零
CHANG:MOV ADCCON1,#07Ch ;啟動A/D轉(zhuǎn)換
MOV ADCCON2,#CHAN ;選擇轉(zhuǎn)換通道
SETB EA ;中斷使能
ETB EADC ;使能A/D轉(zhuǎn)換中斷
SETB ADC1
RET1;RETI ;中斷返回
ORG 1000H
;;以下為主程序
MAIN:
MOV AFLAG,#00H ;標(biāo)志清零
MOV CHAN,#00H ;通道號清零
MOV ADCCON1,#07CH ;啟動A/D轉(zhuǎn)換,一次轉(zhuǎn)換時間14.5μs
MOV ADCCON2,#CHAN ;選擇轉(zhuǎn)換通道
MOV R1,#00H
MOV R2,#00H
MOV R3,#00H ;外部存儲器地址初始化
SETB EA ;中斷使能
SETB EADC ;使能A/D轉(zhuǎn)換中斷
SETB ADC1 ;啟動單個轉(zhuǎn)換周期
HERE:SETB PCON.0 ;CPU進(jìn)入空閑模式,功耗降;低可中斷喚醒
MOV A,F(xiàn)LAG
JNZ HERE ;存儲器未滿則等待
END
4 結(jié)束語
綜上所述,本文所描述的數(shù)據(jù)采集系統(tǒng)的軟硬件設(shè)計具有采集速度快,存儲容量大、系統(tǒng)體積小以及功耗低等特點,適用于隨身攜帶的低功耗應(yīng)用場合。只要將程序稍加修改,即可用于多種場合,還可對采集到的數(shù)據(jù)進(jìn)行實時分析處理,從而使該系統(tǒng)成為智能型的數(shù)據(jù)采集與分析系統(tǒng)。
評論