那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于AT89C52單片機和接口芯片實現USB接口的應用設計

電子設計 ? 來源:微計算機信息 ? 作者:馬軍;李玉林 ? 2021-05-25 10:49 ? 次閱讀

USB是一種新型的通用串行總線,它具有即插即用、可熱插拔和傳輸速率高的特點,在工業界已經獲得了廣泛的支持和應用。迄今為止,各種USB的外設已有上千種,除了象顯卡這種需要極高數據量和實時性要求特別高的控制設備,幾乎所有的PC外設都可以移植到USB上來。

一般的USB設備都使用一片微控制器作為其核心部件,通過微控制器強火的控制和運算功能,開發者可以很容易地實現USB設備的智能化。而嵌入式設備的實時、小巧等特性使得USB的協議棧和總線驅動的開發設計顯得尤為重要,因為它的好壞會直接對USB主機產生影響,從而會對嵌入式系統性能和穩定產生較大影響。本文以PDIUSBD12為USB接口芯片,以AT89C52為控制器,給出了一種USB接口的設計方法。

1 PDIUSBD12芯片介紹

PHILIPS公司生產PDIUSBD12接口芯片是一款性價比很高的USB器件,它通常通過其高速并行接口進行和微控制器通信,支持本地的DMA傳輸,支持3個USB端點,其中一個端點128B容量,另外2個端點具有256B容量。該器件允許在眾多可用的微控制器中選擇最合適的系統控制器可,允許使用現存的體系結構并使設備軟件投資成本減少,是開發低成本,高效率的USB外圍設備的最佳途徑。

PDIUSBD12特性:

(1) 符合通用串行總線USB1.1版規范

(2)高性能USB接口器件集成了SIE FIFO存儲器收發器以及電壓調整器

(3) 符合大多數器件的分類規格

(4) 可與任何外部微控制器/微處理實現高速并行接口2M字節/秒

(5) 完全自治的直接內存存取DMA操作

(6) 集成320字節多結構FIFO存儲器

(7) 主端點的雙緩沖配置增加了數據吞吐量并輕松實現實時數據傳輸

(8) 在批量模式和同步模式下均可實現1M字節/秒的數據傳輸速率

(9) 具有良好EMI特性的總線供電能力

(10) 在掛起時可控制LazyClock輸出

(11) 可通過軟件控制與USB的連接

(12) 采用GoodLink技術的連接指示器,在通信時使LED閃爍

(13) 可編程時鐘頻率輸出

(14) 符合ACPI OnNOW和USB電源管理的要求

(15) 內部上電復位和低電壓復位電路

(16) 有SO28和TSSOP28兩種封裝

(17) 工業級操作溫度-40~+85℃

(18) 高于8kV的在片靜電防護電路減少了額外元件的費用

(19) 具有高錯誤恢復率(》99%)的全掃描設計確保了高品質

(20) 雙電源操作3.3V或擴展的5V電源,范圍為3.6~5.5V

(21) 多中斷模式實現批量和同步傳輸

2 USB通信模塊的硬件電路的設計

本系統設計采用PDIUSBD12和AT89C52配合完成通信設計。其連線圖如圖1所示。

從上圖分析知道,AT89C52和PDIUSBD12采用總線方式連接,對AT89C52來說,PDIUSBD12是一個具有8位數據總線的存儲設備。PDIUSBD12獲取USB總線數據,并對數據作相應協議處理之后以中斷的方式通知AT89C52,MCU根據相應的中斷請求往PDIUSBD12發送不同請求數據,協同實現USB設備列舉和數據傳輸。當外設經過PDIUSBD12連接到集線器后,集線器就會檢測外設的連接狀態并向主機報告,一但發現該設備,主機就會發送一系列請求給集線器,以使得集線器在主機和設備之間建立一個通信通道。然后主機試圖列舉該設備,發送設備描述符等請求可,列舉成功后,主機即可以從外設能夠被主機識別并能和主機進行通信。之后,USB總線進入數據傳輸階段。

3 USB固件程序的設計

固件是FireWare的中文意思,它實際上足單片機的程序文件,可以采用C語言或是匯編語言編寫。它的操作方式與硬件聯系緊密,包括USB設備的連接、USB協議、中斷處理等,它不是單純的軟件,而是軟件和硬件的結合,開發者需要對端口、中斷和硬件結構非常熟悉。在本系統中,當PDIUSBD12從USB接受到一個數據包,就對CPU產生一個中斷請求,CPU立即響應中斷。在ISR(中斷服務程序)中,固件讀取數據,并將數據保存值到循環數據緩沖區,隨后置柏應事件的標志位,CPU繼續前臺程序,檢測事件標志,執行完成相應的事件任務。固件程序一般放入MCU中,當把設備連接到主機上時,上位機可以發現新設備,然后建立連接。因此,編寫固件程序的一個最主要的目的就是讓Windows可以檢測和識別設備。

3.1 固件功能需求

