4.9. Sensör veri yolları

Bir kamera sensörü ile iletişim kurduğu MCU, iki farklı veri yolu üzerinde iki farklı türde veri alışverişi yapar.

4.9.1. Kontrol veri yolu

Her sensör ayarı çip üzerindeki bir yazmaçta bulunur – piksel biçimi, çerçeve boyutu, pozlama süresi, kazanç, beyaz dengesi kazançları, otomatik kontrol hedefleri vb. MCU, bu yazmaçları bir I2C veri yolu üzerinden okur ve yazar (bazı sensörler bunun yerine SPI kullanır). İki tel (SCL ve SDA) MCU’nun I2C çevre birimini sensörün I2C arabirimine bağlar ve kullanıcının seçtiği her yapılandırma, sürücü tarafından bu veri yolu üzerindeki bir veya daha fazla yazmaç yazma işlemine dönüştürülür.

Kontrol veri yolu rahat bir hızda çalışır – genellikle 100 kHz veya 400 kHz. Tek bir yazmaçı ayarlamak onlarca mikrosaniye sürer; tüm sensörü yeniden yapılandırmak (bir sıfırlama, yeni bir çerçeve boyutu, yeni bir piksel biçimi) onlarca ila yüzlerce milisaniye sürer; bunun başlıca nedeni, çipin her yazmaç yazma işleminden sonra yeni modu temiz bir duruma getirmek için biraz zamana ihtiyaç duymasıdır. Bunların hiçbirinin piksel akışına ayak uydurması gerekmez.

4.9.2. Piksel veri yolu

Piksel verisi sensörden ayrı, daha geniş ve çok daha hızlı bir veri yolu üzerinden çıkar. İki aile baskındır.

Paralel ikisinin daha eskisidir. Piksel bitleri için sekiz veya on veri hattının yanı sıra bir piksel saati (PCLK), bir hat-geçerli sinyali (HSYNC) ve bir çerçeve-geçerli sinyali (VSYNC) taşır. Her saat kenarında veri hatlarında bir piksel baytı belirir; HSYNC ve VSYNC alıcıya her satırın ve her çerçevenin nerede başlayıp bittiğini bildirir. Paralel veri yolları basittir, ancak iş hacmi MCU’nun pin matrisinin verileri ne kadar hızlı saatleyebildiğiyle sınırlıdır – üst uçta tipik olarak 50 ila 100 MHz piksel saati.

MIPI CSI-2 – Mobile Industry Processor Interface Camera Serial Interface, sürüm 2 – yeni görüntü sensörlerinde paralel veri yolunun yerini büyük ölçüde almıştır. Pikselleri bir veya daha fazla diferansiyel şerit çifti üzerinde, çift başına saniyede yüzlerce megabit hızında, daha az pin sayısı, çok daha yüksek bant genişliği ve daha düşük EMI ile taşır. Paralel çoğunlukla eski tasarımlarda ve basitliğinin hâlâ işe yaradığı daha küçük, daha düşük hızlı parçalarda varlığını sürdürür.

Solda bir sensör bloğu ve sağda bir MCU bloğu gösteren bir diyagram. Aralarındaki çift yönlü bir ok "I2C (SCL, SDA)" olarak etiketlenmiştir. Sensörden MCU'ya doğru işaret eden daha kalın bir ok "paralel veya MIPI" olarak etiketlenmiştir.

Sensör ve MCU, yavaş çift yönlü bir I2C veri yolu üzerinden kontrol ve daha geniş, daha hızlı, tek yönlü bir paralel veya MIPI veri yolu üzerinden piksel verisi alışverişi yapar.

Sensör hangi aileyi kullanırsa kullansın, MCU tarafında gelen pikselleri yakalayıp bellekteki bir çerçeve arabelleğine (frame buffer) yazan sabit işlevli bir çevre birimi bulunur. Python kodu bu veri yolunu hiçbir zaman doğrudan sürmez; yalnızca bu donanım çerçeve arabelleğini doldurmayı bitirdikten sonra arabelleği okur.