第二章:硬件接口基础——数字接口与模拟接口的区别、常见数字接口标准、接口电平标准

各位同学,咱们今天聊聊硬件接口的基础。说实话,很多刚入行的工程师,甚至干了两三年的朋友,在接口选型上还是容易犯迷糊。我见过不少人把I2C和SPI搞混,也有人因为电平不匹配烧了芯片。这节课,咱们就把这些基础打扎实。

2.1 数字接口 vs 模拟接口:本质区别在哪?

先问个问题:你手里的红外探测器,它输出的信号是连续的电压值,还是只有0和1?

这就是数字和模拟最根本的区别。

  • 模拟接口:信号是连续变化的。比如一个热释电传感器,它输出的电压会随着红外辐射强度平滑变化。你拿万用表去量,能看到1.2V、1.3V、1.35V……任何中间值都有可能。
  • 数字接口:信号只有两个状态——高电平和低电平。说白了就是“有”和“无”。比如UART的TX引脚,要么是3.3V(代表逻辑1),要么是0V(代表逻辑0),没有中间状态。

我个人习惯,在项目初期就会想清楚:探测器输出的是模拟量还是数字量?这决定了后面整个电路的设计方向。

核心区别总结:

  • 模拟接口:连续值,易受干扰,需要ADC转换
  • 数字接口:离散值,抗干扰强,直接与MCU通信

我在项目中遇到过一件事:有个同事用了一个模拟输出的红外传感器,直接连到MCU的GPIO口上,结果死活读不到数据。为什么?因为GPIO只能识别0和1,而模拟信号是连续变化的。后来加了个比较器电路才搞定。嗯,这就是没搞清楚接口类型吃的亏。

2.2 常见数字接口标准

咱们做红外探测器,最常用的数字接口就这四种:UART、I2C、SPI、GPIO。我一个个说。

2.2.1 UART(通用异步收发器)

UART应该是大家最熟悉的。两根线:TX(发送)和RX(接收)。异步通信,不需要时钟线。

特点:

  • 全双工:可以同时收发
  • 点对点:只能两个设备之间通信
  • 波特率要一致:比如9600、115200

很多红外探测器模块,比如串口型的红外测温模组,用的就是UART。你发个指令过去,它回传温度数据。简单可靠。

避坑指南:我曾经遇到过UART通信偶尔丢数据的情况。排查了半天,发现是TX和RX接反了。嗯,这种低级错误,犯一次就记住了。

2.2.2 I2C(IIC,两线式串行总线)

I2C也是两根线:SCL(时钟)和SDA(数据)。但和UART不同,它是同步通信,而且支持多设备挂载在同一总线上。

特点:

  • 半双工:同一时间只能一个方向传输
  • 多主多从:理论上可以挂很多设备
  • 每个设备有唯一地址:7位或10位地址
  • 速度较慢:标准模式100kHz,快速模式400kHz

你想想看,如果系统里接了多个传感器,每个都用UART,那MCU的串口根本不够用。这时候I2C就派上用场了。我做过一个项目,挂了4个红外探测器在一条I2C总线上,每个地址不同,读数据时指定地址就行。

2.2.3 SPI(串行外设接口)

SPI比I2C快,但线也多。标准SPI需要四根线:

  • SCLK:时钟
  • MOSI:主出从入
  • MISO:主入从出
  • CS:片选(每个从设备一根)

特点:

  • 全双工:可以同时收发
  • 速度快:几十MHz很常见
  • 一主多从:但每个从设备需要单独的CS线

说实话,SPI在红外探测器里用得不如I2C和UART多,但有些高速红外阵列传感器会用SPI。因为数据量大,I2C那400kHz的速度扛不住。

2.2.4 GPIO(通用输入输出)

GPIO是最基础的。一个引脚,要么输入要么输出。输出时拉高或拉低,输入时读取电平状态。

在红外探测器里,GPIO常用来做:

  • 触发信号:比如有人经过时,探测器输出一个高电平脉冲
  • 使能控制:控制探测器的工作模式
  • 中断输入:通知MCU有事件发生

我习惯把GPIO当作“最朴素的通信方式”。不需要协议,不需要时钟,一根线搞定。但缺点也很明显——只能传一个比特的信息。

注意:GPIO的输入输出模式要配置正确。我曾经把输出模式的引脚当输入用,结果读到的电平一直不对。后来查手册才发现,输出模式下读引脚,读的是输出寄存器的值,不是外部电平。

2.3 接口电平标准

这部分特别重要。电平不匹配,轻则通信失败,重则烧芯片。我见过太多这样的案例了。

2.3.1 3.3V vs 5V

这是最常碰到的两个电平标准。

电平标准 逻辑高电平 逻辑低电平 常见器件
3.3V ≥2.0V ≤0.8V STM32、ESP32、多数现代MCU
5V ≥3.5V ≤1.5V Arduino Uno、传统51单片机

你想想看,一个3.3V的MCU去读一个5V输出的传感器,会怎样?如果传感器输出5V高电平,MCU的引脚可能承受不了,直接烧掉。反过来,5V的MCU读3.3V的信号,可能读不到高电平,因为3.3V对5V系统来说不够高。

我的做法:电平转换。最简单的用电阻分压,或者用电平转换芯片(比如TXB0104)。我习惯用MOS管搭一个双向电平转换电路,成本低,效果也不错。

2.3.2 TTL vs CMOS

这两个是逻辑电平的“门派”。

  • TTL(晶体管-晶体管逻辑):老标准了。输入低电平阈值0.8V,高电平阈值2.0V。输出低电平0.4V,高电平2.4V。5V供电。
  • CMOS(互补金属氧化物半导体):现代主流。输入阈值通常是电源电压的30%~70%。输出接近电源轨(0V和VCC)。

说白了,TTL的噪声容限小,CMOS的噪声容限大。现在大部分芯片都是CMOS工艺了,但有些老器件还是TTL电平。混用时要小心。

我记得有一次,用了一个TTL电平的传感器去接CMOS的MCU。传感器输出2.4V算高电平,但CMOS的MCU需要至少0.7×VCC(3.3V下是2.31V)才算高。2.4V刚好超过2.31V,勉强能用,但噪声一大就误判。后来还是加了电平转换才稳定。

2.4 知识体系总览

下面这张图,把咱们这节课的核心逻辑串起来了。你一看就明白。

硬件接口基础:知识体系 硬件接口 模拟接口 数字接口 连续电压/电流信号 离散0/1电平信号 UART I2C SPI GPIO 电平标准:3.3V / 5V / TTL / CMOS 选型原则:根据探测器输出类型、通信速率、MCU电平匹配选择

这张图把咱们这节课的内容串起来了。从硬件接口这个大概念出发,分模拟和数字两条路。数字接口里,UART、I2C、SPI、GPIO各有各的适用场景。最后别忘了电平标准——3.3V、5V、TTL、CMOS,选错了就是事故。

一句话总结:接口选型,先看探测器输出什么(模拟还是数字),再看速率要求(低速用I2C,高速用SPI),最后确认电平是否匹配。这三步走完,基本不会出大问题。

好了,这节课就到这儿。下节课咱们聊红外探测器的具体硬件电路设计,包括运放选型、滤波电路这些实战内容。到时候见。


公众号:蓝海资料掘金营,微信deep3321