全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1999
推到 Plurk!
推到 Facebook!

關於ARM7的USB傳輸

答題得分者是:derrenbol1
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-02 20:45:42 IP:220.134.xxx.xxx 未訂閱
請問一下各位大大 有人會使用ARM7的USB傳輸嗎? 因為目前市面上找到的都是屬於USB晶片型的書 跟ARM系列差很多 能否請會使用的大大指點一二 感激不盡
derrenbol1
中階會員


發表:5
回覆:113
積分:93
註冊:2004-12-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-03 02:13:08 IP:210.202.xxx.xxx 未訂閱
To lkap: ARM跟USB無關; 對ARM的CPU而言, USB不論是HOST或是DEVICE 都只是它的"週邊". 你用的是那顆IC ? ARM7會帶USB的很少 ?
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-07 09:08:17 IP:220.134.xxx.xxx 未訂閱
今年初的ATMEL的ARM7SAM系列都有包含USB功能了 只是有抓到廠商提供的程式碼覺得與USB一般書籍 所說的不太一樣(狀態改變上)所以想請教有寫過的大大 是如何著手的
derrenbol1
中階會員


發表:5
回覆:113
積分:93
註冊:2004-12-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-07 11:19:40 IP:210.202.xxx.xxx 未訂閱
To lkap: USB會分成Device及Host. 在Device的話, 各家在Register 控制的設計上會不太一樣, 雖然不外乎Endpoint設定及中斷 撰寫. 如果你對ATMEL的Data Sheets或是程式碼中有問題的 話, 你可以先找一下USB Specification中的描述.
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-07 14:32:15 IP:220.134.xxx.xxx 未訂閱
感謝你的指導 ATMEL SPEC都看了程式也是看懂 目前在嘗試利用HID使用控制傳輸傳值出來 不過還沒有進展
derrenbol1
中階會員


發表:5
回覆:113
積分:93
註冊:2004-12-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-07 15:02:22 IP:210.202.xxx.xxx 未訂閱
To lkap: 我也會建議你使用HID Class的裝置來認識USB. 最好是模擬滑鼠. 因為一來簡單, 二來也不用寫Driver或任何的Application來驗證 你的裝置, 只要1至3個Key來模擬滑鼠即可.
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-11-07 17:11:49 IP:220.134.xxx.xxx 未訂閱
TO derrenbol1:                目前看的CODE就是模擬USB MOUSE不過                由於HID的MOUSE與KEYBOARD傳資料都會                被WINDOWS截掉所以目前在使用別的HID                來傳不過裝置目前在WINDOWS可以找到是                HID不過卻無法安裝成功我猜想因該是傳                資料時發生錯誤
derrenbol1
中階會員


發表:5
回覆:113
積分:93
註冊:2004-12-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-11-07 17:33:24 IP:210.202.xxx.xxx 未訂閱
To lkap: 到Google去搜尋USBVIEW.exe; 它可以幫你看到 你的裝置在Standard Protocol上到底傳了什麼東 西, 包括Device Desc, Config Desc, Interface 及Endpoint. 找不到裝置除了硬體線上的缺失外, 再來就是Standard Protocol資料不正確.
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-11-07 17:45:02 IP:220.134.xxx.xxx 未訂閱
感謝你的指導 那個程式我有了 現在去看看了解一下
lkap
一般會員


發表:2
回覆:21
積分:4
註冊:2005-10-03

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-11-07 19:09:32 IP:220.134.xxx.xxx 未訂閱
我只看到我DEVICE設定的東西 Device Descriptor: bcdUSB: 0x0110 bDeviceClass: 0x00 bDeviceSubClass: 0x00 bDeviceProtocol: 0x00 bMaxPacketSize0: 0x08 (8) idVendor: 0x1234 idProduct: 0x5678 bcdDevice: 0x0001 iManufacturer: 0x01 iProduct: 0x02 iSerialNumber: 0x00 bNumConfigurations: 0x01 ConnectionStatus: DeviceConnected Current Config Value: 0x00 Device Bus Speed: Full Device Address: 0x01 Open Pipes: 0 Configuration Descriptor: wTotalLength: 0x0022 bNumInterfaces: 0x01 bConfigurationValue: 0x01 iConfiguration: 0x00 bmAttributes: 0xA0 (Bus Powered Remote Wakeup) MaxPower: 0x32 (100 Ma) Interface Descriptor: bInterfaceNumber: 0x00 bAlternateSetting: 0x00 bNumEndpoints: 0x01 bInterfaceClass: 0x03 bInterfaceSubClass: 0x00 bInterfaceProtocol: 0x00 iInterface: 0x00 HID Descriptor: bcdHID: 0x1001 bCountryCode: 0x00 bNumDescriptors: 0x01 bDescriptorType: 0x22 wDescriptorLength: 0x0032 Endpoint Descriptor: bEndpointAddress: 0x82 Transfer Type: Interrupt wMaxPacketSize: 0x0040 (64) bInterval: 0x01
ryuhuang
一般會員


