OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3900|回复: 0

嵌入式工程师必备技能--如何使用示波器查看IIC波形

[复制链接]

1117

主题

1128

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4666
金钱
4666
注册时间
2019-5-8
在线时间
1224 小时
发表于 2021-11-17 16:20:58 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 2021-11-17 18:58 编辑

以下文章摘自微信#公众号开源电子网《嵌入式工程师必备技能--如何使用示波器查看IIC波形》
更多技术文章,请扫下方二维码关注

开源电子网,扫码2222222.png






前言
    这篇文章着重点是让大家学会使用示波器查看IIC波形,并且说明在搞IIC驱动中,大家比较容易犯的错误点。关于IIC驱动源码,这里不过多描述,以精英版IIC实验例程为基础。示波器使用正点原子大神DS100作为测试。


2.png       
                         (DS100示波器视频介绍)


购买链接:https://detail.tmall.com/item.htm?id=632834963710
淘宝搜索:正点原子旗舰店 即可进店购买


测试场景
实物连接图如下:
1222.png
(通道A连接到PB6即IIC_SCL上,通道B连接到PB7即IIC_SDA上)
DS100示波器操作按键示意图如下图所示:
3.png
通过选择滚轮和调整滚轮,把右侧参数调整,如下图所示:
4.png
这里主要做的工作:
① 双通道即通道A和通道B(通过耦合方式进行开启)
② 垂直档位2V(这里需要查看探头档位并在示波器上探头调整为X1即可)
③ 档位调整为100us即可,对于IIC通信可以了
④ 阈值不能调太高
    ⑤ 把触发方式改为单次
把例程代码修改一下,写入数据为1个字符‘A’:
  1. //要写入到24c02的字符串数组
  2. const u8 TEXT_Buffer[] = {"A"};
复制代码


在地址10处写入/读写一个字符数据,代码修改如下:
  1.             AT24CXX_Write(10, (u8 *)TEXT_Buffer, SIZE);

  2.             AT24CXX_Read(10, datatemp, SIZE);
复制代码


编译下载进开发板。例程的操作是按下按键1就是写入数据,按下按键0就是读取数据。

分析波形
这里我们以AT24C02写时序为例子进行分析,回顾一下。
如何使用示波器查看IIC波形647.png
整个写操作过程如下:
起始信号地址和方向应答信号内存地址应答信号数据内容应答信号停止信号

由于前面已经将触发方式改为单次,所以通过按下按键1即是写入操作,获得波形图。
如何使用示波器查看IIC波形741.png
这时候,我们已经把整个写操作时序获取到,这样看肯定不清楚,所以我们可以通过时间档位进行放大。时间档位变为10us并通过水平偏移操作,放大波形如下:
如何使用示波器查看IIC波形817.png
    通过波形图,你会发现:
S就是经典的起始信号,当SCL线为高电平的时候,SDA从高电平往低电平跳变
发送起始信号之后便是地址和方向组合的一个字节数据,这里就是0xA0。0xA0的由来可以查看一下IIC实验教程。
(重点)第九个时钟脉冲高电平期间便是检测应答信号,这里也是检测IIC有没有通信成功的地方。假如看到波形是有低电平,那么就证明从机应答了,否则就是没有应答,这时候你就需要检查第一个字节是不是应该发0xA0。
    图中第九个时钟脉冲后,SDA线出现绿色的小尖峰是由于从机发送完应答信号后,会释放SDA线,把总线的主动权交还给主机。这是正常现象。
    现在继续往后分析波形,通过水平偏移,把波形图整体往左移,如下:
如何使用示波器查看IIC波形1129.png
    这里传输的便是内存地址,前面也提到为地址10处,0xA0即为10,这里与你发送的是一致的内容,并且后面也能接收到从机返回的应答信号。
    继续通过水平偏移,查看剩下的波形内容。
如何使用示波器查看IIC波形1220.png
    这里传输的就是数据内容,通过波形分析,传输的数据为0x41。‘A’的ASCII码值就是0x41,发送与实际一致。随后便是从机的应答信号,低电平表示应答,最后便是经典的P停止信号,在SCL线为高电平的时候,数据线从低电平往高电平跳变。
    以上就是分析IIC波形图的过程。
导致IIC通信异常或者失败的原因有:
① IIC_SDA和IIC_SCL没有接上拉电阻,这时候出现的波峰会出现软弱无力的感觉,可以参照正点原子原理图设计。
如何使用示波器查看IIC波形1436.png
② 读取数据时异常,这里就要检查主机发送完数据后是否释放SDA线,源码可以参考例程。
③ 写入数据不生效,这里存在一个很关键的地方,EEPROM写入速度比较慢,必须需要等待一小段时间约10ms。

下图是AT24C02的读时序图。
如何使用示波器查看IIC波形1554.png
整个读操作过程如下:
起始信号地址和方向应答信号内存地址应答信号
起始信号地址和方向应答信号数据内容应答信号停止信号
有DS100示波器的同学,可以尝试捕捉一下读操作波形,看看读出来的是不是字符‘A’。
(DS100示波器视频介绍)


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 06:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表