资讯动态

数字接口测试

发布时间:2026/10/21 7:31:31 来源:尧图企业网站定制
分享一段文字避免自己成为高知识低文化的工程师屏蔽力是信息过载时代一个人的特殊竞争力任何消耗你的人和事多看一眼都是你的不对。非必要不费力证明自己无利益不试图说服别人是精神上的节能减排。无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。说实话做硬件测试这些年我打交道最多的就是UART、I2C、SPI这三个接口。别看它们“老”但几乎所有嵌入式设备里都有它们的身影。你想想看从一颗简单的传感器到复杂的SoC内部通信基本就靠这三兄弟。今天咱们就掰开揉碎了聊聊怎么测好它们。UART接口测试最基础的“串口”UART全称通用异步收发器。说白了就是一根线发、一根线收不需要时钟线。我刚开始学硬件时觉得它最简单但后来发现越简单的东西坑反而越多。电气特性与电平标准UART的电平标准主要有两种TTL/CMOS电平0V为低3.3V或5V为高。板级通信常用。RS-232电平3V~15V为低逻辑0-3V~-15V为高逻辑1。远距离通信用。注意我曾经遇到过一位同事直接把TTL电平的UART接到RS-232接口上结果烧了芯片。电平不匹配轻则通信失败重则烧毁器件。测之前一定先确认电平标准。信号质量测试要点测试UART信号质量我习惯用示波器看三个地方波特率精度测量一个bit的宽度计算实际波特率。误差一般要求2%。上升/下降时间太快会有过冲太慢会影响时序。通常在10ns~50ns之间比较理想。眼图虽然UART速率不高但眼图能直观反映信号质量。眼睛睁开越大越好。小技巧测波特率时我习惯抓取起始位低电平后的第一个数据位。用示波器的光标量一下宽度再算一下。比如1ms宽那波特率就是1000bps。简单粗暴但很准。协议解码基础UART的协议帧结构很简单起始位(1bit) 数据位(5~8bit) 校验位(可选) 停止位(1/1.5/2bit)举个例子发送0x55二进制01010101波特率96008N18数据位无校验1停止位波形低(起始) 1 0 1 0 1 0 1 0 高(停止)用示波器的解码功能直接就能看到发送的是0x55。我个人建议刚开始学的时候手动对着波形数一遍印象会深很多。I2C接口测试两根线的“多机通信”I2C只有两根线SCL时钟和SDA数据。但别小看它仲裁、应答、时钟拉伸这些机制让I2C既灵活又复杂。电气特性开漏输出SCL和SDA都是开漏结构必须外接上拉电阻。上拉电阻选择标准模式100kHz时4.7kΩ常用快速模式400kHz时2.2kΩ左右。阻值太小功耗大阻值太大上升沿变缓。关键参数低电平输入阈值VIL通常为0.3*VDD高电平输入阈值VIH通常为0.7*VDD。测的时候确保信号能跨过这两个阈值。信号质量测试测I2C我重点关注上升时间tr标准模式最大1000ns快速模式最大300ns。太慢说明上拉电阻太大或总线电容太大。下降时间tf一般要求300ns。下降沿太慢可能是驱动能力不足。毛刺SDA上的毛刺可能导致误判起始或停止条件。我曾在项目中遇到过一根长走线耦合了噪声导致I2C随机死锁。后来加了滤波电容才解决。协议解码基础I2C的通信流程起始条件(S) 从机地址(7bit) 读写位(R/W) 应答位(ACK) 数据字节(8bit) 应答位(ACK) ... 停止条件(P)举个例子主机向地址0x50的从机写一个字节0xAAS 0x50(写) ACK 0xAA ACK P用逻辑分析仪抓一下波形一目了然。我建议初学者先学会手动解析起始和停止条件SCL高电平时SDA从高变低是起始从低变高是停止。避坑指南我曾经遇到过从机不拉低SDA应答的情况。查了半天发现是从机地址配错了。记住I2C地址是7位但发送时左移一位最低位是读写位。别搞混了。SPI接口测试高速的“全双工”通信SPI比I2C快得多而且可以全双工。但它需要4根线SCK时钟、MOSI主出从入、MISO主入从出、CS片选。电气特性推挽输出SPI是推挽结构不需要上拉电阻。驱动能力强速率高。信号完整性高速SPI几十MHz以上需要考虑阻抗匹配。我一般控制在50Ω或100Ω差分。信号质量测试测SPI示波器带宽要够。我建议至少是信号频率的5倍。过冲/下冲高速信号容易有过冲。超过10%就要警惕可能损坏IO。建立时间/保持时间数据相对于时钟的建立时间和保持时间必须满足从机的要求。我习惯用示波器的“建立/保持时间”测量功能。时钟抖动时钟周期不稳定会导致数据采样错误。峰峰值抖动一般要求5%的时钟周期。个人经验测SPI时序时我习惯用CS信号作为触发。这样每次抓到的都是完整的一帧数据方便分析。协议解码基础SPI有四种模式由CPOL时钟极性和CPHA时钟相位决定模式CPOLCPHA说明000空闲低第一个边沿采样101空闲低第二个边沿采样210空闲高第一个边沿采样311空闲高第二个边沿采样举个例子模式0下主机发送0xA5CS拉低 - SCK开始翻转 - 每个SCK上升沿MOSI输出一位数据(1 0 1 0 0 1 0 1) - CS拉高用逻辑分析仪解码时记得先设置好CPOL和CPHA。我见过有人模式设错了解码出来的数据全是乱的。三种接口的对比与选型建议最后我整理了一个对比表方便大家在实际项目中选型特性UARTI2CSPI线数2TX/RX2SCL/SDA4SCK/MOSI/MISO/CS速率低典型115200bps中最高3.4MHz高几十MHz通信方式异步同步同步多从机不支持点对点支持地址寻址支持片选全双工支持不支持半双工支持硬件复杂度低中高嗯总结一下如果只是调试打印UART最方便。如果需要挂多个从机且速率要求不高I2C最省线。如果追求高速、大数据量SPI是首选。记住纸上得来终觉浅动手测一测才能真正理解这些接口的脾气。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