4.9. บัสของ sensor

sensor กล้องและ MCU ที่ใช้สื่อสารกันแลกเปลี่ยนข้อมูลสองประเภทที่แตกต่างกันผ่านบัสสองเส้นที่แตกต่างกัน

4.9.1. บัสควบคุม

การตั้งค่า sensor ทุกอย่างอยู่ในรีจิสเตอร์บนชิป ไม่ว่าจะเป็นรูปแบบพิกเซล ขนาดเฟรม เวลาการรับแสง ค่าเกน ค่าเกนสมดุลสีขาว เป้าหมายการควบคุมอัตโนมัติ และอื่น ๆ MCU อ่านและเขียนรีจิสเตอร์เหล่านั้นผ่าน บัส I2C (sensor บางตัวใช้ SPI แทน) ลวดสองเส้น (SCL และ SDA) เชื่อมต่ออุปกรณ์ต่อพ่วง I2C ของ MCU กับอินเทอร์เฟซ I2C ของ sensor และทุกการตั้งค่าที่ผู้ใช้เลือกจะถูกแปลโดยไดรเวอร์เป็นการเขียนรีจิสเตอร์หนึ่งครั้งขึ้นไปบนบัสนี้

บัสควบคุมทำงานที่ความเร็วที่ผ่อนคลาย โดยทั่วไปคือ 100 kHz หรือ 400 kHz การตั้งค่ารีจิสเตอร์หนึ่งตัวใช้เวลาหลายสิบไมโครวินาที การตั้งค่า sensor ใหม่ทั้งหมด (รีเซ็ต ขนาดเฟรมใหม่ รูปแบบพิกเซลใหม่) ใช้เวลาหลายสิบถึงหลายร้อยมิลลิวินาที ส่วนใหญ่เพราะชิปต้องใช้เวลาสักครู่เพื่อนำโหมดใหม่เข้าสู่สถานะที่สะอาดหลังจากเขียนรีจิสเตอร์แต่ละครั้ง ทั้งหมดนี้ไม่จำเป็นต้องตามทันกระแสข้อมูลพิกเซล

4.9.2. บัสข้อมูลพิกเซล

ข้อมูลพิกเซลออกจาก sensor ผ่านบัสแยกต่างหากที่กว้างกว่าและเร็วกว่ามาก มีสองตระกูลหลักที่ครองตลาด

Parallel เป็นรูปแบบที่เก่ากว่าในสองแบบ ประกอบด้วยสายข้อมูลแปดหรือสิบเส้นสำหรับบิตพิกเซล บวกกับสัญญาณนาฬิกาพิกเซล (PCLK) สัญญาณยืนยันบรรทัด (HSYNC) และสัญญาณยืนยันเฟรม (VSYNC) บนขอบสัญญาณนาฬิกาแต่ละครั้งจะปรากฏไบต์พิกเซลหนึ่งไบต์บนสายข้อมูล HSYNC และ VSYNC บอกตัวรับว่าแต่ละแถวและแต่ละเฟรมเริ่มและสิ้นสุดที่ใด บัส Parallel นั้นเรียบง่าย แต่ปริมาณงานที่ผ่านได้ถูกจำกัดโดยความเร็วที่เมทริกซ์พินของ MCU สามารถรับข้อมูลเข้าได้ โดยทั่วไปคือสัญญาณนาฬิกาพิกเซล 50 ถึง 100 MHz ที่จุดสูงสุด

MIPI CSI-2 -- Mobile Industry Processor Interface Camera Serial Interface เวอร์ชัน 2 -- ได้เข้ามาแทนที่ Parallel ในการออกแบบ image sensor ใหม่เป็นส่วนใหญ่ มันส่งพิกเซลผ่านคู่เลนดิฟเฟอเรนเชียลหนึ่งคู่หรือมากกว่าที่ความเร็วหลายร้อยเมกะบิตต่อวินาทีต่อคู่ โดยมีจำนวนพินน้อยกว่า แบนด์วิดท์สูงกว่ามาก และ EMI ต่ำกว่า Parallel ยังคงอยู่ส่วนใหญ่ในการออกแบบรุ่นเก่าและชิ้นส่วนขนาดเล็กอัตราต่ำกว่าที่ความเรียบง่ายของมันยังคุ้มค่า

A diagram showing a sensor block on the left and an MCU block on the right. A bidirectional arrow between them is labelled "I2C (SCL, SDA)". A thicker arrow pointing from the sensor to the MCU is labelled "parallel or MIPI".

sensor และ MCU แลกเปลี่ยนการควบคุมบนบัส I2C สองทิศทางที่ช้า และแลกเปลี่ยนข้อมูลพิกเซลบนบัส Parallel หรือ MIPI ทางเดียวที่กว้างกว่าและเร็วกว่า

ไม่ว่า sensor จะใช้ตระกูลใด ฝั่ง MCU จะมีอุปกรณ์ต่อพ่วงที่มีฟังก์ชันตายตัวซึ่งจับพิกเซลที่เข้ามาและเขียนลงในบัฟเฟอร์เฟรมในหน่วยความจำ โค้ด Python ไม่เคยขับเคลื่อนบัสนี้โดยตรง แต่จะอ่านบัฟเฟอร์เฟรมเพียงครั้งเดียวหลังจากที่ฮาร์ดแวร์เติมข้อมูลเสร็จแล้ว