《電子技術(shù)應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 基于USB總線和Aduc831單片機的數(shù)據(jù)采集系統(tǒng)的設計
基于USB總線和Aduc831單片機的數(shù)據(jù)采集系統(tǒng)的設計
摘要: 由于信息網(wǎng)絡化的發(fā)展,,經(jīng)常需要將各種設備與主機相連,,傳統(tǒng)的外設與主機的通訊接口一般是基于PCI總線、ISA總線或者是RS-232C串行總線,。 PCI總線雖具有高的傳輸速度(132Mbps)С即插即用"功能,,但其缺點是插拔麻煩,且擴展槽有限(一般為5~6個),。ISA總線顯然存在著同樣的問題,。RS-232C串行總線雖然連接簡單,但其缺點是傳輸速度慢(56kbps). 而通用串行總線(Universal Serial Bus,簡稱USB)的出現(xiàn)能很好地解決以上這些沖突,。我們利用新型高性能單片機Aduc831設
Abstract:
Key words :

  由于信息網(wǎng)絡化的發(fā)展,,經(jīng)常需要將各種設備與主機相連,傳統(tǒng)的外設與主機的通訊接口一般是基于PCI總線,、ISA總線或者是RS-232C串行總線,。 PCI總線雖具有高的傳輸速度(132Mbps)С即插即用"功能,但其缺點是插拔麻煩,,且擴展槽有限(一般為5~6個),。ISA總線顯然存在著同樣的問題。RS-232C串行總線雖然連接簡單,,但其缺點是傳輸速度慢(56kbps). 而通用串行總線(Universal Serial Bus,簡稱USB)的出現(xiàn)能很好地解決以上這些沖突,。我們利用新型高性能單片機Aduc831設計了基于USB總線的數(shù)據(jù)采集系統(tǒng)。
  
1.USB簡介

1.1USB特點
  
  USB的英文全稱為Universal Serial Bus,它是一種快速,、雙向,、同步傳輸?shù)牧畠r的并可以進行熱拔插的串行接口。它的特點主要有:
  
  1)速度快,。USB有高速和低速兩種方式,,主模式為高速模式,速率為12Mbps,,另外為了適應一些不需要很大吞吐量和很高實時性的設備,,如鼠標等,,USB還提供低速方式,速率為1.5Mb/s,。
  2) 設備安裝和配置容易,。安裝USB設備不必再打開機箱,加減已
安裝過的設備完全不用關(guān)閉計算機,。所有USB設備均支持熱插拔,,且易于擴展。
  3) 使用靈活,。USB共有4種傳輸模式:控制傳輸(control),、同步傳輸(Synchronization)、中斷傳輸(interrupt),、批量傳輸(bulk),,以適應不同設備的需要。

