I2C atmiņas un reģistru piekļuve

I2C protokols pieprasa reģistra adreses ierakstīšanu pirms tā satura lasīšanas no pakārtotās ierīces. Reģistra satura lasīšana bez iepriekšējas adreses ierakstīšanas neatbilst I2C protokolam.

Lai nolasītu konkrēta reģistra saturu no pakārtotās ierīces, vispirms jāveic ierakstīšanas darbība pakārtotajā ierīcē ar vēlamā reģistra adresi, pirms tiek veikta lasīšanas darbība.

Reģistra satura lasīšanas soļi no pakārtotās ierīces I2C protokolā ir šādi:

START -> Pakārtotās ierīces 7 bitu adrese -> R/W=0 (Ierakstīšanas darbība) -> ACK -> Reģistra adrese (1 baits) -> ACK -> Sr (Atkārtota palaišana) -> Pakārtotās ierīces 7 bitu adrese -> R/W=1 (Lasīšanas darbība) -> ACK -> Dati no reģistra -> NACK (no pakārtotās ierīces, jo tai vairs nav datu, ko nosūtīt) -> STOP.

Lai labāk izprastu I2C protokolu, skatiet Texas Instruments dokumentu “Understanding the I2C Bus”: Understanding the I2C Bus

Funkcija readReg ir paredzēta 2 baitu lasīšanai no pakārtotās ierīces. Ja vēlaties lasīt tikai 1 baitu, jāpārbauda, vai izmērs ir mainīts uz 1 baitu.

Reģistrs Reg0 parasti ir EN/RESET reģistrs. Pirms Reg0 lasīšanas jāpārbauda iepriekš veiktās darbības, piemēram, vai šajā reģistrā ir ierakstīti dati.

Ieteicams mēģināt piekļūt cita reģistra saturam, piemēram, Reg4, lai pārbaudītu, vai var nolasīt tajā ierakstīto saturu.

Piemērs, kā piekļūt reģistram ar adresi 0x05, lai nolasītu neapstrādāto temperatūras baitu no temperatūras sensora MCP9808 uz RA6M4: Vispirms veiciet ierakstīšanu, ierakstot pakārtotajā ierīcē 0x05, kas ir vēlamā reģistra adrese, pēc tam aptuveni 100ms (dažu while ciklu dēļ, kas pārbauda taimautu) tiks veikts šī reģistra satura lasīšanas process.

Comments

No comments yet. Why don’t you start the discussion?

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *