I2C通信
[!IMPORTANT] 本页面适用于Seeed
reComputer J401载板系列,如reComputer J4012。I2C总线编号、接头映射和连接的附件可能在其他Jetson载板上有所不同。
简介
I2C是一种双线通信总线,使用SCL和SDA进行时钟和数据传输。它广泛用于显示器、传感器、EEPROM和其他低速外设。
硬件要求
- 基于J401的Jetson设备
- Grove OLED显示屏
- 兼容的适配器板或扩展板
- Grove线缆
硬件连接
按下图所示将附件连接到40针接头或相应的适配器板。

安装依赖项
bash
sudo apt update
sudo apt install python3-pil python3-dev fonts-noto-cjk
pip3 install luma.oled
扫描I2C总线
使用i2cdetect确认外设总线上可见:
bash
sudo i2cdetect -y -r 7
如果显示屏成功检测到,您应该在扫描结果中看到其设备地址,例如0x3c。
示例测试脚本
创建脚本:
bash
nano test_i2c.py粘贴以下示例:
python
import time
from luma.core.interface.serial import i2c
from luma.oled.device import ssd1306
from PIL import Image, ImageDraw, ImageFont
I2C_BUS = 7
I2C_ADDR = 0x3C
serial = i2c(port=I2C_BUS, address=I2C_ADDR)
device = ssd1306(serial)
device.clear()
FONT_PATH = "/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc"
font = ImageFont.truetype(FONT_PATH, 16)
text = "Jetson I2C test scrolling text "
bbox = font.getbbox(text)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
scroll_pos = device.width
while True:
img = Image.new("1", (device.width, device.height))
draw = ImageDraw.Draw(img)
draw.text((scroll_pos, (device.height - text_height) // 2), text, font=font, fill=255)
device.display(img)
scroll_pos -= 2
if scroll_pos + text_width < 0:
scroll_pos = device.width
time.sleep(0.05)运行脚本:
bash
python3 test_i2c.py