<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)與USB接口實(shí)現(xiàn)電力補(bǔ)償裝置控制系統(tǒng)

          單片機(jī)與USB接口實(shí)現(xiàn)電力補(bǔ)償裝置控制系統(tǒng)

          作者: 時(shí)間:2011-09-23 來源:網(wǎng)絡(luò) 收藏

          Flash數(shù)據(jù)存儲(chǔ)程序

            C8051F320芯片與Flash存儲(chǔ)器的通信采用SPI方式,數(shù)據(jù)傳輸率為12MHz(位/秒)。本設(shè)計(jì)中,C8051F320工作在SPI主機(jī)模式,SPI總線的數(shù)據(jù)傳輸都將由C8051F320發(fā)起。首先對(duì)SPI相關(guān)SFR SPI0CFG寄存器和SPI0CN寄存器進(jìn)行配置,使其工作在3線主模式12MHz。通信時(shí)首先用GPIO引腳來選擇相應(yīng)的Flash從器件,隨后通過讀取SPIDAT來進(jìn)行讀寫操作。在使用Flash芯片進(jìn)行讀寫操作時(shí),首先要確定Flash存儲(chǔ)器的狀態(tài)??赏ㄟ^寫入D7H命令,讀取狀態(tài)寄存器判斷設(shè)備是否Ready或處于Bus

            y狀態(tài)。確定狀態(tài)后,可根據(jù)數(shù)據(jù)手冊(cè)中的命令格式進(jìn)行相關(guān)的讀寫以及擦除操作。

            通信程序

            固件編程是設(shè)備開發(fā)過程里的主要工作。固件的主要任務(wù)是初始化和外設(shè),發(fā)送請(qǐng)求,響應(yīng)主機(jī)的標(biāo)準(zhǔn)設(shè)備請(qǐng)求。根據(jù)設(shè)備的功能分類完成各種數(shù)據(jù)交換請(qǐng)求。初始化編程主要完成USB控制器的初始化、端點(diǎn)初始化,交叉開關(guān)和I/O口初始化、系統(tǒng)時(shí)鐘設(shè)置,控制器使能。初始化后,USB設(shè)備可隨時(shí)插入主機(jī)中,主機(jī)將遵循USB協(xié)議對(duì)設(shè)備進(jìn)行識(shí)別和初始化。主機(jī)識(shí)別到設(shè)備之后對(duì)設(shè)備進(jìn)行配置,調(diào)用相應(yīng)的驅(qū)動(dòng)程序,配上上位機(jī)軟件進(jìn)行相關(guān)通信操作。

            Silicon lab公司提供了USBXpress的開發(fā)套件。通過使用USBXpress庫,大大簡(jiǎn)化了USB固件程序和PC端驅(qū)動(dòng)程序的開發(fā)。 USBXpress通過一系列函數(shù)端的應(yīng)用程序(API)。這些函數(shù)封裝了USB協(xié)議的細(xì)節(jié),使得程序開發(fā)人員不需要了解USB的過多細(xì)節(jié)即可使用USB進(jìn)行數(shù)據(jù)通信(見圖3)。

            

          單片機(jī)與PC機(jī)的USB通信

            圖3 與PC機(jī)的USB通信

            本系統(tǒng)中主要用到了初始化、讀、寫、中斷這四個(gè)函數(shù):

            初始化USB_Init(0,0xEA61,NULL,NULL,Serial,250,0x80,0x100)函數(shù);塊寫函數(shù)Block_Write();塊讀函數(shù)Block_Read();USB中斷使能函數(shù)。

            USB的所有處理程序都是通過USB的中斷服務(wù)程序完成的。進(jìn)入U(xiǎn)SB中斷后,程序調(diào)用Get_Interrupt_Source()函數(shù)獲得USB中斷的進(jìn)入原因。然后根據(jù)不同的入口情況,來進(jìn)行相應(yīng)的處理。比如收到數(shù)據(jù)之后,讀取相應(yīng)的緩沖區(qū)內(nèi)容到內(nèi)存中;收到初始化命令時(shí),復(fù)位單片機(jī)內(nèi)的各個(gè)狀態(tài)參數(shù)。USB通信流程圖示于圖4。

            

          USB通信流程圖

            圖4 USB通信流程圖

            PC機(jī)端軟件程序

            計(jì)算機(jī)端軟件程序包括兩部分:USB驅(qū)動(dòng)程序和用戶應(yīng)用程序。

            USB驅(qū)動(dòng)程序

            USB驅(qū)動(dòng)程序是一個(gè)軟件組件,封裝了應(yīng)用程序存取硬件設(shè)備的功能函數(shù)。有些設(shè)備具有相同的屬性,把它們歸為一組標(biāo)準(zhǔn)類別,可以定義設(shè)備類規(guī)范作為該類設(shè)備的主機(jī)驅(qū)動(dòng)框架。設(shè)備類驅(qū)動(dòng)程序使用相似的函數(shù),處理不同設(shè)備間的通信,這樣使設(shè)備類驅(qū)動(dòng)程序的開發(fā)可以脫離設(shè)備制造商。

            USB驅(qū)動(dòng)程序模型一般分為五層(見圖5)。

            

          USB驅(qū)動(dòng)程序模型

            圖5 USB驅(qū)動(dòng)程序模型

            用戶端若要從設(shè)備讀取數(shù)據(jù),將調(diào)用一個(gè)應(yīng)用程序API,如OpenFile,SiUSBXp.dll這個(gè)API。總線驅(qū)動(dòng)程序控制對(duì)總線上所有設(shè)備的訪問。

            本系統(tǒng)中,開發(fā)USB設(shè)備驅(qū)動(dòng)程序的工具使用了USBXpress Development Kit。主要函數(shù)如下:

            S

            I_Open()函數(shù);SI_Close()函數(shù);SI_Read函數(shù);SI_Write()函數(shù);SI_GetNumDevices()函數(shù);SI_CheckRXQueue()函數(shù)。

            



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();