4.9. Bus cảm biến¶
Một cảm biến camera và MCU mà nó giao tiếp trao đổi hai loại dữ liệu khác nhau trên hai bus khác nhau.
4.9.1. Bus điều khiển¶
Mọi cài đặt của cảm biến đều nằm trong một thanh ghi trên chip -- định dạng điểm ảnh, kích thước khung hình, thời gian phơi sáng, độ khuếch đại, độ khuếch đại cân bằng trắng, mục tiêu điều khiển tự động, v.v. MCU đọc và ghi các thanh ghi đó qua bus I2C (một số cảm biến dùng SPI thay thế). Hai dây (SCL và SDA) kết nối ngoại vi I2C của MCU với giao diện I2C của cảm biến, và mọi cấu hình người dùng chọn đều được driver chuyển đổi thành một hoặc nhiều lần ghi thanh ghi trên bus này.
Bus điều khiển chạy ở tốc độ thong thả -- thường là 100 kHz hoặc 400 kHz. Thiết lập một thanh ghi mất vài chục micro giây; cấu hình lại toàn bộ cảm biến (đặt lại, kích thước khung hình mới, định dạng điểm ảnh mới) mất vài chục đến vài trăm mili giây, chủ yếu vì chip cần một khoảng thời gian để đưa chế độ mới về trạng thái ổn định sau mỗi lần ghi thanh ghi. Tất cả điều đó không cần phải theo kịp luồng điểm ảnh.
4.9.2. Bus dữ liệu điểm ảnh¶
Dữ liệu điểm ảnh rời khỏi cảm biến trên một bus riêng biệt, rộng hơn và nhanh hơn nhiều. Có hai họ bus chiếm ưu thế.
Parallel là loại cũ hơn trong hai loại. Nó mang tám hoặc mười đường dữ liệu cho các bit điểm ảnh, cùng với một xung đồng hồ điểm ảnh (PCLK), tín hiệu hợp lệ theo dòng (HSYNC) và tín hiệu hợp lệ theo khung (VSYNC). Ở mỗi cạnh xung đồng hồ, một byte điểm ảnh xuất hiện trên các đường dữ liệu; HSYNC và VSYNC báo cho bộ nhận biết nơi mỗi hàng và mỗi khung bắt đầu và kết thúc. Bus Parallel đơn giản, nhưng thông lượng bị giới hạn bởi tốc độ mà ma trận chân (pin) của MCU có thể nhận dữ liệu vào -- thường là xung đồng hồ điểm ảnh 50 đến 100 MHz ở mức cao nhất.
MIPI CSI-2 -- Mobile Industry Processor Interface Camera Serial Interface, phiên bản 2 -- đã thay thế phần lớn Parallel trên các cảm biến ảnh mới. Nó truyền các điểm ảnh trên một hoặc nhiều cặp làn vi sai ở hàng trăm megabit mỗi giây mỗi cặp, với số lượng chân (pin) ít hơn, băng thông cao hơn nhiều và nhiễu điện từ (EMI) thấp hơn. Parallel vẫn tồn tại chủ yếu trong các thiết kế cũ và trên các linh kiện nhỏ hơn, tốc độ thấp hơn, nơi sự đơn giản của nó vẫn còn hữu ích.
Cảm biến và MCU trao đổi điều khiển trên bus I2C hai chiều tốc độ thấp và dữ liệu điểm ảnh trên bus Parallel hoặc MIPI một chiều, rộng hơn và nhanh hơn.¶
Dù cảm biến sử dụng họ bus nào, phía MCU đều có một ngoại vi chức năng cố định để bắt các điểm ảnh đến và ghi chúng vào bộ đệm khung hình trong bộ nhớ. Code Python không bao giờ điều khiển trực tiếp bus này; nó chỉ đọc bộ đệm khung hình sau khi phần cứng đó đã hoàn thành việc lấp đầy nó.