Hallo ich möchte einen IC-TW28 mit einem XMEGA A3U betreiben. http://www.ichaus.de/upload/pdf/TW28_datasheet_C1en.pdf Ich betreibe bereits erfolgreich ein Display über SPI. Unterschiede zum Display: Display hat feste Commands und der TW28 hat Registeradressen wo Commands reingeschrieben werden müssen. Außerdem sind die Commands für den TW28 nicht 8 Bit lang sondern 32 Bit lang. Ich Zerpflücke die 32 Bit so: /c void spid_Send32(uint32_t data) { uint8_t data0 = data; uint8_t data1 = (data >> 8 ); uint8_t data2 = (data >> 16 ); uint8_t data3 = (data >> 24 ); PORTD.OUTCLR = PIN4_bm; //Fallende Flanke an XSS SPID_STATUS=data0; Spid_Busy(); SPID_STATUS=data1; Spid_Busy(); SPID_STATUS=data2; Spid_Busy(); SPID_STATUS=data3; Spid_Busy(); PORTD.OUTSET = PIN4_bm; //XSS wieder High } /c Ich weiß versteh leider nicht wie ich die Commands in die richtigen Register schiebe. Andererseits merke ich grade die Adressen sind ja 32 Bit lang und die Commands eigentlich 8 Bit oder? Seh den Wald vor lauter Bäumen nicht mehr Ist es so, dass man zuerst das Commandbyte sendet und dann die Registeradresse hinterher schiebt? also muss ich über SPI nicht 32BIT für ein Command senden sondern 40?
:
Bearbeitet durch User
Tho S. schrieb: > Seh den Wald vor lauter Bäumen nicht mehr Dabei bräuchtest du nur das Datenblatt lesen und verstehen. Tip: ab Seite 29 ist alles beschrieben. Wenn du das nicht verstehst dann frage wieder.
Hallo, ja an der Stelle klebe ich grade am Datenblatt. Bin absoluter Neuling. habe grade etwas editiert.
Tho S. schrieb: > Ich betreibe bereits erfolgreich ein Display über SPI. Tho S. schrieb: > Bin absoluter Neuling. So so ..... Übrigens ist in deinem Code-Fragment festzustellen dass die Reihenfolge der Bytes nicht stimmt. Wie so oft wird auch bei diesem Chip das M(ost) S(ignificant) B(it/yte) immer zuerst geschrieben.
Vielen Dank für den Hinweis Beim Punkt Register Write steht tatsächlich was ich suche. Jedoch wird daraus deutlich dass, die Registeradresse 16 Bits lang ist wenn ich aber in der RegisterTabelle nachschaue sehe ich z.B MAIN_CFG unter 0x0000. Wie ist das zu verstehen?
Tho S. schrieb: > Wie ist das zu verstehen? Wie ist das nicht zu verstehen? Die Register Map geht von 0x0000 bis 0x4028, und das braucht nun mal einen Adressumfang von 16 (15) Bit.
sorry meine Dummheit 0x00 ist ja nicht 32 BIT wie ich dachte. da ich nur über SPI ins Register des TW28 schreiben möchte ist mein CONTROL BYTE 110011000 richtig? wie ich dann ins Register schreibe habe ich verstanden. Meine Funktion noch die Reihenfolge ändern und ab durch SPI
Tho S. schrieb: > ist mein CONTROL BYTE 110011000 richtig? Wie du die einzelnen Kommandos implementierst bete ich dir jetzt nicht vor, nur soviel: 9 Bits wirst du schwerlich in einem Byte unterbringen können.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.