<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于USB通信的印制電路板AOI視覺(jué)檢測系統*

基于USB通信的印制電路板AOI視覺(jué)檢測系統*

作者:■ 何梓濱 段發(fā)階 賈建祿 嚴海領(lǐng) 天津大學(xué)精密測試技術(shù)和儀器國家重點(diǎn)實(shí)驗室(天津 300072) 時(shí)間:2008-04-30 來(lái)源:電子產(chǎn)品世界 收藏

DSP端的固件程序

本文引用地址:http://dyxdggzs.com/article/82037.htm

  USB固件程序的結構一般是基于中斷處理的。主程序完成必要的初始化之后就等待USB中斷,接收到USB中斷后依據中斷的類(lèi)型進(jìn)入不同中斷服務(wù)程序。USB協(xié)議的主從模式?jīng)Q定了USB總線(xiàn)上傳輸的發(fā)起和終止都是主機控制的,因此,固件編程中只要滿(mǎn)足了主機的要求,或者說(shuō)對主機的請求給予了及時(shí)的響應,那么固件的編程也就完成了。

USB固件應用程序主函數例程:
void main()
{
    EnableAPLL( );
     //使能USB模塊的模擬鎖相環(huán)
    CSL_init( ); 
    //  DSP的CSL庫初始化函數
    INT_DisableGlobal();       //  關(guān)閉全局中斷
    INT_SetVec(0x03ff00);  
 //  設置中斷向量表在RAM中的地址
  PLL_Init(48);  //  將USB模塊
  的時(shí)鐘調整到48MHz
  Collect_main(); //  CMOS圖像
   采集程序
  USBTest_Init(); //  初始化USB
  模塊,初始化完畢打開(kāi)全局中斷
    while(1); //  循環(huán)等待狀態(tài)
}

  端點(diǎn)0的控制傳輸是USB枚舉的默認傳輸端口,其中斷服務(wù)程序是USB固件程序設計的難點(diǎn)和關(guān)鍵。

PC端的驅動(dòng)程序及上位機應用程序

  PC端的驅動(dòng)程序及上位機應用程序設計相對比較簡(jiǎn)單,選用Driver Studio開(kāi)發(fā)工具開(kāi)發(fā)USB驅動(dòng)程序,Driver Studio對設備驅動(dòng)程序開(kāi)發(fā)工具DDK中操作進(jìn)行封裝,減少了開(kāi)發(fā)時(shí)間,提高了效率。通過(guò)Driver Studio的工具Driver wizard生成的驅動(dòng)程序為開(kāi)發(fā)者提供了一個(gè)基本框架,使用者只需修改較少的或者基本不用代碼就可以實(shí)現相應的功能了。

  Windows XP中的上位機程序不能直接訪(fǎng)問(wèn)底層的硬件,需要通過(guò)驅動(dòng)程序進(jìn)行(讀、寫(xiě)、中斷等)操作。設備的驅動(dòng)程序由I/O管理器管理和調動(dòng)。上位機程序在用戶(hù)模式下通過(guò)Win32子系統對Win32API函數進(jìn)行調用。Win32API函數通過(guò)I/O管理器向內核模式下的驅動(dòng)程序傳遞IRP。驅動(dòng)程序通過(guò)處理IRP,來(lái)完成應用程序和硬件程序信息的交互。訪(fǎng)問(wèn)USB設備驅動(dòng)的Win32API函數:

(1) CreatFile 函數創(chuàng )建或打開(kāi)文件,并返回一個(gè)可用于訪(fǎng)問(wèn)文件的句柄。
(2) DeviceIoControl 函數直接給指定的設備驅動(dòng)程序發(fā)送控制代碼,使得相應的設備執行指定操作。函數若成功,返回一個(gè)非0值,否則返回0。
(3) ReadFile 函數讀由文件指針表示的位置開(kāi)始處的文件讀數據,讀操作完成后,文件指針調整實(shí)際讀的字節數。函數若成功,返回一個(gè)非0值,否則返回0。
(4) CloseHandle 函數關(guān)閉打開(kāi)的文件句柄。函數若成功,返回一個(gè)非0值,否則返回0。

實(shí)驗與結論

  筆者設計實(shí)現了一種印制電路板視覺(jué)檢測系統,包括硬件電路和軟件程序。硬件結構簡(jiǎn)單,可以實(shí)現通信傳輸的高度集成化,傳輸速率滿(mǎn)足檢測系統的實(shí)時(shí)性要求。圖5為實(shí)驗中采集到的PCB板圖像。

圖5 實(shí)驗中采集到的PCB板圖像
  
參考文獻:

1.  賈建祿等,基于以太網(wǎng)的嵌入式視覺(jué)傳感器,電子產(chǎn)品世界,2008.3
2.  Moti Yanuka, Yossi Pinhassi, vs. AFI in PCB Defect Detection, Circuitree, July 2001
3.  TMS320VC5509 DSP Universal Serial Bus (USB) Module Reference Guide, Texas Instruments Incorporated
4.   TMS320C55x CSL USB Programmer's Reference Guide, Texas Instruments Incorporated
5.  武安河、邰銘、于洪濤,Windows 2000/XP WDM設備驅動(dòng)程序開(kāi)發(fā),電子工業(yè)出版社,2004


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>