0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >业界动态 > 嵌入式应用的 USB 3.0 链路共享五个设计驱动程序的方法

嵌入式应用的 USB 3.0 链路共享五个设计驱动程序的方法

2017-08-25
类别:业界动态
eye 163
文章创建人 拍明
  USB 3.0 端口可通过分离超高速端口和标准 USB 2.0 端口来实现链路共享功能。目前,链路共享是赛普拉斯 HX3 USB 3.0 集线器控制器的独有功能。本文将介绍如何在扩展坞、笔记本电脑、电视机、机顶盒等嵌入式应用程序中实现 USB 3.0 链路共享。

  HX3 控制器是赛普拉斯 USB 3.0 集线器控制器家族的产品,符合 USB 3.0 规范版本 1.0 标准。该款控制器的所有端口均支持超高速 (SS)、高速 (HS)、全速 (FS) 以及低速 (LS) 操作。它集成了终端电阻、上拉电阻和下拉电阻,并支持pin-straps引脚设置选项,以减少系统的整体物料成本。HX3 控制器配有赛普拉斯独有的共享链路功能,能够从四端口 USB 3.0 集线器提供 8 个下行 (DS) 端口。

  共享链路功能可以将集线器的 USB 3.0 DS 端口分为嵌入式超高速端口和标准 USB 2.0 端口。共享链路能够支持多达 8 个来自四端口 USB 3.0 集线器的 DS 端口。而标准 USB 3.0 端口配有 8 条信号线:2 条用于 USB 2.0 通信 (D +,D-),4 条用于超高速通信 (SSTX +,SSTX-,SSRX +,SSRX-),2 条用于 VBUS 和 GND 的电源线。如图 1 所示。

USB 3.0 端口.png

  图 1标准 USB3.0 端口(来源: 赛普拉斯)

  VBUS 使能信号 (DSx_PWREN) 能够控制传输 VBUS 信号到已连接的 USB 3.0 设备。DSx_PWREN 信号与过流信号 (DSx_OVRCURR) 一同实现可插拔 USB 3.0 端口的过流保护电路。当端口出现过流,连接到端口电源开关输出使能引脚的 DSx_PWREN信号 能够关闭端口电源。

  而向后兼容性需要用到 USB 2.0 信号线。当超高速设备(USB 3.0 设备)插入 USB 3.0 端口时,只有超高速线路能够进行通信,此时该特定端口的 USB 2.0 线路为空闲线路。同样地,当高速设备(USB 2.0 设备)插入 USB 3.0 端口时,超高速线路空闲。因此,在 USB 3.0 端口中,根据已连接的设备(超高速设备或 USB2.0 设备),任何指定时间的点,超高速线路或 USB 2.0 线路只有其中一种线路在运行。

  共享链路功能使 USB 3.0 DS 端口可分离为 2 个独立端口,一个嵌入式超高速端口和一个标准 USB 2.0 端口,从而有效地利用多余的线路。例如,如果嵌入式超高速设备(如 USB 3.0 摄像机)连接到其中一个 DS 端口上,HX3 控制器能够让系统设计师使用该特定端口的 USB 2.0 信号来连接到标准 USB 2.0 端口。图 2 显示了如何在系统中运行链路共享端口。

  在共享链路 DS 端口中,由于已经嵌入了超高速端口,超高速设备可以通过电路板布线与超高速端口永久链接,因此不能向下兼容 USB 2.0。已启用共享链路功能的系统不应连接到 USB 2.0 主机或 USB 2.0 集线器,因为共享链路超高速 DS 端口不支持 USB 2.0 功能(例如 USB 2.0 主机或集线器),连接到共享链路的超高速嵌入式设备将无法正常工作。

 笔记本电脑主板的共享链路端口

  图 2示例: 笔记本电脑主板的共享链路端口(来源:赛普拉斯)

  在通用型 USB 3.0 端口中,超高速通信出现故障时,所连接的 USB 3.0 设备将恢复为 USB 2.0 速度。然而,在共享链路端口中,这是没办法做到的。因为 USB 2.0 线路和超高速线路连接了两个单独的设备。为了克服这个限制,除了 USB 2.0 端口的电源使能控制引脚 (DSx_PWREN),共享链路还为嵌入式超高速端口(链路共享端口)实现单独的 VBUS 使能控制引脚(DSx_VBUSEN_SS)。这有助于对嵌入式超高速端口的电源进行独立控制。HX3 控制器侦测到超高速通信故障,将其已连接到嵌入式超高速设备的 VBUS 检测引脚的 DSx_VBUSEN_SS 信号翻转。该 DS 嵌入式超高速设备将重新枚举,认为此 VBUS 的翻转为断开连接事件或连接事件。这就是 HX3 控制器独有的共享链路功能。图 3 显示了共享链路端口的实现过程。

