freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于usb總線的數(shù)據(jù)通信系統(tǒng)畢業(yè)設(shè)計論文(參考版)

2025-07-06 09:37本頁面
  

【正文】 對于 C8051F320 主機(jī)應(yīng)用程序接口函數(shù)包括: 。 應(yīng)用程序設(shè)計 系統(tǒng)主機(jī)應(yīng)用程序采用 編寫, VB 具有面向?qū)ο?、可視?IDE、事件驅(qū)動編程等優(yōu)勢,很適用于工業(yè)上的主機(jī)應(yīng)用程序編制。預(yù)安裝程序可以在設(shè)備連接之前就把驅(qū)動文件拷入系統(tǒng)并且注冊設(shè)備,從而當(dāng)設(shè)備第一次被連接在 PC 上的時候,和使用者的交互較少。在驅(qū)動安裝中 VID( vendo ID)、 PID( product ID)應(yīng)當(dāng)與內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計 說明書(畢業(yè) 論文 ) 固件中的 VID、 PID 相同,如果 改變必須同時調(diào)整。驅(qū)動的安裝可以通過修改硬件安裝文件( .inf)而被定制。所以 C8051F320 在工作之前必須把端口進(jìn)行正確的初始化,那樣端口才能正常的工作,其初始化程序如下: void PortInit(void) { P0MDOUT |=0x0F; //端口 0 的 0~3 腳設(shè)置為漏極開路 P1MDOUT |=0x0F; //端口 1 的 0~3 腳設(shè)置為漏極開路 P2MDOUT |=0x02; //端口 2 的 0、 1 腳設(shè)置為漏極開路 P0SKIP=0x3C; //XTAL1()、 XTAL2()、 //TX0()和 RX0()被跳過 XBR0=0x09; //使串行口,系統(tǒng)時鐘輸出 XBR1=0x40; //使能交叉開關(guān) } 除了上面的幾個重要的初始化程序外,另外還有串口初始化程序 uart()Init(),定時器 1 和定時器 2 初始化程序等。每個端口引腳都可以被配置為模擬輸入或數(shù)字 I/O 引腳,被選擇作為數(shù)字 I/O 的引腳還可以被配置為推挽或漏極開路輸出。0x80)=0) //等待晶振控制器設(shè)置外部晶振為系統(tǒng)時鐘源 OSCXCN=0x00; OSCICN=0x83; } 除了系統(tǒng)時鐘初始化程序之外,另一個重要的初始化程序就是 USB0 的初始化程序UsbInit( )主要使能 USB 的復(fù)位,端點 0~2 的中斷、復(fù)位、恢復(fù)和掛起中斷,時鐘恢復(fù)功能,掛起檢測中斷, USB0 中斷和全部中斷,并使能 USB 的傳輸功能,包括低速和全速傳輸方式。 為了避免上面的問題出現(xiàn),其執(zhí)行程序如下,主要完成外部晶振的使能,延時 1ms,并設(shè)置外部晶振為系統(tǒng)時鐘源。在一個程序中,它的初始化程序是很重要的,如果設(shè)置不當(dāng)將會產(chǎn)生不可預(yù)見的后果。 UART 的中斷服務(wù)程序流程圖如圖 所示。當(dāng)采用 外部時鐘 8 分頻的時候,分頻系數(shù)為 2304,重載值為 0x70。定時器 1 應(yīng)被配置為方式 2,即 8 位自動重裝載方式。亦可使用外部時鐘作為波特率發(fā)生器。 串口中斷服務(wù)程序設(shè)計 C8051F320 提供的 UART0 是一個異步、全雙工串口,它提供標(biāo)準(zhǔn) 8051 串行口的方式 1 和方式 3,有多個時鐘源可用于產(chǎn)生標(biāo)準(zhǔn)波特率。這個事件在Get_Interrupt_Source 函數(shù)的描述中被定義。 USB0 硬件中斷位于向量地址 0x0043(interrupt 8)被 USBXpress 聲明,并且被用來處理底層 USB 協(xié)議細(xì)節(jié)。這個句柄將在任何 USB API 中斷上被調(diào)用。設(shè)備接口函數(shù)有: USB_Clock_Start()– 初始化 USB 時鐘 USB_Init()– 使能 USB 接口 Block_Write()– 通過 USB 寫數(shù)據(jù)到主機(jī) Block_Read()– 通過 USB 從主機(jī)讀數(shù)據(jù) Get_Interrupt_Source()– 顯示一個 API 中斷的原 USB_Int_Enable()– 使能 API 中斷 USB_Int_Disable()– 禁用 API 中斷 USB_Disable()– 禁用 USB 接口 USB_Suspend()– 懸掛 USB 中斷 這個 API 使用中斷模式。 API 在 Keil C51 中以一個庫文件的形式被提供。下列設(shè)備接口 函數(shù)的設(shè)定實現(xiàn)在 C8051F320 上的一個內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計 說明書(畢業(yè) 論文 ) 應(yīng)用程序接口( API)。主程序的框圖如圖 所示: 主 程 序 開 始初 始 化 時 鐘 、 數(shù) 字 交 叉 開 關(guān) 、 U S B控 制 器 、 定 時 器主 機(jī) U S B 口 連 接好 ?L E D 燈 停 止 閃 爍 處 理開 啟 串 口 和 定 時 器 中 斷 等 處 理進(jìn) 入 空 閑 狀 態(tài)L E D 燈 閃 爍處 理YN 圖 固件主程序流程圖 USB 接口數(shù)據(jù)傳輸程序設(shè)計 C801F320 的 USB 控制器內(nèi)核會自動執(zhí)行大多數(shù)的底層協(xié)議任務(wù),當(dāng)數(shù)據(jù)被成功的傳送或者接收以及發(fā)生一個標(biāo)志事件(復(fù)位,恢復(fù), Stall等等)時會生成一個中斷,關(guān)鍵性的固件任務(wù)包括:解碼和處理輸入的控制請求,數(shù)據(jù) I/O,管理 USB 設(shè)備的狀態(tài)并處理請求,處理懸掛、復(fù)位和恢復(fù)事件。程序軟件編寫時候,需要充分了解 C8051F320 單片機(jī)的硬件結(jié)構(gòu),對程序變量、數(shù)據(jù)結(jié)構(gòu)、寄存器等進(jìn)行優(yōu)化處理,提高單片機(jī) C 語言的編譯運行的可靠性和效率,減少程序編譯后系統(tǒng)運行的不穩(wěn)定內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計 說明書(畢業(yè) 論文 ) 因素,提高系統(tǒng)的穩(wěn)定性能。 系統(tǒng)軟件按單片機(jī) C 語言編寫,相對于冗長、復(fù)雜、容易出錯的匯編語言來說, C可實現(xiàn)模塊化編程技術(shù),使得程序有很好的可移植性,而且有更容易開發(fā)和調(diào)試程序。 圖 數(shù) 據(jù)傳輸示意圖 USB 固件 程序 設(shè)計 系統(tǒng)固件程序軟件設(shè)計時使用 Silicon Laboratories 集成開發(fā)環(huán)境( IDE),完成單片機(jī)程序的編寫、調(diào)試、編譯、程序下載工作。 In_Packet[0]=Switch1State。 if(Out_Packet[1]==1)Led2=1。 if(Out_Packet[0]==1)Led1=1。同樣如果用 In_Packet[0]和 In_Packet[1]來存儲按鍵 1 和按鍵 2 的狀態(tài)也能實現(xiàn)按鍵狀態(tài)向主機(jī)應(yīng)用程序的傳送。通過調(diào)用主機(jī) API 和固件庫函數(shù)來建立兩者的數(shù)據(jù)傳輸。 圖 USBXpress 數(shù)據(jù)流 在 C8051F320 中建立數(shù)組 Out Packet 用于存儲從主機(jī)收到的數(shù)據(jù)包,和 In_Packet[]存儲將要送到主機(jī)的包,數(shù)組中的每一個字節(jié)都可以靈活的在程序中設(shè)定其表示的狀態(tài)或者傳送的數(shù)據(jù)。 圖 主機(jī) USB傳輸框圖 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計 說明書(畢業(yè) 論文 ) 對于 C8051F320 采集板來說,程序部分也要包含 3 個部分的內(nèi)容。 (5) USB 設(shè)備在接收到這些信息包后, SIE 自動將其解包并將數(shù)據(jù)放入指定端點的接受緩沖區(qū)內(nèi),由芯片固件對其進(jìn)行處理。 (3) USB 主控制器驅(qū)動程序負(fù)責(zé)為這些事務(wù)處理建立一系列以幀 /小幀為 單位的 事務(wù)處理列表,并保證其不會超過 USB 的帶寬。圖中的向下的箭頭表示了客戶軟件向 USB 設(shè)備發(fā)送數(shù)據(jù)的情況,其傳輸步驟如下: (1) 客戶軟件把要傳輸?shù)臄?shù)據(jù)放入數(shù)據(jù)緩沖區(qū),并向 USB 總線驅(qū)動程序發(fā)出 IRP,以請求數(shù)據(jù)傳輸。 客 戶 層U S B 系 統(tǒng)U S B 總 線 接 口功 能 層U S B 設(shè) 備 層U S B 總 線 接 口功 能 層U S B 設(shè) 備 層U S B 總 線 接 口 層實 際 數(shù) 據(jù) 流 邏 輯 數(shù) 據(jù) 流H O S T內(nèi) 部 鏈 接設(shè) 備 圖 USB系統(tǒng)的分層 在 USB 總線上,所有與 USB 設(shè)備功能單元的數(shù)據(jù)傳輸都是由客戶軟件啟動的,而且必須經(jīng)過主機(jī)的 USB 系統(tǒng)軟件和 USB 總線接口模塊才能將數(shù)據(jù)發(fā)送到 USB 設(shè)備。該層理解 USB 通信機(jī)制和功能層所要求的傳輸特性。根據(jù)實際情況的需要,客戶軟件在和 USB 設(shè)備的功能單元進(jìn)行通信時可以采用如下 4 種傳輸類型。 USB內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計 說明書(畢業(yè) 論文 ) 總線接口是 USB 設(shè)備中的串行接口引擎( SIE); USB 邏輯設(shè)備被 USB 系統(tǒng)軟件看作是一個端點的集合;功能單元被客戶軟件看作是一個接口的集合。根集線器為 USB 系統(tǒng)提供連接起點,主控制器負(fù)責(zé)完成主機(jī)和 USB 設(shè)備間數(shù)據(jù)的實際傳輸。它包括: USB 總線驅(qū)動程序( USBD)和 USB 主控制器驅(qū)動程序( HCD)。界面應(yīng)用程序負(fù)責(zé)和 USB設(shè)備驅(qū)動程序進(jìn)行接口,以操縱 USB 設(shè)備并向用戶提供可視化的操作。它一般包括 USB 設(shè)備驅(qū)動程序和界面應(yīng)用程序兩部分。 客戶軟件負(fù)責(zé)和 USB 設(shè)備的功能單元進(jìn)行通信,以實現(xiàn)其特定功能,一般由開發(fā)人員自行開發(fā)。如圖 所示: 應(yīng) 用程 序驅(qū) 動程 序固 件程 序硬 件層 圖 軟件系統(tǒng)組成 對于一個 USB 設(shè)備,其系統(tǒng)分層如圖 所示,分為功能層、 USB 設(shè)備層、 USB 總線接口層。然后點擊 Connect 按鈕或者 ALT+C 就可以將 IDE 與目標(biāo)板連接起來了。通過和 Silicon Labs IDE 可以方便的將程序?qū)懭肫小.?dāng) MCU 單步執(zhí)行或遇到斷點而停止運行時,所有的外設(shè)( USB、 ADC 和 SMBus 除外)都停止運行,以保持同步。不需要額外的目標(biāo) RAM、程序存儲器、定時器或通信通道。 C8051F320器件具有片內(nèi) Silicon Labs 2 線( C2)接口調(diào)試電路,支持使用安裝在最終應(yīng)用系統(tǒng)中的產(chǎn)品器件進(jìn)行非侵入式、全速的在系統(tǒng)調(diào)試。 UART 電路圖 如圖 所示。用同一個 SBUF0 地址可以訪問發(fā)送寄存器和接收寄存器。 UART0 具有增強(qiáng)的波特率發(fā)生器電路,有多個時鐘源可用于產(chǎn)生標(biāo)準(zhǔn)波特率。 C8052F320 提供的 UART0 是一個異步、全雙工串口,它提供標(biāo)準(zhǔn) 8051 串行口的方式 1 和方式 3。當(dāng) USB0 工作在全速方式時, USB 時鐘必須是 48 MHz;當(dāng) 工作在低速方式時, USB 時鐘必須是 6MHz。寄存器 CLKSEL 中的 USBCLK[2:0]位選擇用作 USB 時鐘的振蕩源。系統(tǒng)時鐘可以在內(nèi)部振蕩器、外部振蕩器和 4 倍時鐘乘法器之間自由切換,只要所選擇的振蕩器被使能并穩(wěn)定運行。當(dāng)選擇外部振蕩器作為系統(tǒng)時鐘時, CLKSL[1:0]必須被設(shè)置為 01b。 系統(tǒng)時鐘( SYSCLK)可以來自內(nèi)部振蕩器、外部振蕩器電路或 4 倍時鐘乘法器二分頻。對于晶體和陶瓷諧振器配置,晶體 /陶瓷諧振器必須并接到 XTAL1 和 XTAL2 引腳。外部振蕩器電路可以驅(qū)動外部晶體、陶瓷諧振器、電容或RC 網(wǎng)絡(luò)。 C8051F320 有一個可編程內(nèi)部振蕩器、一個外部振蕩器驅(qū)動電路和一個 4 倍時鐘乘法器。系統(tǒng)在正常運行期間可以使用外部高頻率高精確度的時鐘,在系統(tǒng)休眠或者特殊功能場合將時鐘切換 到內(nèi)部低頻率時鐘,以便降低功耗。程序從地址0x0000 開始執(zhí)行。 在退出復(fù)位狀態(tài)時,程序計數(shù)器( PC)被復(fù)位, MCU 使用內(nèi)部振蕩器作為默認(rèn)的系統(tǒng)時鐘。在復(fù)位期間和復(fù)位之后弱上拉被使能。但由于堆棧指針 SFR 被復(fù)位,堆棧實際上已丟失,盡管堆棧中的數(shù)據(jù)未發(fā)生變化。 圖 復(fù)位電路 所有的 SFR 都被初始化為預(yù)定值, SFR 中各位的復(fù)位值在 SFR 的詳細(xì)說明中定義。 C8051F320 提供了上電復(fù)位、掉電復(fù)位、外部復(fù)位、時鐘丟失監(jiān)測器復(fù)位、比較器0 復(fù)位、 PCA 看門狗定時器復(fù)位、 FLASH 錯誤復(fù)位、軟件復(fù)位、 USB 復(fù)位 9 種復(fù)位源。在 /RST 引腳上加一個低電平有效信號將導(dǎo)致 MCU進(jìn)入復(fù)位狀態(tài)。當(dāng)器件工作在總線供 電方式時, VBUS 信號只應(yīng)連接到 REGIN 引腳。可以用軟件通過寄存器 REG0CN 中內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計 說明書(畢業(yè) 論文 ) 的 REGEN 位使能 /禁止 REG0。 C8051F320 器件內(nèi)部包含一個 5V 至 3V 的穩(wěn)壓器( REG0)。由于 C8051F320 中的 USB 收發(fā)器內(nèi)部集成了上拉電阻,因而不需要任何外部器件便可直接與 USB 接口相連。 USB 接口電路 由于 C8051F320 微控制器具有簡單易用的特點,因此用 C8051F320 進(jìn)行 USB 接口的硬件設(shè)計也顯得十分簡單,主要包括兩部分的內(nèi)容,一是接口轉(zhuǎn)換模塊供電方式的選擇,二是 USB 引腳的連接,圖 是其 USB 接口電路圖。 J3 是設(shè)計的電路板上 USB 連接接口,通過它就可將 USB 接口和C8051F320 芯片連接起來??梢圆恍枰獠吭湍芡瓿蓴?shù)據(jù)的傳輸,它提供 8 個端點,且每個端點的傳輸類型、傳輸方向均可由設(shè)計者自由配置。 1KBFIFO 存儲器和時鐘恢復(fù)電路組成,并包含內(nèi)部匹配電阻和上拉電阻。 C8051F320 本身集成了全速 /低速 USB 功能,用于實現(xiàn) USB 接口的外部設(shè)備(但內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計 說明書(畢業(yè) 論文 ) 是 C8051F320 不能被用作 USB 主設(shè)備),它完全符合通用串行總線規(guī)范 版。 圖 USB的 A型接口封裝圖 一個帶有 USB 接口的系統(tǒng),如果相具有 USB 功能必須選擇合適的 USB 控制器,市場上供應(yīng)的 USB 控制器主要有帶 USB 接口的單片機(jī)或純粹的 USB 接口兩種芯片。上拉
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1