C8051F020在SD卡主控制器設計中的應用
3.3V的工作電壓,與SD卡工作電壓兼容。
時鐘系統(tǒng)更加完善,可以使用內部時鐘,也可以使用外部時鐘。
可實現通過JTAG接口的在系統(tǒng)調試。
C8051F系列單片機的SPI串行接口的主要特點如下:全雙工,三線同步傳輸,即在發(fā)送的同時也能接受;可以工作在主機方式或從機方式;主機最大數據傳輸速率(位/秒)是系統(tǒng)時鐘頻率的1/2.因而最高可達10Mb/s;SPI位傳輸速率可通過編程選擇;發(fā)送結束設置中斷標志。發(fā)送期間不占用CPU時間;串行時鐘極性與相位可編程改變;具有寫沖突保護和總線競爭保護。
對于C8051F020的SPI系統(tǒng)。首先通過設置I/O端口功能選擇開關控制寄存器XBR0、XBR1、XBR2.將I/O端口P0.0、P0.1、P0.2、P0.3配置成SPI功能引腳SCK、MISO、MOSI和NSS。此時I/0端口P0.0、P0.1、P0.2、P0.3就組合成SPI接口了。SPI0CFG是SPI的配置寄存器,用于配置SPI的工作方式。并反映通信過程中的數據發(fā)送狀態(tài)。并反映通信過程中的一些錯誤標志,SPI0CKR是SPI的時鐘速率寄存器,用于選擇SCK輸出的頻率。
主控制器C8051F020與SD卡座的電路連接圖如圖3所示。除了SPI接口的連接外,還有三根控制線,P0.4_SD_INSERT就是I/O端口P0.4,用于檢測SD卡在卡座上是否插好。完全插入時該引腳為低電平,否則為高電平。P0.5_SD_WP就是I/O端口P0.5,用于檢測SD卡當前是否設置寫保護。寫保護時該引腳為高電平,否則為低電平。P0.6_SD_POWER就是I/O端口P0.6,用于SD卡的供電控制,這是為了在SD卡進入不確定狀態(tài)時,可以通過對卡重新上電復位而無需拔出卡。
3 軟件設計
硬件抽象層包括訪問SD卡的硬件環(huán)境配置、SPI接口實現通訊的基本函數以及SPI中斷的處理。硬件環(huán)境配置包括硬件初始化、以及內存變量初始化等。SPI接口實現通訊的基本函數,包括主控制器向SD卡發(fā)送一字節(jié)和從SD卡讀取一字節(jié)的基本函數,這是所有SPI通訊的基礎。SPI中斷處理是SPI接口產生中斷時。中斷服務程序被自動調用,在中斷服務程序中,讀取SPI控制寄存器。這里存放著產生中斷的各種狀態(tài)標志,根據不同的狀態(tài)標志,調用不同的函數處理。
命令層,就是調用硬件抽象層的基本發(fā)送接收字節(jié)函數,實現SD卡所有SPI協議規(guī)定的命令。根據SD卡協議,訪問SD卡的不同功能,由不同的命令實現。這些命令分成0—9個不同的類別。每種類別包括幾個具體的命令,對于SPI協議,每個命令都由主機主動發(fā)送。高位在前低位在后,SD卡收到命令后。根據不同的命令做出不同的響應。主機發(fā)送的命令長度總是6個字節(jié)。命令的格式如表2所示,Command表示命令號,占用6位,Parameter表示命令參數,長度為4字節(jié),不同的命令對應不同的命令參數值。SD卡的響應有4種格式,分別為R1、R1B、R2和R3格式。
表2 SPI模式命令格式
字節(jié)6 字節(jié)2~5 字節(jié)1
0 1 Command Parameter(高位在前) CRC 1
應用層函數提供客戶程序訪問SD卡的高級接口函數。使客戶不需要知道SD卡的內部結構和命令內容、不需要知道SPI的接口協議等基本內容,客戶程序只需要簡單地調用接口函數了解SD卡的當前狀態(tài)、讀取自己需要的內容或寫入自己的內容。應用層程序是在命令層基礎上的更高抽象,調用命令層函數實現
4 結論
本文將SD卡存儲方式運用到飛機飛行數據采集系統(tǒng),簡化了采集系統(tǒng)的設計,減小了系統(tǒng)尺寸,提高了系統(tǒng)的可靠性,使采集數據的讀出變得簡單易行。由于原有數據采集系統(tǒng),采用8051單片機作主控制器,本次設計選用與8051完全兼容的高性能單片機C8051F020。既繼承了原有采集系統(tǒng)的設計,又滿足了訪問SD卡的功能要求,加快了整個系統(tǒng)的設計進程。
評論