当前位置: 首页 > news >正文

【芯片测试篇】:93K测试机I2C的设置和调试

文章目录

  • I2C 总线配置
    • 起始和停止条件
    • 位传输
    • 数据格式/应答
    • 完整的 I2C 数据传输
  • PE 结构
  • 93K setup
  • I2C 调试


在这里插入图片描述


I2C 总线配置

在这里插入图片描述

  • I2C 是一种双向,两线串行通讯接口,分别是串行数据线 SDA 和串行时钟线 SCL 。两根线都必须通过一个上拉电阻接到电源。

  • 总线上发送数据的器件被称作发送器,接收数据的器件被称作接收器。控制信息交换的器件被称作主器件,受主器件控制的器件则被称作从器件。主器件产生串行时钟 SCL,控制总线的访问状态,产生 START 和 STOP 条件。

  • 只有当总线处于空闲状态时才可以启动数据传输。每次数据传输均开始于 START 条件,结束于 STOP 条件,二者之间的数据字节数是没有限制的,由总线上的主器件决定。信息以字节(8位)为单位传输,第9位时由接收器产生应答。

起始和停止条件

在这里插入图片描述

  • 数据和时钟线都为高则称总线处在空闲状态,当 SCL 为高电平时 SDA 的下降沿(高到低)叫做起始条件(START,简写为S),SDA 的上升沿(低到高)则叫做停止条件(STOP,简写为P)。

位传输

在这里插入图片描述

  • 每个时钟脉冲传送一位数据。SCL 为高时 SDA 必须保持稳定,因为此时 SDA 的改变被认为是控制信号。

数据格式/应答

在这里插入图片描述

  • I2C 的数据字节定义为 8 位长度,每次数据传输的字节数没有限制。每个传输的字节后必须跟随一个应答(ACK)信号:应答信号的时钟由主设备生成,而接收方通过拉低 SDA 线,并在应答时钟脉冲的高电平阶段保持其低电平,来产生实际的应答信号。

  • 若从设备处于忙状态(需先完成其他任务,才能发送或接收下一个数据字节),它可将 SCL 保持在低电平,从而迫使主设备进入等待状态。当从设备准备好并释放时钟线时,正常的数据传输将恢复。

完整的 I2C 数据传输

在这里插入图片描述

  1. 在以起始条件(S)开始通信后,主机先发送一个7位的从机地址,随后紧跟第8位 — 读/写位。读/写位用于指示主机是从从机接收数据,还是向从机写入数据。

  2. 接着,主机释放 SDA 线,并等待从机的应答信号(ACK)。每个传输的字节后都必须跟随一个应答位:为了应答,从机需将 SDA 线拉低,并在 SCL 线的高电平周期内保持低电平。

  3. 数据传输始终由主机以停止条件(P)终止,以此释放通信线路。不过,主机也可产生重复起始条件(Sr),无需先发送停止条件(P)就能寻址另一个从机。

  4. 停止条件的定义是:当 SCL 为高电平时,SDA 线发生从低到高的跳变 。除起始和停止条件外,SDA 线的所有电平变化都应在 SCL 为低电平时进行。

PE 结构

在这里插入图片描述

  1. 驱动(输入)

    • 驱动单元为被测器件(DUT)提供输入信号,从向量存储单元获取格式化逻辑信号 FDATA(仅 0 或 1 ),从参考电压源(RVS)获取 VIL/VIH 参考电平,将电平与逻辑信号结合:
      • 若 FDATA 为逻辑0,施加 VIL(DUT 识别为逻辑0的最大电压)到DUT输入引脚。
      • 若 FDATA 为逻辑1,施加 VIH(DUT 识别为逻辑1的最低电压)到DUT输入引脚。
  2. 动态负载

    • 动态负载(Active Load,又称电流负载),在功能测试时连接到 DUT 输出端充当负载,由测试程序控制提供拉电流(IOH — DUT 输出逻辑 1时,其输出引脚必须向外提供的电流,测试系统从 DUT 引脚 “拉取” 电流)和灌电流(IOL — DUT 输出逻辑 0时,其输出引脚必须接纳的电流,测试系统向 DUT 引脚 “灌入” 电流)。
    • 参考电压(Voltage Reference,表示为Vref)决定是 IOH 起作用还是 IOL 起作用;当待测器件的输出电压高于 Vref 时,ATE从被测器件引脚拉取电流 IOH;当待测器件的输出电压低于 Vref 时,ATE向被测器件引脚灌入电流 IOL。
  3. 电压接收

    • 若DUT输出电压 ≤ VOL → 判定为逻辑0。
    • 若DUT输出电压 ≥ VOH → 判定为逻辑1。
    • 若DUT输出电压 介于 VOL 和 VOH 之间(VOL < 电压 < VOH)→ 判定为 三态电平(高阻态)或无效输出。

