doi:10.3969/j.issn.1674-1242.2015.02.002
膠囊內(nèi)窺鏡磁跟蹤系統(tǒng)體外數(shù)據(jù)接收便攜式存儲(chǔ)裝置設(shè)計(jì)
翟剛,郭旭東,魯正平
上海理工大學(xué) 醫(yī)療器械與食品學(xué)院 (上海,200093)
基金項(xiàng)目:國家自然科學(xué)基金資助項(xiàng)目(61001164);
上海市自然科學(xué)基金資助項(xiàng)目 (15ZR1428200)
通信作者:郭旭東,E-mail: guoxd@usst.edu.cn
【摘要】該文設(shè)計(jì)了一種無線數(shù)據(jù)接收和基于SD卡便攜式存儲(chǔ)裝置,能接收體內(nèi)的數(shù)據(jù)并實(shí)時(shí)寫入到SD卡中,此裝置可以支持MMC卡、SD卡以及SDHC卡。并使用了FAT32文件系統(tǒng),將數(shù)據(jù)以文本格式(.txt)存儲(chǔ)到SD卡,解決了膠囊內(nèi)窺鏡磁跟蹤系統(tǒng)跟蹤定位過程中數(shù)據(jù)量大、存儲(chǔ)設(shè)備識別以及與上位機(jī)接口的問題。
【關(guān)鍵字】膠囊內(nèi)窺鏡;無線數(shù)據(jù)接收;SD卡;FAT32
【中圖分類號】TP311.13【文章標(biāo)志碼】 A
文章編號:1674-1242(2015)02-0069-04
Design of a Portable Storage Device for Collecting in
Vitro Data of Capsule Endoscopy Magnetic Tracking System
ZHAI Gang,GUO Xudong,LU Zhengping
School of Medical Instrument and Food Engineering,
University of Shanghai for Science and Technology(Shanghai,200093)
Abstract【】This work designed a portable device that can wireless receive and store data based on a SD card. The device can receive real-time in vivo data and write them to the SD card. This device can also support MMC card, SD card and SDHC card. The device uses the FAT32 file system, and saves the data as text format (. TXT) in the SD card, which solves the problems of large amount of data storage, device identification and PC interface in the capsule endoscopy magnetic tracking system.
【Key words】capsule endoscopy,wireless data reception,SD card,F(xiàn)AT32
對膠囊內(nèi)窺鏡[1]進(jìn)入人體內(nèi)消化道進(jìn)行檢查時(shí)進(jìn)行定位,可以解決膠囊內(nèi)窺鏡獲得的診查信息無法與診查位置對應(yīng)的問題,有助于臨床醫(yī)生根據(jù)診查信息和疾病位置確定最佳的治療方案[2-3]。對膠囊內(nèi)窺鏡的定位過程中產(chǎn)生大量的數(shù)據(jù),需要將這些數(shù)據(jù)傳輸?shù)襟w外進(jìn)行存儲(chǔ)并進(jìn)一步的分析計(jì)算出膠囊內(nèi)窺鏡在人體內(nèi)部的位置[4-5]。然而,采用傳統(tǒng)的纜線式數(shù)據(jù)傳輸和存儲(chǔ)方式,一般需要PC機(jī)參與,將會(huì)給病人帶來不便。
傳統(tǒng)的數(shù)據(jù)傳輸方式UART或CAN總線可以將實(shí)時(shí)數(shù)據(jù)傳輸?shù)絇C中,但是都屬于纜線式,而膠囊內(nèi)窺鏡的數(shù)據(jù)傳輸必須采用無線方式[6-7],這些通信方式將無法滿足要求。對于數(shù)據(jù)的存儲(chǔ)目前常用的有CF卡、MMC卡、U盤和SD卡等,CF卡不能與PC機(jī)通信;U盤與單片機(jī)通信需要外接相應(yīng)的芯片,增加了系統(tǒng)功耗和成本;MMC卡和SD卡都可以與單片機(jī)直接通信,SD與MMC卡相比具有耐用、安全、容量大、易于攜帶和兼容性好等優(yōu)點(diǎn),適合于大數(shù)據(jù)的儲(chǔ)存[8-9]?;诖?,本文設(shè)計(jì)了一種膠囊內(nèi)窺鏡磁跟蹤系統(tǒng)體外數(shù)據(jù)接收便攜式存儲(chǔ)裝置,通過無線方法接收體內(nèi)的定位數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)到SD卡中。為方便數(shù)據(jù)在PC上的讀取以及數(shù)據(jù)的進(jìn)一步處理,采用FAT32文件系統(tǒng)管理SD卡上數(shù)據(jù)的儲(chǔ)存[10]。
膠囊內(nèi)窺鏡磁跟蹤系統(tǒng)包括體內(nèi)和體外兩部分,其中體內(nèi)部分主要用來接收體外磁場信號并將其經(jīng)過放大、濾波、AD轉(zhuǎn)換后通過無線射頻芯片發(fā)送到體外;體外部分主要是產(chǎn)生交變磁場和接收體內(nèi)射頻芯片發(fā)送的數(shù)據(jù)并將其存儲(chǔ)到便攜式存儲(chǔ)裝置中。當(dāng)檢查結(jié)束后,將數(shù)據(jù)導(dǎo)入到PC中進(jìn)一步分析處理,計(jì)算出膠囊內(nèi)窺鏡在人體內(nèi)的位置以及運(yùn)動(dòng)軌跡,從而達(dá)到定位的目的?;隗w外部分,本文中設(shè)計(jì)了一種無線數(shù)據(jù)接收和基于SD卡的存儲(chǔ)裝置,其結(jié)構(gòu)如圖1所示。主控制芯片采用基于Cortex-M3內(nèi)核的高性能處理器STM32F103RB,工作頻率為72 MHz,內(nèi)置128 kB FLASH和20 kB RAM高速存儲(chǔ)器,具有豐富的I/O端口和2個(gè)SPI端口[11]。通過STM32F103RB的2個(gè)SPI端口控制無線數(shù)據(jù)接收芯片SI4420和SD卡進(jìn)行數(shù)據(jù)的存儲(chǔ)。為了方便接收到的數(shù)據(jù)在PC機(jī)上易于讀取和處理,采用FAT32文件系統(tǒng)對SD卡進(jìn)行管理,將接收到的數(shù)據(jù)以文本格式(.txt)存儲(chǔ)。
圖1數(shù)據(jù)接收和存儲(chǔ)系統(tǒng)結(jié)構(gòu)示意圖
Fig.1Data receiving and storage system structure diagram
本設(shè)計(jì)中采用STM32F103RB自帶的SPI接口與SI4420和SD卡進(jìn)行通信,其中SPI1控制射頻芯片SI4420來實(shí)現(xiàn)無線數(shù)據(jù)接收,SPI2控制SD卡將接收到的數(shù)據(jù)存儲(chǔ)到SD中。
2.1無線數(shù)據(jù)接收軟件設(shè)計(jì)
主控制芯片STM32F103RB通過內(nèi)部的SPI1與SI4420來接受體內(nèi)射頻芯片發(fā)送的數(shù)據(jù),有直接接收和FIFO模式兩中數(shù)據(jù)接收方式。為了使接收數(shù)據(jù)準(zhǔn)確,本設(shè)計(jì)中采用誤碼率比較低的FIFO模式,其流程如圖2所示。
圖2SI4420接收流程
Fig.2SI4420 receiving process
2.2SD卡智能識別底層驅(qū)動(dòng)實(shí)現(xiàn)
要實(shí)現(xiàn)無線數(shù)據(jù)的存儲(chǔ)首先需要對儲(chǔ)存卡初始化。然而對于不同的存儲(chǔ)卡,根據(jù)協(xié)議不同,可以分為不同的版本,如MMC卡、SD1.0和SD2.0等。對于不同的存儲(chǔ)卡,其初始化不同。為了使本設(shè)計(jì)可以智能識別不同的存儲(chǔ)卡,對不同的存儲(chǔ)卡進(jìn)行不同的初始化。并采用了兼容設(shè)計(jì),使高版本的SD卡可以向下兼容,拓寬了本設(shè)計(jì)的使用范圍,可以對不同的應(yīng)用場合采用合適的存儲(chǔ)卡,從而可以達(dá)到節(jié)省成本的目的,其識別流程如圖3所示。
當(dāng)完成SD卡的識別之后需要對不同的SD卡進(jìn)行初始化,對于MMC卡只需要發(fā)送命令CMD1即可完成其初始化,而對于SD1.0和SD2.0其初始化需要命令CMD55和ACMD41來完成。但是對于SD1.0初始化時(shí)ACMD41的第二個(gè)字節(jié)為0X00,而SD2.0初始化時(shí)ACMD41的第二個(gè)字節(jié)為0X40。對于SD2.0可以分為普通SD卡(SD)和高容量SD卡(SDHC),主要區(qū)別為對扇區(qū)地址的尋址上,普通SD卡將扇區(qū)地址作為字節(jié)地址,SDHC是將扇區(qū)地址作為扇區(qū)的尋址方式。SD初始化完成后,就可以對SD卡進(jìn)行讀寫。寫一個(gè)數(shù)據(jù)塊和讀寫一個(gè)數(shù)據(jù)塊相似,命令為CMD24。
圖 3SD卡智能識別流程
Fig.3SD card intelligent identification process
由于磁跟蹤系統(tǒng)過程中需要快速讀寫大量的數(shù)據(jù),本設(shè)計(jì)中以塊為單位進(jìn)行數(shù)據(jù)的讀取。其實(shí)現(xiàn)方法有單塊的多次讀寫和多塊讀寫,區(qū)別主要體現(xiàn)在對數(shù)據(jù)的讀寫速度上。在低速的場合可以采用單塊的多次多寫,在高速場合必須使用多塊讀寫命令,效率比單塊讀寫高的多。所以本設(shè)計(jì)中采用多塊讀寫,命令為CMD18。
PC機(jī)操作系統(tǒng)對磁盤文件的管理主要有FAT類文件系統(tǒng)和NIFS文件系統(tǒng)兩大類。FAT是文件分配表(File Allocation Table)的縮寫,有FAT12、FAT16和FAT32之分,其差別主要體現(xiàn)在對磁盤容量的管理上。由于本設(shè)計(jì)中采用的SD卡容量比較大,采用FAT32文件系統(tǒng)來管理SD卡中的數(shù)據(jù),方便PC機(jī)訪問SD卡中的數(shù)據(jù)。
4.1 FAT32文件系統(tǒng)結(jié)構(gòu)
FAT32的文件系統(tǒng)可以分為保留區(qū)、FAT表和數(shù)據(jù)區(qū)。FAT32保留區(qū)是在文件系統(tǒng)的開始部分,有32、34或38個(gè)扇區(qū)組成,其大小記錄在DBR扇區(qū)中。FAT表在文件系統(tǒng)中的作用為描述簇的分配狀態(tài)和標(biāo)明文件或目錄的下一簇的簇號。一般情況下文件系統(tǒng)有FAT1和FAT2兩個(gè)FAT表,有時(shí)只允許有一個(gè)。數(shù)據(jù)區(qū)是存放用戶數(shù)據(jù)的區(qū)域,緊跟在FAT2之后,被劃分為一個(gè)個(gè)簇,所有的簇是從2開始進(jìn)行編號,2號簇的起始位置就是數(shù)據(jù)區(qū)的起始位置。在數(shù)據(jù)區(qū)的起始位置存放根目錄項(xiàng),記錄每個(gè)文件的文件名、文件大小、文件創(chuàng)建時(shí)間以及文件的起始簇號等信息。其中文件名可以分為短文件名和長文件名。
4.2FAT32的代碼結(jié)構(gòu)
本設(shè)計(jì)中采用STM32F103RB作為主控器來控制SD卡,并將znFAT文件系統(tǒng)移植到主控制中[13],其代碼結(jié)構(gòu)如圖4所示。znFAT代碼結(jié)構(gòu)可以分為主體、移植相關(guān)和其他頭文件組成。其中主體為FAT的具體實(shí)現(xiàn)。znfat.h是對相關(guān)數(shù)據(jù)結(jié)構(gòu)、宏的定義以及對使用者可調(diào)用功能函數(shù)的聲明,znfat.c是對功能函數(shù)的具體實(shí)現(xiàn)。移植相關(guān)文件主要包括對類型重定義的mytype.h、對存儲(chǔ)設(shè)備SD卡物理扇區(qū)讀寫驅(qū)動(dòng)進(jìn)行具體實(shí)現(xiàn)的deviceio.c和對FAT文件進(jìn)行配置的config.h。其他頭文件中cc_macro.h是FAT中的功能函數(shù)依賴關(guān)系的定義,gb2uni.h是FAT中GB2312向UNICODE轉(zhuǎn)換的映射表,deviceio.h是向FAT提供扇區(qū)讀寫驅(qū)動(dòng)接口函數(shù)的聲明,template.h是FAT用于實(shí)現(xiàn)格式化功能的模板函數(shù)。
圖4FAT32移植的代碼結(jié)構(gòu)
Fig.4FAT32 transplantation code structure
znFAT代碼結(jié)構(gòu)可以分為主體、移植相關(guān)和其他頭文件組成。其中主體為FAT的具體實(shí)現(xiàn)。fat.h是對相關(guān)數(shù)據(jù)結(jié)構(gòu)、宏的定義以及對使用者可調(diào)用功能函數(shù)的聲明,fat.c是對功能函數(shù)的具體實(shí)現(xiàn)。移植相關(guān)文件主要包括對類型重定義的mytype.h、對存儲(chǔ)設(shè)備SD卡物理扇區(qū)讀寫驅(qū)動(dòng)進(jìn)行具體實(shí)現(xiàn)的deviceio.c和對FAT文件進(jìn)行配置的config.h。其他頭文件中cc_macro.h是FAT中的功能函數(shù)依賴關(guān)系的定義,gb2uni.h是FAT中GB2312向UNICODE轉(zhuǎn)換的映射表,deviceio.h是向FAT提供扇區(qū)讀寫驅(qū)動(dòng)接口函數(shù)的聲明,template.h是FAT用于實(shí)現(xiàn)格式化功能的模板函數(shù)。
4.3文件系統(tǒng)的實(shí)現(xiàn)
文件系統(tǒng)的實(shí)現(xiàn)主要有存儲(chǔ)設(shè)備初始化、文件系統(tǒng)初始化、創(chuàng)建文件、向文件寫入數(shù)據(jù)和關(guān)閉文件函數(shù)組成,其結(jié)構(gòu)如圖5所示。
圖5文件系統(tǒng)的實(shí)現(xiàn)
Fig.5File system implementation
經(jīng)過試驗(yàn)驗(yàn)證,本設(shè)計(jì)可以接收體內(nèi)的數(shù)據(jù)并實(shí)時(shí)寫入到SD卡中,達(dá)到了設(shè)計(jì)的目的。本設(shè)計(jì)作為膠囊內(nèi)窺鏡磁跟蹤系統(tǒng)體外部分,實(shí)現(xiàn)了無線數(shù)據(jù)接收和便攜式存儲(chǔ)的功能。將接收到的數(shù)據(jù)以文本格式(.txt)存儲(chǔ)到SD卡中,便于PC機(jī)讀取和分析處理。除此以外,本設(shè)計(jì)中增加了存儲(chǔ)卡的識別,可以兼容不同的SD卡,方便了系統(tǒng)的擴(kuò)充和移植,應(yīng)用到其他場合。
參考文獻(xiàn)
[1] Iddan G,Meron G,Glukhovsky A,et al. Wireless capsule endoscopy[J].Nature,2004,405-417.
[2] Adler DG,Gostout CJ. Wireless capsule endoscopy, hospital Physician[J].世界胃腸學(xué)雜志(英文版),2003,5-14.
[3] 廖彥劍,何金,侯文生,等.消化道微型診療裝置磁定位系統(tǒng)的軟件設(shè)計(jì)[J].中國生物醫(yī)學(xué)工程學(xué)報(bào),2009,12(28):885-891.
[4] 李金,鄭小林,侯文生,等.一種用于消化道微型裝置磁定位的非線性方案[J].儀器儀表學(xué)報(bào),2009,30(3):492-497.
[5] 邢斌,忻尚芝,張強(qiáng). 脈搏信號采集系統(tǒng)的研制[J].上海理工大學(xué)學(xué)報(bào),2013,4(35):387-390.
[6] 郭旭東,嚴(yán)榮國,顏國正.膠囊內(nèi)窺鏡無線遙測定位的校正[J].光學(xué)精密工程,2010,12(18):2650-2655.
[7] Integration Associates DB.IA4420 universal ISM band FSK transceiver datasheet [OL], [2008-08].
[8] 高永占,周洪利. 基于SD 卡的嵌入式文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京交通大學(xué),2010.
[9] 馬培嬌,張宇光,姚永興,等. 高速大容量存儲(chǔ)系統(tǒng)的關(guān)鍵技術(shù)實(shí)現(xiàn)[J]. 化工自動(dòng)化及儀表,2011,3(7) : 869 - 872.
[10] 周躍,沈杰,花魁.基于SD 卡的數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)[J]. 化工自動(dòng)化及儀表,2012,1(1):95-98.
[11] 劉波文. ARM Cortex-M3 應(yīng)用開發(fā)實(shí)例詳解[M].北京:電子工業(yè)出 版社,2011.
[12] 于振南.嵌入式FAT32文件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn):基于振南znFAT [M]. 北京:北京航空航天大學(xué)出版社,2014.
收稿日期:(2015-04-27)