共享链路端口.png

  图 3共享链路端口(来源: 赛普拉斯)

  传统扩展坞

  如今的便携式设备采用紧实型设计,仅可以支持少数外设,通常不包括串行接口HDMI、以太网等端口。为了让设备能够连接更多外设,扩展坞的设计集合了 USB、串行、VGA、以太网等其他端口。图 4 显示了传统笔记本电脑扩展坞的框图。

  如图 4 所示,传统的 USB 3.0 扩展坞需要 6 - 8 个 USB 端口(包括嵌入式端口)。设计采用了配有 2 个四端口集线器控制器集成电路级联。为了支持千兆以太网和 HDMI 等高带宽外设,扩展坞除了要有外置 USB 3.0 端口,还必须配有 USB 3.0 集线器。添加 USB 3.0 集线器只是用于连接鼠标,键盘,串行端口等的较慢速的外设,成本效益会非常低。因此,传统的扩展坞同时配备了 USB 3.0 集线器和 USB 2.0 集线器。然而,采用两个集线器会增加印制电路板面积、功率需求、布线的复杂性以及无源组件数量,总体上明显加大了物料成本。

传统扩展坞设计

  图 4传统扩展坞设计(来源:赛普拉斯)

  共享链路扩展坞

  在配置了共享链路功能的四端口 HX3 控制器上,我们最多可以使用 8 个端口、4 个嵌入式超高速端口和 4 个标准 USB 2.0 端口。图 5 显示了共享链路如何实现低成本的笔记本电脑扩展坞设计。与图 4 的传统扩展坞设计相比,赛普拉斯的共享链路功能为客户提供了最优的高成本效益解决方案。

扩展坞配置共享链路 USB 3.0 集线器.png

  图 5扩展坞配置共享链路 USB 3.0 集线器

  如图 5 所示,下游端口 DS3 和 DS4 为标准 USB 3.0 端口,而 DS1 和 DS2 为共享链路端口。共享链路端口 DS1 和 DS2 的超高速嵌入式端口专用于高速通信端口,例如 HDMI 和以太网端口。使用 DS1 共享链路端口的标准 USB 2.0 端口,可以为扩展坞新增 RS232 端口。还可以使用 DS2 中的外置 USB 2.0 标准端口连接可插拔设备,如键盘、鼠标、移动硬盘等。


  其他嵌入式应用


  随着 USB 3.0 应用在过去几年里迅速增长,USB 3.0 主机端口已成为所有新款个人电脑和笔记本电脑的标准配置。另外,人们对实时高清质量视频的需求日益增长,因此消费者电子设备也采用 USB 3.0 标准。共享链路功能可应用于大多数消费者设备中,包括 CPU 主板、扩展坞、显示器、电视机顶盒、游戏设备和医疗设备等。

  USB 3.0 标准能够支持 5-Gbps 超高速 (SS) 操作,比 USB 2.0 标准快 10 倍。因此,USB 3.0 不仅适用于连接高清摄像机等高带宽外设,而且还可以用作系统总线,从而支持嵌入式设备间的系统内连接,如图 6 所示。

  嵌入式应用中的共享链路可以把更多的设备连接到 USB 主机,从而降低物料成本、印制电路板复杂性和功耗。此外,由于 DS 端口布置在印制电路板的边缘,因此很难在超高速和高速嵌入式应用中部署较短的布线。HX3 控制器配有灵活的、可编程的 USB 3.0 和 USB 2.0 PHY,相对于典型接口的 6 英寸,HX3能够支持长达 11 英寸的布线。


  便携式计算设备


  在笔记本电脑、平板电脑和智能手机等便携式设备中,USB 3.0 通常用作内部系统总线。如图 6 所示,CPU 集成电路通常支持单个 USB 3.0 主机。在本应用中,集线器的上游端口通过物理印制电路板布线永久连接到嵌入式 USB 3.0 主机。集线器的 DS 端口可以连接到支持嵌入式 USB 3.0 功能的集成电路,或作为通用 USB 3.0 外置端口使用。

