新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機與USB接口實現電力補償裝置控制系統

        單片機與USB接口實現電力補償裝置控制系統

        作者: 時間:2011-09-23 來源:網絡 收藏

        Flash數據存儲程序

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

          y狀態。確定狀態后,可根據數據手冊中的命令格式進行相關的讀寫以及擦除操作。

          通信程序

          固件編程是設備開發過程里的主要工作。固件的主要任務是初始化和外設,發送請求,響應主機的標準設備請求。根據設備的功能分類完成各種數據交換請求。初始化編程主要完成USB控制器的初始化、端點初始化,交叉開關和I/O口初始化、系統時鐘設置,控制器使能。初始化后,USB設備可隨時插入主機中,主機將遵循USB協議對設備進行識別和初始化。主機識別到設備之后對設備進行配置,調用相應的驅動程序,配上上位機軟件進行相關通信操作。

          Silicon lab公司提供了USBXpress的開發套件。通過使用USBXpress庫,大大簡化了USB固件程序和PC端驅動程序的開發。 USBXpress通過一系列函數端的應用程序(API)。這些函數封裝了USB協議的細節,使得程序開發人員不需要了解USB的過多細節即可使用USB進行數據通信(見圖3)。

          

        單片機與PC機的USB通信

          圖3 與PC機的USB通信

          本系統中主要用到了初始化、讀、寫、中斷這四個函數:

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

          USB的所有處理程序都是通過USB的中斷服務程序完成的。進入USB中斷后,程序調用Get_Interrupt_Source()函數獲得USB中斷的進入原因。然后根據不同的入口情況,來進行相應的處理。比如收到數據之后,讀取相應的緩沖區內容到內存中;收到初始化命令時,復位單片機內的各個狀態參數。USB通信流程圖示于圖4。

          

        USB通信流程圖

          圖4 USB通信流程圖

          PC機端軟件程序

          計算機端軟件程序包括兩部分:USB驅動程序和用戶應用程序。

          USB驅動程序

          USB驅動程序是一個軟件組件,封裝了應用程序存取硬件設備的功能函數。有些設備具有相同的屬性,把它們歸為一組標準類別,可以定義設備類規范作為該類設備的主機驅動框架。設備類驅動程序使用相似的函數,處理不同設備間的通信,這樣使設備類驅動程序的開發可以脫離設備制造商。

          USB驅動程序模型一般分為五層(見圖5)。

          

        USB驅動程序模型

          圖5 USB驅動程序模型

          用戶端若要從設備讀取數據,將調用一個應用程序API,如OpenFile,SiUSBXp.dll這個API。總線驅動程序控制對總線上所有設備的訪問。

          本系統中,開發USB設備驅動程序的工具使用了USBXpress Development Kit。主要函數如下:

          S

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

          



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 霍州市| 芦溪县| 格尔木市| 华宁县| 芦山县| 贞丰县| 宁河县| 平邑县| 当雄县| 安泽县| 界首市| 祁东县| 景宁| 肇源县| 惠州市| 朝阳市| 卢龙县| 岳普湖县| 洱源县| 溆浦县| 梁平县| 海阳市| 沂源县| 涟水县| 阿克苏市| 宜兰市| 繁昌县| 二手房| 桂平市| 南通市| 罗甸县| 黑龙江省| 武胜县| 高淳县| 萨嘎县| 侯马市| 淮安市| 重庆市| 吉水县| 天等县| 萨嘎县|