4. 接口协议基础:UART、I2C、SPI、GPIO 在售货机中的应用场景
做售货机主控选型,说白了就是选「怎么跟外面那些零件说话」。你想想看,一个售货机里,有硬币器、有电机、有显示屏、有温度传感器……它们各自说着不同的「方言」。主控芯片要是不会这些方言,那机器就是个摆设。
我个人习惯,在定方案之前,先把要用到的接口协议捋一遍。这步走对了,后面画原理图、调驱动,能省一半的功夫。今天咱们就聊聊 UART、I2C、SPI、GPIO 这四位「老熟人」,在售货机里到底怎么用。
4.1 UART:老当益壮的串口通信
UART,全称通用异步收发器。说白了就是一根线发、一根线收,地线共地,三根线搞定。它最大的优点就是简单,几乎所有的单片机都有 UART 外设。
在售货机里,UART 最常见的场景就是和「钱箱」打交道。
- 硬币器 / 纸币器:这些设备几乎清一色用 UART 通信。我记得有一次调试一个硬币器,协议里规定波特率是 9600,8 位数据,无校验。结果死活收不到数据。后来拿示波器一看,原来是硬币器那边把 TX 和 RX 接反了。嗯,这种低级错误,犯过一次就记住了。
- 串口打印机:小票打印,也是 UART。波特率通常 115200,数据量不大,但要求稳定。
- 蓝牙 / WiFi 模块:比如 ESP8266 或者 HC-05,跟主控通信也是走 UART。主控发 AT 指令,模块返回结果。
UART 的缺点也很明显:只能点对点。一个 UART 口只能接一个设备。要是接多个,得用软件模拟或者加多路复用器,麻烦。
4.2 I2C:两线制,挂一堆从机
I2C 只有两根线:SCL(时钟)和 SDA(数据)。所有设备都挂在这两根线上,靠地址区分。这个特性,在售货机里简直太实用了。
我建议,凡是「传感器」类的设备,优先考虑 I2C。
- 温度传感器:比如 SHT30、LM75,都是 I2C 接口。货道里放几个,监测饮料温度是否达标。
- EEPROM:存配置参数、销售记录。24C02 这种经典芯片,I2C 接口,便宜又好用。
- RTC 实时时钟:DS3231 或者 PCF8563,记录交易时间。售货机断电了,时间不能丢。
- IO 扩展芯片:比如 PCF8574,用 I2C 扩展出 8 个 GPIO。主控引脚不够时,这招很管用。
I2C 的速度一般 100kHz 或 400kHz。对于传感器和存储来说,完全够用。但你要是想传音频、视频,那还是算了。
4.3 SPI:快,是真的快
SPI 是四线制:SCK(时钟)、MOSI(主出从入)、MISO(主入从出)、CS(片选)。它比 I2C 快得多,而且全双工,收发可以同时进行。
在售货机里,SPI 主要用在「大流量数据」的场景。
- LCD 显示屏:尤其是 TFT 彩屏,刷新一帧画面需要传大量像素数据。SPI 的速率可以跑到几十 MHz,刷屏不卡顿。我做过一个 2.8 寸屏,用 SPI 接口,320x240 分辨率,刷新率能到 30fps。
- SD 卡:存储日志、广告图片、固件升级包。SD 卡支持 SPI 模式,虽然不如 SDIO 快,但胜在接口简单。
- 高速 ADC:比如检测电流、电压的模拟量,需要高速采样时,SPI 是首选。
SPI 的缺点呢?线多。每加一个从机,就得加一根 CS 片选线。主控引脚不够的话,得用译码器。
4.4 GPIO:最基础,也最灵活
GPIO,通用输入输出。它不是什么协议,但却是所有协议的基础。UART、I2C、SPI 的底层,本质上都是在操作 GPIO。
在售货机里,GPIO 直接控制「物理动作」。
- 电机控制:货道里的弹簧电机,用 GPIO 控制继电器或者 MOS 管。高电平转一下,低电平停。就这么简单。
- 按键检测:选货按键,每个按键接一个 GPIO,检测电平变化。注意要加去抖处理,不然按一下会触发好几次。
- LED 指示灯:电源指示、故障报警,GPIO 直接驱动 LED,串个限流电阻就行。
- 门锁检测:售货机门是否关好,用 GPIO 读一个微动开关的状态。
GPIO 还有一个妙用:模拟其他协议。比如主控没有 I2C 外设,可以用两个 GPIO 模拟 I2C 时序。虽然效率低点,但应急完全够用。
4.5 四种接口的对比与选型建议
说了这么多,咱们来张表,一目了然。
| 接口 | 线数 | 速度 | 通信方式 | 售货机典型应用 |
|---|---|---|---|---|
| UART | 2(TX/RX) | 慢(通常 9600~115200 bps) | 点对点,异步 | 硬币器、打印机、蓝牙模块 |
| I2C | 2(SCL/SDA) | 中(100kHz~400kHz) | 多从机,半双工 | 温度传感器、EEPROM、RTC |
| SPI | 4(SCK/MOSI/MISO/CS) | 快(几 MHz~几十 MHz) | 多从机,全双工 | TFT 屏、SD 卡、高速 ADC |
| GPIO | 1 根起 | 取决于软件 | 自定义 | 电机、按键、LED、门锁 |
选型建议:
- 跟「钱」有关的设备(硬币器、打印机),用 UART。稳定,协议成熟。
- 跟「环境」有关的设备(温度、时间、存储),用 I2C。省线,能挂多个。
- 跟「显示」有关的设备(彩屏、SD 卡),用 SPI。速度快,不卡顿。
- 跟「动作」有关的设备(电机、按键、灯),用 GPIO。直接,简单。
好了,这一章咱们把四种接口在售货机里的应用场景捋了一遍。下一章,我会聊聊主控芯片的选型——到底选 STM32、ESP32 还是国产芯片?到时候见。