發表:0
回覆:7
積分:1
註冊:2004-03-31

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-11-16 15:49:54 IP:220.130.xxx.xxx 未訂閱
你可以參考一些USBIO的Descriptor, USBIO也是使HID這個Class, 只是在HID Report Descriptor是使用Vendor Define的方法來做, 而不是使用Keybaord or Mouse, 這樣子做的好處是, 你可以使用Win32 API來Access你的USBIO Device, 使用OpenFile, ReadFile, WriteFile, 這些API Fucntion來對你的USB Device做存取的動作。    以下是我自己在做USBIO的Descriptor, for FullSpeed by Keil C
code USB_DEVICE_DESCRIPTOR DeviceDescriptorFS =
{
        sizeof(USB_DEVICE_DESCRIPTOR),        // bLength
        DEVICE_DESCRIPTOR,                // bDescriptorType
        SWAP(USB_VERSION_FS),                // bcdUSB HighSpeed
        0x00,                                // bDeviceClass
        0x00,                                // bDeviceSubClass
        0x00,                                // bDeviceProtocol
        0x40,                                // bMaxPacketSize0
        SWAP(VID),                        // idVendor
        SWAP(PID),                        // idProduct
        SWAP(0x0100),                        // bcdDevice
        STR_INDEX_MANUFACTURER,                // iManufacturer
        STR_INDEX_PRODUCT,                // iProduct
        STR_INDEX_SERIALNUMBER,                // iSerialNumber
        0x01                                // bNumConfigurations
};    code USB_CONFIGURATION_DESCRIPTOR ConfigDescriptorFS =
{
        sizeof(USB_CONFIGURATION_DESCRIPTOR),        // bLength
        CONFIGURATION_DESCRIPTOR,                // bDescriptorType
        SWAP(CONFIG_DESCRIPTOR_LENGTH),                // wTotalLength
        1,                                        // bNumInterfaces
        CONFIGURATION_VALUE,                        // bConfigurationValue
        STR_INDEX_CONFIGURATION,                // iConfiguration
        0xa0,                                        // bmAttributes
        0x32                                        // MaxPower
};    code USB_INTERFACE_DESCRIPTOR HIDInterfaceDescriptorFS =
{
        sizeof(USB_INTERFACE_DESCRIPTOR),        // bLength
        INTERFACE_DESCRIPTOR,                        // bDescriptorType
        0,                                        // bInterfaceNumber
        INTERFACE_ALTERNATE_SETTING,                // bAlternateSetting
        0x01,                                        // bNumEndPoints
        0x03,                                        // bInterfaceClass
        0x00,                                        // bInterfaceSubClass
        0x00,                                        // bInterfaceProtocol
        STR_INDEX_INTERFACE                        // iInterface
};    code USB_HID_DESCRIPTOR HIDDescriptorFS=
{
        sizeof(USB_HID_DESCRIPTOR),        // bLength
        HID_DESCRIPTOR,                        // bDescriptorType
        SWAP(0x0110),                        // bcdHID;
        0x00,                                // bCountryCode;
        0x01,                                // bNumDescriptors;
        0x22,                                // bDescriptorType;
        SWAP(0x0034)                        // wDescriptorlength;
};    code USB_ENDPOINT_DESCRIPTOR InterruptDescriptorFS =
{
        sizeof(USB_ENDPOINT_DESCRIPTOR),// bLength
        ENDPOINT_DESCRIPTOR,                // bDescriptorType
        0x83,                                // bEndpointAddress
        0x03,                                // bmAttributes
        SWAP(0x0006),                        // bMaxPacketSize
        0x0a                                // bInterval
};    code char HIDReportDescriptor[]=
{
        0x06, 0xa0, 0xff,        // Usage Page (Vendor defined) FFA0
        0x09, 0x01,                // Usage (Vendor defined)
        0xa1, 0x01,                // Collection (Application)
        0x09, 0x02,                // Usage (Vendor defined)
        0xa1, 0x00,                // Collection (Physical)
        0x06, 0xa1, 0xff,        // Usage Page (Vendor defined)
        // Input Report
        0x09, 0x03,                // usage - vendor defined
        0x09, 0x04,                // usage - vendor defined
        0x15, 0x80,                // Logical Minimum (-128)
        0x25, 0x7f,                // Logical Maximum (127)
        0x35, 0x00,                // Physical Minimum (0)
        0x45, 0xff,                // Physical Maximum (255)
        0x75, 0x08,                // Report Size (8) (bits)
        0x95, 0x02,                // Report Count (2) (fields)
        0x81, 0x02,                // Input (Data, Variable, Absolute)
        // Output Report
        0x09, 0x05,                // usage - vendor defined
        0x09, 0x06,                // usage - vendor defined
        0x15, 0x80,                // Logical Minimum (-128)
        0x25, 0x7f,                // Logical Maximum (127)
        0x35, 0x00,                // Physical Minimum (0)
        0x45, 0xff,                // Physical Maximum (255)
        0x75, 0x08,                // Report Size (8) (bits)
        0x95, 0x02,                // Report Count (2) (fields)
        0x91, 0x02,                // Output (Data, Variable, Absolute)            0xc0,                        // End Collection
        0xc0                        // End Collection
};
系統時間:2024-07-02 2:02:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!