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