-
-
Moderator
Robotik Einstein
Schau mal auf Seite 21 von dem Datenblatt
hier: http://www.nxp.com/documents/data_sheet/PCA9635.pdf
Dort siehst du einen Punkt der heißt Bus transactions. Dort siehst du wie du vorgehen musst wenn du einzelne Register beschreiben willst.
Erst sendest du ein I2C-Start. Danach schreibst du per I2C-Write die Adresse des Slaves auf den Bus (die Schreibadresse also mit 0 am Ende).
Nun wartest du auf ein Ack vom Slave. Nach dem Ack geht es weiter mit den 3 Bits fürs Auto-Increment. Je nachdem wie du das haben willst musst du die Bits utnerschiedlich setzen. Siehe dazu Seite 7 des Datenblattes. Die nächsten 5 Bits des Bytes sind dann die Adressen für das Register was du ansprechen willst. Danach wartest du wieder auf ein Ack vom Slave und dann sendest du deine Daten (1 Byte) und wartest erneut auf ein Ack. Wenn danach noch weitere Daten kommen sollten sendest du erneut 1 Byte ansonsten machst du ein I2C-Stop.
Fertig sieht das etwa so aus (musst du noch anpassen ist nur ein Schaubild):
I2C Start Startbefehl
I2Cw &H40, Ack Slaveadresse mit Ack
I2Cw 000 00001 Registeradresse, 3x0 für Auto-Increment aus und 00001 für Register D0
I2Cw Byte 1 Byte senden
I2C Stop Stop
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen