首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
USB无线网络适配器在嵌入式系统中的应用
来源:本站整理  作者:佚名  2009-04-02 14:33:50



图2-2 SL811HS USB 主/从控制器功能框图

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

  l SIE模块负责USB总线与主机之间数据的串、并转换,完成总线的电气功能。

  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 控制模块和控制寄存器用来控制芯片正确工作,USB总线状态也保存在寄存器中。

  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数据结构的主要成员。

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:245,460.90000 毫秒