超极本笔记本电脑的设计使用了两个集线器控制器.png

  图 6超极本笔记本电脑的设计使用了两个集线器控制器 IC(来源:赛普拉斯)

  图 7 显示了超极本笔记本电脑设计如何实现共享链路以降低物料成本和设计复杂性。

支持共享链路的超极本笔记本电脑

  图 7支持共享链路的超极本笔记本电脑


  USB 3.0 扩展坞应用


  USB 3.0 扩展坞可分为通用型和专用型。通用型扩展坞和专用型扩展坞之间的主要区别是扩展坞的上行连接。通用扩展坞一般支持标准的 USB 3.0 上行端口,而专用型扩展坞能够支持某些笔记本电脑的定制端口。

  由于共享链路超高速端口没有 USB 2.0 线路,因此当扩展坞连接到 USB 2.0 主机时,连接了该端口的嵌入式超高速设备将无法工作。为了避免无意地连接到 USB 2.0 主机,不建议在通用扩展坞上使用共享链路。

  原理图

  图 8 显示了如何将共享链路信号连接到 DS USB 2.0 设备和嵌入式超高速设备。

共享链路端口的 USB 数据线连接

  图 8共享链路端口的 USB 数据线连接

  图 8 显示有 8 个 USB 通信引脚

  4 个引脚(SSTX +,SSTX-,SSRX + 和 SSRX-)用于超高速通信和 1 个控制电源开关的 VBUS 引脚

  2 个引脚(D + 和 D-)用于 USB 2.0 通信和 1 个控制电源开关的 VBUS 引脚

  HX3 控制器的 4 个超高速信号连接到嵌入式超高速设备的超高速引脚,而连接到嵌入式超高速设备的 USB 2.0 引脚保持断开。共享链路端口的 USB 2.0 端口连接与标准的 USB 2.0 端口相同。

  Hx3 控制器中的共享链路端口配有以下相关引脚:

  1. USB 2.0 标准端口引脚

  用于 USB 2.0 数据传输的 D+ 和 D- 线

  · 负责控制 DSx_PWREN 信号(如图 9 所示)

  2. DSX_OVRCURR 用作 Hx3 控制器的过电流指示(图 8 中未示出)

  · 嵌入式超高速引脚

  · 用于超高速数据传输的 SSRX +、SSRX-、SSTX+ 和 SSTX- 引脚。

  · VBUS 负责控制 DSx_VBUSEN_SS 信号(如图 9 所示)

  如图 8 所示,USB 2.0 数据线(D+ 和 D-)连接到可可插拔的 USB 2.0 端口连接器引脚,而超高速线路与嵌入式设备的超高速线路相连接。根据 USB 规范,每个可移动的 DS 端口必须在 VBUS 引脚上具有 120μF 的最小电容,从而在最大负载条件下保持稳定的电压。这就是为什么 需要150uF 大容量电容器连接到 VBUS_DS2 线路,而嵌入式超高速端口的 VBUS 引脚不需要大容量电容。

  USB 连接器屏蔽(SHD1 和 SHD2)应通过RC 电路并联接地,以降低电磁干扰,如图 8 所。

