微功耗數據采集系統的開(kāi)發(fā)應用
3 軟件設計
CF卡的讀寫(xiě)是以扇區(sector)為單位的,每次讀寫(xiě)一個(gè)或連續的多個(gè)扇區,每個(gè)扇區大小為512字節。對CF卡的讀寫(xiě)訪(fǎng)問(wèn)操作都是通過(guò)訪(fǎng)問(wèn)其內部寄存器來(lái)實(shí)現的,對不同的寄存器進(jìn)行訪(fǎng)問(wèn)是靠上節所提到的A0~A2、CSO、CSl這五根數據線(xiàn)來(lái)譯碼的,在本文的設計中,CF卡配置成TRUE IDE工作模式,具體的寄存器映射如表1所示。本文引用地址:http://dyxdggzs.com/article/173516.htm
寄存器0用于CF卡的數據讀寫(xiě)。CF為了節省I/O資源,有些I/0端口是復用的,寄存器1在讀操作時(shí)為錯誤寄存器,寫(xiě)操作時(shí)為特征寄存器。寄存器2的作用是設定要讀寫(xiě)扇區的數目。寄存器3~6是用來(lái)尋址要讀寫(xiě)的具體扇區位置,一般的IDE硬盤(pán)有CHS和LBA兩種尋址模式,CF卡工作在TRUE IDE模式下也有這兩種尋址模式,CHS(Cylinder/Head/Sector)是扇區對應的具體柱面、磁頭、和扇區的地址;邏輯塊尋址方式LBA(Logical Block Addressing)在邏輯上是連續的,比較方便,所以軟件實(shí)現上采用這種方式對CF卡的扇區進(jìn)行訪(fǎng)問(wèn)。寄存器7在讀操作時(shí)是狀態(tài)寄存器,主控器可以得到CF卡的有關(guān)狀態(tài)信息;寫(xiě)操作時(shí)是命令寄存器,通過(guò)設置命令,主控制器操作CF卡完成特定的功能。
讀寫(xiě)扇區時(shí),首先需要設置起始扇區的LBA地址和扇區數目,并設置命令寄存器,讀取數據設置命令“20H”,寫(xiě)入數據設置命令“30H”。然后讀取狀態(tài)寄存器,判斷狀態(tài)寄存器是否為“58H”。若為是,則開(kāi)始讀寫(xiě)操作;若為否則繼續讀取狀態(tài)寄存器。接下來(lái)讀狀態(tài)寄存器是否為“50H”,判斷CF卡操作是否完成。若為否,則繼續讀取判斷;若為是,則結束讀寫(xiě)過(guò)程。如果在判斷狀態(tài)寄存器中發(fā)生了超時(shí)或出現錯誤,則設置超時(shí)或錯誤標志,并跳出讀寫(xiě)過(guò)程。圖4為CF卡讀寫(xiě)一個(gè)扇區的流程圖。
由于對CF卡的操作是以扇區位單位,在單片機內部RAM開(kāi)辟了兩個(gè)大小為1 kByte的緩沖區,每個(gè)緩沖區的數據正好可以寫(xiě)滿(mǎn)CF卡的兩個(gè)扇區,AD采集的數據先存儲在緩沖區,當存滿(mǎn)一個(gè)緩沖區后,設置CF的LBA地址、扇區數目及寫(xiě)命令,把緩沖區內的數據寫(xiě)入CF卡,同時(shí)AD采集的數據存儲在另外一個(gè)緩沖區。
CF卡如果要通過(guò)讀卡器在計算機上直接讀取數據,CF卡中的文件系統必須與計算機的文件系統一致,現在計算機的文件系統有FATl6、FAT32及NTFS等。由于微功耗單片機處理能力有限,在采樣周期內完成數據采集及數據存儲的工作后,所剩時(shí)間已經(jīng)不多,如果再加上處理文件系統的程序,勢必影響系統數據采集的實(shí)時(shí)性。在本設計的程序里并沒(méi)有將數據寫(xiě)成文件系統,而是從數據扇區對應的LBA地址開(kāi)始從小到大依次將數據寫(xiě)入扇區,直到寫(xiě)滿(mǎn)整個(gè)CF卡。在讀取數據時(shí),利用磁盤(pán)操作函數編寫(xiě)一個(gè)小的VC程序,將CF卡中數據依次讀出并存為文件存儲在計算機的硬盤(pán)里,讀取的扇區及文件的大小也可以方便地設置,非常靈活。這樣也就在處理器能力有限的情況下實(shí)現了系統的實(shí)時(shí)數據采集和存儲。
4 結論
采取這種設計方法使整個(gè)采集系統的功耗大大減小,經(jīng)測量,整個(gè)系統功耗為150mW。采用高能鋰離子電池作為系統電源,使整個(gè)系統輕松裝入一個(gè)內徑為15cm,高15cm的圓柱形密封罐內,體積的減小也更加有利于系統在水下的布放。該系統經(jīng)過(guò)在吉林松花湖試驗,能夠穩定可靠地工作,實(shí)時(shí)采集并存儲水下環(huán)境的噪聲和過(guò)往船只的噪聲數據。
評論