亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

無(wú)線通信領(lǐng)域

  • SCN2681 SCN68681和SCC2691數據通信

    這份SCN2681 / SCN68681和SCC2691數據通信應用規格書包含了一些用戶最常提出的問題的解答,本文共分三個主要部分:三個器件共有的功能;SCN2681 / SCN68681特有的功能;以及使用樂器數字接口(MIDI)的SCC2691的典型應用。

    標簽: SCN 68681 2681 2691

    上傳時間: 2013-10-13

    上傳用戶:朗朗乾坤

  • P89LPC901實現ADC DAC及UART通信

    LPC900 系列單片機由于其功能強大,性能穩定一直深受用戶歡迎。P89LPC901 是LPC900 系列單片機的一員,性價比極高,為SO8/DIP8 封裝,內含1KB FLASH,支持ICP,且具有6 個I/O 口、4 個TIMER、1 路PWM 輸出、模擬比較器、鍵盤中斷等眾多功能部件。本文利用LPC901 單片機的強大功能實現ADC/DAC,并且通過模擬UART 與PC 機進行通信;通過PC 端軟件可以顯示DA 轉換結果及控制DA 輸出電壓。

    標簽: UART P89 LPC 901

    上傳時間: 2013-11-06

    上傳用戶:shus521

  • 基于AT89C51應用系統的串行通信設計

    基于AT89C51應用系統的串行通信設計:介紹了基于AT89C51應用系統中的串行通信軟硬件設計方法和實現過程,在基于紅外成像技術的電力設備狀態檢測系統中,將紅外測溫儀檢測到設備的溫度數據傳給控制電路,進行數據格式的轉換后,在RAM 中存儲,同時上傳給PC機。系統利用MAX232實現RS 232C的EIA 電平與單片機的TTI 電平之聞轉換,利用通用串口芯片8251A擴展串行接13',實現PC機與單片機之問的串行通信。 關鍵詞:串行通信;單片機;接口;RS232C

    標簽: 89C C51 AT 89

    上傳時間: 2014-12-21

    上傳用戶:aeiouetla

  • CAN通信實驗報文對象的FIFO緩沖器應用

    關鍵詞 CAN報文對象的FIFO模式應用摘 要 CAN通信實驗

    標簽: FIFO CAN 通信 實驗

    上傳時間: 2013-11-03

    上傳用戶:kernor

  • MSP430系列單片機C語言程序設計與開發

    MSP430系列單片機C語言程序設計與開發MSP430系列是一個具有明顯技術特色的單片機品種。關于它的硬件特性及匯編語言程序設計已在《MSP430系列超低功耗16位單片機的原理與應用》及《MSP430系列 FLASH型超低功耗16位單片機》等書中作了全面介紹。《MSP430系列單片機C語言程序設計與開發》介紹IAR公司為MSP430系列單片機配備的C程序設計語言C430。書中敘述了C語言的基本概念、C430的擴展特性及C庫函數;對C430的集成開發環境的使用及出錯信息作了詳盡的說明;并以MSP430F149為例,對各種應用問題及外圍模塊操作提供了典型的C程序例程,供讀者在今后的C430程序設計中參考。   《MSP430系列單片機C語言程序設計與開發》可以作為高等院校計算機、自動化及電子技術類專業的教學參考書,也可作為工程技術人員設計開發時的技術資料。MSP430系列超低功耗16位單片機的原理與應用目錄MSP430系列單片機C語言程序設計與開發 目錄  第1章 C語言基本知識1.1 標識符與關鍵字11.1.1 標識符11.1.2 關鍵字11.2 數據基本類型21.2.1 整型數據21.2.2 實型數據31.2.3 字符型數據41.2.4 各種數據轉換關系61.3 C語言的運算符71.3.1 算術運算符71.3.2 關系運算符和邏輯運算符71.3.3 賦值運算符81.3.4 逗號運算符81.3.5 ? 與 :運算符81.3.6 強制轉換運算符91.3.7 各種運算符優先級列表91.4 程序設計的三種基本結構101.4.1 語句的概念101.4.2 順序結構111.4.3 選擇結構121.4.4 循環結構141.5 函數181.5.1 函數定義181.5.2 局部變量與全局變量191.5.3 形式參數與實際參數201.5.4 函數調用方式201.5.5 函數嵌套調用211.5.6 變量的存儲類別221.5.7 內部函數和外部函數231.6 數組231.6.1 一維數組241.6.2 多維數組241.6.3 字符數組261.7 指針271.7.1 指針與地址的概念271.7.2 指針變量的定義281.7.3 指針變量的引用281.7.4 數組的指針281.7.5 函數的指針301.7.6 指針數組311.8 結構和聯合321.8.1 結構定義321.8.2 結構類型變量的定義331.8.3 結構類型變量的初始化341.8.4 結構類型變量的引用341.8.5 聯合341.9 枚舉361.9.1 枚舉的定義361.9.2 枚舉元素的值371.9. 3 枚舉變量的使用371.10 類型定義381.10.1 類型定義的形式381.10.2 類型定義的使用381.11 位運算391.11.1 位運算符391.11.2 位域401.12 預處理功能411.12.1 簡單宏定義和帶參數宏定義411.12.2 文件包含431.12.3 條件編譯命令44第2章 C430--MSP430系列的C語言2.1 MSP430系列的C語言452.1.1 C430概述452.1.2 C430程序設計工作流程462.1.3 開始462.1.4 C430程序生成472.2 C430的數據表達482.2.1 數據類型482.2.2 編碼效率502.3 C430的配置512.3.1 引言512.3. 2 存儲器分配522.3.3 堆棧體積522.3.4 輸入輸出522.3.5 寄存器的訪問542.3.6 堆體積542.3.7 初始化54第3章 C430的開發調試環境3.1 引言563.1.1 Workbench特性563.1.2 Workbench的內嵌編輯器特性563.1.3 C編譯器特性573.1. 4 匯編器特性573.1.5 連接器特性583.1.6 庫管理器特性583.1.7 C?SPY調試器特性593.2 Workbench概述593.2.1 項目管理模式593.2.2 選項設置603.2.3 建立項目603.2.4 測試代碼613.2.5 樣本應用程序613.3 Workbench的操作623.3.1 開始633.3.2 編譯項目683.3.3 連接項目693.3.4 調試項目713.3.5 使用Make命令733.4 Workbench的功能匯總753.4.1 Workbench的窗口753.4.2 Workbench的菜單功能813.5 Workbench的內嵌編輯器993.5.1 內嵌編輯器操作993.5.2 編輯鍵說明993.6 C?SPY概述1013.6.1 C?SPY的C語言級和匯編語言級調試1013.6.2 程序的執行1023.7 C?SPY的操作1033.7.1 程序生成1033.7.2 編譯與連接1033.7.3 C?SPY運行1033.7.4 C語言級調試1043.7.5 匯編級調試1113.8 C?SPY的功能匯總1133.8.1 C?SPY的窗口1133.8.2 C?SPY的菜單命令功能1203.9 C?SPY的表達式與宏1323.9.1 匯編語言表達式1323.9.2 C語言表達式1333.9.3 C?SPY宏1353.9.4 C?SPY的設置宏1373.9.5 C?SPY的系統宏137 第4章 C430程序設計實例4.1 程序設計與調試環境1434.1.1 程序設計調試集成環境1434.1.2 設備連接1444.1.3 ProF149實驗系統1444.2 數值計算1454.2.1 C語言表達式1454.2.2 利用MPY實現運算1464.3 循環結構1474.4 選擇結構1484.5 SFR訪問1494.6 RAM訪問1504.7 FLASH訪問1514.8 WDT操作1534.8. 1 WDT使程序自動復位1534.8.2 程序對WATCHDOG計數溢出的控制1544.8.3 WDT的定時器功能1554.9 Timer操作1554.9.1 用Timer產生時鐘信號1554.9.2 用Timer檢測脈沖寬度1564.10 UART操作1574.10.1 點對點通信1574.10.2 點對多點通信1604.11 SPI操作1634.12 比較器操作1654.13 ADC12操作1674.13.1 單通道單次轉換1674.13.2 序列通道多次轉換1684.14 時鐘模塊操作1704.15 中斷服務程序1714.16 省電工作模式1754.17 調用匯編語言子程序1764.17.1 程序舉例1764.17.2 生成C程序調用的匯編子程序177第5章 C430的擴展特性5.1 C430的語言擴展概述1785.1.1 擴展關鍵字1785.1.2 #pragma編譯命令1785.1.3 預定義符號1795.1.4 本征函數1795.1.5 其他擴展特性1795.2 C430的關鍵字擴展1795.2.1 interrupt1805.2.2 monitor1805.2.3 no_init1815.2.4 sfrb1815.2.5 sfrw1825.3 C430的 #pragma編譯命令1825.3.1 bitfields=default1825.3.2 bitfields=reversed1825.3.3 codeseg1835.3.4 function=default1835.3.5 function=interrupt1845.3.6 function=monitor1845.3.7 language=default1845.3.8 language=extended1845.3.9 memory=constseg1855.3.10 memory=dataseg1855.3.11 memory=default1855.3.12 memory=no_init1865.3.13 warnings=default1865.3.14 warnings=off1865.3.15 warnings=on1865.4 C430的預定義符號1865.4.1 DATE1875.4.2 FILE1875.4.3 IAR_SYSTEMS_ICC1875.4.4 LINE1875.4.5 STDC1875.4.6 TID1875.4.7 TIME1885.4.8 VER1885.5 C430的本征函數1885.5.1 _args$1885.5.2 _argt$1895.5.3 _BIC_SR1895.5.4 _BIS_SR1905.5.5 _DINT1905.5.6 _EINT1905.5.7 _NOP1905.5.8 _OPC1905.6 C430的匯編語言接口1915.6.1 創建匯編子程序框架1915.6.2 調用規則1915.6.3 C程序調用匯編子程序1935.7 C430的段定義1935.7.1 存儲器分布與段定義1945.7.2 CCSTR段1945.7.3 CDATA0段1945.7.4 CODE段1955.7.5 CONST1955.7.6 CSTACK1955.7.7 CSTR1955.7.8 ECSTR1955.7.9 IDATA01965.7.10 INTVEC1965.7.11 NO_INIT1965.7.12 UDATA0196第6章 C430的庫函數6.1 引言1976.1.1 庫模塊文件1976.1.2 頭文件1976.1.3 庫定義匯總1976.2C 庫函數參考2046.2.1 C庫函數的說明格式2046.2.2 C庫函數說明204第7章 C430編譯器的診斷消息7.1 編譯診斷消息的類型2307.2 編譯出錯消息2317.3 編譯警告消息243附錄 AMSP430系列FLASH型芯片資料248附錄 BProF149實驗系統251附錄 CMSP430x14x.H文件253附錄 DIAR MSP430 C語言產品介紹275

    標簽: MSP 430 C語言 單片機

    上傳時間: 2014-05-05

    上傳用戶:253189838

  • EZ-USB FX系列單片機USB外圍設備設計與應用

    EZ-USB FX系列單片機USB外圍設備設計與應用:PART 1 USB的基本概念第1章 USB的基本特性1.1 USB簡介21.2 USB的發展歷程31.2.1 USB 1.131.2.2 USB 2.041.2.3 USB與IEEE 1394的比較41.3 USB基本架構與總線架構61.4 USB的總線結構81.5 USB數據流的模式與管線的概念91.6 USB硬件規范101.6.1 USB的硬件特性111.6.2 USB接口的電氣特性121.6.3USB的電源管理141.7 USB的編碼方式141.8 結論161.9 問題與討論16第2章 USB通信協議2.1 USB通信協議172.2 USB封包中的數據域類型182.2.1 數據域位的格式182.3 封包格式192.4 USB傳輸的類型232.4.1 控制傳輸242.4.2 中斷傳輸292.4.3 批量傳輸292.4.4 等時傳輸292.5 USB數據交換格式302.6 USB描述符342.7 USB設備請求422.8 USB設備群組442.9 結論462.10 問題與討論46第3章 設備列舉3.1注冊表編輯器473.2設備列舉的步驟493.3設備列舉步驟的實現--使用CATC分析工具513.4結論613.5問題與討論61第4章 USB芯片與EZUSB4.1USB芯片的簡介624.2USB接口芯片644.2.1Philips接口芯片644.2.2National Semiconductor接口芯片664.3內含USB單元的微處理器684.3.1Motorola694.3.2Microchip694.3.3SIEMENS704.3.4Cypress714.4USB芯片總攬介紹734.5USB芯片的選擇與評估744.6問題與討論80第5章 設備與驅動程序5.1階層式的驅動程序815.2主機的驅動程序835.3驅動程序的選擇865.4結論865.5問題與討論87第6章 HID群組6.1HID簡介886.2HID群組的傳輸速率886.3HID描述符906.3.1報告描述符936.3.2主要 main 項目類型966.3.3整體 global 項目卷標976.3.4區域 local 項目卷標986.3.5簡易的報告描述符996.3.6Descriptor Tool 描述符工具 1006.3.7兼容測試程序1016.4HID設備的基本請求1026.5Windows通信程序1036.6問題與討論106PART 2 硬件技術篇第7章 EZUSB FX簡介7.1簡介1097.2EZUSB FX硬件框圖1097.3封包與PID碼1117.4主機是個主控者1137.4.1從主機接收數據1137.4.2傳送數據至主機1137.5USB方向1137.6幀1147.7EZUSB FX傳輸類型1147.7.1批量傳輸1147.7.2中斷傳輸1147.7.3等時傳輸1157.7.4控制傳輸1157.8設備列舉1167.9USB核心1167.10EZUSB FX單片機1177.11重新設備列舉1177.12EZUSB FX端點1187.12.1EZUSB FX批量端點1187.12.2EZUSB FX控制端點01187.12.3EZUSB FX中斷端點1197.12.4EZUSB FX等時端點1197.13快速傳送模式1197.14中斷1207.15重置與電源管理1207.16EZUSB 2100系列1207.17FX系列--從FIFO1227.18FX系列--GPIF 通用型可程序化的接口 1227.19AN2122/26各種特性的摘要1227.20修訂ID1237.21引腳描述123第8章 EZUSB FX CPU8.1簡介1308.28051增強模式1308.3EZUSB FX所增強的部分1318.4EZUSB FX寄存器接口1318.5EZUSB FX內部RAM1318.6I/O端口1328.7中斷1328.8電源控制1338.9特殊功能寄存器 SFR 1348.10內部總線1358.11重置136第9章 EZUSB FX內存9.1簡介1379.28051內存1389.3擴充的EZUSB FX內存1399.4CS#與OE#信號1409.5EZUSB FX ROM版本141第10章 EZUSB FX輸入/輸出端口10.1簡介14310.2I/O端口14310.3EZUSB輸入/輸出端口寄存器14610.3.1端口配置寄存器14710.3.2I/O端口寄存器14710.4EZUSB FX輸入/輸出端口寄存器14910.5EZUSB FX端口配置表15110.6I2C控制器15610.78051 I2C控制器15610.8控制位15810.8.1START位15810.8.2STOP位15810.8.3LASTRD位15810.9狀態位15910.9.1DONE位15910.9.2ACK位15910.9.3BERR位15910.9.4ID1, ID015910.10送出 WRITE I2C數據16010.11接收 READ I2C數據16010.12I2C激活加載器16010.13SFR尋址 FX 16210.14端口A~E的SFR控制165第11章 EZUSB FX設備列舉與重新設備列舉11.1簡介16711.2預設的USB設備16911.3USB核心對于EP0設備請求的響應17011.4固件下載17111.5設備列舉模式17211.6沒有存在EEPROM17311.7存在著EEPROM, 第一個字節是0xB0 0xB4, FX系列11.8存在著EEPROM, 第一個字節是0xB2 0xB6, FX系列11.9配置字節0,FX系列17711.10重新設備列舉 ReNumerationTM 17811.11多重重新設備列舉 ReNumerationTM 17911.12預設描述符179第12章 EZUSB FX批量傳輸12.1簡介18812.2批量輸入傳輸18912.3中斷傳輸19112.4EZUSB FX批量IN的例子19112.5批量OUT傳輸19212.6端點對19412.7IN端點對的狀態19412.8OUT端點對的狀態19512.9使用批量緩沖區內存19512.10Data Toggle控制19612.11輪詢的批量傳輸的范例19712.12設備列舉說明19912.13批量端點中斷19912.14中斷批量傳輸的范例20112.15設備列舉說明20512.16自動指針器205第13章 EZUSB控制端點013.1簡介20913.2控制端點EP021013.3USB請求21213.3.1取得狀態 Get_Status 21413.3.2設置特性(Set_Feature)21713.3.3清除特性(Clear_Feature)21813.3.4取得描述符(Get_Descriptor)21913.3.5設置描述符(Set Descriptor)22313.3.6設置配置(Set_Configuration)22513.3.7取得配置(Get_Configuration)22513.3.8設置接口(Set_Interface)22513.3.9取得接口(Get_Interface)22613.3.10設置地址(Set_Address)22713.3.11同步幀22713.3.12固件加載228第14章 EZUSB FX等時傳輸14.1簡介22914.2等時IN傳輸23014.2.1初始化設置23014.2.2IN數據傳輸23014.3等時OUT傳輸23114.3.1初始化設置23114.3.2數據傳輸23214.4設置等時FIFO的大小23214.5等時傳輸速度23414.5.1EZUSB 2100系列23414.5.2EZUSB FX系列23514.6快速傳輸 僅存于2100系列 23614.6.1快速寫入23614.6.2快速讀取23714.7快速傳輸的時序 僅存于2100系列 23714.7.1快速寫入波形23814.7.2快速讀取波形23914.8快速傳輸速度(僅存于2100系列)23914.9其余的等時寄存器24014.9.1除能等時寄存器24014.9.20字節計數位24114.10以無數據來響應等時IN令牌24214.11使用等時FIFO242第15章 EZUSB FX中斷15.1簡介24315.2USB核心中斷24415.3喚醒中斷24415.4USB中斷信號源24515.5SUTOK與SUDAV中斷24815.6SOF中斷24915.7中止 suspend 中斷24915.8USB重置中斷24915.9批量端點中斷25015.10USB自動向量25015.11USB自動向量譯碼25115.12I2C中斷25215.13IN批量NAK中斷 僅存于AN2122/26與FX系列 25315.14I2C STOP反相中斷 僅存于AN2122/26與FX系列 25415.15從FIFO中斷 INT4 255第16章 EZUSB FX重置16.1簡介25716.2EZUSB FX打開電源重置 POR 25716.38051重置的釋放25916.3.1RAM的下載26016.3.2下載EEPROM26016.3.3外部ROM26016.48051重置所產生的影響26016.5USB總線重置26116.6EZUSB脫離26216.7各種重置狀態的總結263第17章 EZUSB FX電源管理17.1簡介26517.2中止 suspend 26617.3回復 resume 26717.4遠程喚醒 remote wakeup 269第18章 EZUSB FX系統18.1簡介27118.2DMA寄存器描述27218.2.1來源. 目的. 傳輸長度地址寄存器27218.2.2DMA起始與狀態寄存器27518.2.3DMA同步突發使能寄存器27518.2.4虛擬寄存器27818.3RD/FRD與WR/FWR DMA閃控的選擇27818.4DMA閃控波形與延伸位的交互影響27918.4.1DMA外部寫入27918.4.2DMA外部讀取280第19章 EZUSB FX寄存器19.1簡介28219.2批量數據緩沖區寄存器28319.3等時數據FIFO寄存器28419.4等時字節計數寄存器28519.5CPU寄存器28719.6I/O端口配置寄存器28819.7I/O端口A~C輸入/輸出寄存器28919.8230 Kbaud UART操作--AN2122/26寄存器29119.9等時控制/狀態寄存器29119.10I2C寄存器29219.11中斷29419.12端點0控制與狀態寄存器29919.13端點1~7的控制與狀態寄存器30019.14整體USB寄存器30519.15快速傳輸30919.16SETUP數據31119.17等時FIFO的容量大小31119.18通用I/F中斷使能31219.19通用中斷請求31219.20輸入/輸出端口寄存器D與E31319.20.1端口D輸出31319.20.2輸入端口D腳位31319.20.3端口D輸出使能31319.20.4端口E輸出31319.20.5輸入端口E腳位31419.20.6端口E輸出使能31419.21端口設置31419.22接口配置31419.23端口A與端口C切換配置31619.23.1端口A切換配置#231619.23.2端口C切換配置#231719.24DMA寄存器31919.24.1來源. 目的. 傳輸長度地址寄存器31919.24.2DMA起始與狀態寄存器32019.24.3DMA同步突發使能寄存器32019.24.4選擇8051 A/D總線作為外部FIFO321PART 3 固件技術篇第20章 EZUSB FX固件架構與函數庫20.1固件架構總覽32320.2固件架構的建立32520.3固件架構的副函數鉤子32520.3.1工作分配器32620.3.2設備請求 device request 32620.3.3USB中斷服務例程32920.4固件架構整體變量33220.5描述符表33320.5.1設備描述符33320.5.2配置描述符33420.5.3接口描述符33420.5.4端點描述符33520.5.5字符串描述符33520.5.6群組描述符33520.6EZUSB FX固件的函數庫33620.6.1包含文件 *.H 33620.6.2子程序33620.6.3整體變量33820.7固件架構的原始程序代碼338第21章 EZUSB FX固件范例程序21.1范例程序的簡介34621.2外圍I/O測試程序34721.3端點對, EP_PAIR范例35221.4批量測試, BulkTest范例36221.5等時傳輸, ISOstrm范例36821.6問題與討論373PART 4 實驗篇第22章 EZUSB FX仿真器22?1簡介37522?2所需的工具37622?3EZUSB FX框圖37722.4EZUSB最終版本的系統框圖37822?5第一次下載程序37822.6EZUSB FX開發系統框圖37922.7設置開發環境38022.8EZUSB FX開發工具組的內容38122.9EZUSB FX開發工具組軟件38222.9.1初步安裝程序38222.9.2確認主機 個人計算機 是否支持USB38222.10安裝EZUSB控制平臺. 驅動程序以及文件38322.11EZUSB FX開發電路板38522.11.1簡介38522.11.2開發電路板的瀏覽38522.11.3所使用的8051資源38622.11.4詳細電路38622.11.5LED的顯示38722.11.6Jumper38722.11.7連接器39122.11.8內存映象圖39222.11.9PLD信號39422.11.10PLD源文件文件39522.11.11雛形板的擴充連接器P1~P639722.11.12Philips PCF8574 I/O擴充IC40022.12DMA USB FX I/O LAB開發工具介紹40122.12.1USBFX簡介40122.12.2USBFX及外圍整體環境介紹40322?12?3USBFX與PC連接軟件介紹40422.12.4USBFX硬件功能介紹404第23章 LED顯示器輸出實驗23.1硬件設計與基本概念40923.2固件設計41023.3.1固件架構文件FW.C41123.3.2描述符文件DESCR.A5141223.3.3外圍接口文件PERIPH.C41723.4固件程序代碼的編譯與鏈接42123.5Windows程序, VB設計42323.6INF文件的編寫設計42423.7結論42623.8問題與討論427第24章 七段顯示器與鍵盤的輸入/輸出實驗24.1硬件設計與基本概念42824.2固件設計43124.2.1七段顯示器43124.2.24×4鍵盤掃描43324.3固件程序代碼的編譯與鏈接43424.4Windows程序, VB設計43624.5問題與討論437第25章 LCD文字型液晶顯示器輸出實驗25.1硬件設計與基本概念43825.1.1液晶顯示器LCD43825.2固件設計45225.3固件程序代碼的編譯與鏈接45625.4Windows程序, VB設計45725.5問題與討論458第26章 LED點陣輸出實驗26.1硬件設計與基本概念45926.2固件設計46326.3固件程序代碼的編譯與鏈接46326.4Windows程序, VB設計46526.5問題與討論465第27章 步進電機輸出實驗27.1硬件設計與基本概念46627.1.11相激磁46727.1.22相激磁46727.1.31-2相激磁46827?1?4PMM8713介紹46927.2固件設計47327.3固件程序代碼的編譯與鏈接47427.4Windows程序, VB設計47627.5問題與討論477第28章 I2C接口輸入/輸出實驗28.1硬件設計與基本概念47828.2固件設計48128.3固件程序代碼的編譯與鏈接48328.4Windows程序, VB設計48428.5問題與討論485第29章 A/D轉換器與D/A轉換器的輸入/輸出實驗29.1硬件設計與基本概念48629.1.1A/D轉換器48629.1.2D/A轉換器49029.2固件設計49329.2.1A/D轉換器的固件設計49329.2.2D/A轉換器的固件設計49629.3固件程序代碼的編譯與鏈接49729.4Windows程序, VB設計49829.5問題與討論499第30章 LCG繪圖型液晶顯示器輸出實驗30.1硬件設計與基本概念50030.1.1繪圖型LCD50030.1.2繪圖型LCD控制指令集50330.1.3繪圖型LCD讀取與寫入時序圖50530.2固件設計50630.2.1LCG驅動程序50630.2.2USB固件碼51330.3固件程序代碼的編譯與鏈接51630.4Windows程序, VB設計51730.5問題與討論518附錄A Cypress控制平臺的操作A.1EZUSB控制平臺總覽519A.2主畫面520A.3熱插拔新的USB設備521A.4各種工具欄的使用524A.5故障排除526A.6控制平臺的進階操作527A.7測試Unary Op工具欄上的按鈕功能528A.8測試制造商請求的工具欄 2100 系列的開發電路板 529A.9測試等時傳輸工具欄532A.10測試批量傳輸工具欄533A.11測試重置管線工具欄535A.12測試設置接口工具欄537A.13測試制造商請求工具欄 FX系列開發電路板A.14執行Get Device Descriptor 操作來驗證開發板的功能是否正確539A.15從EZUSB控制平臺中, 加載dev_io的范例并且加以執行540A.16從Keil偵錯應用程序中, 加載dev_io范例程序代碼, 然后再加以執行542A.17將dev_io 目標文件移開, 且使用Keil IDE 集成開發環境 來重建545A.18在偵錯器下執行dev_io目標文件, 并且使用具有偵錯能力的IDE547A.19在EZUSB控制平臺下, 執行ep_pair目標文件A.20如何修改fw范例, 并在開發電路板上產生等時傳輸550附錄BEZUSB 2100系列及EZUSB FX系列引腳表B.1EZUSB 2100系列引腳表555B?2EZUSB FX系列引腳圖表561附錄C EZUSB FX寄存器總覽附錄D EEPROM燒錄方式

    標簽: EZ-USB USB 單片機 外圍設備

    上傳時間: 2013-11-21

    上傳用戶:努力努力再努力

  • PC機與單片機通信實例-表決器

    PC機與單片機通信實例:表決器單片機要同時處理很多部分的功能,如:按鍵處理、LED處理、通信處理等。而單片機程序是串行執行的。如何讓眾多任務同時進行或者看起來同時進行?并行:真正意義上的同時進行。并發:宏觀上是同時的,而在微觀上是輪流進行的。即看起來是同時進行的。例如:面前的CRT顯示器,電子束是逐點順序點亮熒光屏上的像素。由于點亮的速度足夠快,很短時間便可掃過整個屏幕,以致于在宏觀上看,所有的像素都是同時刷新的。

    標簽: PC機與單片機 通信 表決器

    上傳時間: 2013-10-28

    上傳用戶:spman

  • PC機之間串口通信的實現

    PC機之間串口通信的實現一、實驗目的 1.熟悉微機接口實驗裝置的結構和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.學會串行通信程序的編制方法。 二、實驗內容與要求 1.基本要求主機接收開關量輸入的數據(二進制或十六進制),從鍵盤上按“傳輸”鍵(可自行定義),就將該數據通過8251A傳輸出去。終端接收后在顯示器上顯示數據。具體操作說明如下:(1)出現提示信息“start with R in the board!”,通過調整乒乓開關的狀態,設置8位數據;(2)在小鍵盤上按“R”鍵,系統將此時乒乓開關的狀態讀入計算機I中,并顯示出來,同時顯示經串行通訊后,計算機II接收到的數據;(3)完成后,系統提示“do you want to send another data? Y/N”,根據用戶需要,在鍵盤按下“Y”鍵,則重復步驟(1),進行另一數據的通訊;在鍵盤按除“Y”鍵外的任意鍵,將退出本程序。2.提高要求 能夠進行出錯處理,例如采用奇偶校驗,出錯重傳或者采用接收方回傳和發送方確認來保證發送和接收正確。 三、設計報告要求 1.設計目的和內容 2.總體設計 3.硬件設計:原理圖(接線圖)及簡要說明 4.軟件設計框圖及程序清單5.設計結果和體會(包括遇到的問題及解決的方法) 四、8251A通用串行輸入/輸出接口芯片由于CPU與接口之間按并行方式傳輸,接口與外設之間按串行方式傳輸,因此,在串行接口中,必須要有“接收移位寄存器”(串→并)和“發送移位寄存器”(并→串)。能夠完成上述“串←→并”轉換功能的電路,通常稱為“通用異步收發器”(UART:Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251。8251A異步工作方式:如果8251A編程為異步方式,在需要發送字符時,必須首先設置TXEN和CTS#為有效狀態,TXEN(Transmitter Enable)是允許發送信號,是命令寄存器中的一位;CTS#(Clear To Send)是由外設發來的對CPU請求發送信號的響應信號。然后就開始發送過程。在發送時,每當CPU送往發送緩沖器一個字符,發送器自動為這個字符加上1個起始位,并且按照編程要求加上奇/偶校驗位以及1個、1.5個或者2個停止位。串行數據以起始位開始,接著是最低有效數據位,最高有效位的后面是奇/偶校驗位,然后是停止位。按位發送的數據是以發送時鐘TXC的下降沿同步的,也就是說這些數據總是在發送時鐘TXC的下降沿從8251A發出。數據傳輸的波特率取決于編程時指定的波特率因子,為發送器時鐘頻率的1、1/16或1/64。當波特率指定為16時,數據傳輸的波特率就是發送器時鐘頻率的1/16。CPU通過數據總線將數據送到8251A的數據輸出緩沖寄存器以后,再傳輸到發送緩沖器,經移位寄存器移位,將并行數據變為串行數據,從TxD端送往外部設備。在8251A接收字符時,命令寄存器的接收允許位RxE(Receiver Enable)必須為1。8251A通過檢測RxD引腳上的低電平來準備接收字符,在沒有字符傳送時RxD端為高電平。8251A不斷地檢測RxD引腳,從RxD端上檢測到低電平以后,便認為是串行數據的起始位,并且啟動接收控制電路中的一個計數器來進行計數,計數器的頻率等于接收器時鐘頻率。計數器是作為接收器采樣定時,當計數到相當于半個數位的傳輸時間時再次對RxD端進行采樣,如果仍為低電平,則確認該數位是一個有效的起始位。若傳輸一個字符需要16個時鐘,那么就是要在計數8個時鐘后采樣到低電平。之后,8251A每隔一個數位的傳輸時間對RxD端采樣一次,依次確定串行數據位的值。串行數據位順序進入接收移位寄存器,通過校驗并除去停止位,變成并行數據以后通過內部數據總線送入接收緩沖器,此時發出有效狀態的RxRDY信號通知CPU,通知CPU8251A已經收到一個有效的數據。一個字符對應的數據可以是5~8位。如果一個字符對應的數據不到8位,8251A會在移位轉換成并行數據的時候,自動把他們的高位補成0。 五、系統總體設計方案根據系統設計的要求,對系統設計的總體方案進行論證分析如下:1.獲取8位開關量可使用實驗臺上的8255A可編程并行接口芯片,因為只要獲取8位數據量,只需使用基本輸入和8位數據線,所以將8255A工作在方式0,PA0-PA7接實驗臺上的8位開關量。2.當使用串口進行數據傳送時,雖然同步通信速度遠遠高于異步通信,可達500kbit/s,但由于其需要有一個時鐘來實現發送端和接收端之間的同步,硬件電路復雜,通常計算機之間的通信只采用異步通信。3.由于8251A本身沒有時鐘,需要外部提供,所以本設計中使用實驗臺上的8253芯片的計數器2來實現。4:顯示和鍵盤輸入均使用DOS功能調用來實現。設計思路框圖,如下圖所示: 六、硬件設計硬件電路主要分為8位開關量數據獲取電路,串行通信數據發送電路,串行通信數據接收電路三個部分。1.8位開關量數據獲取電路該電路主要是利用8255并行接口讀取8位乒乓開關的數據。此次設計在獲取8位開關數據量時采用8255令其工作在方式0,A口輸入8位數據,CS#接實驗臺上CS1口,對應端口為280H-283H,PA0-PA7接8個開關。2.串行通信電路串行通信電路本設計中8253主要為8251充當頻率發生器,接線如下圖所示。

    標簽: PC機 串口通信

    上傳時間: 2013-12-19

    上傳用戶:小火車啦啦啦

  • 驅動程序與應用程序的接口

    有兩種方式可以讓設備和應用程序之間聯系:1. 通過為設備創建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調用設備。在某個Win32 APIs和設備對象的分發函數之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統本調用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節查看有關Kdevice和CreateLink的內容。在上述調用中第一個參數中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設備。下面用一個小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在設備中執行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產生到設備對象的IRPs。下面的表顯示了這種對應關系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解釋一下設備類成員的Close和CleanUp:CreateFile使內核為設備創建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調用Close。如果被打開的設備不支持指定的功能,則調用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創建了一個存儲在IRP中的MDL域。一個設備可以通過調用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數。然而,存儲區并沒有被鎖住而且地址只對調用進程有效。驅動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調用,buffer參數的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數:Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數據之前拷貝輸入數據。驅動程序通過調用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統緩沖拷貝數據到提供給Ring 3級調用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數據個數。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數呈現不同的含義。參數InputBuffer被拷貝到一個系統緩沖,這個緩沖驅動程序可以通過調用KIrp::IoctlBuffer。參數OutputBuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調用KIrp::Mdl來實現。對于METHOD_OUT_DIRECT,調用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現在使用一個DeviceIoControl調用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅動程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    標簽: 驅動程序 應用程序 接口

    上傳時間: 2013-10-17

    上傳用戶:gai928943

  • 8251A可編程通信接口

    串行通信的特點串行通信是主機與外設交換信息的一種方式。串行通信中字節數據經一條傳輸線按位串行發送與串行接收。串行通信節省通信線路,可遠距離傳送,成本低,廣泛應用在通信及計算機網絡系統中。串行通信中,數據傳輸速率低,控制較復雜。光纖技術的出現與發展,為串行通信開辟了美好前景。串行通信的術語全雙工、半雙工、單工全雙工: 通信雙方均有發送器和接收器,經兩條獨立的傳輸線相連, 雙方可同時接收與發送。                                      全雙工、半雙工、單工半雙工:通信雙方均有發送器和接收器,經一條傳輸線相連, 在某一時刻雙方只能一個方向傳輸信息,線路切換后可改變傳輸方向。                        全雙工、半雙工、單工單工:通信一方為發送器,另一方為接收器,一條傳輸線相連, 進行單向傳輸。同步與異步通信方式同步方式:通信雙方用統一時鐘控制通信過程,                          信息傳輸組成數據包(數據幀)。每                          幀頭尾是控制代碼,中間是數據塊,                          可有數百字節。不同的同步傳輸協                          議有不同的數據幀格式。                                     

    標簽: 8251A 可編程 通信接口

    上傳時間: 2013-11-19

    上傳用戶:wvbxj

主站蜘蛛池模板: 邓州市| 朝阳市| 进贤县| 普洱| 利辛县| 德阳市| 昆山市| 凉城县| 洪洞县| 抚州市| 遂宁市| 巴里| 咸宁市| 星座| 道孚县| 通河县| 安福县| 平阴县| 阿巴嘎旗| 桐庐县| 潮安县| 剑川县| 麟游县| 元谋县| 永清县| 杨浦区| 新安县| 临沭县| 陇西县| 渝北区| 布尔津县| 泾阳县| 江达县| 贡嘎县| 南涧| 巴东县| 家居| 宝兴县| 庄河市| 邳州市| 伊金霍洛旗|