Qwiic 概述与常见问题解答

什么是 Qwiic?

Qwiic 是一种用于微控制器及相关硬件的便捷互连生态系统。典型应用包括一个配备 Qwiic 的微控制器以及一个或多个菊花链式扩展板。Qwiic 这个名字体现了其目的,是对 “快速(Quick)” 和集成电路间(Inter-Integrated Circuit,I2C)这两个词的巧妙组合。Qwiic 扩展板生态系统涵盖了从简单的按钮接口到环境传感器直至 GPS 接收器等各种设备。

如图 1 所示的 Sparkfun redboard DEV-15123 是一款具有代表性的配备 Qwiic 的微控制器,采用了 Microchip (Atmel) ATMega328。印刷电路板(PCB)右上角可以看到 4 针 JST 连接器。

图 1:代表性 Qwiic 微控制器的图片。Qwiic JST 连接器位于 PCB 的右上角。

在哪里可以找到 Qwiic 线缆?

Digikey 提供了多种线缆 。我们建议在可能的情况下使用短线缆,不过也有长达 1.6 英尺(500 毫米)的线缆 可用。

你可能会对 SparkFun Qwiic 线缆套件感兴趣,其中包含了如图 2 所示的各种线缆。

image

图 2:SparkFun KIT-15081 中包含的 Qwiic 线缆图片。

在哪里可以购买 Qwiic 微控制器和扩展板?

DigiKey 提供了大量来自 Qwiic 生态系统的设备。首先找到 “扩展板,子卡” 类别 。接下来,在平台字段中输入 “qwiic”,如图 3 所示。选择所有剩余产品,然后按回车键。
类似的过程也可用于查找 DigiKey 的 “嵌入式 MCU、DSP 评估板” 类别中的产品

图 3:使用 DigiKey 的参数搜索引擎选择 Qwiic 组件。

Qwiic 网络可以连接多少设备(节点),最大线缆长度是多少?

答案取决于几个因素:

  • 实时性能:与每个模块进行通信都需要时间。当安装了许多模块时,这种延迟可能会变得很显著。这表现为系统响应迟缓。你的微控制器或网络可能没有必要的资源来满足现实世界的限制。
  • 网络限制:正如本文后面将描述的,随着节点数量的增加,网络速度和对干扰的敏感性会不期望地增加。
  • 电源限制:微控制器为所有 Qwiic 模块提供电源。许多模块可能会使微控制器板上的稳压器过载,导致意外的热复位甚至设备损坏。

技术小贴士: 为你的 Qwiic 网络构建最坏情况下的电源预算是一个很好的做法。我们计算所有模块电流的总和,然后确保其小于微控制器能够提供的电流。良好的工程实践包括一个降额因子,以减轻意外操作和高温的影响。一个合理的起点是将电流保持在微控制器 PCB 额定电流的 50% 以下。

技术小贴士: 新手程序员在代码中实现延迟时经常会遇到问题。例如,许多人会使用 Arduino 的 delay () 函数或其特定平台的等效函数。这是不可取的,因为它实际上会使微控制器停止所有活动。应该实现非阻塞(Non-blocking)技术,因为它们允许微控制器在等待延迟完成的同时继续进行诸如网络通信之类的任务。

如果我的微控制器板本身不支持,如何添加 Qwiic?

Qwiic 系统基于 I2C,大多数微控制器都支持。在硬件层面,你需要一个适配板,例如 Spark Fun DEV-14495。软件可能更复杂,因为你需要配置然后连接微控制器的 I2C 硬件。在某些情况下,这就像使用 Arduino Wire library 一样简单。在其他情况下,你可能能够使用硬件描述语言(HAL)甚至直接控制微控制器的特殊功能寄存器(SFR)。

image

图 4:Spark Fun DEV-14495 Qwiic 适配板的图片。

技术小贴士: 许多微控制器具有多个 I2C 外设。你可以实现两个 Qwiic 网络以容纳更多设备并降低总体线缆长度。Spark Fun 的 DEV-14495 适配板可以让你相对轻松地做到这一点。

Qwiic 的优点是什么?

与传统方法相比,Qwiic 通过在单个连接器上同时提供电源和通信,将布线复杂性降至最低。与传统电路板相比,使用 Qwiic 系统所需的时间仅为一小部分。这得益于 4 针 JST 连接器,其中包括以下线路:

  • 3.3 VDC
  • GND
  • SDA:串行数据
  • SCL:串行时钟

Qwiic 的优势还延伸到了软件方面。大多数制造商为 Qwiic 板提供库。例如 Arduino Plug and Make 套件,其中包含如图 5 所示的一系列配备 Qwiic 的 Modulino 板。这些板的 “驱动程序” 使用 Arduino IDE 的库管理器加载。

图 5:安装了 4 个 Qwiic Modulino 板的 Arduino Plug and Make 套件的图片。

Qwiic 的局限性是什么?

Qwiic 的局限性反映了底层的 I2C 通信协议。这种底层依赖关系决定了数据传输速度、线缆长度和网络上允许的设备总数。

信号速度