共享链路中的 DS 端口 VBSU 控制.png

  图 9共享链路中的 DS 端口 VBSU 控制

  共享链路模式需要对可插拔 USB 2.0 设备和嵌入式超高速设备进行单独的 VBUS 控制。图 9 显示了如何实现 VBUS 控制。

  为了确保嵌入式超高速设备不会倒回 USB 2.0 速度操作,需要加设一个外部电源开关。该开关由 HX3 控制,能够产生 DSx_VBUSEN_SL 输出信号。该信号控制嵌入式设备的 VBUS。

  DSx_PWREN 是 HX3 控制器生成的另一个输出信号,能够控制可插拔 USB 2.0 设备的 VBUS。例如,发生过流时,DSx_PWREN 可以关闭端口电源。DSx_OVRCURR 引脚(图 9 中未示出)用于指示可移动端口的过流状态。对于嵌入式超高速端口该引脚是不需要的,因为此引脚已永久连接在嵌入式超高速端口内部。

  CY4613 是基于 CYUSB3326 元件的赛普拉斯共享链路开发套件。点击此处下载共享链路集线器的完整原理图。

  注意:如有需要,开发人员可以禁用链路共享,默认配置已开启链路共享,需要更改 EEPROM 配置参数,使用Blaster plus 配置实用程序对已作修改的配置进行编程。赛普拉斯为设计师提供 Blaster plus配置实用程序 Windows GUI 工具,可通过个人电脑的 USB 接口将配置下载到 EEPROM。请参考KBA91657说明书以下载 HX3 控制器固件。关于 HX 3 控制器的更多功能,请参阅HX3 Blaster Plus 用户指南。

  共享链路可以减少元件数量并减小印制电路板面积,从而减低物料成本。例如,表 1 比较了共享链路扩展坞设计和使用了 2 个集线器控制器的传统扩展坞的设计中使用的组件。与传统扩展坞设计相比,基于共享链路的扩展坞设计可以节省 28 个组件。安装组件所需的空间也相应地减少了。

