基于ARM平臺(tái)的RFID系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.2 充電電路設(shè)計(jì)
充電電路可以為用戶提供很大的方便。一般情況充電電路需要達(dá)到的要求是:必須保證電池充電時(shí)不過(guò)充;充電時(shí)間不能太短,但同時(shí)也要保證充電電流不能太大;有充電指示。根據(jù)上面以上要求,該電路的工作原理是:LM7812是一個(gè)穩(wěn)壓模塊,為系統(tǒng)提供穩(wěn)定的9V電壓。LM555是一個(gè)觸發(fā)器,管腿二和管腿六是觸發(fā)端,管腿五是參考電壓,當(dāng)管腿二的電壓小于管腿五和管腿六的三分之一電壓小于管腿五的時(shí)候,管腿三輸出0V;當(dāng)管腿二的電壓小于管腿五但管腿五的電壓大于管腿六的三分之一電壓的時(shí)候,管腿三輸出VCC;當(dāng)管腿二的電壓大于管腿五時(shí)候,管腿三輸出0V。當(dāng)該系統(tǒng)上電但沒(méi)有放充電電池的時(shí)候,滿足上述條件一,所以管腿三輸出0V,二極管不亮;當(dāng)把待充電池接在VCC端的時(shí)候,通過(guò)C45濾波(防止干擾脈沖)的采集電壓傳送到管腿二和管腿六,因?yàn)殡姵乇旧碛须妷海赃@個(gè)時(shí)候滿足上述條件二,管腿三輸出9V開(kāi)始充電,發(fā)光二極管變亮;當(dāng)充電完畢,電池達(dá)到指定電壓時(shí),滿足上述條件三,管腿三輸出0V,充電結(jié)束,發(fā)光二極管熄滅。綜上所述,只要參考電壓足夠精確,就不會(huì)造成電池過(guò)充現(xiàn)象。同時(shí)充電電壓能夠達(dá)到9V,所以調(diào)節(jié)R52完全可以在充電電流和充電時(shí)間上進(jìn)行權(quán)衡。所以此電路可以達(dá)到上述要求。
3.3 PROTEL 電路設(shè)計(jì)和電路板布線的基本流程
原理圖部分:建立自己的元件庫(kù)。因?yàn)椴⒉皇撬械脑赑ROTEL的元件庫(kù)中都存在,一般要根據(jù)自己實(shí)際所用的芯片建立自己的元件庫(kù)。繪制原理圖。當(dāng)器件比較多的時(shí)候,可以采用層次設(shè)的方法。分模塊對(duì)系統(tǒng)進(jìn)行設(shè)計(jì),這樣可以使系統(tǒng)更加清晰,降低錯(cuò)誤的可能性。原理圖畫(huà)好后,利用其自動(dòng)編號(hào)功能對(duì)器件進(jìn)行編號(hào)。PCB板部分.建立自己的封裝庫(kù),同元件庫(kù)一樣,有時(shí)候必須建立自己的封裝庫(kù),在畫(huà)封裝的時(shí)候,要嚴(yán)格按照芯片公司的資料繪制。為每一個(gè)元件設(shè)置封裝。用向?qū)Мa(chǎn)生PCB文件,定義好電路板的層數(shù)和邊界。利用設(shè)計(jì)同步器將器件導(dǎo)入到PCB中。根據(jù)具體的工藝設(shè)計(jì)好規(guī)則,如過(guò)孔大小,最小線寬。按照易于布線的原則對(duì)元件進(jìn)行布局布線,在布線的時(shí)候要遵循一些原則。檢查錯(cuò)誤。
4. 系統(tǒng)軟件設(shè)計(jì)
4.1 LINUX 在AT91RM9200 上的移植
AT91RM9200兩種啟動(dòng)方式:1.其內(nèi)部存儲(chǔ)器地址為0x00100000-0x001FFFFF的部分存在一段啟動(dòng)程序,如果選擇這種啟動(dòng)模式在啟動(dòng)時(shí),0x00100000-0x001FFFFF部分的地址被映射到0x00000000,CPU運(yùn)行這段程序,這段程序會(huì)往CPU的調(diào)試串口(或者是USB口)不停的發(fā)字符"C",同時(shí)提供小于12K程序的串口(利用XMODEM協(xié)議)下載功能。2.可以直接從外部存儲(chǔ)器啟動(dòng),主要是連接在SPI(串行外部設(shè)備接口)和NCS0(CPU上的一個(gè)管腿,是EBI即外部總線接口的一部分,用于外部存儲(chǔ)器的尋址)上的SPI DataFlash,Two-wire EEPROM和連接在NCS0上的8比特并行存儲(chǔ)器。
根據(jù)CPU的啟動(dòng)方式,我們可以這樣設(shè)計(jì)移植過(guò)程及系統(tǒng)的啟動(dòng)方式。在系統(tǒng)移植階段,我們應(yīng)用啟動(dòng)方式
1,通過(guò)其下載功能下載一個(gè)小于12K的程序(實(shí)際使用的程序?yàn)長(zhǎng)oader,是開(kāi)放源碼的軟件,可以在網(wǎng)上下載到)到SDRAM并運(yùn)行,該程序可以提供大于12K的串口下載功能,用這個(gè)程序下載一個(gè)更大的程序到SDRAM中,而這個(gè)程序可以提供類似于PC機(jī)上BIOS的功能(實(shí)際使用的是U-BOOT,是開(kāi)放源碼的軟件,可以在網(wǎng)上下載到),其功能主要有:LINUX系統(tǒng)引導(dǎo),網(wǎng)卡驅(qū)動(dòng),TFTP下載功能,SDRAM和FLASH之間的讀寫(xiě)功能。
通過(guò)其TFTP下載功能下載內(nèi)核到SDRAM,引導(dǎo)操作系統(tǒng)并進(jìn)行測(cè)試。如果操作系統(tǒng)測(cè)試工作無(wú)誤后,可以應(yīng)用U-BOOT的寫(xiě)FLASH功能把U-BOOT和LINUX內(nèi)核寫(xiě)到FLASH中,在應(yīng)用程序開(kāi)發(fā)階段應(yīng)用CPU的啟動(dòng)方式2,直接從FLASH啟動(dòng)。這種方法的優(yōu)勢(shì)是:在內(nèi)核下載的時(shí)候,提供了TFTP下載功能,加快了速度。在應(yīng)用程序開(kāi)發(fā)階段,因?yàn)閮?nèi)核(還有后面的RAMDISK)都是固化在FLASH中,可以省去其下載過(guò)程,同樣也可以節(jié)省時(shí)間[3]。
移植過(guò)程大致可分為以下幾個(gè)步驟:配置用戶環(huán)境及交叉編譯環(huán)境;編譯Loader和UBoot,其中要在UBoot中修改網(wǎng)卡驅(qū)動(dòng);3.配置Linux內(nèi)核;4.制作ramdisk文件系統(tǒng),并根據(jù)實(shí)際系統(tǒng)進(jìn)行修改;5.移植Busybox;6.JFFS2文件系統(tǒng)的移植。在Linux內(nèi)核中已經(jīng)包含了MTD和JFFS2文件系統(tǒng)的驅(qū)動(dòng)程序,但是必須針對(duì)具體的系統(tǒng)編寫(xiě)驅(qū)動(dòng)程序。具體步驟如下:1)由于ROM設(shè)備和MTDBlock設(shè)備的主設(shè)備號(hào)(major)都是31,所以如果你不想把JFFS2作為根文件系統(tǒng)的話,必須修改他們之一的major。2)編寫(xiě)驅(qū)動(dòng)程序:編寫(xiě)讀,寫(xiě),復(fù)制接口(這些接口將被MTD驅(qū)動(dòng)程序調(diào)用,提供給上層軟件的讀寫(xiě)復(fù)制功能),定義map_info結(jié)構(gòu)體,以便MTD能夠從這個(gè)結(jié)構(gòu)體中得到讀寫(xiě)函數(shù)的指針,最后還要定義FLASH的分區(qū)表。根據(jù)系統(tǒng)的設(shè)計(jì),我們把4M的FLASH分成四個(gè)區(qū),第一個(gè)分區(qū)用來(lái)保存UBOOT及其參數(shù);第二個(gè)分區(qū)用來(lái)保存LINUX內(nèi)核;第三個(gè)分區(qū)用來(lái)保存RAMDISK;最后一個(gè)分區(qū)用來(lái)保存系統(tǒng)參數(shù)和用戶數(shù)據(jù)和測(cè)試數(shù)據(jù)。3)修改LINUX的配置文件,把驅(qū)動(dòng)程序加入到內(nèi)核[4]。
評(píng)論