4.9. Sběrnice senzoru¶
Senzor kamery a MCU, se kterým komunikuje, si vyměňují dva různé druhy dat na dvou různých sběrnicích.
4.9.1. Řídicí sběrnice¶
Každé nastavení senzoru se nachází v registru na čipu – formát pixelů, velikost snímku, expoziční čas, zisk, zisky vyvážení bílé, cílové hodnoty automatického řízení a tak dále. MCU čte a zapisuje tyto registry přes sběrnici I2C (některé senzory místo toho používají SPI). Dva vodiče (SCL a SDA) propojují I2C periferii MCU s I2C rozhraním senzoru a každou konfiguraci, kterou uživatel zvolí, ovladač přeloží na jeden nebo více zápisů do registrů na této sběrnici.
Řídicí sběrnice běží uvolněnou rychlostí – typicky 100 kHz nebo 400 kHz. Nastavení jednoho registru trvá desítky mikrosekund; rekonfigurace celého senzoru (reset, nová velikost snímku, nový formát pixelů) trvá desítky až stovky milisekund, většinou proto, že čip potřebuje chvíli na to, aby po každém zápisu do registru uvedl nový režim do čistého stavu. Nic z toho nemusí držet krok s proudem pixelů.
4.9.2. Sběrnice pixelových dat¶
Pixelová data opouštějí senzor po samostatné, širší a mnohem rychlejší sběrnici. Dominují dvě rodiny.
Paralelní je starší z těchto dvou. Nese osm nebo deset datových linek pro bity pixelů, plus pixelové hodiny (PCLK), signál platnosti řádku (HSYNC) a signál platnosti snímku (VSYNC). Při každé hraně hodin se na datových linkách objeví jeden bajt pixelu; HSYNC a VSYNC sdělují přijímači, kde každý řádek a každý snímek začíná a končí. Paralelní sběrnice jsou jednoduché, ale propustnost je omezena tím, jak rychle dokáže pinová matice MCU hodinovat data dovnitř – typicky 50 až 100 MHz pixelových hodin v horní hranici.
MIPI CSI-2 – Mobile Industry Processor Interface Camera Serial Interface, verze 2 – z velké části nahradil paralelní rozhraní na nových obrazových senzorech. Nese pixely na jednom nebo více diferenciálních párech linek rychlostí stovek megabitů za sekundu na pár, s menším počtem pinů, mnohem vyšší šířkou pásma a nižší EMI. Paralelní rozhraní přetrvává většinou ve starších návrzích a u menších, pomalejších součástek, kde se jeho jednoduchost stále vyplatí.
Senzor a MCU si vyměňují řízení po pomalé obousměrné sběrnici I2C a pixelová data po širší, rychlejší, jednosměrné paralelní nebo MIPI sběrnici.¶
Ať už senzor používá kteroukoli rodinu, na straně MCU je periferie s pevnou funkcí, která zachytává příchozí pixely a zapisuje je do framebufferu v paměti. Python kód nikdy tuto sběrnici neřídí přímo; pouze čte framebuffer, jakmile jej tento hardware dokončí plnit.