Raspberry Pi Pico+OV7670拍照存txt文件失败问题排查
Raspberry Pi Pico + OV7670 无法生成照片文件的问题排查与修复
核心错误点
- 未初始化SPI总线:代码直接使用
bus变量,但未定义和初始化SPI总线,摄像头无法建立通信。 - 控制引脚未配置:
shutdown和reset引脚未设置为输出并执行唤醒/复位操作,摄像头可能未正常启动。 - 异常信息缺失:仅打印"error"无法定位具体问题(如路径错误、文件系统只读、硬件连接故障等)。
- 引脚映射错误:
vsync=board.PCC_DEN1和href=board.PCC_DEN2不符合OV7670引脚定义,VSYNC、HREF需连接到对应功能引脚,而非DEN信号引脚。
修正后的代码
import board import busio from adafruit_ov7670 import OV7670, OV7670_SIZE_DIV16 import time import digitalio # 初始化SPI总线 spi = busio.SPI(clock=board.PCC_CLK, MOSI=board.PCC_D0, MISO=board.PCC_D1) # 注意:根据实际硬件连接调整MOSI/MISO引脚,确保与摄像头数据引脚对应 # 初始化摄像头控制引脚 shutdown_pin = digitalio.DigitalInOut(board.D39) shutdown_pin.direction = digitalio.Direction.OUTPUT shutdown_pin.value = True # 高电平唤醒摄像头 reset_pin = digitalio.DigitalInOut(board.D38) reset_pin.direction = digitalio.Direction.OUTPUT reset_pin.value = True time.sleep(0.1) reset_pin.value = False time.sleep(0.1) reset_pin.value = True # 初始化摄像头 cam = OV7670( spi, data_pins=[board.PCC_D0, board.PCC_D1, board.PCC_D2, board.PCC_D3, board.PCC_D4, board.PCC_D5, board.PCC_D6, board.PCC_D7], clock=board.PCC_CLK, vsync=board.D28, # 替换为实际连接的VSYNC引脚 href=board.D27, # 替换为实际连接的HREF引脚 mclk=board.D29, shutdown=shutdown_pin, reset=reset_pin, ) cam.size = OV7670_SIZE_DIV16 buf = bytearray(2 * cam.width * cam.height) try: # 使用二进制写入模式,确保路径指向CIRCUITPY根目录 with open("/photobin.txt", "wb") as photo: print("Capturing photo...") cam.capture(buf) photo.write(buf) photo.flush() print("Photo saved successfully") except OSError as e: print(f"Error details: {e}")
额外注意事项
- 核对硬件连线:OV7670的VSYNC、HREF、数据引脚、时钟引脚必须与代码定义完全对应。
- 确认文件系统可写:Pico的CIRCUITPY盘符需处于可读写状态,避免只读挂载导致无法写入。
- 调整数据引脚顺序:根据实际硬件连接的摄像头数据引脚排列,修改
data_pins列表顺序。
内容的提问来源于stack exchange,提问作者Anton9101
相关产品推荐
相关产品推荐

