Kirjoittaja Aihe: I2C EEPROM ?  (Luettu 2292 kertaa)

Mistofelees

  • Käyttäjä
  • Viestejä: 661
    • Profiili
I2C EEPROM ?
« : 15.12.21 - klo:18.08 »
Onko niin, että Linuxin omilla työkaluilla ei pysty käsittelemään I2C-piiriä, jossa on enemmän sisäisiä osoitteita, kuin 256 ?
Itse haluaisin käyttää EEPROM:a Raspberryssä.

Olen nyt pari viikkoa vääntänyt tämän kanssa ja viimein löytyi smbus:n dokumentti, jossa sanotaan, että osoite on 8-bittinen:
https://www.kernel.org/doc/Documentation/i2c/smbus-protocol
-" Comm  (8 bits): Command byte, a data byte which often selects a register on the device.
Data  (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh for 16 bit data.
Count (8 bits): A data byte containing the length of a block operation."

i2c-dev.h headerissa osoitteet on määritelty '__u8', mikä ilmeisesti tarkoittaa 8-bittistä osoitetta.

Kirjoittamalla osoitteen High-8 Comm-byteen ja Low-8 Datan ensimmäiseksi tavuksi sain jotain aikaan, mutta kokeilut ovat kesken ja toimivuus huono.

Olenkin ihmetellyt, miksi kaikki netissä olevat esimerkit ovat vain 256 tavulle, samaten kaikki kehutut apuohjelmat, joilla pitäisi hallita muistipiirejä, esim I2Ctools:n I2Ctransfer ja I2Cset

nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: I2C EEPROM ?
« Vastaus #1 : 16.12.21 - klo:12.50 »
Katso piirin dokumentaatiosta, miten osoite pitää lähettää. Yleensä piirin sisäinen osoite lähetetään datana. Command-bytessä voidaan ehkä lähettää osa osoitteen biteistä ja niiden lisäksi siellä voi olla mm. lippu luku/kirjoitustilalle.