基于LPC2132的U盤(pán)軟硬件系統設計
2.2.3 SCSI命令集實(shí)現
SCSI命令集是SCSI設備通用命令集。SCSI有3種字長(cháng)的命令:6字節、10字節和12字節。Microsoft Win—dows環(huán)境下支持12字節長(cháng)的命令。圖5給出了通用的UFI命令塊的格式。請注意,這些字節就是CBW封包中CBWCB字段的內容。
對不同的命令只需根據SCSI命令集白皮書(shū)作出適當的回應。Pm25LV010的最小擦除單位為扇區(4 KB),故在程序中定義一個(gè)4 KB的緩沖區Cache_STRUC Flash-Cache,把每次收到的數據放入緩沖區中,到緩沖區滿(mǎn)數據接收完畢時(shí)再將其寫(xiě)入Flash存儲器中,流程如圖6所示。
2.3 Flash存儲器的讀寫(xiě)控制
Flash存儲器讀寫(xiě)程序由SPI控制和Pm25LV010控制兩部分組成。
Pm25LV010 Flash存儲器采用的是SPI串行接口,其SPI有兩種工作模式——模式O和模式3。SPI.c完成SPI底層操作,給Pm25LV010控制程序提供一個(gè)讀寫(xiě)1字節數據函數。該函數使用SPI模式0。
Pm25LV010控制程序完成Pm25LV010器件的所有操作,其向高層提供的函數及功能如表2所列。
Pm25LV010的最小擦除單位是扇區(每扇區4 KB),在改寫(xiě)扇區內任意一字節數據時(shí)都需要將該扇區擦除。針對這種情況,在程序中定義了一個(gè)4 KB大小的緩沖區,當上層調用函數WriteToFlash()向Flash寫(xiě)數據時(shí),并不直接寫(xiě)入Flash,而是先寫(xiě)到數據緩沖區,其流程如圖7所示。
3 結論
基于LPC2132微控制器的硬件平臺上實(shí)現了USB驅動(dòng)、Bulk-Only傳輸協(xié)議、SCSI命令集,實(shí)現了完整的U盤(pán)功能。
評論