回想一下,I2C 最初是在 40 多年前设计的,作为板上信息传递的简化方法。它依赖于开漏和开集电极电路以及相应的上拉电阻,使得信号转换相对于互补驱动器较慢。
随着添加更多设备,情况会恶化。每个设备的电容加上线缆电容会减慢信号转换。这是一个已知的问题,因此 Qwiic 时钟信号通常会被限制在 100 kHz 频率。

信号损坏

具有 I2C 信号的 Qwiic 系统容易受到干扰。例如,将 Qwiic 线缆靠近电机的电源线会导致数据损坏,因为电机线缆的磁能会泄漏到通信线缆中。务必隔离通信和电源线。此外,以直角交叉线缆,以最小化与耦合磁场相关的干扰。

技术小贴士: 当预计会出现信号损坏时,考虑使用 RS-422/485。双绞线以及平衡信号可以在长距离上运行,并具有良好的抗噪能力。对于关键应用,考虑使用光纤连接。

带宽

在这种情况下,术语 “带宽” 指的是可以在 Qwiic 网络上共享的数据量。每个网络设备都会消耗一定的时间。例如,在图 6 中,我们可以查看用于与 Arduino Pixels Modulino 通信的帧的开头部分。使用 100 kHz 时钟,这个帧的传输大约需要 3 毫秒。就其本身而言,这并不显著。然而,许多这样的设备可能会导致实时系统迟缓。

image

图 6:由 show () 方法启动的用于 Arduino Pixels 模块的 I2C 帧的部分。帧以默认的 Pixels 0x6C 地址开始。

Qwiic 的替代方案有哪些?

之前,我们将 Qwiic 定义为一个快速且易于使用的平台,我们可以在此探索各种用于微控制器相关设备的扩展板。我们还根据底层的 I2C 技术确定了 Qwiic 系统的一些局限性。
综合考虑,速度是 Qwiic 系统的一个限制。因此,Qwiic 扩展板上的设备的范围和性能也受到限制。例如,我们肯定可以找到一个 I2C 模数转换器(ADC)。然而,它不会是一个高速设备。与此形成对比的是串行外设接口(SPI)ADC,其运行速度可能快 25 到 100 倍。为了提高性能,可以使用并行输出 ADC。通过适当注意信号终端,我们可以再提高 25 到 100 倍。

技术小贴士: 一般来说,I2C 用于多个设备之间的慢速通信。SPI 用于少数(最好是一个)设备的快速通信。典型的 I2C 时钟在 100 kHz 范围内,而 SPI 可能在 10 MHz 运行。SPI 也更快,因为它没有 I2C 的地址开销。

Qwiic 类似的替代方案

有几个不同的类似于 Qwiic 的系统,包括 Gravity(DFRobot)、Grove(Seeed Studio)和 STEMMA(Adafruit)。这些系统在速度方面没有显著差异,因为它们都使用 I2C 接口;它们在性能上与 Qwiic 相近。对这些系统的描述超出了本文的范围。
MikroBUS 替代方案
MikroElektronika 的 MikroBUS 具有 8 针连接器,提供了明显的速度优势。虽然单个扩展板可能仍然使用 I2C,但制造商也可能使用更快的 SPI 接口。例如如图 7 所示的 MikroElektronika ADC 23 CLICK ,采用了TI ADS127L11

image

图 7:采用 MikroElektronika MikroBUS 8 针总线的 MikroElektronika ADC 23 CLICK 图片。

Pmod 替代方案

Digilent Pmod 系统提供了易于使用的无面包板扩展板。它们也具有取决于设备的 I2C 和 SPI 接口组合。如图 8 所示的 Digilent PmodAD5 是一个代表性设备。这是用于ADI AD7193 的扩展板

图 8:具有 6 针 Pmod 连接的 Digilent PmodAD5 图片。

Feather 和 FeatherWing 替代方案

Adafruit 的 Feather 产品提供了紧凑的可堆叠组件。如图 9 所示的代表性 Feather 产品。这款 Adafruit 3231 RF Solutions RFM95W LoRa 调制解调器提供了 SPI 接口。

图 9:Adafruit 3231 Featherwing LoRa 调制解调器的图片。该模块具有 SPI 连接。

其他

我们的列表肯定可以扩展。然而,前面提到的设备是在包括 “简单” 和 “初学者” 规定时最受欢迎的。例如,我们可以谈论现场可编程门阵列(FPGA)和相关的 FPGA 夹层卡高引脚数(FMC HPC),但是,从复杂性和成本的角度来看,这些设备不再属于初学者类别。

最后

Qwiic 生态系统提供了一种易于使用、无需面包板的方法来测试各种微控制器和微控制器配件。大量的支持软件库进一步增加了其易用性。这些特性允许新手程序员快速启动新项目。
这个流行的系统存在与底层依赖 40 年历史的 I2C 协议相关的限制。高级用户可能希望扩展到更快的基于 SPI 的技术,如 MikroBUS、Pmod 和 Feather。或者,一些学生(比如你,电气工程师)可能会从面包板构建和自己设计 PCB 中受益。

更多 信息 :
Arduino Modulino Pixels 教程
开发工具包限制—如何确定兼容性