93K setup

  • I2C 总线上的所有设备都使用开漏输出,并且使用时需要连接上拉1.5K,2.2K 或者 4.7K 的电阻,在 93K 测试机上可使用 vt = VCC 和 iol = VCC / pull-up_resistor 配置 Active Load 用来代替实际的电阻,term = load。

  • I2C 总线上数据的传输速率有 100kbit/s 和 400kbit/s,在 spec 文件 set timing 中的 period 可以设置为 10us 或者 2.5us。

  • 将 vth = VCC / 2.0 用来比较高低电平。

  • 按照 Topic 360281 — 定义 I2C 协议,参考 Topic 0482073425 — 标准I2C接口,写I2C class method。

I2C 调试

  • 硬件连接:

    • 检查电源 pin 和复位 pin 是否供电稳定,检查 dcVI 是否连接并且上电 VCC,可以用万用表确认,instrument 视图测量或者 profiling()。
    • 检查 DUT 的 SDA/SCL 引脚是否正确连接到机台的 pogo pin,loadboard 上是否存在虚焊。
    • 上拉电阻:根据 VCC 和 pull-up_resistor 求 iol。
  • 总线配置:

    • 设备地址 + 读/写位 发送是否正确。
    • 时钟频率是 100kbit/s 还是 400kbit/s,修改 period 为 10us 或者 2.5us。
    • ​起始信号和停止信号时序是否正确。
    • 第9个周期的 ack 是否为低电平。
    • MCU 烧录的固件是否正确,在跑 I2C 时序前是否要加延时,有时会加到几十ms。
  • 必要时通过示波器抓取波形查看:在使用示波器连接 DUT pin 时,机台要先断开连接,也就是数字pin和电源pin的 disconnect = true; ,如果不断开的话 DUT pin 上是有电压的,而如果此时示波器设置上升沿 VCC / 2.0 电压触发,示波器探头接触到 DUT pin 时就会直接抓到波形,而这个并不是想要的。


http://www.dtcms.com/a/269410.html

相关文章:

  • 计算机网络:(八)网络层(中)IP层转发分组的过程与网际控制报文协议 ICMP
  • 【排序】插入排序
  • 深入了解linux系统—— System V之消息队列和信号量
  • Flask 解决 JSON 返回中文乱码问题方案
  • Bright Data MCP+Trae :快速构建电商导购助手垂直智能体
  • MySQL Galera Cluster部署
  • 算法化资本——智能投顾技术重构金融生态的深度解析
  • 【UE5】虚幻引擎的运行逻辑
  • 【操作系统】进程(二)内存管理、通信
  • 【喜报】第三届BDDM 会议成功申请 IEEE 冠名,并获得 IEEE 北京分会赞助!
  • 佰力博科技与您探讨电晕极化和油浴极化有什么区别?
  • maven 发布到中央仓库之持续集成-03
  • 当Powerbi遇到quickbi,性能优化方式对比
  • Unity实用技能-背景自适应文本
  • Docker部署QAnything2.0并接入大模型
  • 基于极大似然估计的Gm-APD信号提取算法2025.7.8
  • 技术演进中的开发沉思-28 MFC系列:关于C++
  • 界面控件Telerik UI for WinForms 2025 Q2亮点 - 支持.NET 10 Preview
  • AIGC与影视制作:技术革命、产业重构与未来图景
  • XCKU060‑2FFVA1156I Xilinx FPGA AMD Kintex UltraScale
  • 文献学习|全面绘制和建模水稻调控组景观揭示了复杂性状背后的调控架构。
  • django-ckeditor配置html5video实现视频上传与播放
  • 基于Hadoop的用户购物行为可视化分析系统设计与实现
  • stm32 H7 ADC DMA采集
  • 240.搜索二维矩阵Ⅱ
  • c++-引用(包括完美转发,移动构造,万能引用)
  • 华为OD机试 2025B卷 - 数组组成的最小数字(C++PythonJAVAJSC语言)
  • 【Python进阶篇 面向对象程序设计(3) 继承】
  • 使用 GDB 调试 Redis 服务进程指南
  • pyhton基础【25】面向对象进阶六