4.9. Sensorbussar¶
En kamerasensor och den MCU som den kommunicerar med utbyter två olika sorters data på två olika bussar.
4.9.1. Styrbuss¶
Varje sensorinställning ligger i ett register på chippet – pixelformat, bildstorlek, exponeringstid, förstärkning, vitbalansförstärkningar, mål för automatisk styrning och så vidare. MCU:n läser och skriver dessa register över en I2C-buss (vissa sensorer använder SPI i stället). Två ledningar (SCL och SDA) kopplar MCU:ns I2C-kringutrustning till sensorns I2C-gränssnitt, och varje konfiguration som användaren väljer översätts av drivrutinen till en eller flera registerskrivningar på denna buss.
Styrbussen körs i en avslappnad hastighet – vanligtvis 100 kHz eller 400 kHz. Att ställa in ett register tar tiotals mikrosekunder; att konfigurera om hela sensorn (en återställning, en ny bildstorlek, ett nytt pixelformat) tar tiotals till hundratals millisekunder, mestadels för att chippet behöver ett ögonblick på sig att få det nya läget i ett rent tillstånd efter varje registerskrivning. Inget av detta behöver hålla jämna steg med pixelströmmen.
4.9.2. Pixeldatabuss¶
Pixeldatan lämnar sensorn på en separat, bredare och mycket snabbare buss. Två familjer dominerar.
Parallell är den äldre av de två. Den bär åtta eller tio dataledningar för pixelbitarna, plus en pixelklocka (PCLK), en linjegiltig-signal (HSYNC) och en bildgiltig-signal (VSYNC). Vid varje klockflank visas en pixelbyte på dataledningarna; HSYNC och VSYNC talar om för mottagaren var varje rad och varje bildruta börjar och slutar. Parallella bussar är enkla, men genomströmningen begränsas av hur snabbt MCU:ns stiftmatris kan klocka in data – vanligtvis en pixelklocka på 50 till 100 MHz i den övre delen.
MIPI CSI-2 – Mobile Industry Processor Interface Camera Serial Interface, version 2 – har till stor del ersatt parallell på nya bildsensorer. Den bär pixlarna på ett eller flera differentiella körfältspar i hundratals megabit per sekund och par, med ett lägre antal stift, mycket högre bandbredd och lägre EMI. Parallell lever mestadels kvar i äldre konstruktioner och i mindre delar med lägre hastighet där dess enkelhet fortfarande lönar sig.
Sensorn och MCU:n utbyter styrning på en långsam dubbelriktad I2C-buss och pixeldata på en bredare, snabbare, enkelriktad parallell- eller MIPI-buss.¶
Oavsett vilken familj sensorn använder har MCU-sidan en kringutrustning med fast funktion som fångar de inkommande pixlarna och skriver dem till en bildbuffert i minnet. Python-koden driver aldrig denna buss direkt; den läser bara bildbufferten när den hårdvaran har fyllt klart den.