SL11R是Scanlogic公司生產的帶有USB接口的16位RISC單片機,內核處理速度達48MIPS,有很強的控制功能和靈活的工作方式。SL11R固化有類似于80X86的內部BIOS,可以直接調用,使用非常簡單,可以讓開發者在很短的時間內完成設計任務。 1 USB接口簡介 USB總線是通用串行總線(Universal Serial Bus)的簡稱,已經成為PC機的標準接口。目前586以上的PC機基本上都已經配置了USB接口。USB接口具有數據傳輸速率高、使用方便等特點。USB1.1協議規定的全速傳輸速率為12Mbit/s,而USB2.0協議所規定的高速傳輸速率為480Mbit/s,非常適合有大量數據傳輸的系統。USB設備即插即用,無需重新啟動計算機。 2 SL11R介紹 2.1 SL11R概述 SL11R是Scanlogic公司的SL11產品家族的一員,是一種帶USB接口的16位單片機,內部運行頻率為48MHz,采用RISC結構,有16位數據總線,32位通用I/O口(GPIO),其中22位可作為地址總線進行尋址(A0~A21),可以直接擴展多種外設。 2.2 SL11R主要特點 ·USB接口 SL11R的USB接口符合USB1.1協議,有四個端點(endpoint),兩種數據傳輸速率,全速模式為12Mbit/s,低速模式為1.5Mbit/s,并且具有USB協議所規定的四種數據傳輸方式?即控制傳輸方式(Control mode)、同步傳輸方式(Iochronous mode)、中斷傳輸方式(Intrerupt mode)、批量傳輸方式(Bluk mode)。 ·硬件資源豐富 SL11R有3K字節的內部RAM、兩個定時器、兩個外部中斷、一個看門狗電路、一個普通串行接口(UART)、32位通用可編程I/O口(GPIO)、一個16位的可編程DMA接口、四個PWM輸出引腳及擴展外圍元件用的控制引腳。SL11R的外圍元件擴展非常方便,擴展EPROM、串行E2PROM、SRAM即EDO DRAM等常用元件時均無需另加控制電路。 ·多種工作方式 SL11R有四種工作模式,即通用輸入輸出模式、快速增強并行端口模式、8位/16位DMA模式、DVC8位DMA模式,可根據實際應用場合用軟件進行設置。尤其8位DVC模式,可以直接與CCD接口,方便地開發CCD圖像采集系統或數碼相機。 ·無需專用開發裝置 SL11R內部有3K×16位的程序存儲器,類似于80X86的BIOS,已經把單片機的啟動配置、聯機調試及常用功能等固化在內部,開發者直接調用即可。CPU復位后,內部BIOS會把外部程序存儲器中的代碼讀入內部RAM中執行。如果沒有外部程序存儲器,SL11R會自動運行在監控狀態,與PC機進行聯機通訊,并能夠在線對線路板上的串行EEPROM進行編程或直接調試程序。由此可見,SL11R無需專用開發裝置就可以進行開發,這一點對開發者非常有利。由于SL11R可以在線編程,這就意味著即使用戶也可以進行軟件升級。這一點對新產品開發很必要,因為有些BUG可能要用戶使用后才能發現。 2.3 SL11R工作方式簡介 ·通用輸入輸出模式(GPIO模式) 在這種模式下,SL11R的外部有32個通用輸入輸出引腳,其中4個已經分配給USB和UART串行接口專用,其他28個引腳可以通過軟件編程,分別設置成輸入或輸出狀態。這種模式一般用于處理普通的外部并行接口類設備的數據,是用途較廣的模式。 ·快速增強并行端口模式(Fast EPP模式) 快速增強并行端口(Fast EPP)是計算機外設的一種標準并行接口。SLR11R在這種模式下,可以直接讀寫快速EPP并行增強端口。一般用于USB接口和Fast EPP接口的轉換。 ·8位/16位快速DMA模式 SL11R的DMA模式包括郵箱協議(Mailbox Protocol)和DMA協議兩種方式。郵箱協議工作方式允許外部處理器與SL11R進行異步通訊,它們通過郵箱的輸入、輸出寄存器交換數據。DMA協議工作方式一般用于SL11R與外部設備大量的數據高速傳輸。這種傳輸無需CPU的干預,而且允許外設直接與DRAM進行數據交換,適合數據量大的場合,如打印機、Modem、掃描儀等。 SL11R在DMA模式下,還有四個可編程的PWM輸出引腳,可以控制DMA模式下的外設與不同的外設通訊,如連接CCD、CIS、COMS等圖像傳感器或其他外設。只要根據外設的控制要求對PWM編程,就可以控制外設在DMA模式下傳輸數據。 ·DVC8位DMA模式 這種模式專門用于與CCD相機接口,SL11R通過串行方式控制CCD相機,圖像數據以DMA的方式傳給SL11R。 3 SL11R設計應用 3.1 SL11R硬件設計 SL11R的硬件設計比較簡單,因為實際應用中一般的外圍元件可以直接擴展。Scanlogic公司在開發套件中提供了一個比較完善的電路圖,但對一些簡單應用場合顯得稍繁瑣。事實上SL11R的內部有3K字節的RAM,在數據量不是特別大的場合,無需擴展外部數據存儲器。圖1是筆者設計的SL11R應用的一個基本電路,已經在實際項目中應用。 雖然SL11R經過編程可以使用12MHz晶振,但調試模式不支持12MHz,而且筆者在實際使用過程中發現,如果晶振質量不太好,電路穩定性稍差。故建議在條件許可的情況下,盡量使用48MHz的晶振。 SL11R的工作電壓為3.3V,電路中其它元件均應選用低電壓型器件。 Scanlogic公司提供的SL11R開發工具中附帶有調試程序,在線調試時需要使用RS232口,所以電路中設計了RS232接口芯片。 3.2 SL11R固件設計 SL11R的固件直接控制CPU的運行,程序代碼可以存儲在外部EPROM或I2C串行EEPROM中,甚至可以存在主機上,在適當的時候下載到SL11R的內部運行。最簡單的方式是把代碼寫到串行EEPROM中,因為SL11R提供了專用的工具軟件可以直接對EEPROM在線編程,無需另外的編程裝置。 3.2.1 SL11R程序結構 SL11R匯編語言的語法結構與80X86相似,而且也有內部BIOS。 MCS51等沒有BIOS的單片機,需要開發者控制CPU的每一步運行,程序必須在某一段反復循環,程序結構見圖2。SL11R由于有BIOS支持,它的程序結構就與MCS51有所區別。SL11R的主體循環是在BIOS內部,實際上用戶程序一般只是BIOS的中斷響應子程序。也就是說,開發者所編的SL11R的用戶程序可以沒有主循環體。SL11R的用戶程序結構見圖3。值得指出的是,開發者也可以擺脫BIOS的控制,程序不在BIOS內部循環。但該程序設計難度較大,因為這時開發者需要自己直接處理USB接口的底層軟件,一般沒有特殊要求不要使用這種方式。 3.2.2 SL11R的USB接口編程 SL11R的大部分功能都可以通過BIOS調用實現。USB的編程也是調用BIOS實現。SL11R復位后會自動配置USB接口,與主機建立USB通訊,一般情況下開發者可以不進行干預。 開發者主要使用的與USB有關的BIOS軟件中斷: ·USB_STAND_INT、USB_CLASS_INT、USB_VENDOR_INT、USB_FINISH_INT 這些中斷主要是為了實現USB通訊,其中USB_VENDOR_INT是接受主機控制指令中斷,主機對SL11R的控制基本上都是通過它實現的。 ·USB_SEND_INT、USB_RECEIVE_INT這兩個中斷用于USB發送、接收數據。可以通過配置,分別使用USB的四個端口。 3.3 主機軟件設計 要開發SL11R主機軟件,一種簡單、快捷的方式是借助于SL11R開發工具包(SL11R DVK)。通過學習工具包中附帶的例子程序可以在較短的時間內開發出一個應用軟件,用戶不需自己開發驅動程序。該工具包可以從ScanLogic公司的網站?www.scanlogic.com 下載得到。工具包中包括的內容有:通用驅動程序、例子程序和開發用的文檔資料。對于一般的開發工作可以直接使用工具包中的驅動。用于Windows98系統的三個文件分別是: slusbgen.sys.usb2epp.sys和usbdev.inf。 在AppWizard (zip)源代碼包中,可以找到用VC寫成的主機例子程序(usbtest.exe)的源代碼。其中有幾個文件對利用ScanLogic公司提供的驅動程序來開發應用程序很有幫助。在頭文件slusb.h中含有如下函數原型: BOOL FAR PASCAL CloseUsbDev (VOID);? //關閉USB口 BOOL FAR PASCAL FindUsbDev (WORD wProd);? //打開USB口 BOOL UsbVendorCmdRead (BYTE bCmd WORD wValue, WORD wIndex WORD wLen PVOID pData)? //發送讀控制指令 BOOL UsbVendorCmdWrite (BYTE bCmd Word wValue, Word wIndex WORD wLen PVOID pData); //發送寫控制指令 BOOL UsbDataRead (DWORD n PVOID pData); ? //讀數據塊 BOOL UsbDataWrite (DWORD n PVOID pData); //寫數據塊 只要在應用程序中靈活用好以上幾個函數,做一些簡單的數據采集工作是完全可行的,筆者就是借用這幾個函數在實際工作中成功完成了應用系統的開發。 文件devioctl.h包含有slusb.h中需要的常數和宏的定義。在文件usbtest.cpp中定義了控制SL11R操作的指令代碼。 SL11R是一種功能強大的USB接口單片機,它的16位總線及DMA傳輸模式允許進行大容量數據的高速傳輸,可以進行高速數據采集。而且SL11R的編程簡單,無需專用開發裝置,開發成本低,初次接觸USB的開發人員可以很容易實現應用系統的開發。 |