banner
NEWS LETTER

嵌入式 Linux 系列 18:UART、I2C、SPI 和 GPIO 实战入口

Scroll down

嵌入式设备最终要和硬件交互。UART、I2C、SPI、GPIO 是最常见的外设入口。入门时不必先写驱动,可以先从用户态工具和 sysfs/dev 节点理解通信方式。

一、UART

常见设备:

1
2
3
/dev/ttyS0
/dev/ttyUSB0
/dev/ttyAMA0

查看:

1
ls -l /dev/tty*

配置波特率:

1
stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb

测试:

1
2
cat /dev/ttyS1
echo "hello" > /dev/ttyS1

UART 问题常见原因:

  • TX/RX 接反。
  • 波特率不一致。
  • 电平不匹配。
  • 流控配置错误。
  • 设备树没启用。

二、I2C

查看总线:

1
ls /dev/i2c-*

扫描:

1
i2cdetect -y 1

读取:

1
i2cget -y 1 0x48 0x00

常见问题:

  • 地址是 7 位还是 8 位。
  • 上拉电阻缺失。
  • 设备没供电。
  • 复位脚没释放。
  • 总线速率过高。

三、SPI

常见节点:

1
/dev/spidev0.0

如果没有 spidev,要检查:

  • 内核配置。
  • 设备树节点。
  • chip select。
  • pinctrl。

SPI 比 I2C 更依赖时序配置:

  • mode。
  • bits per word。
  • max speed。
  • CS 极性。

四、GPIO

新内核更推荐 libgpiod:

1
2
3
4
gpiodetect
gpioinfo
gpioset
gpioget

老系统可能使用 sysfs:

1
2
3
echo 23 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio23/direction
echo 1 > /sys/class/gpio/gpio23/value

GPIO 问题要看 pinctrl 和复用功能。

五、排查顺序

外设不通时:

  1. 看原理图。
  2. 看供电。
  3. 看设备树。
  4. 看 dmesg。
  5. 用用户态工具验证。
  6. 再看驱动和应用。

不要直接怀疑业务代码。很多外设问题根因在硬件连接或设备树。

其他文章
目录导航 置顶
  1. 1. 一、UART
  2. 2. 二、I2C
  3. 3. 三、SPI
  4. 4. 四、GPIO
  5. 5. 五、排查顺序
请输入关键词进行搜索