在本系統設計中,固件程序不僅要協助USB控制芯片PDIUSBD12完成USB通信的任務,而且還要控制采集模塊和標準信號源的工作,具體包括:

(1) 應答主機列舉設備的所有請求,完成設備的列舉和重列舉過程。其中包括用軟件來模擬USB設備的斷開與從新連接,對接收到的設備包進行分析和判斷,對主機的設備請求作出適當的響應工作,直到主機對設備的配制完成。

(2) 初始化工作,這項工作有兩個方面,一是對采集模塊和信號源模塊的硬件進行初始化工作;二是對USB芯片進行初始化,設置一些特殊功能寄存器的初值,例如開或關中斷,配制I/O端口等。

(3) 當主機發送數據時,要接收數據包并解析數據包的含義,根據事先約定的協議進行相應的操作。對于采集模塊具體包括:寫入波形數據,選擇頻率,選擇幅度,選擇波形類型等。

(4) 當主機要求回傳采集到的數據時,根據設備狀態回傳數據,或者應答數據未準備好。回傳數據后,自動按照原先保存的設置初始化采集參數并啟動下一次采集,從而使采集繼續下去。

(5) 響應硬件產生的中斷,并作出相應的處理。

單片機與PDIUSBD12的通信主要是靠單片機給PDIUSBD12發命令和數據來實現的。PDIUSBD12的命令字分為三種:初始化命令字、數據流命令字和通用命令字。PDIUSBD12數據手冊給出了各種命令的代碼和地址。單片機先給PDIUSBD12的命令地址發命令,根據不同命令的要求再發送或讀出不同的數據。

因此,可以將每種命令做成函數,用函數實現各個命令,直接調用函數即可。

固件程序流程圖如圖2所示。

其中:

TD_Init():此函數用于初始化全局狀態變量。

TD_Poll():此函數在操作外設時反復調用,用于外設功能程序代碼的執行。

TD Suspend():此函數使外設進入低功耗掛起狀態。

TD_Resume():次函數用于對外部恢復事件作出反應,并恢復處理器的正常工作狀態。

3.2 驅動程序設計

驅動程序介于硬件與上層應用軟件之間,為它們之間的通信提供橋梁。應用程序可以不必知道它想要或者正在與之通信的硬件設備的屬性,包括電氣連接,物理地址,信號種類。通信協議等,甚至應用程序可以不知道與之通信的是何種接口。這些工作全部是由各個層次的驅動程序來完成的,應用程序只需要知道設備的名稱,或是功能就可以了。在Windows中,應用程序可以通過驅動程序像操作一般文件一樣來訪問硬件設備,以實現應用層與設備的交互。與傳統PC總線(如PCI總線)設備的驅動程序相比,USB設備驅動程序從不直接與硬件對話。相反,它僅靠創建URB(USB請求塊)并把URB提交到總線驅動程序就可完成硬件操作。

USB驅動程序現在已經具有工業標準化,一般生產USB芯片的廠家已經設計好其驅動程序,在本設計中,使用了由PHILIPS公司提供的PDIUSBD12通用驅動程序D12usb.sys,即功能驅動程序。

4 結束語

PHILIPS公司的PDIUSBD12芯片及其開發環境提供了一個快速有效的開發手段,本文對USB設備端的固件和硬件設計過程以及在主機端的驅動程序和應用程序開發都作了全面詳細的介紹。給出了一個快速實現USB控制器的方法與技術,也是開發其他類似設備的參考范例。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    456

    文章

    51185

    瀏覽量

    427283
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638573
  • 接口
    +關注

    關注

    33

    文章

    8691

    瀏覽量

    151920
