<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stefan+s40</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stefan+s40"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Stefan_s40"/>
	<updated>2026-04-10T14:54:46Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=RFM69&amp;diff=85435</id>
		<title>RFM69</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=RFM69&amp;diff=85435"/>
		<updated>2014-10-30T12:47:29Z</updated>

		<summary type="html">&lt;p&gt;Stefan s40: /* Interrupts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:rf69cw.png|thumb|300px|RFM69CW, Pinkompatibel zum RFM12]]&lt;br /&gt;
Das RFM69 von HopeRF ist ein universelles Funkmodul für die ISM-Frequenzbänder 315, 433, 868 und 915 MHz. Eine [[SPI]]-Schnitttstelle ermöglicht die einfache Integration in Mikrocontrollerprojekte.&lt;br /&gt;
&lt;br /&gt;
== Ausführungen ==&lt;br /&gt;
* RFM69HCW, mit zusätzlicher PA, 20 dBm&lt;br /&gt;
* RFM69HW, mit zusätzlicher PA, 20 dBm&lt;br /&gt;
* RFM69CW, Pinkompatibel zum RFM12B&lt;br /&gt;
* RFM69W&lt;br /&gt;
&lt;br /&gt;
Die CW-Variante hat 2 Pins weniger (es fehlt der Pin DIO4), und ist Pinkompatibel zum Vorgänger RFM12B.&lt;br /&gt;
Es kann ohne Änderung am Layout oder der Schaltung ausgetauscht werden. Lediglich die Software muss angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== Ausstattung ==&lt;br /&gt;
* Betriebsspannung 1,8 - 3,6 V&lt;br /&gt;
* SPI-Schnittstelle&lt;br /&gt;
* FSK- und OOK-Modulation (Frequency Shift Keying = Frequenzumtastung, On-Off-Keying = Amplitudentastung)&lt;br /&gt;
* Eingebauter Manchesterde- und -encoder&lt;br /&gt;
* Frequenzbereiche 315, 433, 868, 915 MHz&lt;br /&gt;
* Max. Datenrate 300 kbit/s&lt;br /&gt;
* Ausgangsleistung +13 dBm (rund 20 mW)&lt;br /&gt;
* Stromaufnahme 45 mA senden (13 dBm), 16 mA empfangen, 0,1 µA Standby&lt;br /&gt;
* Integrierte Packetengine für Synchronwort, CRC, Scrambling und AES-Verschlüsselung&lt;br /&gt;
* 66 Byte FIFO&lt;br /&gt;
* Modul basiert auf dem SX1231 von Semtech&lt;br /&gt;
&lt;br /&gt;
== Vergleich zum RFM12B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !! RFM12B !! RFM69(C)W&lt;br /&gt;
|-&lt;br /&gt;
| Versorgungsspannung || 2,2 - 3,8 V || 1,8 - 3,6 V&lt;br /&gt;
|-&lt;br /&gt;
| Max. Datenrate || 115,2 kbit/s || 300 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
| Sendeleistung || 5 dBm || 13 dBm&lt;br /&gt;
|-&lt;br /&gt;
| Empfindlichkeit || -105 dB || -120 dB&lt;br /&gt;
|-&lt;br /&gt;
| Stromaufnahme || 22 mA/11 mA/0,3 µA || 45 mA/16 mA/0,1 µA&lt;br /&gt;
|-&lt;br /&gt;
| FIFO Größe || 16 Bit || 66 Bytes&lt;br /&gt;
|-&lt;br /&gt;
| Syncmustererkennung || Fest 0x2DD4 oder 0xD4 || Frei bis zu 8 Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Das Funkmodul kommuniziert über die SPI Schnittstelle mit dem µC. Im einfachsten Fall werden SCK, MISO, MOSI und NSS benötigt. Am besten führt man auch noch DIO0 zum Prozessor. Dieser Pin kann softwareseitig so konfiguriert werden, dass er anzeigt, wenn ein Paket vollständig gesendet oder ein neues Paket empfangen wurde. Ist das Modul in Minimalkonfiguration angeschlossen, müssen dazu die Statusregister RegIrqFlags1 (0x27) oder RegIrqFlags2 (0x28) ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Die SPI-Ansteuerung erfolgt im Modus CPOL=0, CPHA=0, wobei jeweils 16 Bits vom µC zum Modul geschickt werden:&lt;br /&gt;
Das erste Bit teilt dem Modul mit, ob es sich um einen Lese- (Bitwert 0) oder Schreibvorgang (Bitwert 1) handelt, die restlichen sieben Bit des ersten Bytes geben die Registeradresse an. Mit den zweiten acht Bit wird im Schreibmodus der zu übertragende Befehl an das Modul übermittelt, im Lesemodus kann eine beliebige Bitfolge gesendet werden. Während das zweite Bit gesendet wird, empfängt der µC sowohl im Lese- als auch im Schreibmodus den Inhalt des angesprochenen Registers vor dem aktuellen Zugriff.&lt;br /&gt;
&lt;br /&gt;
Werden nach dem Adressbyte mehrere Bytes empfangen oder gelesen, wird der Adresszeiger im RFM69 automatisch inkrementiert, so dass in einem einzigen Burst mehrere Register gelesen werden können. Zu beachten ist dabei, dass in Registern die mehr als 8 Bit breit sind (Frequenz, Bitrate, ...), das höchstwertige Byte zu erst geschrieben/gelesen wird (big endian). Wird das FIFO Register gelesen/geschrieben, wird der Adresszeiger nicht inkrementiert, so dass auf das FIFO in einem Burst zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== Funtionsweise ==&lt;br /&gt;
Es gibt zwei grundsätzliche Funktionsmodi, die im Register &amp;quot;RegDataModule&amp;quot; gewählt werden:&lt;br /&gt;
=== Continuous Mode ===&lt;br /&gt;
Für die Datenübertragung vom/zum Modul werden die beiden Pins &amp;quot;DIO1/DCLK&amp;quot; und &amp;quot;DIO2/DATA&amp;quot; verwendet. An DCLK gibt das Modul den Takt vor mit dem die Datenbits an DATA geschrieben oder gelesen werden müssen.&lt;br /&gt;
=== Packet Mode ===&lt;br /&gt;
Die Packetengine des RFM69 kümmert sich um die Erzeugung und Auswertung der Preamble, des Synchronwortes, des des Scramblings, der CRC und der Verschlüsselung. Im Sendebetrieb bearbeitet die eingebaute Packet Engine ein Nutzdatenpaket folgendermaßen:&lt;br /&gt;
==== Fixed Length Format ====&lt;br /&gt;
===== Senden =====&lt;br /&gt;
* Einstellbare Anzahl (0-65535) von Preamblebytes (0xAA) an den Anfang setzen&lt;br /&gt;
* Synchronwort hinzufügen (Länge zwischen 0-8 Bytes einstellbar, Synchronwort selbst ebenfalls einstellbar)&lt;br /&gt;
* Nutzdaten hinzufügen (Länge wird in einem Register angegeben)&lt;br /&gt;
* CRC hinzufügen (abschaltbar)&lt;br /&gt;
&lt;br /&gt;
== Interrupts ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichnung !! Beschreibung !! Verfügbar an&lt;br /&gt;
|-&lt;br /&gt;
| ModeReady || Beispiel || DIO5&lt;br /&gt;
|-&lt;br /&gt;
| RxReady || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| TxReady || Beispiel || DIO3, DIO0&lt;br /&gt;
|-&lt;br /&gt;
| PllLock || Beispiel || DIO3, DIO1, DIO0&lt;br /&gt;
|-&lt;br /&gt;
| Rssi || Beispiel || DIO3, DIO0&lt;br /&gt;
|-&lt;br /&gt;
| Timeout || Beispiel || DIO1&lt;br /&gt;
|-&lt;br /&gt;
| AutoMode || Beispiel || DIO2&lt;br /&gt;
|-&lt;br /&gt;
| SyncAddressMatch|| Beispiel || DIO3, DIO0&lt;br /&gt;
|-&lt;br /&gt;
| FifoFull || Beispiel || DIO3, DIO1&lt;br /&gt;
|-&lt;br /&gt;
| FifoNotEmpty || || DIO2, DIO1&lt;br /&gt;
|-&lt;br /&gt;
| FifoLevel || || DIO1&lt;br /&gt;
|-&lt;br /&gt;
| FifoOverrun || ||&lt;br /&gt;
|-&lt;br /&gt;
| PacketSent || || DIO0&lt;br /&gt;
|-&lt;br /&gt;
| PayloadReady || || DIO0&lt;br /&gt;
|-&lt;br /&gt;
| CrcOk || || DIO0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung RFM69(H)CW ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pinnummer !! Name !! Richtung !! Beschreibung !! Pin am RFM12&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ANA || || Antennenanschluss || ANT&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 3.3V || || Versorgungsspannung || VDD&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || || || GND&lt;br /&gt;
|-&lt;br /&gt;
| 4 || DIO3 || || FifoFull&amp;amp;nbsp;PllLock&amp;lt;br/&amp;gt;Rssi&amp;lt;br/&amp;gt;SyncAdress&amp;lt;br/&amp;gt;TXReady || nINT/VDI&lt;br /&gt;
|-&lt;br /&gt;
| 5 || MOSI || || SPI Daten Eingang || SDI&lt;br /&gt;
|-&lt;br /&gt;
| 6 || SCK || || SPI Takt || SCK&lt;br /&gt;
|-&lt;br /&gt;
| 7 || NSS || || Chip select || nSEL&lt;br /&gt;
|-&lt;br /&gt;
| 8 || MISO || || SPI Daten Ausgang || SDO&lt;br /&gt;
|-&lt;br /&gt;
| 9 || DIO0 || || PllLock (FS, TX)&amp;lt;br/&amp;gt;CrcOK (RX)&amp;lt;br/&amp;gt;PayloadReady (RX)&amp;lt;br/&amp;gt;SyncAddress (RX)&amp;lt;br/&amp;gt;Rssi (RX)&amp;lt;br/&amp;gt;PacketSent (TX)&amp;lt;br/&amp;gt;TxReady (TX) || nIRQ&lt;br /&gt;
|-&lt;br /&gt;
| 10 || DIO2 || || FifoNotEmpty (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;AutoMode(Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;Data (RX, TX) || FSK/DATA/nFFS&lt;br /&gt;
|-&lt;br /&gt;
| 11 || DIO1 || || FifoLevel (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;FifoFull (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;FifoNotEmpty (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;PllLock (FS, TX)&amp;lt;br/&amp;gt;Timeout (RX) || DCLK/CFIL/FFIT&lt;br /&gt;
|-&lt;br /&gt;
| 12 || DIO5 || || ModeReady&amp;lt;br/&amp;gt;ClkOut (Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;Data (RX, TX) || CLK&lt;br /&gt;
|-&lt;br /&gt;
| 13 || RESET || || || nRES&lt;br /&gt;
|-&lt;br /&gt;
| 14 || GND || || || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Adresse !! Registername !! Beschreibung !! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || RegFifo || Zugriff auf das FIFO Register&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || RegOpMode || Betriebsart (senden, empfangen, ...) || 0x04 = Empfangen&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || RegDataModule || Modulationsart &amp;amp;-shaping, Packetengine || 0x00 = FSK, Packetengine aktiv&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 - 0x04|| RegBitrate || = FXOSC/Bitrate || 0x1A0B = 6667 -&amp;gt; 4,8 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 - 0x06 || RegFdev || Frequenzabweichung (Hub * 2) || 0x52 = 82 -&amp;gt; 5 kHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 - 0x09 || RegFrf || Mittenfrequenz || 0xD91333 = 14226227 -&amp;gt; 868,300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x11|| RegPaLevel || Sendeleistung || 0x12 = 18 -&amp;gt; 0 dBm&lt;br /&gt;
|-&lt;br /&gt;
| 0x19|| RegRxBw || Filterbandbreite || 0b01001 -&amp;gt; 200 kHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x25|| RegDioMapping1 || DIO Funktionen ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x27|| RegIrqFlags1 || Statusflags (ModeReady, RxReady, TxReady, PllLock, RSSI, Timeout, AutoMode, SyncAddressMatch) || 0xD0 -&amp;gt; Empfänger bereit zum Datenempfang&lt;br /&gt;
|-&lt;br /&gt;
| 0x28|| RegIrqFlags2 || Statusflags (FifoFull, FifoNotEmpty, FifoLevel, FifoOverrun, PacketSent, PayloadReady, CrcOk, LowBat) || 0x06 -&amp;gt; Daten mit erfolgreichem CRC empfangen&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C - 0x2D|| RegPreamble || Preamblelänge ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E || RegSyncConfig || Synchronworteinstellungen ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F - 0x36 || RegSyncValue || Synchronwort || 0x2DD4&lt;br /&gt;
|-&lt;br /&gt;
| 0x37 || RegPacketConfig1 || Einstellungen Packetengine ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || RegPayloadLength || Datenpacketgröße ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
=== FS20 Funksteckdosen schalten ===&lt;br /&gt;
Da das RFM69 OOK modulieren kann, können damit die FS20 Funksteckdosen geschaltet werden. FS20 verwendet allerdings eine Art Pulsdauermodulation; eine 1 wird mit 600&amp;amp;nbsp;µs Träger an gefolgt von 600&amp;amp;nbsp;µs Träger aus, und eine 0 mit 400&amp;amp;nbsp;µs an gefolgt von 400&amp;amp;nbsp;µs aus übertragen. Man teilt einfach das Signal in 200&amp;amp;nbsp;µs Schlitze ein (OOK-Datenrate 5&amp;amp;nbsp;kbit/s), und sendet für eine 1 die Folge 111000 und für eine 0 die Folge 1100. Im FS20 Protokoll wird ein 13 Bit langer Header (0000000000001) übertragen, diesen kann man umrechnen und im RFM69 als Syncword einstellen. So wird der Header vom RFM69 bei jeder Übertragung automatisch vorweg ausgesendet.&lt;br /&gt;
&lt;br /&gt;
=== Conrad Energy Count 3000 ===&lt;br /&gt;
Unter http://forum.jeelabs.net/node/3412679.html?page=1 wurde schon das Protokoll der Conrad Energy Count 3000 (baugleich mit Technoline Cost Control RC) Funk-Energiekostenmessgeräte beschrieben. Mit dem RFM69 lässt sich ein Frame des Messgerätes mit dem konfigurierbarem Synchronwortfinder bequem empfangen.&lt;br /&gt;
&lt;br /&gt;
=== LaCrosse Temperatursensoren empfangen ===&lt;br /&gt;
=== Open Energy Monitor empfangen ===&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
* [http://shop.seegel-systeme.de/Bauelemente/Funkmodul-RFM69CW-REV-V1-0-868-MHz-SMD.html Seegel Systeme]&lt;br /&gt;
* Pollin: [http://www.pollin.de/shop/dt/Nzk2OTgxOTk-/Bausaetze_Module/Module/Funkmodul_HOPERF_RFM69CW_433_MHz_TX_RX.html 433 MHz] / [http://www.pollin.de/shop/dt/Njk2OTgxOTk-/Bausaetze_Module/Module/Funkmodul_HOPERF_RFM69CW_868_MHz_TX_RX.html 868 MHz]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.hoperf.com/upload/rf/RFM69CW-V1.1.pdf Datenblatt RFM69CW]&lt;br /&gt;
* [http://www.hoperf.com/upload/rf/RFM69W-V1.3.pdf Datenblatt RFM69W]&lt;br /&gt;
* [http://www.semtech.com/images/datasheet/sx1231.pdf Datenblatt Semtech SX1231]&lt;br /&gt;
* [http://www.semtech.com/images/datasheet/AN1200.18_STD.pdf Application Note zur Softwareimplementierung von Data-Whitening und CRC]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/332579 Thread im Forum: Wer verwendet RFM69]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RFM12]]&lt;br /&gt;
[[Kategorie:Funk]]&lt;/div&gt;</summary>
		<author><name>Stefan s40</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=RFM69&amp;diff=85432</id>
		<title>RFM69</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=RFM69&amp;diff=85432"/>
		<updated>2014-10-30T07:44:22Z</updated>

		<summary type="html">&lt;p&gt;Stefan s40: interrupts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:rf69cw.png|thumb|300px|RFM69CW, Pinkompatibel zum RFM12]]&lt;br /&gt;
Das RFM69 von HopeRF ist ein universelles Funkmodul für die ISM-Frequenzbänder 315, 433, 868 und 915 MHz. Eine [[SPI]]-Schnitttstelle ermöglicht die einfache Integration in Mikrocontrollerprojekte.&lt;br /&gt;
&lt;br /&gt;
== Ausführungen ==&lt;br /&gt;
* RFM69HCW, mit zusätzlicher PA, 20 dBm&lt;br /&gt;
* RFM69HW, mit zusätzlicher PA, 20 dBm&lt;br /&gt;
* RFM69CW, Pinkompatibel zum RFM12B&lt;br /&gt;
* RFM69W&lt;br /&gt;
&lt;br /&gt;
Die CW-Variante hat 2 Pins weniger (es fehlt der Pin DIO4), und ist Pinkompatibel zum Vorgänger RFM12B.&lt;br /&gt;
Es kann ohne Änderung am Layout oder der Schaltung ausgetauscht werden. Lediglich die Software muss angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== Ausstattung ==&lt;br /&gt;
* Betriebsspannung 1,8 - 3,6 V&lt;br /&gt;
* SPI-Schnittstelle&lt;br /&gt;
* FSK- und OOK-Modulation (Frequency Shift Keying = Frequenzumtastung, On-Off-Keying = Amplitudentastung)&lt;br /&gt;
* Eingebauter Manchesterde- und -encoder&lt;br /&gt;
* Frequenzbereiche 315, 433, 868, 915 MHz&lt;br /&gt;
* Max. Datenrate 300 kbit/s&lt;br /&gt;
* Ausgangsleistung +13 dBm (rund 20 mW)&lt;br /&gt;
* Stromaufnahme 45 mA senden (13 dBm), 16 mA empfangen, 0,1 µA Standby&lt;br /&gt;
* Integrierte Packetengine für Synchronwort, CRC, Scrambling und AES-Verschlüsselung&lt;br /&gt;
* 66 Byte FIFO&lt;br /&gt;
* Modul basiert auf dem SX1231 von Semtech&lt;br /&gt;
&lt;br /&gt;
== Vergleich zum RFM12B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !! RFM12B !! RFM69(C)W&lt;br /&gt;
|-&lt;br /&gt;
| Versorgungsspannung || 2,2 - 3,8 V || 1,8 - 3,6 V&lt;br /&gt;
|-&lt;br /&gt;
| Max. Datenrate || 115,2 kbit/s || 300 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
| Sendeleistung || 5 dBm || 13 dBm&lt;br /&gt;
|-&lt;br /&gt;
| Empfindlichkeit || -105 dB || -120 dB&lt;br /&gt;
|-&lt;br /&gt;
| Stromaufnahme || 22 mA/11 mA/0,3 µA || 45 mA/16 mA/0,1 µA&lt;br /&gt;
|-&lt;br /&gt;
| FIFO Größe || 16 Bit || 66 Bytes&lt;br /&gt;
|-&lt;br /&gt;
| Syncmustererkennung || Fest 0x2DD4 oder 0xD4 || Frei bis zu 8 Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Das Funkmodul kommuniziert über die SPI Schnittstelle mit dem µC. Im einfachsten Fall werden SCK, MISO, MOSI und NSS benötigt. Am besten führt man auch noch DIO0 zum Prozessor. Dieser Pin kann softwareseitig so konfiguriert werden, dass er anzeigt, wenn ein Paket vollständig gesendet oder ein neues Paket empfangen wurde. Ist das Modul in Minimalkonfiguration angeschlossen, müssen dazu die Statusregister RegIrqFlags1 (0x27) oder RegIrqFlags2 (0x28) ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Die SPI-Ansteuerung erfolgt im Modus CPOL=0, CPHA=0, wobei jeweils 16 Bits vom µC zum Modul geschickt werden:&lt;br /&gt;
Das erste Bit teilt dem Modul mit, ob es sich um einen Lese- (Bitwert 0) oder Schreibvorgang (Bitwert 1) handelt, die restlichen sieben Bit des ersten Bytes geben die Registeradresse an. Mit den zweiten acht Bit wird im Schreibmodus der zu übertragende Befehl an das Modul übermittelt, im Lesemodus kann eine beliebige Bitfolge gesendet werden. Während das zweite Bit gesendet wird, empfängt der µC sowohl im Lese- als auch im Schreibmodus den Inhalt des angesprochenen Registers vor dem aktuellen Zugriff.&lt;br /&gt;
&lt;br /&gt;
Werden nach dem Adressbyte mehrere Bytes empfangen oder gelesen, wird der Adresszeiger im RFM69 automatisch inkrementiert, so dass in einem einzigen Burst mehrere Register gelesen werden können. Zu beachten ist dabei, dass in Registern die mehr als 8 Bit breit sind (Frequenz, Bitrate, ...), das höchstwertige Byte zu erst geschrieben/gelesen wird (big endian). Wird das FIFO Register gelesen/geschrieben, wird der Adresszeiger nicht inkrementiert, so dass auf das FIFO in einem Burst zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== Funtionsweise ==&lt;br /&gt;
Es gibt zwei grundsätzliche Funktionsmodi, die im Register &amp;quot;RegDataModule&amp;quot; gewählt werden:&lt;br /&gt;
=== Continuous Mode ===&lt;br /&gt;
Für die Datenübertragung vom/zum Modul werden die beiden Pins &amp;quot;DIO1/DCLK&amp;quot; und &amp;quot;DIO2/DATA&amp;quot; verwendet. An DCLK gibt das Modul den Takt vor mit dem die Datenbits an DATA geschrieben oder gelesen werden müssen.&lt;br /&gt;
=== Packet Mode ===&lt;br /&gt;
Die Packetengine des RFM69 kümmert sich um die Erzeugung und Auswertung der Preamble, des Synchronwortes, des des Scramblings, der CRC und der Verschlüsselung. Im Sendebetrieb bearbeitet die eingebaute Packet Engine ein Nutzdatenpaket folgendermaßen:&lt;br /&gt;
==== Fixed Length Format ====&lt;br /&gt;
===== Senden =====&lt;br /&gt;
* Einstellbare Anzahl (0-65535) von Preamblebytes (0xAA) an den Anfang setzen&lt;br /&gt;
* Synchronwort hinzufügen (Länge zwischen 0-8 Bytes einstellbar, Synchronwort selbst ebenfalls einstellbar)&lt;br /&gt;
* Nutzdaten hinzufügen (Länge wird in einem Register angegeben)&lt;br /&gt;
* CRC hinzufügen (abschaltbar)&lt;br /&gt;
&lt;br /&gt;
== Interrupts ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichnung !! Beschreibung !! Verfügbar an&lt;br /&gt;
|-&lt;br /&gt;
| ModeReady || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| RxReady || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| TxReady || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| PllLock || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| Beispiel || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| Rssi || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| Timeout || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| AutoMode || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| SyncAddressMatch|| Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| FifoFull || Beispiel || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| FifoNotEmpty || ||&lt;br /&gt;
|-&lt;br /&gt;
| FifoLevel || ||&lt;br /&gt;
|-&lt;br /&gt;
| FifoOverrun || ||&lt;br /&gt;
|-&lt;br /&gt;
| PacketSent || ||&lt;br /&gt;
|-&lt;br /&gt;
| PayloadReady || ||&lt;br /&gt;
|-&lt;br /&gt;
| CrcOk || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung RFM69(H)CW ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pinnummer !! Name !! Richtung !! Beschreibung !! Pin am RFM12&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ANA || || Antennenanschluss || ANT&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 3.3V || || Versorgungsspannung || VDD&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || || || GND&lt;br /&gt;
|-&lt;br /&gt;
| 4 || DIO3 || || FifoFull&amp;amp;nbsp;PllLock&amp;lt;br/&amp;gt;Rssi&amp;lt;br/&amp;gt;SyncAdress&amp;lt;br/&amp;gt;TXReady || nINT/VDI&lt;br /&gt;
|-&lt;br /&gt;
| 5 || MOSI || || SPI Daten Eingang || SDI&lt;br /&gt;
|-&lt;br /&gt;
| 6 || SCK || || SPI Takt || SCK&lt;br /&gt;
|-&lt;br /&gt;
| 7 || NSS || || Chip select || nSEL&lt;br /&gt;
|-&lt;br /&gt;
| 8 || MISO || || SPI Daten Ausgang || SDO&lt;br /&gt;
|-&lt;br /&gt;
| 9 || DIO0 || || PllLock (FS, TX)&amp;lt;br/&amp;gt;CrcOK (RX)&amp;lt;br/&amp;gt;PayloadReady (RX)&amp;lt;br/&amp;gt;SyncAddress (RX)&amp;lt;br/&amp;gt;Rssi (RX)&amp;lt;br/&amp;gt;PacketSent (TX)&amp;lt;br/&amp;gt;TxReady (TX) || nIRQ&lt;br /&gt;
|-&lt;br /&gt;
| 10 || DIO2 || || FifoNotEmpty (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;AutoMode(Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;Data (RX, TX) || FSK/DATA/nFFS&lt;br /&gt;
|-&lt;br /&gt;
| 11 || DIO1 || || FifoLevel (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;FifoFull (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;FifoNotEmpty (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;PllLock (FS, TX)&amp;lt;br/&amp;gt;Timeout (RX) || DCLK/CFIL/FFIT&lt;br /&gt;
|-&lt;br /&gt;
| 12 || DIO5 || || ModeReady&amp;lt;br/&amp;gt;ClkOut (Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;Data (RX, TX) || CLK&lt;br /&gt;
|-&lt;br /&gt;
| 13 || RESET || || || nRES&lt;br /&gt;
|-&lt;br /&gt;
| 14 || GND || || || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Adresse !! Registername !! Beschreibung !! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || RegFifo || Zugriff auf das FIFO Register&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || RegOpMode || Betriebsart (senden, empfangen, ...) || 0x04 = Empfangen&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || RegDataModule || Modulationsart &amp;amp;-shaping, Packetengine || 0x00 = FSK, Packetengine aktiv&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 - 0x04|| RegBitrate || = FXOSC/Bitrate || 0x1A0B = 6667 -&amp;gt; 4,8 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 - 0x06 || RegFdev || Frequenzabweichung (Hub * 2) || 0x52 = 82 -&amp;gt; 5 kHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 - 0x09 || RegFrf || Mittenfrequenz || 0xD91333 = 14226227 -&amp;gt; 868,300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x11|| RegPaLevel || Sendeleistung || 0x12 = 18 -&amp;gt; 0 dBm&lt;br /&gt;
|-&lt;br /&gt;
| 0x19|| RegRxBw || Filterbandbreite || 0b01001 -&amp;gt; 200 kHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x25|| RegDioMapping1 || DIO Funktionen ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x27|| RegIrqFlags1 || Statusflags (ModeReady, RxReady, TxReady, PllLock, RSSI, Timeout, AutoMode, SyncAddressMatch) || 0xD0 -&amp;gt; Empfänger bereit zum Datenempfang&lt;br /&gt;
|-&lt;br /&gt;
| 0x28|| RegIrqFlags2 || Statusflags (FifoFull, FifoNotEmpty, FifoLevel, FifoOverrun, PacketSent, PayloadReady, CrcOk, LowBat) || 0x06 -&amp;gt; Daten mit erfolgreichem CRC empfangen&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C - 0x2D|| RegPreamble || Preamblelänge ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E || RegSyncConfig || Synchronworteinstellungen ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F - 0x36 || RegSyncValue || Synchronwort || 0x2DD4&lt;br /&gt;
|-&lt;br /&gt;
| 0x37 || RegPacketConfig1 || Einstellungen Packetengine ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || RegPayloadLength || Datenpacketgröße ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
=== FS20 Funksteckdosen schalten ===&lt;br /&gt;
Da das RFM69 OOK modulieren kann, können damit die FS20 Funksteckdosen geschaltet werden. FS20 verwendet allerdings eine Art Pulsdauermodulation; eine 1 wird mit 600&amp;amp;nbsp;µs Träger an gefolgt von 600&amp;amp;nbsp;µs Träger aus, und eine 0 mit 400&amp;amp;nbsp;µs an gefolgt von 400&amp;amp;nbsp;µs aus übertragen. Man teilt einfach das Signal in 200&amp;amp;nbsp;µs Schlitze ein (OOK-Datenrate 5&amp;amp;nbsp;kbit/s), und sendet für eine 1 die Folge 111000 und für eine 0 die Folge 1100. Im FS20 Protokoll wird ein 13 Bit langer Header (0000000000001) übertragen, diesen kann man umrechnen und im RFM69 als Syncword einstellen. So wird der Header vom RFM69 bei jeder Übertragung automatisch vorweg ausgesendet.&lt;br /&gt;
&lt;br /&gt;
=== Conrad Energy Count 3000 ===&lt;br /&gt;
Unter http://forum.jeelabs.net/node/3412679.html?page=1 wurde schon das Protokoll der Conrad Energy Count 3000 (baugleich mit Technoline Cost Control RC) Funk-Energiekostenmessgeräte beschrieben. Mit dem RFM69 lässt sich ein Frame des Messgerätes mit dem konfigurierbarem Synchronwortfinder bequem empfangen.&lt;br /&gt;
&lt;br /&gt;
=== LaCrosse Temperatursensoren empfangen ===&lt;br /&gt;
=== Open Energy Monitor empfangen ===&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
* [http://shop.seegel-systeme.de/Bauelemente/Funkmodul-RFM69CW-REV-V1-0-868-MHz-SMD.html Seegel Systeme]&lt;br /&gt;
* Pollin: [http://www.pollin.de/shop/dt/Nzk2OTgxOTk-/Bausaetze_Module/Module/Funkmodul_HOPERF_RFM69CW_433_MHz_TX_RX.html 433 MHz] / [http://www.pollin.de/shop/dt/Njk2OTgxOTk-/Bausaetze_Module/Module/Funkmodul_HOPERF_RFM69CW_868_MHz_TX_RX.html 868 MHz]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.hoperf.com/upload/rf/RFM69CW-V1.1.pdf Datenblatt RFM69CW]&lt;br /&gt;
* [http://www.hoperf.com/upload/rf/RFM69W-V1.3.pdf Datenblatt RFM69W]&lt;br /&gt;
* [http://www.semtech.com/images/datasheet/sx1231.pdf Datenblatt Semtech SX1231]&lt;br /&gt;
* [http://www.semtech.com/images/datasheet/AN1200.18_STD.pdf Application Note zur Softwareimplementierung von Data-Whitening und CRC]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/332579 Thread im Forum: Wer verwendet RFM69]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RFM12]]&lt;br /&gt;
[[Kategorie:Funk]]&lt;/div&gt;</summary>
		<author><name>Stefan s40</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=RFM69&amp;diff=85104</id>
		<title>RFM69</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=RFM69&amp;diff=85104"/>
		<updated>2014-10-06T15:05:25Z</updated>

		<summary type="html">&lt;p&gt;Stefan s40: Syncmuster&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:rf69cw.png|thumb|300px|RFM69CW, Pinkompatibel zum RFM12]]&lt;br /&gt;
Das RFM69 von HopeRF ist ein universelles Funkmodul für die ISM-Frequenzbänder 315, 433, 868 und 915 MHz. Eine [[SPI]]-Schnitttstelle ermöglicht die einfache Integration in Mikrocontrollerprojekte.&lt;br /&gt;
&lt;br /&gt;
== Ausführungen ==&lt;br /&gt;
* RFM69HCW, mit zusätzlicher PA, 20 dBm&lt;br /&gt;
* RFM69HW, mit zusätzlicher PA, 20 dBm&lt;br /&gt;
* RFM69CW, Pinkompatibel zum RFM12B&lt;br /&gt;
* RFM69W&lt;br /&gt;
&lt;br /&gt;
Die CW-Variante hat 2 Pins weniger (es fehlt der Pin DIO4), und ist Pinkompatibel zum Vorgänger RFM12B.&lt;br /&gt;
Es kann ohne Änderung am Layout oder der Schaltung ausgetauscht werden. Lediglich die Software muss angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== Ausstattung ==&lt;br /&gt;
* Betriebsspannung 1,8 - 3,6 V&lt;br /&gt;
* SPI-Schnittstelle&lt;br /&gt;
* FSK- und OOK-Modulation (Frequency Shift Keying = Frequenzumtastung, On-Off-Keying = Amplitudentastung)&lt;br /&gt;
* Eingebauter Manchesterde- und -encoder&lt;br /&gt;
* Frequenzbereiche 315, 433, 868, 915 MHz&lt;br /&gt;
* Max. Datenrate 300 kbit/s&lt;br /&gt;
* Ausgangsleistung +13 dBm (rund 20 mW)&lt;br /&gt;
* Stromaufnahme 45 mA senden (13 dBm), 16 mA empfangen, 0,1 µA Standby&lt;br /&gt;
* Integrierte Packetengine für Synchronwort, CRC, Scrambling und AES-Verschlüsselung&lt;br /&gt;
* 66 Byte FIFO&lt;br /&gt;
* Modul basiert auf dem SX1231 von Semtech&lt;br /&gt;
&lt;br /&gt;
== Vergleich zum RFM12B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !! RFM12B !! RFM69(C)W&lt;br /&gt;
|-&lt;br /&gt;
| Versorgungsspannung || 2,2 - 3,8 V || 1,8 - 3,6 V&lt;br /&gt;
|-&lt;br /&gt;
| Max. Datenrate || 115,2 kbit/s || 300 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
| Sendeleistung || 5 dBm || 13 dBm&lt;br /&gt;
|-&lt;br /&gt;
| Empfindlichkeit || -105 dB || -120 dB&lt;br /&gt;
|-&lt;br /&gt;
| Stromaufnahme || 22 mA/11 mA/0,3 µA || 45 mA/16 mA/0,1 µA&lt;br /&gt;
|-&lt;br /&gt;
| FIFO Größe || 16 Bit || 66 Bytes&lt;br /&gt;
|-&lt;br /&gt;
| Syncmustererkennung || Fest 0x2DD4 oder 0xD4 || Frei bis zu 8 Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Das Funkmodul kommuniziert über die SPI Schnittstelle mit dem µC. Im einfachsten Fall werden SCK, MISO, MOSI und NSS benötigt. Am besten führt man auch noch DIO0 zum Prozessor. Dieser Pin kann softwareseitig so konfiguriert werden, dass er anzeigt, wenn ein Paket vollständig gesendet oder ein neues Paket empfangen wurde. Ist das Modul in Minimalkonfiguration angeschlossen, müssen dazu die Statusregister RegIrqFlags1 (0x27) oder RegIrqFlags2 (0x28) ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Die SPI-Ansteuerung erfolgt im Modus CPOL=0, CPHA=0, wobei jeweils 16 Bits vom µC zum Modul geschickt werden:&lt;br /&gt;
Das erste Bit teilt dem Modul mit, ob es sich um einen Lese- (Bitwert 0) oder Schreibvorgang (Bitwert 1) handelt, die restlichen sieben Bit des ersten Bytes geben die Registeradresse an. Mit den zweiten acht Bit wird im Schreibmodus der zu übertragende Befehl an das Modul übermittelt, im Lesemodus kann eine beliebige Bitfolge gesendet werden. Während das zweite Bit gesendet wird, empfängt der µC sowohl im Lese- als auch im Schreibmodus den Inhalt des angesprochenen Registers vor dem aktuellen Zugriff.&lt;br /&gt;
&lt;br /&gt;
Werden nach dem Adressbyte mehrere Bytes empfangen oder gelesen, wird der Adresszeiger im RFM69 automatisch inkrementiert, so dass in einem einzigen Burst mehrere Register gelesen werden können. Zu beachten ist dabei, dass in Registern die mehr als 8 Bit breit sind (Frequenz, Bitrate, ...), das höchstwertige Byte zu erst geschrieben/gelesen wird (big endian). Wird das FIFO Register gelesen/geschrieben, wird der Adresszeiger nicht inkrementiert, so dass auf das FIFO in einem Burst zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung RFM69(H)CW ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pinnummer !! Name !! Richtung !! Beschreibung !! Pin am RFM12&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ANA || || Antennenanschluss || ANT&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 3.3V || || Versorgungsspannung || VDD&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || || || GND&lt;br /&gt;
|-&lt;br /&gt;
| 4 || DIO3 || || FifoFull&amp;amp;nbsp;PllLock&amp;lt;br/&amp;gt;Rssi&amp;lt;br/&amp;gt;SyncAdress&amp;lt;br/&amp;gt;TXReady || nINT/VDI&lt;br /&gt;
|-&lt;br /&gt;
| 5 || MOSI || || SPI Daten Eingang || SDI&lt;br /&gt;
|-&lt;br /&gt;
| 6 || SCK || || SPI Takt || SCK&lt;br /&gt;
|-&lt;br /&gt;
| 7 || NSS || || Chip select || nSEL&lt;br /&gt;
|-&lt;br /&gt;
| 8 || MISO || || SPI Daten Ausgang || SDO&lt;br /&gt;
|-&lt;br /&gt;
| 9 || DIO0 || || PllLock (FS, TX)&amp;lt;br/&amp;gt;CrcOK (RX)&amp;lt;br/&amp;gt;PayloadReady (RX)&amp;lt;br/&amp;gt;SyncAddress (RX)&amp;lt;br/&amp;gt;Rssi (RX)&amp;lt;br/&amp;gt;PacketSent (TX)&amp;lt;br/&amp;gt;TxReady (TX) || nIRQ&lt;br /&gt;
|-&lt;br /&gt;
| 10 || DIO2 || || FifoNotEmpty (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;AutoMode(Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;Data (RX, TX) || FSK/DATA/nFFS&lt;br /&gt;
|-&lt;br /&gt;
| 11 || DIO1 || || FifoLevel (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;FifoFull (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;FifoNotEmpty (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;PllLock (FS, TX)&amp;lt;br/&amp;gt;Timeout (RX) || DCLK/CFIL/FFIT&lt;br /&gt;
|-&lt;br /&gt;
| 12 || DIO5 || || ModeReady&amp;lt;br/&amp;gt;ClkOut (Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;Data (RX, TX) || CLK&lt;br /&gt;
|-&lt;br /&gt;
| 13 || RESET || || || nRES&lt;br /&gt;
|-&lt;br /&gt;
| 14 || GND || || || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Adresse !! Registername !! Beschreibung !! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || RegFifo || Zugriff auf das FIFO Register&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || RegOpMode || Betriebsart (senden, empfangen, ...) || 0x04 = Empfangen&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || RegDataModule || Modulationsart &amp;amp;-shaping, Packetengine || 0x00 = FSK, Packetengine aktiv&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 - 0x04|| RegBitrate || = FXOSC/Bitrate || 0x1A0B = 6667 -&amp;gt; 4,8 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 - 0x06 || RegFdev || Frequenzabweichung (Hub * 2) || 0x52 = 82 -&amp;gt; 5 kHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 - 0x09 || RegFrf || Mittenfrequenz || 0xD91333 = 14226227 -&amp;gt; 868,300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x11|| RegPaLevel || Sendeleistung || 0x12 = 18 -&amp;gt; 0 dBm&lt;br /&gt;
|-&lt;br /&gt;
| 0x19|| RegRxBw || Filterbandbreite || 0b01001 -&amp;gt; 200 kHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x25|| RegDioMapping1 || DIO Funktionen ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x27|| RegIrqFlags1 || Statusflags (ModeReady, RxReady, TxReady, PllLock, RSSI, Timeout, AutoMode, SyncAddressMatch) || 0xD0 -&amp;gt; Empfänger bereit zum Datenempfang&lt;br /&gt;
|-&lt;br /&gt;
| 0x28|| RegIrqFlags2 || Statusflags (FifoFull, FifoNotEmpty, FifoLevel, FifoOverrun, PacketSent, PayloadReady, CrcOk, LowBat) || 0x06 -&amp;gt; Daten mit erfolgreichem CRC empfangen&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C - 0x2D|| RegPreamble || Preamblelänge ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E || RegSyncConfig || Synchronworteinstellungen ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F - 0x36 || RegSyncValue || Synchronwort || 0x2DD4&lt;br /&gt;
|-&lt;br /&gt;
| 0x37 || RegPacketConfig1 || Einstellungen Packetengine ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || RegPayloadLength || Datenpacketgröße ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
=== FS20 Funksteckdosen schalten ===&lt;br /&gt;
Da das RFM69 OOK modulieren kann, können damit die FS20 Funksteckdosen geschaltet werden. FS20 verwendet allerdings eine Art Pulsdauermodulation; eine 1 wird mit 600&amp;amp;nbsp;µs Träger an gefolgt von 600&amp;amp;nbsp;µs Träger aus, und eine 0 mit 400&amp;amp;nbsp;µs an gefolgt von 400&amp;amp;nbsp;µs aus übertragen. Man teilt einfach das Signal in 200&amp;amp;nbsp;µs Schlitze ein (OOK-Datenrate 5&amp;amp;nbsp;kbit/s), und sendet für eine 1 die Folge 111000 und für eine 0 die Folge 1100. Im FS20 Protokoll wird ein 13 Bit langer Header (0000000000001) übertragen, diesen kann man umrechnen und im RFM69 als Syncword einstellen. So wird der Header vom RFM69 bei jeder Übertragung automatisch vorweg ausgesendet.&lt;br /&gt;
&lt;br /&gt;
=== Conrad Energy Count 3000 ===&lt;br /&gt;
Unter http://forum.jeelabs.net/node/3412679.html?page=1 wurde schon das Protokoll der Conrad Energy Count 3000 (baugleich mit Technoline Cost Control RC) Funk-Energiekostenmessgeräte beschrieben. Mit dem RFM69 lässt sich ein Frame des Messgerätes mit dem konfigurierbarem Synchronwortfinder bequem empfangen.&lt;br /&gt;
&lt;br /&gt;
=== LaCrosse Temperatursensoren empfangen ===&lt;br /&gt;
=== Open Energy Monitor empfangen ===&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
* [http://shop.seegel-systeme.de/Bauelemente/Funkmodul-RFM69CW-REV-V1-0-868-MHz-SMD.html Seegel Systeme]&lt;br /&gt;
* Pollin: [http://www.pollin.de/shop/dt/Nzk2OTgxOTk-/Bausaetze_Module/Module/Funkmodul_HOPERF_RFM69CW_433_MHz_TX_RX.html 433 MHz] / [http://www.pollin.de/shop/dt/Njk2OTgxOTk-/Bausaetze_Module/Module/Funkmodul_HOPERF_RFM69CW_868_MHz_TX_RX.html 868 MHz]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.hoperf.com/upload/rf/RFM69CW-V1.1.pdf Datenblatt RFM69CW]&lt;br /&gt;
* [http://www.hoperf.com/upload/rf/RFM69W-V1.3.pdf Datenblatt RFM69W]&lt;br /&gt;
* [http://www.semtech.com/images/datasheet/sx1231.pdf Datenblatt Semtech SX1231]&lt;br /&gt;
* [http://www.semtech.com/images/datasheet/AN1200.18_STD.pdf Application Note zur Softwareimplementierung von Data-Whitening und CRC]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/332579 Thread im Forum: Wer verwendet RFM69]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RFM12]]&lt;br /&gt;
[[Kategorie:Funk]]&lt;/div&gt;</summary>
		<author><name>Stefan s40</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=RFM69&amp;diff=85088</id>
		<title>RFM69</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=RFM69&amp;diff=85088"/>
		<updated>2014-10-05T12:00:14Z</updated>

		<summary type="html">&lt;p&gt;Stefan s40: /* Projekte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:rf69cw.png|thumb|300px|RFM69CW, Pinkompatibel zum RFM12]]&lt;br /&gt;
Das RFM69 von HopeRF ist ein universelles Funkmodul für die ISM-Frequenzbänder 315, 433, 868 und 915 MHz. Eine [[SPI]]-Schnitttstelle ermöglicht die einfache Integration in Mikrocontrollerprojekte.&lt;br /&gt;
&lt;br /&gt;
== Ausführungen ==&lt;br /&gt;
* RFM69HCW, mit zusätzlicher PA, 20 dBm&lt;br /&gt;
* RFM69HW, mit zusätzlicher PA, 20 dBm&lt;br /&gt;
* RFM69CW, Pinkompatibel zum RFM12B&lt;br /&gt;
* RFM69W&lt;br /&gt;
&lt;br /&gt;
Die CW-Variante hat 2 Pins weniger (es fehlt der Pin DIO4), und ist Pinkompatibel zum Vorgänger RFM12B.&lt;br /&gt;
Es kann ohne Änderung am Layout oder der Schaltung ausgetauscht werden. Lediglich die Software muss angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== Ausstattung ==&lt;br /&gt;
* Betriebsspannung 1,8 - 3,6 V&lt;br /&gt;
* SPI-Schnittstelle&lt;br /&gt;
* FSK- und OOK-Modulation (Frequency Shift Keying = Frequenzumtastung, On-Off-Keying = Amplitudentastung)&lt;br /&gt;
* Eingebauter Manchesterde- und -encoder&lt;br /&gt;
* Frequenzbereiche 315, 433, 868, 915 MHz&lt;br /&gt;
* Max. Datenrate 300 kbit/s&lt;br /&gt;
* Ausgangsleistung +13 dBm (rund 20 mW)&lt;br /&gt;
* Stromaufnahme 45 mA senden (13 dBm), 16 mA empfangen, 0,1 µA Standby&lt;br /&gt;
* Integrierte Packetengine für Synchronwort, CRC, Scrambling und AES-Verschlüsselung&lt;br /&gt;
* 66 Byte FIFO&lt;br /&gt;
* Modul basiert auf dem SX1231 von Semtech&lt;br /&gt;
&lt;br /&gt;
== Vergleich zum RFM12B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !! RFM12B !! RFM69(C)W&lt;br /&gt;
|-&lt;br /&gt;
| Versorgungsspannung || 2,2 - 3,8 V || 1,8 - 3,6 V&lt;br /&gt;
|-&lt;br /&gt;
| Max. Datenrate || 115,2 kbit/s || 300 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
| Sendeleistung || 5 dBm || 13 dBm&lt;br /&gt;
|-&lt;br /&gt;
| Empfindlichkeit || -105 dB || -120 dB&lt;br /&gt;
|-&lt;br /&gt;
| Stromaufnahme || 22 mA/11 mA/0,3 µA || 45 mA/16 mA/0,1 µA&lt;br /&gt;
|-&lt;br /&gt;
| FIFO Größe || 16 Bit || 66 Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Das Funkmodul kommuniziert über die SPI Schnittstelle mit dem µC. Im einfachsten Fall werden SCK, MISO, MOSI und NSS benötigt. Am besten führt man auch noch DIO0 zum Prozessor. Dieser Pin kann softwareseitig so konfiguriert werden, dass er anzeigt, wenn ein Paket vollständig gesendet oder ein neues Paket empfangen wurde. Ist das Modul in Minimalkonfiguration angeschlossen, müssen dazu die Statusregister RegIrqFlags1 (0x27) oder RegIrqFlags2 (0x28) ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Die SPI-Ansteuerung erfolgt im Modus CPOL=0, CPHA=0, wobei jeweils 16 Bits vom µC zum Modul geschickt werden:&lt;br /&gt;
Das erste Bit teilt dem Modul mit, ob es sich um einen Lese- (Bitwert 0) oder Schreibvorgang (Bitwert 1) handelt, die restlichen sieben Bit des ersten Bytes geben die Registeradresse an. Mit den zweiten acht Bit wird im Schreibmodus der zu übertragende Befehl an das Modul übermittelt, im Lesemodus kann eine beliebige Bitfolge gesendet werden. Während das zweite Bit gesendet wird, empfängt der µC sowohl im Lese- als auch im Schreibmodus den Inhalt des angesprochenen Registers vor dem aktuellen Zugriff.&lt;br /&gt;
&lt;br /&gt;
Werden nach dem Adressbyte mehrere Bytes empfangen oder gelesen, wird der Adresszeiger im RFM69 automatisch inkrementiert, so dass in einem einzigen Burst mehrere Register gelesen werden können. Zu beachten ist dabei, dass in Registern die mehr als 8 Bit breit sind (Frequenz, Bitrate, ...), das höchstwertige Byte zu erst geschrieben/gelesen wird (big endian). Wird das FIFO Register gelesen/geschrieben, wird der Adresszeiger nicht inkrementiert, so dass auf das FIFO in einem Burst zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung RFM69(H)CW ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pinnummer !! Name !! Richtung !! Beschreibung !! Pin am RFM12&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ANA || || Antennenanschluss || ANT&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 3.3V || || Versorgungsspannung || VDD&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || || || GND&lt;br /&gt;
|-&lt;br /&gt;
| 4 || DIO3 || || FifoFull&amp;amp;nbsp;PllLock&amp;lt;br/&amp;gt;Rssi&amp;lt;br/&amp;gt;SyncAdress&amp;lt;br/&amp;gt;TXReady || nINT/VDI&lt;br /&gt;
|-&lt;br /&gt;
| 5 || MOSI || || SPI Daten Eingang || SDI&lt;br /&gt;
|-&lt;br /&gt;
| 6 || SCK || || SPI Takt || SCK&lt;br /&gt;
|-&lt;br /&gt;
| 7 || NSS || || Chip select || nSEL&lt;br /&gt;
|-&lt;br /&gt;
| 8 || MISO || || SPI Daten Ausgang || SDO&lt;br /&gt;
|-&lt;br /&gt;
| 9 || DIO0 || || PllLock (FS, TX)&amp;lt;br/&amp;gt;CrcOK (RX)&amp;lt;br/&amp;gt;PayloadReady (RX)&amp;lt;br/&amp;gt;SyncAddress (RX)&amp;lt;br/&amp;gt;Rssi (RX)&amp;lt;br/&amp;gt;PacketSent (TX)&amp;lt;br/&amp;gt;TxReady (TX) || nIRQ&lt;br /&gt;
|-&lt;br /&gt;
| 10 || DIO2 || || FifoNotEmpty (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;AutoMode(Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;Data (RX, TX) || FSK/DATA/nFFS&lt;br /&gt;
|-&lt;br /&gt;
| 11 || DIO1 || || FifoLevel (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;FifoFull (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;FifoNotEmpty (Sleep, Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;PllLock (FS, TX)&amp;lt;br/&amp;gt;Timeout (RX) || DCLK/CFIL/FFIT&lt;br /&gt;
|-&lt;br /&gt;
| 12 || DIO5 || || ModeReady&amp;lt;br/&amp;gt;ClkOut (Stdby, FS, RX, TX)&amp;lt;br/&amp;gt;Data (RX, TX) || CLK&lt;br /&gt;
|-&lt;br /&gt;
| 13 || RESET || || || nRES&lt;br /&gt;
|-&lt;br /&gt;
| 14 || GND || || || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Adresse !! Registername !! Beschreibung !! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || RegFifo || Zugriff auf das FIFO Register&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || RegOpMode || Betriebsart (senden, empfangen, ...) || 0x04 = Empfangen&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || RegDataModule || Modulationsart &amp;amp;-shaping, Packetengine || 0x00 = FSK, Packetengine aktiv&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 - 0x04|| RegBitrate || = FXOSC/Bitrate || 0x1A0B = 6667 -&amp;gt; 4,8 kbit/s&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 - 0x06 || RegFdev || Frequenzabweichung (Hub * 2) || 0x52 = 82 -&amp;gt; 5 kHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 - 0x09 || RegFrf || Mittenfrequenz || 0xD91333 = 14226227 -&amp;gt; 868,300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x11|| RegPaLevel || Sendeleistung || 0x12 = 18 -&amp;gt; 0 dBm&lt;br /&gt;
|-&lt;br /&gt;
| 0x19|| RegRxBw || Filterbandbreite || 0b01001 -&amp;gt; 200 kHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x25|| RegDioMapping1 || DIO Funktionen ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x27|| RegIrqFlags1 || Statusflags (ModeReady, RxReady, TxReady, PllLock, RSSI, Timeout, AutoMode, SyncAddressMatch) || 0xD0 -&amp;gt; Empfänger bereit zum Datenempfang&lt;br /&gt;
|-&lt;br /&gt;
| 0x28|| RegIrqFlags2 || Statusflags (FifoFull, FifoNotEmpty, FifoLevel, FifoOverrun, PacketSent, PayloadReady, CrcOk, LowBat) || 0x06 -&amp;gt; Daten mit erfolgreichem CRC empfangen&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C - 0x2D|| RegPreamble || Preamblelänge ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E || RegSyncConfig || Synchronworteinstellungen ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F - 0x36 || RegSyncValue || Synchronwort || 0x2DD4&lt;br /&gt;
|-&lt;br /&gt;
| 0x37 || RegPacketConfig1 || Einstellungen Packetengine ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || RegPayloadLength || Datenpacketgröße ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
=== FS20 Funksteckdosen schalten ===&lt;br /&gt;
Da das RFM69 OOK modulieren kann, können damit die FS20 Funksteckdosen geschaltet werden. FS20 verwendet allerdings eine Art Pulsdauermodulation; eine 1 wird mit 600&amp;amp;nbsp;µs Träger an gefolgt von 600&amp;amp;nbsp;µs Träger aus, und eine 0 mit 400&amp;amp;nbsp;µs an gefolgt von 400&amp;amp;nbsp;µs aus übertragen. Man teilt einfach das Signal in 200&amp;amp;nbsp;µs Schlitze ein (OOK-Datenrate 5&amp;amp;nbsp;kbit/s), und sendet für eine 1 die Folge 111000 und für eine 0 die Folge 1100. Im FS20 Protokoll wird ein 13 Bit langer Header (0000000000001) übertragen, diesen kann man umrechnen und im RFM69 als Syncword einstellen. So wird der Header vom RFM69 bei jeder Übertragung automatisch vorweg ausgesendet.&lt;br /&gt;
&lt;br /&gt;
=== Conrad Energy Count 3000 ===&lt;br /&gt;
Unter http://forum.jeelabs.net/node/3412679.html?page=1 wurde schon das Protokoll der Conrad Energy Count 3000 (baugleich mit Technoline Cost Control RC) Funk-Energiekostenmessgeräte beschrieben. Mit dem RFM69 lässt sich ein Frame des Messgerätes mit dem konfigurierbarem Synchronwortfinder bequem empfangen.&lt;br /&gt;
&lt;br /&gt;
=== LaCrosse Temperatursensoren empfangen ===&lt;br /&gt;
=== Open Energy Monitor empfangen ===&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
* [http://shop.seegel-systeme.de/Bauelemente/Funkmodul-RFM69CW-REV-V1-0-868-MHz-SMD.html Seegel Systeme]&lt;br /&gt;
* Pollin: [http://www.pollin.de/shop/dt/Nzk2OTgxOTk-/Bausaetze_Module/Module/Funkmodul_HOPERF_RFM69CW_433_MHz_TX_RX.html 433 MHz] / [http://www.pollin.de/shop/dt/Njk2OTgxOTk-/Bausaetze_Module/Module/Funkmodul_HOPERF_RFM69CW_868_MHz_TX_RX.html 868 MHz]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.hoperf.com/upload/rf/RFM69CW-V1.1.pdf Datenblatt RFM69CW]&lt;br /&gt;
* [http://www.hoperf.com/upload/rf/RFM69W-V1.3.pdf Datenblatt RFM69W]&lt;br /&gt;
* [http://www.semtech.com/images/datasheet/sx1231.pdf Datenblatt Semtech SX1231]&lt;br /&gt;
* [http://www.semtech.com/images/datasheet/AN1200.18_STD.pdf Application Note zur Softwareimplementierung von Data-Whitening und CRC]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/332579 Thread im Forum: Wer verwendet RFM69]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:RFM12]]&lt;br /&gt;
[[Kategorie:Funk]]&lt;/div&gt;</summary>
		<author><name>Stefan s40</name></author>
	</entry>
</feed>