4.9. Sensorin väylät¶
Kamerasensori ja sen kanssa kommunikoiva MCU vaihtavat kahdenlaista tietoa kahdella eri väylällä.
4.9.1. Ohjausväylä¶
Jokainen sensorin asetus sijaitsee sirun rekisterissä – pikseliformaatti, kehyskoko, valotusaika, vahvistus, valkotasapainon vahvistukset, automaattiohjauksen tavoitteet ja niin edelleen. MCU lukee ja kirjoittaa näitä rekistereitä I2C-väylän kautta (jotkin sensorit käyttävät SPI:tä sen sijaan). Kaksi johdinta (SCL ja SDA) yhdistävät MCU:n I2C-oheislaitteen sensorin I2C-rajapintaan, ja jokainen käyttäjän valitsema asetus muunnetaan ajurin toimesta yhdeksi tai useammaksi rekisterikirjoitukseksi tällä väylällä.
Ohjausväylä toimii rennolla nopeudella – tyypillisesti 100 kHz tai 400 kHz. Yhden rekisterin asettaminen kestää kymmeniä mikrosekunteja; koko sensorin uudelleenkonfigurointi (nollaus, uusi kehyskoko, uusi pikseliformaatti) kestää kymmeniä tai satoja millisekunteja, lähinnä siksi että siru tarvitsee hetken tuodakseen uuden tilan puhtaaseen tilaan jokaisen rekisterikirjoituksen jälkeen. Minkään tästä ei tarvitse pysyä pikselivirran tahdissa.
4.9.2. Pikselidataväylä¶
Pikselidata poistuu sensorista erillistä, leveämpää ja paljon nopeampaa väylää pitkin. Kaksi sukua hallitsee.
Parallel on näistä kahdesta vanhempi. Se kuljettaa kahdeksaa tai kymmentä datalinjaa pikselibittejä varten, sekä pikselikellon (PCLK), rivin kelvollisuussignaalin (HSYNC) ja kehyksen kelvollisuussignaalin (VSYNC). Jokaisella kellosyklin reunalla datalinjoille ilmestyy yksi pikselitavu; HSYNC ja VSYNC kertovat vastaanottajalle, missä kukin rivi ja kukin kehys alkavat ja loppuvat. Parallel-väylät ovat yksinkertaisia, mutta läpäisykyky on rajoitettu sillä, kuinka nopeasti MCU:n nastamatriisi pystyy kelloittamaan dataa sisään – tyypillisesti 50–100 MHz pikselikello korkeimmillaan.
MIPI CSI-2 – Mobile Industry Processor Interface Camera Serial Interface, versio 2 – on suurelta osin korvannut parallelin uusissa kuvasensoreissa. Se kuljettaa pikselit yhdellä tai useammalla differentiaalisella linjaparilla satojen megabittien sekuntinopeudella paria kohti, pienemmällä nastamäärällä, paljon suuremmalla kaistanleveydellä ja matalammalla EMI:llä. Parallel säilyy lähinnä vanhoissa malleissa ja pienemmissä, matalamman nopeuden komponenteissa, joissa sen yksinkertaisuus on yhä eduksi.
Sensori ja MCU vaihtavat ohjausta hitaalla kaksisuuntaisella I2C-väylällä ja pikselidataa leveämmällä, nopeammalla, yksisuuntaisella parallel- tai MIPI-väylällä.¶
Käytti sensori kumpaa sukua tahansa, MCU-puolella on kiinteätoiminen oheislaite, joka sieppaa saapuvat pikselit ja kirjoittaa ne kehyspuskuriin muistissa. Python-koodi ei koskaan ohjaa tätä väylää suoraan; se vain lukee kehyspuskurin, kun laitteisto on saanut sen täytettyä.