收藏 人收藏

    評論

    相關推薦

    什么是單片機的ADC接口

    ,簡稱ADC)接口單片機中不可或缺的一部分,它負責將模擬信號轉換為數字信號,使得單片機能夠處理來自傳感器、儀表等模擬世界的信號。本文將深入探討單片機的ADC
    的頭像 發表于 02-03 11:27 ?117次閱讀

    單片機I/O接口的傳輸方式

    單片機(Microcontroller Unit,MCU)作為嵌入式系統的核心部件,其輸入輸出(Input/Output,I/O)接口實現與外部設備數據交換的關鍵。I/O接口不僅承擔
    的頭像 發表于 02-02 15:56 ?111次閱讀

    USB Type-C接口快充協議芯片的特點與發展趨勢

    現代設備快充的核心技術之一。為了滿足用戶對充電速度和效率的需求,USB Type-C接口快充協議芯片應運而生。本文將深入分析USB Type
    的頭像 發表于 12-18 14:36 ?350次閱讀
    <b class='flag-5'>USB</b> Type-<b class='flag-5'>C</b><b class='flag-5'>接口</b>快充協議<b class='flag-5'>芯片</b>的特點與發展趨勢

    Micro USB接口USB-C的區別

    隨著科技的快速發展,USB接口已經成為我們日常生活中不可或缺的一部分。從數據傳輸到設備充電,USB接口的應用范圍越來越廣泛。Micro USB
    的頭像 發表于 11-27 09:55 ?1386次閱讀

    采用AT89C52單片機作為路燈控制系統的支路控制器

    本系統采用AT89C52單片機作為路燈控制系統的支路控制器,采用光敏二極管 檢測光強度、紅外對管檢測移動物體經過的位置等方法控制路燈按預定要求自動開關。本 系統由支路控制器改變恒流源的輸出電流,檢測
    發表于 11-24 14:37 ?0次下載

    89C52單片機控制直流24V電機輸出,數碼管顯示亂碼?

    一電子板,89C52單片機控制直流24V電機輸出,帶93C86讀取用戶數據,能正常運行,但起動10-20秒內不能控制,數碼管顯示亂碼?
    發表于 11-10 19:06

    如何實現51單片機與PC的串行通信

    51單片機與PC的串行通信是一種常見的通信方式,它允許單片機通過串行接口與PC進行數據交換。這種通信方式在嵌入式系統、工業控制、物聯網等
    的頭像 發表于 10-21 11:35 ?1288次閱讀

    usb接口與type-c接口區別

    USB接口和Type-C接口是兩種不同的數據傳輸和電源接口,它們在設計、功能和應用方面有著顯著的區別。 1. 歷史背景
    的頭像 發表于 10-10 10:22 ?4545次閱讀

    usb-c和type-c接口可以混用嗎

    USB-C和Type-C這兩個術語經常被人們交替使用,但實際上它們指的是同一種接口技術。USB-C是一種物理接口,而Type-
    的頭像 發表于 10-08 14:32 ?4046次閱讀

    typec接口usb接口充電快嗎

    Type-C接口USB接口在充電速度上的比較,需要考慮多個因素,包括接口的具體版本、充電器的輸出功率、設備的充電管理系統等。一般來說,Ty
    的頭像 發表于 09-02 11:15 ?4253次閱讀

    USB-C/Type-C 接口與 Lightning接口的比較

    USB-C 和 Type-C 這兩個術語經常被人們混用,但實際上它們指的是同一種技術。USB-CUSB 接口的一種物理形態,而 Typ
    的頭像 發表于 09-02 11:07 ?2331次閱讀

    CY7C68013A/CYUSB3014的GPIF接口可以連接單片機的SDIO接口嗎?

    硬件小白請教一下各位大神,單片機沒有自帶USB接口,高速接口只有SDIO 3.0的情況下,有辦法通過68013或者3014來對接上位
    發表于 07-03 16:46

    基于AT89C52的多功能數字時鐘系統

    本設計基于單片機技術原理,以單片機芯片AT89C52作為核心控制器、通過硬件電路的制作以及軟件程序的編制,設計了多功能數字時鐘系統[1]。該時鐘系統主要由液晶顯示模塊以及按鍵控制模塊組成。系統具有
    發表于 06-15 11:26 ?2次下載

    基于單片機多功能洗衣控制

    需注意仿真中51單片機芯片是兼容的,AT89C51,AT89C52是51單片機的具體型號,內核是一樣的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,
    發表于 03-18 10:13 ?843次閱讀
    基于<b class='flag-5'>單片機</b>多功能洗衣<b class='flag-5'>機</b>控制

    usb-c接口是什么意思 usbc接口和usba接口區別

    USB-C接口是一種通用的連接標準,可以通過單個接口實現多種功能,如數據傳輸、充電、視頻輸出等。USB-C接口采用了更小、更便捷的設計,因此
    的頭像 發表于 02-20 16:30 ?1.7w次閱讀
    百家乐官网有不有作弊| 赌博药| 防伪百家乐筹码币套装| 麻将百家乐筹码| 海南太阳城大酒店| 漠河县| 线上百家乐官网技巧| 百家乐打庄技巧| 百家乐技巧秘| 蜀都棋牌游戏大厅| 澳门百家乐官网怎样下注| 百家乐官网强弱走势图| 娱乐城百家乐技巧| 网页百家乐官网游戏| 横峰县| 澳门百家乐官网然后赢| 百家乐如何必胜| 迪威百家乐娱乐| 威尼斯人娱乐城求助| 大发888备用网| 大发888娱乐场游戏| 太阳城ktv团购| 百家乐官网预测和局| 百樂坊百家乐官网的玩法技巧和规则| 百家乐注码技术打法| 金城百家乐买卖路| 新葡京娱乐城官方网站| 可以玩百家乐官网的博彩网站| 博马百家乐娱乐城| 大发888赌场娱乐网规则| 松桃| 神州百家乐官网的玩法技巧和规则 | 乐天堂百家乐官网娱乐平台| 百家乐官网里靴是什么意识| 阳宅24方位座向| 百家乐怎样玩的| 澳门赌场有老千| 壤塘县| 澳门百家乐玩大小| 百家乐桌子轮盘| 威尼斯人娱乐城轮盘|