共享链路扩展坞和传统扩展坞的比较

   共享链路扩展坞和传统扩展坞的比较

  更多关于共享链路的信息,敬请浏览 HX3 硬件设计指南和原理图清单 或观看视频 HX3 USB 3.0 集线器控制器 Controller 的共享链路介绍。共享链路开发套件平台CY4613可用于评估六端口配置。

  Gayathri Vasudevan 是赛普拉斯半导体公司班加罗尔地区的高级应用工程师。Gayathri 负责为客户设计有线 USB 产品,开发下一代产品的规格参数,并为新产品制作解决方案演示,应用笔记和其他备忘录。Gayathri 有电子与通信工程学士学位。

  嵌入式系统开发中五个设计驱动程序的方法

  一个嵌入式应用软件都会在某些时候访问最底层的固件和进行一些硬件控制。驱动的设计和实施是确保一个系统能够满足其实时性要求的关键。以下5个窍门是每一个开发者在设计驱动程序时应该考虑的,跟随我看看这些设计方法。下面就随嵌入式小编一起来了解一下相关内容吧。

  1.使用设计模式

  设计模式是一个用来处理那些在软件中会重复出现的问题的解决方案。开发人员可以选择浪费宝贵的时间和预算从无到有地重新发明一个解决方案,也可以从他的解决方案工具箱中选择一个最适合解决这个问题的方案。在微处理器出现之初,底层驱动已经很成熟了,那么,为什么不利用现有的成熟的解决方案呢?

  驱动程序设计模式大致分属以下4个类别:Bit bang、轮询、中断驱动和直接存储器访问(DMA)。

  Bit bang模式:

  当微控制器没有内外设去执行功能的时候,或者当所有的内外设都已经被使用了,而此时又有一个新的请求,那么开发者就应该选择Bit bang设计模式。Bit bang模式的解决方案很有效率,但通常需要大量的软件开销来确保其实施的能力。Bit bang模式可以让开发者手动完成通信协议或外部行为。

  轮询模式用于简单地监视一个轮询调度方式中的事件。轮询模式适用于非常简单的系统,但许多现代应用程序都需要中断。

  中断可以让开发者在事件发生时进行处理,而不用等代码手动检查。

  DMA(直接存储器访问)模式允许其它外围设备来处理数据传输的需求,而不需要驱动的干预。

  2.了解实时行为

  一个实时系统是否能满足实时需求取决于它的驱动程序。写入能力差的驱动是低效的,并可能使不知情的开发者放弃系统的性能。设计者需要考虑驱动的两个特点:阻塞和非阻塞。一个阻塞的驱动程序在其完成工作之前会阻止其他任何软件执行操作。例如,一个USART驱动程序可以把一个字符装入传输缓冲区,然后一直等到接收到传输结束标志符才继续执行下一步操作。

  另一方面,非阻塞驱动则是一般利用中断来实现它的功能。中断的使用可以防止驱动程序在等待一个事件发生时拦截其他软件的执行操作。USART的驱动程序可以将一个字符装入传输缓冲区然后等主程序发布下一个指令。传输结束标志符的设置会导致中断结束,让驱动进行下一步操作。

  无论哪种类型,为了保持实时性能,并防止系统中的故障,开发人员必须了解驱动的平均执行时间和最坏情况下的执行时间。一个完整的系统可能会因为一个潜在的风险而造成更大的安全问题。

  3. 重用设计

  在时间和预算都很紧张的情况下为什么还要再造轮子呢?在驱动程序开发中,重用、便携性和可维护性都是驱动设计的关键要求。这里面的许多特征可以通过硬件抽象层的设计和使用来说明。

  硬件抽象层(HAL)为开发人员提供一种方式来创建一个标准接口去控制微控制器的外设。抽象隐藏实现细节,取而代之的是提供了可视化功能,如 Usart_Init和Usart_Transmit。这个方法就是让任何USART、SPI、PWM或其他外设具备所有微控制器都支持的共同特点。 使用HAL隐藏底层、特定设备的细节,让应用程序开发人员专注于应用的需求,而不是关注底层的硬件是如何工作的。同时HAL提供了一个重用的容器。

  4.参考数据手册

  微控制器在过去的几年里变得越来越复杂。以前想要完全了解一个微控制器需要掌握由一个大约包含500页组成的单一数据手册。而如今,一个32位微控制器通常包含由部分的数据手册、整个微控制器系列的资料表、每个外设数以百计的资料以及所有的勘误表组成的数据手册。 开发人员如果想要完全掌握这部分的内容需要了解几千页的文件。

  不幸的是,所有这些数据手册都是一个驱动程序能真正合理实现所需要的。开发人员在一开始就要对每个数据手册中包含的信息进行收集和排序。通常它们中的每一个都需要被访问以使外设启动和运行。 关键信息被分散(或隐藏)在每种类型的数据手册中。


  5.谨防外设故障


  最近我刚好有机会把一系列的微控制器驱动移植到其他的微处理器上。制造商和数据手册都表明PWM外设在这两个系列的微控制器之间是相同的。 然而,实际情况却是在运行PWM驱动器的时候两者之间有很大的不同。该驱动程序只能在原来的微控制器工作,而在新系列的微控制器上却无效。

  在反复翻看数据手册之后,我在数据手册中一个完全不相关的注脚里发现了PWM外设上电时会处于故障状态,需要将一个隐藏在寄存器中的标志位清零。在驱动程序实现的开始,确认外设可能出现的故障并查看其他看似无关的寄存器错误。


责任编辑:Davia

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: 嵌入式 USB 3.0

相关资讯