<th id="alkcr"><pre id="alkcr"></pre></th>

  • 打印

    [單片機芯片] CH5XX實現U盤控制器應用實例

    [復制鏈接]
    226|3
    跳轉到指定樓層
    樓主
    本帖最后由 WCHTech2 于 2019-9-27 15:35 編輯

    一、摘要
        根據Mass Storage Class(大容量/海量存儲器,以下簡稱MSC)協議,使用CH558、CH559和CH563分別實現模擬全速和高速U盤的功能,外部存儲介質和U盤容量支持自由調整,用以解決數據轉存或者定制U盤等功能。關鍵在于CH5XX USB設備控制器操作、Bulk-Only傳輸協議、SCSI命令支持和存儲介質讀寫這幾個部分。
    二、總體概述
    模擬U盤關鍵功能部件包括以下幾點:
    (1)、USB Mass Storage Framework
    (2)、以U盤為例,下圖是PC和U盤的內部抽象邏輯框圖

    CH558、CH559和CH563內置USB設備控制器和PHY,對于實現U盤控制器的應用,只需要配置USB設備模式和讀寫外部存儲介質。

    (3)、USB MSC CBI/BBB TransportUSB MSC Control/Bulk/Interrupt Transport 只能用于Full-speed的軟盤(Floppy drive),這里不贅述,有興趣可以自己百度。Bulk-only傳輸類控制、批量都是通過批量端點,即用Bulk端點來傳送命令塊,數據,狀態,因此才類似于Control/Bulk/Interrupt被簡稱為CBI一樣,而Bulk/Bulk/Bulk被簡稱為BBB。


    (4)、USB MSC Protocol relation
        傳輸通訊:Host和Device之間的數據通訊根據存儲介質(Floppy或Flash)分別使用UFI和SCSI協議,更深入的設備特性配置參考More Feature。
    (5)、U盤配置描述符Class,Subclass和Protocol對應關系對應的,了解USB的都知道,每個設備的描述符中,都有對應下面這幾個域:bInterfaceClass 、 bInterfaceSubClass 、 bInterfaceProtocol分別對應著USB的Class,Subclass,Protocol。而對于我們此處的U盤:bInterfaceClass=0x08=Mass Storage,Class就是USB Mass Storage Class,bInterfaceSubClass=0x06=SCSI Transparent,Subclass,所支持的列表如下:
    SubClass Codes Mapped to Command Block Specifications
    bInterfaceProtocol=0x50=Bulk Only Transport,Protocol,所支持的列表如下:Mass Storage Transport Protocol

    (6)、MSC使用的SCSI命令集0x00        TestUnitReady               0x03        RequestSense
    0x12        Inquiry                     0x1A        ModeSense6
    0x1B        StartStop                   0x1E        MediumRemoval
    0x23        ReadFormatCapacity          0x25        ReadCapacity
    0x28        Read(10)                    0x2A        Write(10)
    0x2F        Verify                      0x5A        ModeSense10SCSI命令使用各位可以閱讀代碼,或者去USB-IF搜索SCSI協議,實際上U盤所使用的所有SCSI命令集都可以參考UFI文檔,它比SCSI標準文檔更簡潔明了。
    (7)、Bulk-Only傳輸協議詳細的規范請閱讀《Universal Serial BusMass Storage ClassBulk-Only Transport》)設備插入到USB 后,USB 即對設備進行搜索,并要求設備提供相應的描述符。在USBHost 得到上述描述符后,即完成了設備的配置,識別出為Bulk-Only 的Mass Storage 設備,
    然后即進入Bulk-Only 傳輸方式。在此方式下,USB 與設備間的所有數據均通過Bulk-In和Bulk-Out 來進行傳輸,不再通過控制端點傳輸任何數據。在這種傳輸方式下,有三種類型的數據在USB 和設備之間傳送,CBW、CSW 和普通數據。CBW(Command Block Wrapper,即命令塊包)是從USB Host 發送到設備的命令,命令格式遵從接口中的bInterfaceSubClass 所指定的命令塊,這里為SCSI 傳輸命令集。USB設備需要將SCSI 命令從CBW 中提取出來,執行相應的命令,完成以后,向Host 發出反映 當前命令執行狀態的CSW(Command Status Wrapper),Host 根據CSW 來決定是否繼續發 送下一個CBW 或是數據。Host 要求USB 設備執行的命令可能為發送數據,則此時需要將 特定數據傳送出去,完畢后發出CSW,以使Host 進行下一步的操作。USB 設備所執行的操作可用下圖描述
    CBW和CSW命令包格式在程序里面有或者參看Bulk-Only協議。
    三、硬件設計        CH558、CH559模擬U盤使用的SPI接口的串行Flash,硬件如下圖:

    CH558,CH559是增強型51內核的全速(12Mbps)USB單片機,內置晶振,芯片外圍也足夠簡潔。CH563是32位高速USB MCU,內置網絡PHY和協議棧。芯片資源如下圖:


    四、軟件設計軟件主要包括以下方面:
    (1)、USB設備模式初始化
    (2)、存儲芯片接口初始化

    (3)Bulk_Only傳輸CBW包:
    CSW包:
    五、可拓展功能
    (1)、其他存儲介質:除了以上提到的SPI接口的串行Flash,也可以替換成EEPROM或者Nand falsh等非掉電易失存儲介質。
    (2)、數據來源可以隨意指定,比如串口數據流,并口數據流,甚至其他溫濕度傳感器設備等。(3)、CH559+SPI串行Flash模擬U盤測試參數
    測試系統,功能
    復制
    粘貼
    創建
    格式化
    XP
    WIN7
    WIN10
    安卓

    六、應用場合應用的典型場合,比如:
    (1)、代替光盤為客戶提供說明書,可以將說明資料直接放到板子的存儲介質內。
    (2)、U盤數據監控、截取和加密。
    (3)、采集數據數據暫存,方便拷貝到主機。
    (4)、定制U盤等。
    CH558CH559模擬U盤的源碼(C語言): CH559&amp;8模擬U盤.rar (48.04 KB, 下載次數: 2)

    CH563模擬USB2.0高速U盤的源碼(C語言): CH563模擬U盤.rar (345.07 KB, 下載次數: 1)





    使用特權

    評論回復
    沙發
    | 2019-10-4 14:29 | 只看該作者
    我i的項目需要讀寫U盤,有兩個方案可供選擇:帶USB HOST的ARM芯片如STM32F105;外掛沁恒的51內核單片機。

    還是一個成本問題,若沁恒的這種芯片價格能低于2元,還是可以選擇的。
    多一個國產MCU的另外一個好處是增加破解者的成本。

    使用特權

    評論回復
    板凳
    | 2019-10-8 07:33 | 只看該作者
    學習

    使用特權

    評論回復
    地板
     樓主 | 2019-10-8 13:17 | 只看該作者
    dsyq 發表于 2019-10-4 14:29
    我i的項目需要讀寫U盤,有兩個方案可供選擇:帶USB HOST的ARM芯片如STM32F105;外掛沁恒的51內核單片機。

    ...

    CH559 CH548 CH549都可讀寫U盤,價格可以聯系025-52638389 張**。

    使用特權

    評論回復
    掃描二維碼,隨時隨地手機跟帖
    *滑动验证:
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規則

    我要發帖 投訴建議 創建版塊 申請版主

    快速回復

    您需要登錄后才可以回帖
    登錄 | 注冊
    高級模式

    論壇熱帖

    在線客服 快速回復 返回頂部 返回列表
    成人短片线上看