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

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

3天内不再提示

使用泰克多域示波器3104解码I²C数据

multisim 来源:multisim 作者:multisim 2020-09-27 11:24 次阅读

项目概况

我将使用泰克多域示波器3104解码I²C数据,并通过顺序轮询所有地址并寻找确认(ACK)信号来确定设备的I²C地址。任何I²C设备都可以。我收到了英飞凌3D霍尔效应传感器的评估套件,并将其用作我的I²C设备。

产品 成本(和产品链接) 其他资讯
infineon3D磁性传感器2 Go套件 $ 28 套件手册 | 传感器手动 | 传感器产品简介
4位标题(0.100英寸) $ 1 数据表
Arduino Uno R3 $ 15 产品信息
双向逻辑电平转换器 三块 数据表
跳线 三块


如上所述,这里可以接受任何与I²C兼容的传感器或显示器。您无需使用电磁传感器2 Go套件。

设置电路

我使用的Arduino板具有5V逻辑。3D2GO评估套件由3.3 V供电。这意味着必须在Arduino的数据线和评估套件之间插入双向逻辑电平转换器(BD-LLC)。

要将BD-LLC插入Arduino和I²C设备之间,请进行以下连接:

从Arduino到BD-LLC上的GND

BD-LLC到3D2GO上GND的GND

从Arduino到BD-LLC上的低压(LV)的3.3V

BD-LLC上的LV至3D2GO上的3.3V

BD-LLC上的Arduino 5V至高压(HV)

Arduino SDA转HV1

Arduino SCL转Hv2

BD-LLC LV1至3D2GO SDA

BD-LLC LV2至3D2GO SCL

设置示波器

接下来,您需要设置示波器。为此,请按照下列步骤操作:

打开示波器,然后等待它完成自检。

将探头插入通道1和通道2。

将探头的接地夹连接到电路中的接地点(如有必要,请使用跨接线)。

将探头1连接到SDA,将探头2连接到SCL(如有必要,请使用跳线)。

现在,您可以打开Arduino IDE,并将以下代码上传到您的开发板上。这是一个I²C扫描器,它将扫描设备的所有地址并查找ACK响应。

//I2C Scanner from Arduino.cc

//Attribution to Krodal, Nick Gammon, Anonymous

#include

void setup()

{

Wire.begin();

Serial.begin(9600);

Serial.println(" I2C Scanner");

}

void loop()

{

byte error, address;

int nDevices;

Serial.println("Scanning...");

nDevices = 0;

for(address = 1; address <= 127; address++)

{

// The i2c_scanner uses the return value of

// Wire.endTransmission to seeIF

// a device acknowLEDged the address.

Wire.beginTransmission(address);

error = Wire.endTransmission();

if (error == 0)

{

Serial.print("I2C device found at address 0x");

if (address<16)

Serial.print("0");

Serial.print(address,HEX);

Serial.println("!");

nDevices++;

}

else if (error==4)

{

Serial.print("Unknown error at address 0x");

if (address<16)

Serial.print("0");

Serial.println(address,HEX);

}

}

if (nDevices == 0)

Serial.println("No I2C devices found ");

else

Serial.println("done ");

delay(5000); // wait 5 seconds for next scan

}

复制代码

现在,每5秒钟,Arduino将轮询I²C地址1-127。如果在被查询的地址处存在设备,则将在发送地址字节后将SDA线拉低,从而向Arduino发送确认信号。

现在,我们可以继续使用示波器对I²C总线进行解码。

对于Tektronix MDO3000或MDO4000系列示波器,请执行以下步骤,并在括号中使用通用说明。

按下通道1按钮(打开示波器通道1)

按“标签”(如果可以,请标记您的输入)

使用通用b向下滚动到“数据”(标签通道1为“数据”)

选择“插入预设标签”

使用“通道1”按钮下方的“垂直刻度旋钮” 设置每格2伏(减小信号的高度,使其占不到屏幕的一半)

