0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从USB到I²C的桥接

星星科技指导员 来源:ADI 作者:ADI 2023-01-12 15:06 次阅读

该电路提供直接I2电脑 USB 端口的 C 接口。USB转1线加密狗为PC提供1-Wire主控器,用于控制1-WireI/O扩展器。此 I/O 扩展器具有两个双向开漏端口,PC 可以写入和读取这些端口。通过在这两个端口上生成正确的逻辑信号,PC可以模拟I®2C 主控。

当您需要直接 I 时2C接口到您的PC,有几个选项可用。例如,PC的并行端口可以模拟I2C主机。然而,新PC通常缺少此端口,并且Windows的现代变体(Windows XP和Windows Vista)不允许轻松访问它。

更好的方法是使用USB端口,但该技术需要复杂的驱动程序,并且通常还需要微控制器,而微控制器又需要固件。不是你能在一个下午建造的东西!有许多商业版本可用,但它们并不便宜。另一方面,图1的电路可以快速构建,并且可以与LabVIEW和Visual Basic等多种编程语言一起运行。

poYBAGO_tDWAJlLwAABBm3eAzQA938.png

图1.该电路提供I2计算机 USB 端口的 C 接口。

U1 (DS9490R)是一款USB转1线桥接器,为PC增加了一个1线主机。连接至1-Wire网络的1-WireI/O扩展器(U2、DS2413P)提供两个双向漏极开路端口,可通过U1由PC控制。这就是创建 I 所需的所有硬件2C 主控。

软件

对于缺少硬件的微控制器,I2C master,“位敲击”是实现软件 I 的行之有效的方法2C 主控。这是用于启用软件 I 的技术2此平台的 C 母版。

软件生成 I2通过控制 U2 的 PIOA 和 PIOB(引脚 6 和 4)的逻辑电平来发出 C 信号。例如,要创建起始条件,SDA 必须在 SCL 为高时从高过渡到低。将 SCL (PIOA) 驱动为高电平,然后将 SDA (PIOB) 驱动到高电平,然后将 SDA 拉低。因此,软件实现了 I2C 通过控制 PIOA 和 PIOB 来控制。DS2413数据资料中的流程图显示了这种PIO功能(图2)。

poYBAGO_tDyAa-srAADeBdtIzag887.png

图2.PIO功能流程图,取自DS2413数据资料。

