基于DSP處理器TMS320F2812與SD卡的接口,設(shè)計(jì)了一種便攜式的生理信號(hào)數(shù)據(jù)采集系統(tǒng),用于大容量多參數(shù)人體生理參數(shù)的采集。采用TMS320F2812作為主控芯片,以SD卡作為主要存儲(chǔ)介質(zhì)實(shí)現(xiàn)了數(shù)據(jù)的實(shí)時(shí)采集與存儲(chǔ)。按照FAT32文件系統(tǒng)規(guī)范設(shè)計(jì)了一種優(yōu)化的文件系統(tǒng),可以快速地把實(shí)時(shí)采集的數(shù)據(jù)以文本的形式保存在SD卡中。實(shí)驗(yàn)表明,該系統(tǒng)在實(shí)際測量中操作簡單、攜帶方便,可用于人體生理參數(shù)的實(shí)時(shí)監(jiān)測。
生理信號(hào)是表征人體生命特征的基本參數(shù),如血壓、脈率、體溫等都是人體重要的生理信號(hào),這些信號(hào)中都包含著有用的病理信息。通過分析這些信號(hào)可以診斷體內(nèi)各部位的疾病。多參數(shù)生理信號(hào)數(shù)據(jù)采集要求數(shù)據(jù)存儲(chǔ)量大,使用無線、USB與上位機(jī)通信存儲(chǔ)數(shù)據(jù)可以解決這一需求。但是,這些方案都需要上位機(jī)來存儲(chǔ)數(shù)據(jù)不利于便攜式操作。
SD卡(Secure Digital Card)具有體積小、重量輕、容量大、數(shù)據(jù)傳輸率快、極大的移動(dòng)靈活性以及很好的安全性等優(yōu)點(diǎn),非常適合應(yīng)用在長時(shí)間存儲(chǔ)大量數(shù)據(jù)的測量系統(tǒng)中。因此采用SD卡作為生理信號(hào)數(shù)據(jù)采集系統(tǒng)的存儲(chǔ)介質(zhì)是很好的解決方案。
本文設(shè)計(jì)了一種便攜式的生理信號(hào)數(shù)據(jù)采集系統(tǒng)。硬件上設(shè)計(jì)了電源管理模塊,解決了系統(tǒng)中各個(gè)模塊不同電壓的需求。同時(shí)采用處理速度很快的DSP處理器TMS320F2812作為主控芯片,使采集數(shù)據(jù)和處理數(shù)據(jù)的性能更加優(yōu)越。軟件上設(shè)計(jì)了優(yōu)化的FAT32文件系統(tǒng),使大容量SD卡的寫入數(shù)據(jù)速度更快。
1 總體設(shè)計(jì)
本文設(shè)計(jì)的采集系統(tǒng)主要由電源管理模塊、SD卡、TMS320F2812等部分組成,充分體現(xiàn)了便攜化設(shè)計(jì)。系統(tǒng)設(shè)計(jì)框圖如圖1所示。系統(tǒng)采用干電池作為電源,并通過電源管理模塊分別給系統(tǒng)各個(gè)模塊供電。TMS320F2812利用片內(nèi)的12位A/D對(duì)傳感器采集的模擬信號(hào)進(jìn)行采樣和變換處理,結(jié)果保存在SD卡中。大容量的SD卡中嵌有FAT32文件系統(tǒng)可以把數(shù)據(jù)保存為文本格式,便于在上位機(jī)上進(jìn)行數(shù)據(jù)處理和波形分析。
本文引用地址: http://www.21ic.com/app/test/201203/109889.htm
2 DSP與SD卡的接口電路設(shè)計(jì)
根據(jù)SD卡的通信協(xié)議,主控制器和SD卡有兩種通信模式:SD模式和SPI模式。前者速度快(4位并行數(shù)據(jù)總線),使用所有的信號(hào)線;后者速度慢(數(shù)據(jù)以單線傳輸),但是簡單易用、兼容性好、便于和主控制器連接通信。SPI模式的傳輸速度可以滿足本文設(shè)計(jì)的系統(tǒng)要求,因此,本設(shè)計(jì)采用SPI模式。表1是SD卡在SPI模式下的各引腳定義。
SD卡與DSP的4個(gè)I/O口相連。SD卡的CS管腳連接到DSP的SPISTEA管腳,用作普通I/O功能,其高低電平控制SD卡的使能與否;DI管腳連接到SPISIMOA管腳,DSP通過這個(gè)管腳向SD卡發(fā)送數(shù)據(jù)和命令;DO管腳連接到SPISOMIA管腳,DSP通過這個(gè)管腳讀取SD卡內(nèi)的數(shù)據(jù);SCLK管腳連接到SPICLKA管腳,DSP通過這個(gè)管腳向SD卡發(fā)送時(shí)鐘信號(hào)。具體連接電路如圖2所示。
3 SD卡的軟件設(shè)計(jì)
SD卡工作在SPI模式下,主控制器向SD卡發(fā)送命令、數(shù)據(jù)并接收SD卡的響應(yīng)。被使能的SD卡總是對(duì)來自主控制器的命令有所響應(yīng),當(dāng)SD卡出現(xiàn)錯(cuò)誤時(shí),會(huì)返回一個(gè)出錯(cuò)響應(yīng)來代替期望的數(shù)據(jù)。
3.1 SD卡的初始化
對(duì)SD卡進(jìn)行讀寫操作之前,首先應(yīng)該初始化SD卡。SD卡初始化流程如圖3所示。為了保持SD卡的兼容性,設(shè)置SPI的時(shí)鐘頻率在100~400 kHz范圍內(nèi)。SD卡上電后,主機(jī)必須先向SD卡發(fā)送至少74個(gè)時(shí)鐘周期,同時(shí)CS處于低電平,以完成SD卡上電過程。SD卡上電后默認(rèn)進(jìn)入SD模式,在此模式下向SD卡發(fā)送復(fù)位命令(CMD0)并保持CS為低電平,如果收到應(yīng)答信號(hào)為01H,則SD卡進(jìn)入SPI模式。
SD卡進(jìn)入SPI模式后,主機(jī)即可不斷地向SD卡發(fā)送命令(CMD55+ACMD41)并讀取應(yīng)答信號(hào),如果應(yīng)答信號(hào)為00H,則表明SD卡完成初始化。初始化完成后,需要把SPI時(shí)鐘頻率設(shè)置為高速模式,在這種模式下才能保證SD卡的高速讀寫。
3.2 SD卡的讀寫操作
SD卡支持單塊寫操作(CMD24)和多塊寫操作(CMD25)。圖4為單塊寫操作流程圖,數(shù)據(jù)長度為512 B。執(zhí)行單塊寫操作時(shí),主機(jī)發(fā)送寫數(shù)據(jù)塊命令(CMD24),等待SD卡的應(yīng)答信號(hào)為00H后,然后發(fā)送數(shù)據(jù)起始標(biāo)志位0xFE,接著發(fā)送512 B數(shù)據(jù)和2 B的(2RC校驗(yàn)。當(dāng)SD卡的應(yīng)答信號(hào)為0x05時(shí),即表明SD卡已經(jīng)正確地寫入了數(shù)據(jù)。在寫SD卡時(shí),SD卡的輸出口為低電平,當(dāng)輸出口變?yōu)楦唠娖綍r(shí)表明寫操作完成。
SD卡同樣支持單塊(CMD17)和多塊(CMD18)讀操作。單塊讀操作的數(shù)據(jù)長度也是512 B,其操作流程與寫操作類似。操作時(shí),首先向SD卡發(fā)送讀數(shù)據(jù)塊命令(CMD17),當(dāng)接收應(yīng)答信號(hào)0xFE后,即可接收512 B數(shù)據(jù)塊和2 B的CRC校驗(yàn)。
4 FAT32文件系統(tǒng)設(shè)計(jì)
4.1 FAT32文件系統(tǒng)的結(jié)構(gòu)
為了更直觀地查看SD卡中的數(shù)據(jù),并與計(jì)算機(jī)進(jìn)行數(shù)據(jù)交互式操作。本文采用了FAT32文件系統(tǒng),該文件系統(tǒng)不僅實(shí)現(xiàn)了對(duì)大容量SD卡的文件操作,而且讀寫文件的速度很快。
FAT32文件系統(tǒng)在SD卡上的基本結(jié)構(gòu)包含以下幾個(gè)部分:分區(qū)引導(dǎo)記錄DBR(Dos Boot Record)、文件分配表FAT(File Allocation Table)數(shù)據(jù)區(qū)。
分區(qū)引導(dǎo)記錄DBR,通常包括跳轉(zhuǎn)指令、廠家標(biāo)識(shí)和DOS版本號(hào)、BPB(BIOS Parameter Block)和。BIOS引導(dǎo)程序。其中BPB記錄著每個(gè)扇區(qū)字節(jié)數(shù)、每簇扇區(qū)數(shù)、總扇區(qū)數(shù)等SD卡的基本信息,這些信息是正確操作SD卡的基礎(chǔ)。
FAT32文件系統(tǒng)有兩個(gè)文件分配表FAT1和FAT2。FAT2是FAT1的備份,記錄了簇與簇之間數(shù)據(jù)的鏈接關(guān)系。
FAT32與FAT12、FAT16不同的是,它沒有專門的根目錄區(qū),根目錄區(qū)與數(shù)據(jù)區(qū)合并在一起。
4.2 FAT32文件系統(tǒng)的實(shí)現(xiàn)
4.2.1 FAT32文件系統(tǒng)的初始化
對(duì)SD卡的正確操作,需要初始化該卡的信息結(jié)構(gòu)體變量如每個(gè)扇區(qū)字節(jié)數(shù)、每簇扇區(qū)數(shù)、FAT表數(shù)目等。
初始化流程如圖5所示。首先讀卡的物理扇區(qū)0,得到引導(dǎo)扇區(qū)的偏移地址。正常的話,該扇區(qū)最后兩個(gè)字節(jié)為55AA。然后讀引導(dǎo)扇區(qū)DBR的具體內(nèi)容,得到文件系統(tǒng)的基本信息,初始化SD卡的信息結(jié)構(gòu)體變量。
4.2.2 FAT32文件系統(tǒng)的相關(guān)操作
在本設(shè)計(jì)中,為了提高SD卡的寫入速度,對(duì)FAT32文件系統(tǒng)進(jìn)行優(yōu)化。FAT32文件系統(tǒng)在保留區(qū)增加了一個(gè)FSINFO扇區(qū),用以記錄文件系統(tǒng)中空閑簇的數(shù)量以及不可用簇的簇號(hào)等信息。在執(zhí)行寫SD卡操作時(shí),可以通過讀取該扇區(qū)的內(nèi)容快速地定位到下一個(gè)空閑簇,然后進(jìn)行數(shù)據(jù)的寫入。優(yōu)化后的文件系統(tǒng)主要包括以下操作:文件的創(chuàng)建與文件的讀寫操作。
創(chuàng)建新文件時(shí),首先判斷該文件是否存在。如果存在,則打開該文件讀取該文件的FAT表項(xiàng),獲取開始簇的地址、文件所占的字節(jié)數(shù)及第一個(gè)扇區(qū)的地址等信息;如果文件不存在,則查詢空閑簇并設(shè)置起始簇號(hào),同時(shí)根據(jù)這個(gè)起始簇號(hào)創(chuàng)建簇鏈,然后讀取FDT(File Directory Table)表項(xiàng)查找空閑的32 B FDT,以存放文件名、擴(kuò)展名、屬性值等信息。
讀文件時(shí),根據(jù)文件名查找FDT表項(xiàng)并讀取文件的起始簇號(hào),根據(jù)起始簇號(hào)找到第一個(gè)簇的內(nèi)容,并逐個(gè)扇區(qū)讀取。同時(shí),根據(jù)簇鏈就能查找到第2個(gè)簇,然后讀取簇里的內(nèi)容。按照此方法,直到讀取所有的數(shù)據(jù)。寫文件的流程和讀文件類似,不同的是寫滿一個(gè)簇時(shí)要查找空閑的簇并添加到簇鏈中,同時(shí)更新FAT1,F(xiàn)AT2和FSINFO的內(nèi)容。
5 結(jié)語
本文設(shè)計(jì)了一種基于DSP和SD卡的生理信號(hào)數(shù)據(jù)采集系統(tǒng),詳細(xì)介紹了DSP與SD卡的硬件接口電路設(shè)計(jì)以及SD卡軟件設(shè)計(jì)流程。通過對(duì)人體手指體表溫度和濕度的實(shí)時(shí)測量,該系統(tǒng)可以實(shí)現(xiàn)對(duì)16路模擬信號(hào)的采集、處理、存儲(chǔ)等一系列操作。SD卡存儲(chǔ)容量為2 GB,最高讀寫速度可以達(dá)到1.2.MB/s,完全滿足在高速AD采集系統(tǒng)中的應(yīng)用。隨著人體監(jiān)測儀器的智能化、小型化發(fā)展,以及大容量SD卡的高性價(jià)比優(yōu)點(diǎn),SD卡在生理信號(hào)采集中的應(yīng)用前景廣闊。
評(píng)論
查看更多