3. Kria硬件接口与视觉外设连接
Kria SOM 把 Zynq UltraScale+ MPSoC 的 PS 侧高速接口与 PL 侧可编程 I/O 引出到载板连接器,视觉外设能否稳定工作,取决于“接口电气特性是否匹配、设备树是否描述正确、Linux 是否枚举到设备”这三件事同时成立。本节围绕 MIPI CSI-2、USB、DisplayPort、以太网和 GPIO 五类接口,说明它们的电气约束与物理接入方法,并给出设备识别的判断依据。
一、先分清接口的电气归属
Kria KV260 载板上,MIPI CSI-2 来自 PL 侧的 HP/HD Bank,通过 1.2V 差分对引出到 15 针或 22 针 FPC 座;USB 3.0 由 PS 的 GTR 收发器经 USB 集线器扩展为 Type-A 口;DisplayPort 由 PS 的 DisplayPort 控制器经电平转换输出到 DP 座;以太网由 PS 的 GEM3 经 RGMII 接 PHY 再到 RJ45;GPIO 则分布在 40 针 Raspberry Pi 兼容排针和 PMOD 座上,电平为 3.3V LVCMOS。理解“谁在 PS、谁在 PL、谁需要设备树覆盖”是后续所有连接工作的前提。
二、MIPI CSI-2 摄像头的物理接入
以常见的 IMX219(Raspberry Pi Camera V2)为例,它使用 2 条数据 lane 加 1 条时钟 lane,差分阻抗 100Ω,供电 3.3V。接入 KV260 时,需要一根 15pin 转 22pin 的 FPC 排线,注意排线金手指方向:摄像头模组一侧金手指朝上,载板 FPC 座一侧金手指朝下,插反会导致 lane 极性颠倒,表现为 I2C 能识别但无图像。插入后压下 FPC 座黑色卡扣,用万用表确认 3.3V 与 GND 无短路再上电。
上电后先确认 I2C 通信:
# 查看 I2C 总线上的摄像头
i2cdetect -y -r 6
# 预期在 0x10 地址看到 UU 或 10(IMX219 默认地址)
# 加载设备树覆盖
sudo xmutil unloadapp
sudo xmutil loadapp kria-vitis-platforms
# 或使用官方 sensor 覆盖
sudo dtoverlay imx219
若 i2cdetect 无响应,优先检查 FPC 是否插反、3.3V 是否到位;若 I2C 正常但 /dev/video0 未出现,则问题在设备树或 PL 端 CSI 接收 IP 未加载。可用 v4l2-ctl --list-devices 和 media-ctl -p 查看 media pipeline 是否把 sensor、CSI2 RX、DMA 串成一条链路。
三、USB 摄像头的接入与识别
USB 摄像头走 UVC 协议,接入后内核自动枚举,无需设备树改动。插入 Type-A 口后执行:
lsusb
# 预期看到类似:Bus 001 Device 003: ID 046d:0825 Logitech, Inc. Webcam C270
v4l2-ctl --list-devices
# 预期输出:HD Webcam: HD Webcam (usb-xhci-hcd.0.auto-1):
# /dev/video0
v4l2-ctl -d /dev/video0 --list-formats-ext
# 查看支持的分辨率与帧率,如 MJPG 1920x1080@30
USB 摄像头常见问题是带宽不足:多个摄像头共用一条 USB 3.0 总线时,1080p MJPG 每路约需 200Mbps,若同时开 4 路可能掉帧。此时应降低分辨率或改用 MJPEG 压缩格式。另外,USB 供电能力有限,长线或高功耗摄像头建议使用带外部供电的 USB Hub。
四、DisplayPort 与以太网
DisplayPort 用于本地预览和调试界面。KV260 的 DP 口支持 DP 1.2a,最大 4K@30。接入显示器后,若 xrandr 或 modetest 看不到输出,先检查 HPD 信号:
modetest -c
# 查看 connector 状态,预期看到 DP-1 connected
# 若显示 disconnected,检查线缆与显示器输入源选择
以太网用于远程登录和图像流传输。KV260 的 RJ45 默认通过 DHCP 获取地址,用 ip addr show eth0 查看。工业现场若使用固定 IP,可在 /etc/netplan/ 下配置静态地址。千兆链路下,1080p 原始图像流约 3Gbps,建议使用压缩或降帧传输。
五、GPIO 的电气约束与使用
40 针排针的 GPIO 为 3.3V LVCMOS,单脚驱动电流约 8mA,不可直接驱动继电器或大功率补光灯,需经三极管或光耦隔离。使用 gpiod 工具操作:
gpiodetect
# 查看 gpiochip 列表
gpioinfo gpiochip0
# 查看各引脚方向与电平
gpioset gpiochip0 12=1
# 将第 12 脚置高,用于触发补光灯
若用于相机硬触发,需注意触发信号与曝光时序的配合:通常先置触发脚,再等待传感器曝光完成,最后读图。触发脉冲宽度建议不小于 1ms,避免抖动误触发。
i2cdetect 与 media-ctl;USB 看 lsusb 与 v4l2-ctl;DP 看 modetest;以太网看 ip addr;GPIO 看 gpioinfo。五类接口的识别命令不同,但判断逻辑一致:先确认物理层连通,再确认内核枚举,最后确认应用层可访问。六、接入检查清单
| 接口 | 物理检查 | 识别命令 | 正常标志 |
|---|---|---|---|
| MIPI CSI-2 | FPC 方向、3.3V 无短路 | i2cdetect -y -r 6 | 0x10 出现设备 |
| USB 摄像头 | Type-A 插紧、供电充足 | lsusb / v4l2-ctl --list-devices | /dev/video0 存在 |
| DisplayPort | 线缆、显示器输入源 | modetest -c | DP-1 connected |
| 以太网 | 网线、链路灯 | ip addr show eth0 | 获得 IP 地址 |
| GPIO | 电平 3.3V、负载隔离 | gpioinfo gpiochip0 | 引脚方向可配置 |
完成上述接入后,建议用一条最小验证链路收尾:MIPI 摄像头采集一帧,经 DP 显示,同时通过以太网把图像传到上位机,GPIO 输出触发脉冲。若四者同时工作且无丢帧,说明接口层已打通,可以进入下一阶段的视觉流水线开发。