Musiclight: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
==== SPI-Protokoll ====
 
Unser LEDstrip Raspi-Hat wird per SPI angesteuert.
''TODO''
 
Verbunden sind die Raspi-Pins 8/9/10/11, somit ist der Hat in einem normalen Raspbian als /dev/spidev0.0 ansprechbar.
 
Weiterhin verwendet der Hat GPIO 22 als "!BUSY"-Signal. Solange dieser Pin low ist, darf keine SPI-Übertragung initiert werden.
 
Die maximale SPI-Bitrate ist nicht getestet, 12MHz funktioniert aber anscheinend gut.
 
Das erste Byte eines SPI-Transfers beschreibt ein Kommando:
{| class="wikitable" border="1"
|-
! CMD
! Beschreibung
|-
| 0x01
| Config
|-
| 0x02
| SetData
|-
| 0x80
| Flush
|-
| 0x82
| SetData and Flush
|}
 
===== SPI-Command Config (0x01) =====
Konfiguriert das Raspi-Hat.
Derzeit lässt sich nur einstellen, wieviele Bytes des internen Buffers beim Flush an die LED-Strips herausgeschrieben werden.
 
{| class="wikitable" border="1"
|-
! [0]
! [1]
! [2]
|-
| CMD (0x01)
| Bytes per Strip (low byte)
| Bytes per Strip (high byte)
|}
 
===== SPI-Command SetData (0x02) =====
Setzt Daten in einem internen Buffer.
Für jeden angesteuerten LED-Strip gibt es einen Buffer.
 
Der Offset gibt an, an welcher Byte-Position im Buffer Daten gesetzt werden sollen, dieser wird nach jedem übertragenem Datenbyte inkrementiert.
 
Danach folgen beliebig viele Datenbytes.
 
{| class="wikitable" border="1"
|-
! [0]
! [1]
! [2]
! [3]
! [4]
! [5]
! ...
|-
| CMD (0x02)
| Buffer (0..3)
| Buffer-Offset (low byte)
| Buffer-Offset (high byte)
| Data[0]
| Data[1]
| ...
|}
 
===== SPI-Command Flush (0x80) =====
Sendet den aktuellen Inhalt der Buffer an die LED-Strips
 
{| class="wikitable" border="1"
|-
! [0]
|-
| CMD (0x80)
|}
 
===== SPI-Command SetData and Flush (0x82) =====
Setzt Daten in einem intern Buffer und führt danach ein Flush aus.
{| class="wikitable" border="1"
|-
! [0]
! [1]
! [2]
! [3]
! [4]
! [5]
! ...
|-
| CMD (0x82)
| Buffer (0..3)
| Buffer-Offset (low byte)
| Buffer-Offset (high byte)
| Data[0]
| Data[1]
| ...
|}
 
==== UDP-Protokoll ====