1.2 USB總線協(xié)議
  
  USB總線屬一種輪訊方式的總線,,主機控制端口初始化所有的數(shù)據(jù)傳輸,。
 
  每一總線執(zhí)行動作最多傳送三個數(shù)據(jù)包。按照傳輸前制定好的原則,,在每次傳送開始時,,主機控制器發(fā)送一個描述傳輸運作的種類、方向,,USB設備地址和終端號的USB數(shù)據(jù)包,,這個數(shù)據(jù)包通常稱為標志包(token packet)。USB設備從解碼后的數(shù)據(jù)包的適當位置取出屬于自己的數(shù)據(jù),。數(shù)據(jù)傳輸方向不是從主機到設備就是從設備到主機,。在傳輸開始時,由標志包來標志數(shù)據(jù)的傳輸方向,,然后發(fā)送端開始發(fā)送包含信息的數(shù)據(jù)包或表明沒有數(shù)據(jù)傳送,。接收端也要相應發(fā)送一個握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端之間的 USB數(shù)據(jù)傳輸,,在主機和設備的端口之間,可視為一個通道,。存在兩種類型的通道:流和消息,。流的數(shù)據(jù)不像消息的數(shù)據(jù),它沒有USB所定義的結(jié)構(gòu),,而且通道與數(shù)據(jù)帶寬,、傳送服務類型,端口特性(如方向和緩沖區(qū)大?。┯嘘P(guān),。多數(shù)通道在USB設備設置完成后即存在,。USB中有一個特殊的通道——缺省控制通道,它屬于消息通道,,當設備一啟動即存在,,從而為設備的設置、查詢狀況和輸入控制信息提供一個入口,。

2. 硬件設計

2.1 Aduc831簡介

  ADuC831 是一個完全綜合的247 k采樣保持數(shù)據(jù)采集系統(tǒng),,在同一片中 結(jié)合了高性能的自校準12位 ADC 多路通道,雙12位 DAC通道和可編程8位 MCU,。微處理器核心是 8052,提供片內(nèi) 62 kB 非易失性閃速/電擦除程序存儲器,。還提供片內(nèi) 4 kB 非易失性閃速/電擦除數(shù)據(jù)存儲器、256 b RAM 和2 kB 擴展 RAM,。

  ADuC831 還提供額外的電源監(jiān)視器, 和一個高精度參考源,。片內(nèi)數(shù)字外圍設備包括2個16位Σ-Δ DAC, 雙輸出16位 PWM,看門狗定時器, 定時間隔計數(shù)器,3個定時器/計數(shù)器, 定時器 3用于波特率產(chǎn)生核 串行接口 I/O (I2C, SPI 和UART) 。

  并且片內(nèi)提供串行下載和調(diào)試模式 (通過 UART), 并且通過EA引腳提供單引腳競爭模式,。ADuC831 支持 QuickStart 和 QuickStart Plus 升級系統(tǒng)和低成本的軟件和硬件工具,。

2.2 USBN9603簡介

  USBN9603是一個集成的USB端點控制器,具有增強的DMA功能,。USBN9603集成了一個帶有3.3V的調(diào)節(jié)器的收發(fā)器,,1個SIE(串行接口引擎),1個8 b并行接口,,1個時鐘發(fā)生器和1個MICROWIRE/PLUS接口,。USBN9603可以進行7個端點的數(shù)據(jù)傳輸,除了1個端點必須為控制傳輸端點以外,,其他的6個端點可以被配置成中斷傳輸端點,、批量傳輸端點或者等時傳輸端點;每一個端點都有一個專門的FIFO,,控制端點的FIFO長度為8B,,其他的為64B。8 b并行接口可以支持多路復用或者非多路復用2種與CPU的接口方式,。USBN9603的突出特點為:低EMI(電磁干擾),,低等待電流,24M晶振,,增強的DMA功能,;可使用5V或3.3V電源;總線操作具有異步喚醒的全速靜態(tài)HALT模式,;改進的3.3V電壓輸入的電壓調(diào)節(jié)器,,所有非雙向端點都有64B 的FIFO;外部控制器接口簡單,,編程方便,。

2.3 原理圖設計

  USB數(shù)據(jù)采集系統(tǒng)硬件模塊主要由Aduc831芯片,、USB接口芯片USBN9603組成。硬件結(jié)構(gòu)簡單,硬件總體結(jié)構(gòu)框圖如圖1所示.

  模擬輸入信號A/D轉(zhuǎn)換器,轉(zhuǎn)換結(jié)果存儲在FIFO存儲器中,;一旦FIFO存滿,,SIE立刻對數(shù)據(jù)進行處理,然后Aduc831系統(tǒng)將數(shù)據(jù)從FIFO存儲器中讀出,由收發(fā)器通過數(shù)據(jù)線(D+,、D-)送至主機,。

  當USB控制器從USB總線檢測到主機啟動的某一傳輸請求后,通過中斷方式將此請求通知Aduc831系統(tǒng),,Aduc831系統(tǒng)通過訪問USB控制器的狀態(tài)寄存器和數(shù)據(jù)寄存器獲得與此次傳輸有關(guān)的各種參數(shù),,并根據(jù)具體的傳輸參數(shù),對USB控制器的控制寄存器和數(shù)據(jù)寄存器進行相應的操作,,以完成主機的傳輸請求,。Aduc831與USBN9603接口電路如圖2所示。

3. 系統(tǒng)軟件設計

  系統(tǒng)軟件主要包括:控制程序和USB設備驅(qū)動程序,。

3.1 控制程序

  控制程序就是指在Aduc831中運行的程序,對USB控制器的操作是嚴格按照USB協(xié)議1.1進行的,。在實際開發(fā)中使用了控制傳輸和塊傳輸兩種傳輸方式??刂苽鬏斨饕脕硗瓿芍鳈C對設備的各種控制操作,,也就是用來實現(xiàn)位于主機上的USB總線驅(qū)動程序 (USBD.SYS)以及編寫的功能驅(qū)動程序?qū)υO備的各種控制操作。塊傳輸主要用來完成主機和設備間的大批量數(shù)據(jù)傳輸以及對傳輸數(shù)據(jù)進行錯誤檢測(若發(fā)生錯誤,它支持“重傳”功能),。

  控制程序主要功能有控制A/D采樣, 控制USBN9603接受并處理USB驅(qū)動程序的請求及應用程序的控制指令,。因為Aduc831帶有串口下載功能,所以可以很方便的通過串口將程序下載到Aduc831中,不用仿真機,不用傳統(tǒng)的方法向EEPROM中燒制程序,所以調(diào)試起來非常方便??刂瞥绦蛄鞒?、中斷處理程序如圖3、4所示,。

