Commands über SPI senden an Registeradresse

OP #4988025
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?
Gast
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.
OP
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?
OP
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.