《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種USB接口的數(shù)據(jù)采集卡的設計
一種USB接口的數(shù)據(jù)采集卡的設計
2015年微型機與應用第12期
林宏泉,秦會斌
(杭州電子科技大學 新型材料與器件研究所,浙江 杭州 310018)
摘要: 隨著電子信息技術和計算機技術的高速發(fā)展,數(shù)據(jù)采集應用越來越廣泛。提出了一種基于USB接口的數(shù)據(jù)采集卡的設計解決方案。采用PIC16F886單片機為主控制芯片,PDIUSBD12為USB的接口芯片。給出了采集卡的設計整體框圖,并介紹了采集卡的硬件電路設計以及固件程序設計。所設計的USB接口的數(shù)據(jù)采集卡電路簡單、性能穩(wěn)定,支持即插即用。
Abstract:
Key words :

  摘  要: 隨著電子信息技術和計算機技術的高速發(fā)展,數(shù)據(jù)采集應用越來越廣泛。提出了一種基于USB接口的數(shù)據(jù)采集卡的設計解決方案。采用PIC16F886單片機為主控制芯片,PDIUSBD12為USB的接口芯片。給出了采集卡的設計整體框圖,并介紹了采集卡的硬件電路設計以及固件程序設計。所設計的USB接口的數(shù)據(jù)采集卡電路簡單、性能穩(wěn)定,支持即插即用。

  關鍵詞: 數(shù)據(jù)采集;USB接口;PIC16F886;PDIUSBD12

0 引言

  工業(yè)生產(chǎn)和科研領域往往都需要對重要數(shù)據(jù)進行采集,為提高產(chǎn)品質(zhì)量、降低成本提供信息和手段[1]。隨著計算機外部設備的普及,微機技術和電子信息技術的快速發(fā)展不斷對數(shù)據(jù)采集系統(tǒng)提出新的要求。基于傳統(tǒng)總線的采集卡存在的安裝繁瑣、傳輸速率低、可掛載的設備少等問題,制約著數(shù)據(jù)采集系統(tǒng)的發(fā)展。由于USB總線在支持即插即用、數(shù)據(jù)傳輸快、性價比高等方面具有優(yōu)勢,本文提出了一種USB接口數(shù)據(jù)采集卡的設計,有效地解決了傳統(tǒng)總線面臨的問題。

1 采集卡設計整體框圖

005.jpg

  USB接口的數(shù)據(jù)采集卡的整體設計框圖如圖1所示。數(shù)據(jù)采集卡的硬件電路選擇PIC16F886單片機作為主控制芯片,PDIUSBD12芯片作為USB的接口芯片,A/D轉換模塊使用單片機內(nèi)部的10位AD轉換模塊。

  系統(tǒng)的硬件部分需要完成與PC端之間的USB數(shù)據(jù)通信,PC需要識別插入的USB接口的數(shù)據(jù)采集卡并完成相關的配置。PC對USB采集卡的識別過程,需要對USB接口的采集卡進行枚舉。

2 硬件電路設計

  2.1 PIC16F886芯片介紹

  PIC16F886單片機是Microchip公司推出的支持精簡指令集(RISC)的8位嵌入式微控制器[2]。PIC16F886共有28個引腳,支持PDIP、SOIC和SSOP封裝。它具有  8 096 B的程序存儲器和256 B的EEPROM數(shù)據(jù)存儲器,有11個通道的10位模數(shù)A/D轉換器,帶有同步異步收發(fā)發(fā)送接收器USART等。

  本文選擇此單片機作為本系統(tǒng)硬件設計的主控制器,它具有如下優(yōu)勢:PIC16F886采用的是精簡指令集RISC的結構,只有35條指令,程序的執(zhí)行效率和執(zhí)行速度大大提高;PIC16F886具有良好的開發(fā)環(huán)境,支持在線編程,便于單片機的在線調(diào)試和開發(fā),減少了開發(fā)時間;PIC16F886有8 096 B的程序存儲空間,因為USB協(xié)議框架移植較大,它可以進行USB協(xié)議的單片機固件編程;PIC16F886有28個引腳,分別有Port A(RA0:RA5)、Port B、Port C、Port D共24個,作為I/O端口;另外,有11個通道的10位A/D轉換模塊,可以作為采集卡的數(shù)據(jù)采集的通道。

  2.2 PDIUSBD12芯片介紹

  本文的USB接口的數(shù)據(jù)采集卡設計選擇Philips公司的PDIUSBD12芯片作為USB接口芯片,其引腳圖如圖2所示。

001.jpg

  PDIUSBD12芯片是一款性價比高的USB接口控制芯片,該芯片提供了標準的外圍接口,包括8位的數(shù)據(jù)并口,可以靈活設計與其他單片機連接,協(xié)同處理USB協(xié)議和數(shù)據(jù)交換,縮短了USB的開發(fā)周期,減少了開發(fā)成本,是USB外圍通信電路方案中較為簡單和經(jīng)濟的解決方案[3]。它還支持直接存儲器尋址的DMA傳輸,便于高速的數(shù)據(jù)傳輸。PDIUSBD12芯片也是符合USB2.0協(xié)議的,支持低速和全速模式下的數(shù)據(jù)傳輸。PDIUSBD12芯片支持各種USB外設,包括外部存儲設備、打印設備、掃描設備等。此外,PDIUSBD12的掛起功耗低可以應用于總線供電的外設,可以滿足對USB電源管理的要求。

  PDIUSBD12芯片使用8位并行的數(shù)據(jù)口與外部的PIC16F886主控制器連接,支持5 V的邏輯電平;內(nèi)置電壓調(diào)整器,可以選擇使用3.3 V和5 V的電源為設備供電;內(nèi)置PLL鎖相環(huán),外部時鐘頻率使用6 MHz;具有軟連接和數(shù)據(jù)指示燈功能,能夠模擬USB的斷開連接,并通過指示燈反饋;此外還包括了模擬收發(fā)器、串行搜索引擎、存儲器管理單元和DMA接口等。

  2.3 USB接口電路

002.jpg

  圖3所示為PIC16F886主控制器與PDIUSBD12的USB接口芯片的電路連接圖。從圖中可知,PDIUSBD12的8位數(shù)據(jù)并口與PIC16F886的PORTC引腳相連接,A0引腳與MCU的RA4連接,WR_N和RD_N腳分別與MCU的RB5和RB4連接,INT_N腳與MCU的RB0連接,ALE、CS_N和SUSPEND引腳接地。通過PIC16F886的一個IO口RA4與PDIUSBD12的A0引腳連接,來設置8位的數(shù)據(jù)并口是命令地址還是數(shù)據(jù)地址,A0為低電平,則為數(shù)據(jù)地址;A0為高電平,則為命令地址。通過PIC16F886的兩個IO口,RB4和RB5與PDIUSBD12的讀寫選通引腳連接,模擬數(shù)據(jù)和命令的讀寫時序,進行數(shù)據(jù)的交換。此外,PDIUSBD12的外部晶振頻率選擇    4 MHz;D+與D-引腳與USBA型接口的D+和D-數(shù)據(jù)線對應連接;3.3 V電壓調(diào)整輸出端口接地,使用5 V電源供電;CLKOUT和DMREQ引腳不使用,懸空。當USB設備上電之后,PWR的LED電源指示燈會一直亮著。在USB設備的枚舉過程中,USB的數(shù)據(jù)流指示燈會間歇閃爍,直到成功枚舉和配置之后,會常亮。USB接口的數(shù)據(jù)采集卡的采集通道使用了PIC16F886其中的8個通道,分別為ADC0~ADC7。

  2.4 PCB圖

