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 ยังคงอยู่ส่วนใหญ่ในการออกแบบรุ่นเก่าและชิ้นส่วนขนาดเล็กอัตราต่ำกว่าที่ความเรียบง่ายของมันยังคุ้มค่า
sensor และ MCU แลกเปลี่ยนการควบคุมบนบัส I2C สองทิศทางที่ช้า และแลกเปลี่ยนข้อมูลพิกเซลบนบัส Parallel หรือ MIPI ทางเดียวที่กว้างกว่าและเร็วกว่า¶
ไม่ว่า sensor จะใช้ตระกูลใด ฝั่ง MCU จะมีอุปกรณ์ต่อพ่วงที่มีฟังก์ชันตายตัวซึ่งจับพิกเซลที่เข้ามาและเขียนลงในบัฟเฟอร์เฟรมในหน่วยความจำ โค้ด Python ไม่เคยขับเคลื่อนบัสนี้โดยตรง แต่จะอ่านบัฟเฟอร์เฟรมเพียงครั้งเดียวหลังจากที่ฮาร์ดแวร์เติมข้อมูลเสร็จแล้ว