3.2 USB設備驅(qū)動程序設計

  USB設備驅(qū)動程序基于WDM,。WDM

  型驅(qū)動程序是內(nèi)核程序,與標準的Win32用戶態(tài)程序不同,。采用了分層處理的方法, 較高級的USB設備驅(qū)動程序和較低級的USB函數(shù)層,。其中USB函數(shù)層由兩部分組成:較高級的通用串行總線模塊(USBD)和較低級的主控制器驅(qū)動程序模塊(HCD)。USB設備驅(qū)動程序不必具體對硬件編程,,所有的USB命令,、讀寫操作通過總線驅(qū)動程序轉(zhuǎn)給USB設備。但是,,USB設備驅(qū)動程序必須定義與外部設備的通訊接口和通訊的數(shù)據(jù)格式,也必須定義與應用程序的接口,。Windows 98/2000提供了一系列的系統(tǒng)驅(qū)動程序,,他們具有為許多標準類型設備服務所需的所有基本功能,,用戶按照提示可以定義設備的配置和功能,然后做功能的修改即可,??梢园裊SB設備驅(qū)動程序的功能劃分成4個不同的模塊來實現(xiàn):初始化模塊、即插即用管理模塊,、電源管理模塊以及I/O功能實現(xiàn)模塊,。初始化模塊提供1個入口函數(shù)DriverEntry(),在DriverEntry中,,需要提供一個AddDevice例程,,把驅(qū)動程序添加到驅(qū)動程序堆棧中去。另外,,所有對各種IRP(I/O請求包)的處理例程都在此入口函數(shù)中作為定義,。
DriverEntry(IN PDRIVER_OBJECT DriverObject,…) //驅(qū)動程序入口
{
DriverObject->DriverExtension->AddDevice=USBAddDevice;
DriverObject->DriverUnload=USBUnload;
DriverObject->MajorFunction[IRP_MJ_READ]=USBRead;
DriverObject->MajorFunction[IRP_MJ_WRITE]=USBWrite;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = USBDeviceControl;
RegisterForPnpNotification(DriverObject);
return status;
}
功能,。

  電源管理模塊負責設備的掛起與喚醒,。

  I/O功能實現(xiàn)模塊完成I/O請求的大部分工作。若應用程序想對設備進行I/O操作,,它便使用Windows API函數(shù),,對WIN32子系統(tǒng)進行WIN32調(diào)用。此調(diào)用由I/O系統(tǒng)服務接收并通知I/O管理器,,I/O管理將此請求構(gòu)造成一個合適的I/O請求包(IRP)并把它傳遞給USB設備驅(qū)動程序,。USB設備驅(qū)動程序接收到這個IRP以后,根據(jù)IRP中包含的具體操作代碼,,構(gòu)造相應的USB請求塊并把此 URB(USB請求塊)放到一個新的IRP中,。然后,把此IRP傳遞到USB總線驅(qū)動程序,,USB總線驅(qū)動程序根據(jù)IRP中所含的URB執(zhí)行相應的操作(如從USB設備讀取數(shù)據(jù)等),,并把操作結(jié)構(gòu)通過IRP返還給USB設備驅(qū)動程序。USB設備驅(qū)動程序接收到此IRP后,,將操作結(jié)果通過IRP返還給 I/O管理器,。最后,I/O管理器將此IRP中操作結(jié)果返還給應用程序,,至此應用程序?qū)SB設備的一次I/O操作完成,。

結(jié)束語:

  USB為計算機外設輸入輸出提供了新的接口標準。它使設備具有熱插拔,,即插即用,,自動配置的能力,并標準化設備連接, 還可與MAX
485結(jié)合起來實現(xiàn)數(shù)據(jù)的遠程采集。該系統(tǒng)具有可靠性高,、性價比高和多點采集等優(yōu)點,。而USB2.0標準具有更高的傳輸速率,更具有美好的應用前景,。

參考文獻:

1. Aduc831 datasheet.Analog device.
2. USB1.1.Universal serial bus specification S.
3. 張念淮,、江浩.《USB總線接口開發(fā)指南》 國防工業(yè)出版社.

  即插即用管理模塊用來實現(xiàn)USB設備的熱插拔及動態(tài)配置。當硬件檢測到有USB設備接入時,,Windows98查找響應的驅(qū)動程序,,并調(diào)用它的 DriverEntry例程。PnP(即插即用)管理器調(diào)用驅(qū)動程序的AddDevice例程,,告訴它添加了一個設備,。在此處理過程中,驅(qū)動程序收到一個設備啟動請求(IRP_MN_START_DEVICE)的IRP,。同理,,當要拔除時,PnP管理器會發(fā)出一個設備刪除請求(IRP_MN_REMOVE_DEVICE)的IRP,,由驅(qū)動程序進行處理,。通過對這些PnP請求的處理,可支持設備的熱插拔和即插即用

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。