使用Channel 1按钮 上方的旋钮将信号移至屏幕的中上部分

按下“向下”箭头移至“通道2”(打开示波器通道2)

使用通用b向下滚动到“ CLK”(标签通道2为“clock”)

选择“插入预设标签”

按菜单关闭按钮

按下频道2按钮

使用“通道2”按钮下方的旋钮设置每格2伏(减小信号的高度,使其不到屏幕的一半)

使用“通道2”按钮上方的旋钮将信号移到屏幕的下部中间(这将时钟信号的迹线与数据信号的迹线分开)

按下B1按钮(示波器的总线功能可让您解释和显示串行或并行数据;在这种情况下,我们正在处理I²C数据)

使用通用a在通道2上选择“ SCL”(将CLK通道分配为SCL)

使用通用b在通道1上选择“ SDA”(将DATA通道分配为SDA)

使用通用a和通用b将SDA和SCL上的“阈值”设置为“ 1 V”

将“在地址中包含R / W”设置为“是”

将“ B1标签”设置为“ I2C”(以保持跟踪状态)

将“总线显示”设置为“总线和波形”

设置“十六进制”

按“总线B1”,然后使用通用a选择“ I2C”(告诉示波器需要哪种数据类型)

选择“定义输入”

按下触发菜单按钮

选择“公共汽车”

选择“源B1-I2C”

选择“开始时触发”

按菜单关闭

使用Scale旋钮将时间刻度更改为1.00 ms

按Single捕获单个波形

使用Wave Inspector旋钮放大要更仔细检查的I²C事务的任何部分。在我的情况下,在地址0x5E之后接收到一个ACK,因为那是磁传感器芯片的地址。

以下视频引导您完成解码I²C总线所需的步骤。(在Youtube,需要一定的上网工具支持)

解码I²C总线所需的步骤


如何将数据从示波器保存到计算机解码后的数据存储在事件表中。您可以将其保存到USB驱动器或计算机中。

由于插入USB驱动器是一个简单的例子,因此我们将通过远程控制示波器来做到这一点。以下步骤特定于microsoft Windows以及Tektronix MDO3000和MDO4000系列示波器。
附带说明,我们将要做的是潜在的数据安全风险。在工作之前,请与您的IT部门联系。
我的计算机位于192.168.0.18,示波器位于192.168.0.40。对命令进行适当的调整。

以管理员身份运行CMD.EXE并键入以下内容以创建共享:

mkdir C:示波器

NET SHARE Scope = C: Oscilloscope / remark:“ TEK3104 Data” / grant:domain user,FULL//这将在您的主硬盘上创建一个名为“ Scope”的共享。您可以将其更改为所需的任何位置。确保将domain user更改为计算机连接到的域的名称,或将PC的名称更改为您用来登录Windows的用户名。

ipconfig//注意本地连接ipv4地址。在我的示例中,它是192.168.0.18。

接下来,当仍在CMD.EXE中时,使用PuTTY或telnet连接到示波器:

TELNET -O 192.168.0.40 4000//将192.168.0.40更改为您的示波器的IP,该IP在启动时显示在主屏幕上。

现在,您已通过默认端口4000上的IP地址连接到示波器。键入以下内容:

!d //清除设备。

files:mount:list?//这将显示所有已安装的驱动器。

files:mount:drive“ H:; 192.168.0.18; Scope; user; pass;”//这会在机器上的192.168.0.18处创建一个持久驱动器。

files:mount:list?//这将导致出现一个新的驱动器。

files:mkdir“ H:/ NewArticles”//在计算机上创建一个名为“ New Articles”的目录。

files:cwd“ H:/ NewArticles” //将焦点更改到该目录。

save:eventtable:B1“ eventtable.csv”//(最终)将数据保存到计算机。

结论

