目前工業和醫療上使用的USB設備,絕大部分是使用專用的USB芯片與微處理器相連的,特別是USB數據采集系統。根據不同的需求,通常也需要外擴一定數量的A/D轉換器,接口非常復雜。有時甚至需要為了協調不同的時鐘而外擴FIFO,這樣的設計不但成本大幅提高,而且系統的穩定性受到了嚴重的威脅。本文使用Atmel公司開發的基于ARM的閃存微控制器AT91SAM7X芯片。芯片內部集成了8路10位ADC和USB2.O設備接口,單芯片即可完成設計任務,避免了復雜的接口電路設計,不但有效地解決了以上這些問題,而且在很大程度上提高了系統的穩定性。
1 AT91SAM7X數據采集主控芯片介紹
AT9lSAM7X是基于32位ARM7TDMI內核的微控制器。AT91SAM7X系列微控制器具備嵌入式10/100M以太網 (Ethernet)MAC、CAN、全速(12 Mbps)USB 2.O。針對廣泛的網絡化實時嵌入式系統而設計的AT9lSAM7X256還具備1個10位模/數轉換器(ADC)、2個串行外圍接口(SPI)、同步串行接口(SSC)、雙線接口(TWI)、3個通用異步收發器(UART)、1個8級優先中斷控制器(priority interrupt controller)和眾多的監管功能。這個新型的50MIPS MCU擁有64 KB的靜態存儲器和256 KB的25 ns閃存,這種閃存支持實時控制系統所需的可確定性處理能力。
2 數據采集系統硬件設計
2.1 數據采集系統硬件設計結構圖
本文設計的基于AT91SAM7X的多路USB2.O數據采集系統主要由6部分組成,如圖1所示,分別是輸入信號接口模塊、多路信號放大模塊、信號調理模塊、數據采集處理模塊、USB2.O接口模塊和上位機模塊。其中,輸入信號接口模塊、多路信號放大模塊、信號調理模塊主要完成外部標準的一5~+5 V信號的隔離接人與變換。因為AT91SAM7X的ADC允許接入的轉換電壓范圍是O~3 V,所以上述3個過程的信號變換是必要的。本系統主要采用的變換手段為信號的差分放大,主要部分數據采集處理模塊和USB2.O接口模塊分別由 AT91SAM7X內置的ADC模塊和USB2.O模塊來完成。由于大部分的工作是在同一個芯片內部完成,只需通過簡單的寄存器設置和數據交換,即可完成數據的采集和傳輸過程,在很大程度上優化了系統的設計。
2.2 AT91SAM7X的ADC模塊介紹
AT91SAM7X的片內ADC是基于連續寄存器(SAR)模型,片內通過一個8到1的模擬復用器來實現8通道的模/數轉換。ADC輸入范圍是O V~ADVREF。ADC支持8位和10位兩種分辨率,可以通過軟件觸發、外部ADTRG觸發引腳、內部觸發定時器來啟動ADC??梢酝ㄟ^配置ADC時鐘、啟動時間、采樣保持時間來提高ADC的精度。ADC不受電源管理器管理,有一個中斷源,如果用到ADC中斷信號,則需要配置中斷控制器(AIC)。
2.3 AT91SAM7X的USB2.O模塊介紹
AT91SAM7X具有內置的USB設備控制器,USB設備端口符合USB2.O全速器件規范,具有12 Mbps的通信速率。每個端點可以配置為幾種USB傳輸類型中的一種。USB設備自動檢測掛起與恢復,通過中斷來停止處理器。同時,為了配合USB設備的使用并發揮其最大性能,片內集成了328字節的雙口RAM。此雙口RAM的一個DPR段由處理器讀/寫,另一個DPR段由USB2.O外設讀/寫,從而有效地保證了數據傳輸的最大帶寬。
3 AT91SAM7X的配置與模塊編程
3.1 ADC模塊的配置與模塊編程
ADC模塊功能框圖如圖2所示。ADC模塊是基于逐次逼近寄存器(SAR)的10位模/數轉換器,集成了一個8到1的模擬多路復用器,可實現8路模擬信號的模/數轉換。轉換由O V到ADVREF。同時,ADC支持8位或10位分辨率模式,并且轉換結果進入一個所有通道可用的通用寄存器(即通道專用寄存器)中??膳渲脼檐浖|發、外部觸發ADTRG引腳上升沿或內部觸發定時計數器輸出。ADC還集成休眠模式與轉換序列發生器,并與PDC通道連接。這些特性可降低功耗,減少處理器干涉。最后,用戶可配置ADC時間,如啟動時間以及采樣與保持時間。
系統設計中采用多點方式進行A/D轉換,ADVREF接3.O V的基準電壓。方便起見,以單點轉換為例,說明ADC模塊的配置與模塊編程。當然在A/D轉換之前,系統時鐘和整體的配置是必需的,此處只介紹ADC模塊相關的配置與模塊編程。先將與模/數轉換相關的所有寄存器清零,以保證所有寄存器都有確定值。具體配置過程和IAR程序代碼如下:
3.2 USB2.0模塊的配置與固件編程
USB2.0接口模塊如圖3所示。該模塊需要2個時鐘,即USB2.O器件端口時鐘和主時鐘。模塊通過APB總線接口訪問USB2.0器件端口.通過對 APB寄存器的8位值進行讀/寫以實現對存儲數據的雙口RAM的讀/寫。外部恢復信號可選,允許在系統模式下喚醒USB2.O器件端口外設,然后主機將通知請求恢復的器件。USB2.O接口進行枚舉時,該特性必須由主機處理。為保留檢查VBUS的I/O線,必須先對PIO的控制器編程,將該I/O配置為輸入PIO模式。USB2.O器件中有一條中斷線與高級中斷控制器AIC相連,因此,處理USB2.0器件中斷時,必須在配置USB2.0器件端口前對高級中斷控制器AIC編程。
本系統中使用USB2.0接口與上位機進行通信。為便于說明,此處以向上位機端通過USB2.0接口傳送O~9的數字,并循環10次為例,說明 USB2.0模塊的配置與同件編程。系統初始化完成后,此固件程序就通過USB2.0接口發送O~9的數字,循環10次后結束。具體的配置過程和IAR程序代碼如下:
注意:在USB2.0通信接121調試過程中,一定要將USB2.0固件程序下載到AT91SAM7X的F1ash中。這個過程可以通過ARM的地址重映射來完成,然后重新給USB2.0接口上電,因為只有在設備插入時上位機才檢測設備,并提示添加相應的驅動程序。如果開發人員調試的過程中只是將程序加載到RAM中,那么由于數據掉電不會保存,固件程序在下一次插入設備時就不會存在,無論在上位機添加何種驅動程序,上位機都不會接收到數據,這樣就會導致整個調試過程的失敗。
3.3 USB2.0的Windows應用程序設計
上位機部分通過Visual C++6.0程序實現與嵌入式硬件部分的USB通信。測試過程中,先將USB2.0固件程序下載到AT91SAM7X中,插上USB數據線,根據提示添加相應的驅動程序后直接運行設計好的Visual C++6.0程序。測試結果如圖4所示。
位機程序運行過程中首先檢查設備的連接情況,確認成功連接后開始接收USB2.0設備發送過來的數據。此處為循環10次的0~9的數字,如圖4所示,數據已經成功傳輸到了上位機端。
結語
本文設計了基于AT91SAMTX的多路USB2.0數據采集系統,以AT91SAM7X芯片為核心實現了數據信號的調理變換、采集和向上位機的傳輸。由于AT91SAM7X內置了ADC模塊和USB2.0設備接口,使得系統設計十分方便;同時由于無需使用大量的外擴芯片,使得硬件成本大幅降低,產品體積更小巧,穩定性方面也比外擴芯片的方式有較大幅度的提升。
責任編輯:gt
-
微控制器
+關注
關注
48文章
7566瀏覽量
151614 -
芯片
+關注
關注
456文章
50936瀏覽量
424671 -
數據采集
+關注
關注
39文章
6157瀏覽量
113759
發布評論請先 登錄
相關推薦
評論