新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > USB無線網絡適配器在系統中的應用

        USB無線網絡適配器在系統中的應用

        作者: 時間:2013-10-08 來源:網絡 收藏


          圖2-2 SL811HS 主/從控制器功能框圖

          l 主/控制器模塊、RAM緩存及控制寄存器模塊、串行接口引擎(SIE)是系統的核心模塊。

          l SIE模塊負責總線與主機之間數據的串、并轉換,完成總線的電氣功能。

          l BUFFER用于數據緩存。SL811HC只有一根地址線A0。A0=1用于設定偏移量, A0=0用于讀寫數據。讀寫數據應該首先指定偏移量,然后實現讀取時序。該芯片也支持地址自增量讀取,如果連續讀或寫數據端口,則緩存區的偏移量地址會自動加1。這樣的設計支持了數據的快速讀寫。下面的代碼給出了兩種方式下的數據讀取例程:

          static __u8 SL811Read (hci_t * hci, __u8 offset)

          {

          WRITE_INDEX (offset);

          return (READ_DATA ());

          }

          static void SL811BufRead (hci_t * hci, __u8 offset, __u8 *buf, __u8 size)

          {

          WRITE_INDEX (offset);

          while (size——) {

          *buf++ = READ_DATA();

          }

          }

          l 控制模塊和控制寄存器用來控制芯片正確工作,總線狀態也保存在寄存器中。

          l 中斷控制器和接口邏輯實現與MCU的接口。

          2.3 USB HCD的實現

          如前所述,USB HCD是USB系統控制主機控制器的工具,它的實現依賴于具體的硬件。因此,除了硬件系統的搭建以外,USB主控制器的實現大部分是HCD的實現。篇幅所限,這里僅給出主要的數據結構和函數調用。

          usb_bus結構描述了usb核心層里的USB總線結構,下面列出了usb_bus結構里的主要成員。

          struct usb_bus {

          int busnum; /* USB總線號*/

          char *bus_name; /* USB總線名稱 */

          struct usb_devmap devmap; /* 設備 */

          struct usb_operations *op; /* 對應于特定HCI的操作 */

          struct usb_device *root_hub; /*根hub */

          void *hcpriv; /* Host Controller private data */

          ……

          };

          op指向一個usb_operations型數據結構,該數據結構用來給USB核心層指定hci操作的函數指針:

          static struct usb_operations hci_device_operations = {

          allocate: hci_alloc_dev,

          deallocate: hci_free_dev,

          get_frame_number: hci_get_current_frame_number,

          submit_urb: hci_submit_urb,

          unlink_urb: hci_unlink_urb,

          };

          void *hcpriv是一個無類型指針,指向一個HCI數據結構,可以是UHCI,OHCI,或其他HCI。在這里,它指向SL811HC的hci_t數據結構。下面給出了SL811HC的hci_t數據結構的主要成員。

          typedef struct hci {

          struct virt_root_hub rh; /* 主機控制器的虛擬根hub的私有成員 */

          struct list_head ctrl_list; /* 控制端點的列表 */

          struct list_head bulk_list; /* 批量傳輸端點的列表*/

          struct list_head iso_list; /* 同步傳輸端點的列表*/

          struct list_head intr_list; /* 中斷傳輸端點的列表*/

          td_array_t *td_array; /* 事務描述符隊列 */

          td_array_t a_td_array;

          td_array_t i_td_array[2];

          struct usb_bus *bus; /* 指向usb_bus的指針 */

          ……

          } hci_t;

          在hci_t數據結構中,有一個指向usb_bus的指針。可見,hci_t數據結構和usb_bus數據結構互相有一個指針指向對方,它們一起完整的描述了USB的總線行為。

        高效液相色譜儀相關文章:高效液相色譜儀原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 洮南市| 伊宁县| 乌兰浩特市| 鄂伦春自治旗| 绥江县| 进贤县| 资阳市| 麻栗坡县| 富裕县| 石城县| 邻水| 邵东县| 三原县| 佳木斯市| 滦平县| 柳林县| 军事| 昭通市| 吉首市| 日照市| 廊坊市| 类乌齐县| 合江县| 政和县| 海晏县| 剑河县| 尚志市| 和田县| 绥化市| 景洪市| 乌海市| 宁明县| 石楼县| 上栗县| 楚雄市| 观塘区| 青龙| 平定县| 松原市| 东乌珠穆沁旗| 郴州市|