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.
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.