關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 用CBI協議的USB軟驅讀取繡花機花版文件

        用CBI協議的USB軟驅讀取繡花機花版文件

        作者: 時間:2009-07-02 來源:網絡 收藏

        在主機命令發送得到接收正確響應ACK(確認接收)后,設備會從端口3自動返回2字節狀態碼,用于主機產生中斷(中斷不是必須),數據傳輸狀態如下:

        本文引用地址:http://www.104case.com/article/202687.htm


        命令發送全過程完畢,當需要數據輸入/輸出時,設置主機發送IN/OUT PID請求,設備按照請求通過BULK-IN/OUT端口傳輸數據,每次發送的字節數根據設備描述符所定義的端口最大吞吐量。
        1.2 設備描述符及枚舉過程
        按照,所有設備接入主機后,主機進行設備枚舉,識別此設備屬于范疇的哪一類,以及該類型中的哪一子類;然后對此設備進行配置,直到該設備能進行正確讀寫。這些枚舉信息都已固化在USB設備中,主機只進行提取操作。
        存儲設備支持很多描述符,主要且必須支持下列USB描述符:
        ①設備描述符(device descriptor)
        ②配置描述符(configuration descriptor)
        ③接口描述符(interface descriptor) 存儲設備至少應支持1個數據接口。
        ④端點描述符(endpoint descriptor) 除用作初始化和命令傳輸的控制端口Endpoint 0外,CBI存儲設備還必須支持批量輸入、批量輸出、中斷3種端點,配置、接口、端口描述符是在主機一次請求時接收的。
        當某設備描述符被識別為mass storage device類CBI設備子類后,主機進行第2次枚舉,對設備進行相關配置和初始化。具體枚舉過程通過第1次枚舉所配置的端口,發送相關請求命令,進行初始化的數據輸入/輸出。具體函數及功能如下:

        2 USB 主機程序設計
        2.1 開發平臺介紹
        開發平臺主要包括:
        ①MCU S3C24IOA(繡花機主芯片)
        ②USB芯片 SL811HS
        ③開發語言 嵌入式C語言
        ④編譯環境 CodeWarrior for ARM Developer SuiteVl.2
        ⑤仿真器 Magic-ICE
        ⑥USB類型 SONY MPF82E-U1磁盤驅動器
        2.2.1 USB設備的枚舉
        USB首先要進行設備枚舉,主機通過控制端口0向設備發送DeviceRequest命令。DeviceRequest命令主要有Get_Descriptor,Set_Address,Set_Config,Set_Interface等,而Get_Descriptor描述符又可分為Device_Descriptor、Configuration_Descriptor、Interface_Descrip-tor、Endpoint_Descriptor,枚舉階段所有的請求都是基于setup ID。根據不同的請求命令,配置相應的棧。以下是配置接收描述符的部分參數,以設備描述符為例:


        配置請求參數完成以后,利用USB數據傳輸函數usbXfer()來傳輸該請求。usbXfer()必須完全遵循USBl.1協議。該函數具體算法流程如圖1所示。

        2.2.2 大容量存儲設備的枚舉
        此階段任務的中心是對主機發送UFI命令的處理。ADSC請求是UFI命令的前導,通過控制端口0以setup數據包發送,接著仍通過端口0以數據包的形式發送UFI命令包。命令包均為12字節,發送前暫存在ufi[]數組中。以CBI_Read(unsigned long lba,unsigned charlen,unsigned char* pBuffer)函數為例敘述命令發送過程,其他枚舉函數實現基本原理相同。CBI_Read()函數讀取扇區數據到指定數組,源程序如下:



        關鍵詞: CBI USB 協議 軟驅

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 怀集县| 泾阳县| 青浦区| 陕西省| 邓州市| 西峡县| 汉沽区| 昭平县| 玉环县| 泸定县| 纳雍县| 抚宁县| 勃利县| 灵山县| 镇巴县| 拉孜县| 江油市| 西丰县| 延庆县| 红桥区| 西贡区| 攀枝花市| 平顶山市| 根河市| 马尔康县| 张家界市| 临邑县| 和政县| 栾川县| 西青区| 卢氏县| 阿拉善右旗| 蓝田县| 和顺县| 桐城市| 商丘市| 翁源县| 宜州市| 灵山县| 龙门县| 个旧市|