Forum

Einloggen | Registrieren | RSS  

sponsorpi(R)

22.04.2017,
13:42
 

nRF24L01+_SPI (Bauelemente)

Hallo,

ich befasse mich aktuell mit dem nRF24L01+ - Modul, welches ich mit einem Atmega8 ueber SPI ansteuern möchte. Ich bin gerade dabei das SPI Config Register des Atmega zu definieren. Nun bin ich mir nicht sicher, ob LSB oder MSB first hier richtig ist.

Im Datenblatt des nRF24L01+ steht auf Seite 50:





Und auf Seite 52:






Bedeutet das jetzt, dass alle Befehl-Bytes LSB first und Daten-Bytes MSB first über den SPI gesendet werden müssen oder versteh ich das was falsch? Gilt das nur für das Senden vom Master oder auch für den Empfang als Slave? Der nRF24L01+ hat ja einen FIFO, also wenn ich dort zuerst das MSB reinshifte, dann kommt das ja auch als erstes wieder raus. Nur für den Fall, dass es wichtig sein sollte, ich programmiere in Assembler.

Komplettes Datanblatt:
https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P

Hoffe jemand kann meiner Verwirrung Abhilfe schaffen, besten Dank schonmal :)

bastelix(R)

22.04.2017,
16:48

@ sponsorpi

nRF24L01+_SPI

Hi,

in dem Datenblatt ist von MSBit/LSBit und MSByte/LSByte die Rede.

In 8.3.1 steht
Command word: MSBit to LSBit (one Byte)
Data bytes: LSByte to MSByte, MSBit in each Byte first

und in "Figure 27 SPI write operation" wird das nochmal dargestellt MOSI: [C7...C0] [D7...D0] [D15...D8]

Ich würde das so verstehen, für jedes Byte musst du von MSBit zu LSBit übertragen. Das Command ist nur ein Byte, bei den Daten hast du zwei Byte und und da wird das LSByte zuerst übertragen (mit dem MSBit des LSByte zuerst) und dann das MSByte (auch wieder MSBit zuerst).

Daten-Bytes [D15 D14 D13 D12 D11 D10 D9 D8] [D7 D6 D5 D4 D3 D2 D1 D0]
Übertragung [D7 D6 D5 D4 D3 D2 D1 D0] [D15 D14 D13 D12 D11 D10 D9 D8]

sponsorpi(R)

22.04.2017,
20:29

@ bastelix

nRF24L01+_SPI

» Hi,
»
» in dem Datenblatt ist von MSBit/LSBit und MSByte/LSByte die Rede.
»
» In 8.3.1 steht
» Command word: MSBit to LSBit (one Byte)
» Data bytes: LSByte to MSByte, MSBit in each Byte first
»
» und in "Figure 27 SPI write operation" wird das nochmal dargestellt MOSI:
» [C7...C0] [D7...D0] [D15...D8]
»
» Ich würde das so verstehen, für jedes Byte musst du von MSBit zu LSBit
» übertragen. Das Command ist nur ein Byte, bei den Daten hast du zwei Byte
» und und da wird das LSByte zuerst übertragen (mit dem MSBit des LSByte
» zuerst) und dann das MSByte (auch wieder MSBit zuerst).
»
» Daten-Bytes [D15 D14 D13 D12 D11 D10 D9 D8] [D7 D6 D5 D4 D3 D2 D1
» D0]
» Übertragung [D7 D6 D5 D4 D3 D2 D1 D0] [D15 D14 D13 D12 D11 D10 D9
» D8]

Besten Dank, hast mir sehr weitergeholfen :)
Da kann man sich leicht verwirren lassen.