003.jpg

  圖4所示為USB采集卡的PCB圖,其中PCB圖利用Altium Designer繪畫。

3 固件程序設計

  單片機PIC16F886的固件程序設計的主要內(nèi)容包括了對單片機參數(shù)和PDIUSBD12端點模式的初始化程序、USB設備枚舉過程中與PDIUSBD12之間的數(shù)據(jù)交換程序、數(shù)據(jù)采集程序。固件編程的目的是為了讓PC端的USB主機識別USB接口的數(shù)據(jù)采集卡,并知道USB接口的數(shù)據(jù)采集卡的類型和功能,完成數(shù)據(jù)的采集、處理和傳輸。主控制器PIC16F886需要協(xié)同USB接口芯片PDIUSBD12完成數(shù)據(jù)采集卡的枚舉,對此需要單片機進行固件程序編程[4],將USB接口的數(shù)據(jù)采集卡的相關描述符信息報告給PC端的USB主機,實現(xiàn)PC端與采集卡之間的USB通信,來為USB接口的數(shù)據(jù)采集卡的枚舉提供底層的軟件支撐,這是在USB接口的數(shù)據(jù)采集卡的軟件設計中必要的環(huán)節(jié)。

  在USB系統(tǒng)初始化之后,PC端的USB主機開始控制傳輸過程,需要對USB接口的數(shù)據(jù)采集卡進行枚舉,PC端的USB主機獲取描述符和設置地址的流程圖,如圖5所示。

004.jpg

  獲取描述符的程序類似,下面以獲取設備描述符為例,給出獲取設備描述符部分程序[5]:

  if((bmRequestType&0x80)==0x80)

  {

  //判斷bmRequestType第6、5位,表示請求的類型

  switch((bmRequestType>>5)&0x03)

  {

  case 0://標準請求

  switch(bRequest)

  {

  ……

  case GET_DESCRIPTOR://獲取描述符

  switch((wValue>>8)&0xff)

  {

  case DEVICE_DESCRIPTOR:  //獲取設備描述符

  for (i=0; i<18; i++)

  {

  pBuffer[i]=USB_DeviceDesp[i];

  //保存設備描述符結構在pBuffer中

  }

  if (wLength > 18)

  {

  sendDataSize=18;

  if (sendDataSize%16==0)

  ZeroFlag=1;

  else

  sendDataSize=wLength;

  USB_CTL0_Send();

  //按sendDataSize大小發(fā)送pBuffer中的數(shù)據(jù)

  break;

  ….

  }

  break;

  default: break;

  }

  }

4 結論

  本文提出了一種基于USB接口的數(shù)據(jù)采集卡的設計方案。該方案主要利用主控制芯片PIC16F8886和USB接口芯片PDIUSBD12來實現(xiàn),采集卡電路簡單、性能穩(wěn)定,支持即插即用,克服了傳統(tǒng)總線的采集卡安裝繁瑣、傳輸速率低、可掛載的設備少等問題。該USB接口的數(shù)據(jù)采集卡適合于高速數(shù)據(jù)采集系統(tǒng)與主機進行數(shù)據(jù)通信,同時也可為便攜式系統(tǒng)提供方便、可靠的接口解決方案。

  參考文獻

  [1] 馬宗駿,張博,牛大鵬.基于USB的數(shù)據(jù)采集卡應用[J].物聯(lián)網(wǎng)技術,2011(3):68-70.

  [2] PIC16F886 Data Sheet[EB/OL].[2008-02-01](2015-01-10).www.microchip.com.

  [3] 劉鐵.基于USB的數(shù)據(jù)采集卡設計[J].紡織機械,2010(4):11-12.

  [4] 周立功.PDIUSBD12 USB固件編程與驅(qū)動開發(fā)[M].北京:北京航空航天大學出版社,2003.

  [5] 張明峰.PIC單片機入門與實戰(zhàn)[M].北京:北京航空航天大學出版社,2004.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。