4.9. Érzékelő buszok

A kameraérzékelő és a vele kommunikáló MCU kétféle adatot cserél két különböző buszon.

4.9.1. Vezérlőbusz

Minden érzékelőbeállítás a chip egy regiszterében található – képpontformátum, képkockaméret, expozíciós idő, erősítés, fehéregyensúly-erősítések, automatikus vezérlési célértékek és így tovább. Az MCU ezeket a regisztereket egy I2C buszon keresztül olvassa és írja (egyes érzékelők ehelyett SPI-t használnak). Két vezeték (SCL és SDA) köti össze az MCU I2C perifériáját az érzékelő I2C interfészével, és a felhasználó által választott minden konfigurációt a meghajtó egy vagy több regiszterírássá fordít le ezen a buszon.

A vezérlőbusz nyugodt sebességgel működik – jellemzően 100 kHz vagy 400 kHz. Egyetlen regiszter beállítása tíznyi mikroszekundumot vesz igénybe; az egész érzékelő újrakonfigurálása (újraindítás, friss képkockaméret, friss képpontformátum) tíz-száz milliszekundumot, főként azért, mert a chipnek minden regisztterírás után egy pillanatra szüksége van ahhoz, hogy az új módot tiszta állapotba hozza. Ennek semmi része nem kell, hogy lépést tartson a képpontfolyammal.

4.9.2. Képpontadat-busz

A képpontadatok egy külön, szélesebb és sokkal gyorsabb buszon hagyják el az érzékelőt. Két család dominál.

A párhuzamos a kettő közül a régebbi. Nyolc vagy tíz adatvonalat hordoz a képpontbiteknek, plusz egy képpontórát (PCLK), egy sor-érvényes jelet (HSYNC) és egy képkocka-érvényes jelet (VSYNC). Minden óraélen egy képpontbájt jelenik meg az adatvonalakon; a HSYNC és a VSYNC megmondja a vevőnek, hol kezdődik és végződik az egyes sorok és képkockák. A párhuzamos buszok egyszerűek, de az átviteli teljesítményt korlátozza, milyen gyorsan tudja az MCU lábmátrixa az adatokat beórázni – a felső határon jellemzően 50-100 MHz-es képpontóra.

A MIPI CSI-2 – a Mobile Industry Processor Interface Camera Serial Interface 2-es verziója – nagyrészt felváltotta a párhuzamost az új képérzékelőkön. A képpontokat egy vagy több differenciális sávpáron hordozza, páronként több száz megabit per szekundum sebességgel, kisebb lábszámmal, sokkal nagyobb sávszélességgel és alacsonyabb EMI-vel. A párhuzamos főként a régebbi terveken és a kisebb, alacsonyabb sebességű alkatrészeken marad fenn, ahol egyszerűsége még megtérül.

Egy ábra, amely bal oldalon egy érzékelő blokkot, jobb oldalon pedig egy MCU blokkot mutat. A közöttük lévő kétirányú nyíl felirata "I2C (SCL, SDA)". Egy vastagabb, az érzékelőtől az MCU felé mutató nyíl felirata "párhuzamos vagy MIPI".

Az érzékelő és az MCU egy lassú, kétirányú I2C buszon cserél vezérlést, a képpontadatokat pedig egy szélesebb, gyorsabb, egyirányú párhuzamos vagy MIPI buszon.

Bármelyik családot is használja az érzékelő, az MCU oldalán egy rögzített funkciójú periféria fogja el a bejövő képpontokat és írja őket egy képkocka-pufferbe a memóriában. A Python kód soha nem hajtja meg közvetlenül ezt a buszt; csak akkor olvassa ki a képkocka-puffert, amikor az a hardver befejezte annak feltöltését.