在不到15分钟的时间里,我们对I²C总线进行了解码,然后从整个房间将数据保存到计算机中进行分析。
现在已经建立了共享文件夹,以后的工作可以在几分钟之内完成。这种自动解码过程比仅探测信号并尝试手动解释逻辑电平要有效得多。
我使用了本文中显示的范围和过程来解码3D磁传感器2 Go的几种不同模式的I²C总线数据,并确定哪些命令对应于哪些电源模式。

责任编辑:xj

原文标题:如何在示波器上读取I2C总线

文章出处:【微信公众号:multisim】欢迎添加关注!文章转载请注明出处。

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

    关注

    111

    文章

    5662

    浏览量

    181810
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1348

    浏览量

    120881

原文标题:如何在示波器上读取I2C总线

文章出处:【微信号:A1411464185,微信公众号:multisim】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【飞凌 OK113i-C 全志T113-i开发板】视频编解码测试

    前言本文测试OK113i-S开发板-视频编解码的功能OK113i-S开发板是支持视频的编解码的,下面是官方介绍的编解码功能T113-
    发表于 12-25 09:41

    ad7305用示波器打出数据在输出经过了800uS才开始下降是为什么?

    各位大佬麻烦看一下,我这个打的数据是不是有什么问题。从芯片手册来看,ad7305的掉电时间是从a0悬空到输出被置为高阻态(就是没输出,不知道咋描述)。但是我用示波器打出数据在输出却经过了800
    发表于 12-05 08:10

    AD2S1210开发板解码摩川旋变,解码出来的波形为什么会出现方波?

    我购买了一块AD2S1210的评估板和转接板,用来解码摩川的旋变。如下图所示,旋变还没有装到电机上,但是足够读取原副边线圈的正余弦波形。 现在通过上位机设置,激励正弦信号是10kHz
    发表于 12-04 06:41

    请问使用单电源的仪表放大器AD8226输入如何与或福禄电流探头连接?

    请问或福禄电流探头输出如何连接到仪表放大器AD8226输入。
    发表于 11-17 08:23

    示波器如何使用?

    请问示波器如何使用?
    发表于 11-01 08:02

    如何将用户数据存贮到电池供电数据寄存器

    AT32F4xx电池供电数据存储展示如何将用户数据存贮到电池供电数据寄存器。
    发表于 10-27 08:17

    时钟延展导致I2C通信不可靠的解决方案

    ,而 MPEG 解码芯片为 MASTER节点。在产品调试过程中,发现该通信不可靠。在系统运行一段时间后,该通信会出现故障而导致整个系统死机。使用示波器测量,发现这时 I2C 总线的 SCL 信号持续为低电平。
    发表于 09-08 06:58

    关于RT685 I3C主机能力的问题求解

    一些疑问: 1) 对于 I3CI3C 总线可以支持这种配置下的主机吗? 2) I2C 的相同问题,如果我们在 FM+ 模式下将外围设备连接到 I
    发表于 05-24 12:24

    简述Agilent安捷伦DSOX3104T数字示波器1GHz

    安捷伦DSOX3104T数字示波器 DSOX3104T 是 Agilent 的 1 GHz、4 通道数字示波器。随时间测量电子电路或组件中的电压或电流信号,以显示幅度、频率和上升时间等
    的头像 发表于 05-23 08:38 528次阅读
    简述Agilent安捷伦DSOX<b class='flag-5'>3104</b>T数字<b class='flag-5'>示波器</b>1GHz

    是德科技MSOX3104A混合信号示波器1GHz,4+16通道

    是德科技MSOX3104A混合信号示波器 MSOX3104A 是 Keysight Agilent 的 1 GHz、4+16 通道混合信号示波器。随时间测量电子电路或组件中的电压或电流
    的头像 发表于 05-22 14:44 454次阅读
    是德科技MSOX<b class='flag-5'>3104</b>A混合信号<b class='flag-5'>示波器</b>1GHz,4+16通道