隨著總線和接口技術的發展,在工業場合如何更加可靠、快速、便捷地進行數據傳輸成為該領域通信的研究重點之一。而USB技術以其高速、可靠、通用性強等一系列特點在過去的十多年時間里發展迅猛,而USB OTG技術的誕生,使得兩USB設備在沒有PC參與的情況下進行數據傳輸成為可能。本文通過搭建以16位微處理器MSP430F149為核心控制芯片、ISPl362為USB接口芯片的硬件平臺,分別實現了USB部分主機和從機功能,使之能進行USB數據的存儲與交換。本文完成以下工作:首先,認真研究USB協議,深入理解USB通信的基本概念和傳輸方式等內容。仔細分析USB Mass Storage類協議,并討論了采用BULK-ONLY傳輸實現Mass Storage類協議的方法,并對SCSI指令集等進行了深入的剖析。其次,根據要求,設計出由控制、接口、數據存儲、過流保護與供電切換電路等硬件模塊組成的系統,在ALTIUM 2004軟件上完成原理圖的設計和PCB圖的布局、布線,并完成硬件調試工作。再次,在已構建的硬件平臺上,針對ISPl362 USB接口芯片的主/從機功能,分別設計了USB主機和從機的固件程序。利用IAR Workbench、BusHound等軟件進行固件程序的調試,最終USB主機可對u盤進行檢測、識別與配置;USB設備實現了USB設備的基本功能,能夠被Windows XP操作系統識別,與PC機之間實現數據的批量傳輸。最后,用DriverWorks軟件包的Driver Wizard生成驅動程序框架,并利用Windows DDK和vc++等軟件進行驅動程序的編譯,最終生成基于Windows操作系統的WDM型USB設備驅動程序。通過對USB通信協議的研究,本人成功地構建了以MsP430F149和ISPl362為核心的硬件試驗平臺,并在此平臺上進行USB主機、從機通信試驗。經測試表明,PC機能檢測、識別、讀寫USB設備,其讀取與寫入速度分別為560KB/s和312Ⅺ玳。而主機能識別、配置接入的U盤。關鍵詞:USB主機、USB從機、MSI'430F149、ISPl362、BuR-Only傳輸
上傳時間: 2013-10-11
上傳用戶:淺言微笑
用途:測量地磁方向,測量物體靜止時候的方向,測量傳感器周圍磁力線的方向。注意,測量地磁時候容易受到周圍磁場影響,主芯片HMC5883 三軸磁阻傳感器特點(抄自網上): 1,數字量輸出:I2C 數字量輸出接口,設計使用非常方便。 2,尺寸小: 3x3x0.9mm LCC 封裝,適合大規模量產使用。 3,精度高:1-2 度,內置12 位A/D,OFFSET, SET/RESET 電路,不會出現磁飽和現象,不會有累加誤差。 4,支持自動校準程序,簡化使用步驟,終端產品使用非常方便。 5,內置自測試電路,方便量產測試,無需增加額外昂貴的測試設備。 6,功耗低:供電電壓1.8V, 功耗睡眠模式-2.5uA 測量模式-0.6mA 連接方法: 只要連接VCC,GND,SDA,SDL 四條線。 Arduino GND -> HMC5883L GND Arduino 3.3V -> HMC5883L VCC Arduino A4 (SDA) -> HMC5883L SDA Arduino A5 (SCL) -> HMC5883L SCL (注意,接線是A4,A5,不是D4,D5) 源程序: #include <Wire.h> #include <HMC5883L.h> HMC5883Lcompass; voidsetup() { Serial.begin(9600); Wire.begin(); compass = HMC5883L(); compass.SetScale(1.3); compass.SetMeasurementMode(Measurement_Continuous); } voidloop() { MagnetometerRaw raw = compass.ReadRawAxis(); MagnetometerScaled scaled = compass.ReadScaledAxis(); float xHeading = atan2(scaled.YAxis, scaled.XAxis); float yHeading = atan2(scaled.ZAxis, scaled.XAxis); float zHeading = atan2(scaled.ZAxis, scaled.YAxis); if(xHeading < 0) xHeading += 2*PI; if(xHeading > 2*PI) xHeading -= 2*PI; if(yHeading < 0) yHeading += 2*PI; if(yHeading > 2*PI) yHeading -= 2*PI; if(zHeading < 0) zHeading += 2*PI; if(zHeading > 2*PI) zHeading -= 2*PI; float xDegrees = xHeading * 180/M_PI; float yDegrees = yHeading * 180/M_PI; float zDegrees = zHeading * 180/M_PI; Serial.print(xDegrees); Serial.print(","); Serial.print(yDegrees); Serial.print(","); Serial.print(zDegrees); Serial.println(";"); delay(100); }
上傳時間: 2014-03-20
上傳用戶:tianyi223
學習編程一定要學好基礎,我個教程里面有很多個例子,可以很快,很容晚就學好入門的功夫,對以后學習java很有幫助
標簽: 編程
上傳時間: 2013-12-23
上傳用戶:libinxny
磁盤的最優存儲問題! 計算最優存儲時間是改進了一下,把時間降到nlogn!如果不改進的話是n的平方啊!
上傳時間: 2013-12-05
上傳用戶:windwolf2000
這是我寫的踩地雷,是java swing的API,有的人或許Title是一樣的,但或內容絕對不一樣。
標簽:
上傳時間: 2013-12-26
上傳用戶:xauthu
創世紀的C++ Builder 介紹一些bcb的基礎,對初學者很多錯,html格式,圖文并茂,很容易學
上傳時間: 2013-12-05
上傳用戶:myworkpost
本次程序的題目為:進程管理——支持多個進程并發運行的簡單的進程管理模擬系統,對本實驗的分析要求是:⑴系統中的同步機構采用信號量上的P、V操作的機制;⑵控制機構包括阻塞和喚醒操作;⑶時間片中斷處理程序處理模擬的時間片中斷;⑷進程調度程序負責為各進程分配處理機;⑸根據用戶的需求來創建n個進程(n為即滿足用戶需求,又不超出系統可容的最大進程數),各進程互斥地訪問使用臨界資源 S1、S2;⑹使用動態優先數(如:隨阻塞次數的增加而減小優先數,以提高其優先權);⑺進程結束后應能夠撤消;⑻進程間能實現“發送”和“接收”兩個消息緩沖通信操作;⑼系統在運行過程中隨機打印出各進程的狀態變換過程、系統的調度過程及公共變量的變化情況,在一個進程運行完畢,進入完成狀態后,可以將該進程撤消,也可以動態的創建另一個新的進程。
上傳時間: 2014-01-01
上傳用戶:ggwz258
本次程序的題目為:進程管理——支持多個進程并發運行的簡單的進程管理模擬系統,對本實驗的分析要求是:⑴系統中的同步機構采用信號量上的P、V操作的機制;⑵控制機構包括阻塞和喚醒操作;⑶時間片中斷處理程序處理模擬的時間片中斷;⑷進程調度程序負責為各進程分配處理機;⑸根據用戶的需求來創建n個進程(n為即滿足用戶需求,又不超出系統可容的最大進程數),各進程互斥地訪問使用臨界資源 S1、S2;⑹使用動態優先數(如:隨阻塞次數的增加而減小優先數,以提高其優先權);⑺進程結束后應能夠撤消;⑻進程間能實現“發送”和“接收”兩個消息緩沖通信操作;⑼系統在運行過程中隨機打印出各進程的狀態變換過程、系統的調度過程及公共變量的變化情況,在一個進程運行完畢,進入完成狀態后,可以將該進程撤消,也可以動態的創建另一個新的進程。
上傳時間: 2013-12-03
上傳用戶:kikye
仿真1:首先把網絡溫度參數T固定在100,按工作規則共進行1000次狀態更新,把這1000次狀態轉移中網絡中的各個狀態出現的次數Si(i=1,2,…,16)記錄下來 按下式計算各個狀態出現的實際頻率: Pi=Si/∑i=1,NSi=Si/M 同時按照Bo1tzmann分布計算網絡各個狀態出現概率的理論值: Q(Ei)=(1/Z)exp(-Ei/T) 仿真2:實施降溫方案,重新計算 采用快速降溫方案:T(t)= T0/(1+t) T從1000降到0.01,按工作規則更新網絡狀態 當T=0.01時結束降溫,再讓T保持在0.01進行1000次狀態轉移,比較兩種概率
上傳時間: 2014-01-20
上傳用戶:獨孤求源
自組織系統Kohonen網絡模型。對于Kohonen神經網絡,競爭是這樣進行的:對于“贏”的那個神經元c,在其周圍Nc的區域內神經元在不同程度上得到興奮,而在Nc以外的神經元都被抑制。網絡的學習過程就是網絡的連接權根據訓練樣本進行自適應、自組織的過程,經過一定次數的訓練以后,網絡能夠把拓撲意義下相似的輸入樣本映射到相近的輸出節點上。網絡能夠實現從輸入到輸出的非線性降維映射結構:它是受視網膜皮層的生物功能的啟發而提出的。~..~
上傳時間: 2014-01-06
上傳用戶:ghostparker