要更改PIO输出,必须首先通过ROM功能对器件进行寻址。该系统仅包含一个1-Wire从机,因此您可以使用“skip ROM”命令跳过复杂的寻址过程。然后,通过发送“5A”命令写入 PIO 输出锁存器。1-Wire I/O扩展器(U2)包括一个8位寄存器,其两个LSB连接到PIOA和PIOB。(其他六位不在乎。

为了更改逻辑状态,新数据将发送两次:一次按原样发送,一次反转。从机(U2)通过向主站返回“AA”命令来确认无差错接收,并通过发送新的输出状态来结束。整个序列现在可以重新开始,也可以通过1-Wire主机的复位中止。因此,您必须为每个输出更改传输四个字节(不包括跳过ROM和5A命令)。例如,您必须执行以下序列来生成 I2C 启动命令:

主模式 数据 评论
TX (重置) 重置总线
RX (存在) DS2413 存在
TX 0xCC 跳过只读存储器
TX 0x5A 写入 PIO 寄存器
TX 0xFF SCL=1 & SDA=1
TX 0x00 倒置数据
RX 0xAA 接收数据
RX 0x0F 返回输出状态
TX 0xFD SCL=1 & SDA=0
TX 0x02 倒置数据
RX 0xAA 收到的数据
RX 0x2D 返回输出状态

类似的序列实现其他事件,如发送字节、确认和停止。

Maxim为DS9490提供软件驱动程序,以及支持Microsoft .NET平台的Windows1-Wire软件开发套件(SDK)。为了说明,我们可以实现一个 I2LabVIEW 中的 C master,使用 其 .NET 支持。这仅在安装支持.NET的1-Wire驱动程序时才有效。另一个先决条件是安装 Microsoft .NET 框架和 Visual J# 可再发行组件包。

为防止其他应用访问1-Wire网络,VI“I2C 初始化“(其中 VI 是 LabVIEW 术语,意思是 虚拟 仪器),初始化 U1 并 使 LabVIEW 独占 访问 1-Wire 网络 (图 3)。然后发出1-Wire复位,然后发出跳脉冲命令(CC),最后发出PIO写入命令(5A)。

pYYBAGO_sX-AMrTuAAAQ9SyB6kw120.gif?imgver=1

图3.六“我2“C 初始化”初始化DS2413,之后即可接收I/O数据。

从站(U2)现在已准备好接受PIO的数据。六“I²C 时钟“将 SCL 线从低电平切换到高电平(图 4)。SDA可以设置高或低,VI返回SDA状态。您可以通过连续调用此函数 8 次(传输的每个位一个)来写入完整的字节。如果从站返回数据,则SDA由主站驱动高电平。为了传输“0”,从机可以将SDA拉低(这是可以的,因为PIOB是漏极开路输出)。由于U2会自动返回更新的输出状态,因此不需要特殊的读取操作(参见VI“Send I2C 字节“和”Get I2C 字节“)。

poYBAGO_sYCAB9UnAAAc_49epgA627.gif?imgver=1

图4.六“I²C 时钟“将 SCL 从低切换到高。SDA可以设置为“I2C 写入“操作并读取”I2C 读取“操作。

VIs“I2C开始“,”I²C停止“和”I2C acknowledge“使用相同的结构来生成适当的SDA和SCL信号。通过组合这些VI,您可以对完整的I2C 读取或写入会话。为了说明通信会话(图5),我们读取实时时钟的寄存器0(DS1337)。然后,该设备以0x39应答,这是计算秒数的寄存器的内容。寄存器地址设置为0x00,从地址设置为0xD0,要读取的字节数设置为1。示波器图像(图6)显示了电路针对这些设置产生的信号。

pYYBAGO_sYGAGsydAAAnPzVNG84653.gif?imgver=1

图5.如何使用图1电路读取寄存器的示例。

poYBAGO_sYOAWmb6AABH_u-aXjM316.gif?imgver=1

图6.读取DS1337的寄存器0。S=开始,A=确认,Sr=重复启动,P=停止。从主到从是阴影;从奴隶到主人是白人。

由于软件开销很大,该电路产生信号的速率被限制在大约20bps。但是,这个想法可以用不同的编程语言实现。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6813

    浏览量

    147673
  • usb
    usb
    +关注

    关注

    59

    文章

    7439

    浏览量

    258341
  • 1-Wire
    +关注

    关注

    0

    文章

    49

    浏览量

    21230
收藏 人收藏

    评论

    相关推荐

    USB 3.1和USB 3.2的区别

    USB Implementers Forum 已将 USB 3.0 更新为 USB 3.1。FLIR 更新了其产品描述来反映此项更改。 本页将介绍 USB 3.1 以及第一代与第二代
    的头像 发表于 08-26 17:22 4.7w次阅读
    <b class='flag-5'>USB</b> 3.1和<b class='flag-5'>USB</b> 3.2的区别

    USB硬件设计和热拔插原理

    对于四线制的USB,即USB1.0、USB1.1和USB2.0,USB硬件接口有4根接线,如下图。
    发表于 11-11 09:29 3117次阅读

    什么叫usb接口?USB是什么意思?

    什么叫usb接口?USB是什么意思?      
    发表于 07-02 10:26 23.2w次阅读

    什么是usb host?usb otg 是什么?

    什么是usb host? USB是英文Universal Serial Bus的缩写,中文含义是“通用串行总线”。它不是一种新的总线标准,而是应用在PC领域的接口技术。USB是在1994
    发表于 07-02 10:30 1.2w次阅读

    usb集线器是什么东东_usb集线器功能介绍

     USB Hub,指的是一种可以将一个USB接口扩展为多个,并可以使这些接口同时使用的装置。USB HUB根据所属USB协议可分为USB2.
    发表于 11-16 15:18 1.6w次阅读

    mini usb和micro usb的区别

     MiniUSB,又称迷你USB,是一种USB接口标准,USB是英文UniversalSerialBUS的缩写,中文含义是“通用串行总线”,是为在PC与数码设备间传输数据而开发的技术。标准US
    发表于 03-09 11:30 15.1w次阅读

    USB 3.2接口的特征, USB 3.0和USB 2.0的区别

    USB3.0采用的方法是,线缆和接口把两种模式的线都放到一块去。下图是USB3.0的例子,红色圈里的是USB2.0,紫色的是USB3.0,如果主机支持
    发表于 05-31 05:00 8.5w次阅读

    USB-IF宣布推出最新的USB4规范

    USB实施者论坛(USB-IF)是推动和采用USB技术的支持组织,宣布推出USB4规范,这是一项重大更新,旨在提供下一代USB架构,补充和构
    发表于 09-05 11:31 952次阅读

    微雪电子USB集线器|USB HUB HAT简介

    树莓派USB扩展板 HUB 集线器 带USB转串口 外扩4个USB口;5V供电 型号 USB HUB HAT
    的头像 发表于 12-30 14:17 2631次阅读
    微雪电子<b class='flag-5'>USB</b>集线器|<b class='flag-5'>USB</b> HUB HAT简介

    Microchip USB 2.0集线器中的USB转UART桥接功能

    Microchip USB 2.0集线器的USB转UART桥接功能可为系统设计人员提供更多的系统控制,还能减少BOM。使用该功能时,不再需要单独的USB转UART器件,而且下行USB
    发表于 03-31 09:36 12次下载
    Microchip <b class='flag-5'>USB</b> 2.0集线器中的<b class='flag-5'>USB</b>转UART桥接功能

    USB是什么 USB介绍

    USB:Universal Serial BUS(通用串行总线),是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能
    的头像 发表于 07-30 10:14 3077次阅读

    USB电力传输(USB PD)和USB Type-C的不同之处是什么?

    USB电力传输(USB PD)和USB Type-C的不同之处是什么? USB PD(USB Power Delivery)和
    的头像 发表于 10-27 14:31 1606次阅读

    usb虚拟串口和usb协议的区别

    USB虚拟串口和USB协议是两个相关但不同的概念。在理解它们之前,我们首先需要了解USB的基本知识。 USB(通用串行总线)是一种用于连接计算机与外部设备的标准通信接口。它是由多个组件
    的头像 发表于 12-28 14:55 617次阅读

    USB C和USB Type C的传输性能

    USB-C和USB Type-C是同一种标准,用于连接电子设备和传输数据、音频和视频信号。USB-C是USB Type-C的简称,两者可以互换使用。
    的头像 发表于 01-17 09:18 686次阅读

    什么是USB HOST、USB Slave和USB OTG?它们之间有什么区别?

    什么是USB HOST、USB Slave和USB OTG?它们之间有什么区别? USB(通用串行总线)是一种用于连接设备的通信接口标准,它允许设备之间进行数据传输和通信。
    的头像 发表于 02-02 15:32 2577次阅读