www.mikrocontroller.net

AVR RFM12

Schaltungen und Software für AVR und das Funkmodul RFM12.

Inhaltsverzeichnis

[bearbeiten] SVN

svn://mikrocontroller.net/rfm12

Wegen Zugangsdaten bitte bei Andreas Schwarz melden.

[bearbeiten] Software

[bearbeiten] Treiber

Firmware v1.0.0 von Benedikt K.

Firmware v2.0.1 von Jürgen Eckert

Einen Applikationsbericht zur Anschlussbelegung gibt es hier (<-- Link funktioniert nicht 13.02.08)

Benötigt werden in der Minimal-Version im FIFO-Modus nur die Anschlüsse nSEL, SDO, SDI und SCK, eben das komplette SPI-Interface. Der Zugriff auf das Sende- und Empfangs-FIFO ist per Software möglich, ebenso die Abfrage der Statusbits. Deshalb werden z.B. nIRQ und nFFS nicht unbedingt benötigt. nIRQ signalisiert unter anderem, dass das Modul bereit ist Daten zu empfangen. Wenn Daten empfangen wurden, kann dies über den FFIT-Pin abgefragt werden (falls die Füllschwelle eingestellt wurde). nFFS dient dazu das FIFO direkt anzusprechen (es ist quasi der Chipselect für das FIFO), davon wird in der Minimalversion aber kein Gebrauch gemacht. Der Pin muss daher auf high-Pegel gelegt werden! An CLK kann eine Frequenz von 1MHz bis 10MHz eingestellt werden. Hiermit kann dann z.B. der Mikrocontroller versorgt werden. Reset ist ein Open-Collector-Ausgang und gleichzeitig der Reset-Eingang. Er sollte daher entweder gar nicht, oder aber hochohmig angeschlossen werden.

Im FIFO-Mode kann das Modul konfiguriert werden mit dem Empfang zu warten, bis die Daten 0x2DD4 empfangen wurden. Sobald dieses Bitmuster empfangen wurde, werden Daten in das FIFO geschrieben, bis man das FIFO abschaltet und die Mustererkennung neu startet.

Als weitere Modi stehen unter anderem ein synchroner Modus zur Verfügung (no FIFO mode), in dem der Sender/Empfänger den Bittakt ausgibt, und synchron dazu die zu sendenden Daten einliest bzw. die empfangenen Daten ausgibt. Der SPI Bus ist trotzdem zur Initialisierung des Moduls notwendig.

[bearbeiten] Funktionalität

1. Stufe: Die Daten von der seriellen Schnittstelle werden über die Funkstrecke auf die serielle Schnittstelle der anderen Seite übertragen. (Wir freuen uns über jedes Byte das ankommt) Software: Hier oder hier

2. Stufe: Es findet eine Fehlererkennung (z.B. mit CRC-Summen) statt. Fehlerhafte Daten werden erneut angefordert. Dadurch gehen auf der Funkstrecke keine Daten verloren und es werden keine Daten verfälscht. Software: Hier

3. Stufe: Die Datenübertragung wird individualisiert. Dadurch können zwei Funkstrecken, die im gleichen Empfangsbereich liegen nebeneinander arbeiten, ohne sich zu beeinträchtigen.

4. Stufe: Die Datenübertragung wird verschlüsselt und damit abhörsicher.

5. Stufe: Neben den Daten der seriellen Schnittstelle werden auch Änderungen der Statusleitungen übertragen. Damit erhält man eine "RS232-Verlängerung" über eine Funkstrecke, die fehlerfrei arbeitet und zu einer Drahtverbindung weitestgehend kompatibel ist.

[bearbeiten] RS232 <-> RFM12

[bearbeiten] USB <-> RFM12

Mit avrusb lässt sich ein USB-Slave in Software emulieren.

  • AVR-CDC läuft mit Anpassung der USB-Pins. (Zumindest unter Windows an einem USB2.0-Port)

[bearbeiten] Hardware

[bearbeiten] Basismodul V1.0

[bearbeiten] Prozessor

ATmega8 TQFP32 (kompatibel ATmega48, ATmega88, ATmega168)

[bearbeiten] Schnittstellen

  • RS232
  • I²C:
  • USB
  • GPIO

[bearbeiten] Platine

ATmega48 + USB
ATmega48 + USB
2-lagig top
2-lagig top
2-lagig bottom
2-lagig bottom

Bauteile:

Größe: SMD 0603

  • R1, R2: 68R (nur USB)
  • R3, R4: 10k
  • R5: 1k5 (nur USB)
  • C1, C2: 22pF
  • C3 - C9: 100nF
  • Q1: 12Mhz (nur USB)
  • D1, D2: beliebig, Minimelf
  • IC3: MAX3221CUE

[bearbeiten] Bugs / Erweiterungen

  • Der 1,5k Widerstand muss direkt an den VCC-Pin angelötet werden (Pad ist nicht verbunden)
  • Beim Fertigen wurde das Polygon, welches das VCC-Signal durch die eine Ecke des ATmega48 leitet, unterbrochen. Hier hilft nur eine Drahtbrücke.
  • Unter den RFM12 und unter das Quarz am Besten Isolierband kleben!
  • Beim Programmieren sollte der SEL des RFM12 (J1 der zweite Pin vom RS232 aus) auf VCC gelegt werden

[bearbeiten] Fertigung

Ich werde die Platinen wohl hier fertigen lassen: http://mme-pcb.de/

Kosten (werde wegen den MAX3221 doch bei Farnell bestellen müssen):

  • MiniUSB SMD: 1,25€
  • HF-Buchse MMCX: 4,25€
  • ATmega48: 2,85€
  • MAX3221CUE: 1,10€
  • Quarz 12Mhz 30ppm: 1,19€
  • Kleinkram: < 1,10€
  • habe ein verbindliches Angebot für 24 Stück: 4,00€ pro Platine

Board

[bearbeiten] Links

Folgende Links sind mit Vorsicht zu genießen, da die Datenblätter teilweise fehlerbehaftet sind. Es empfiehlt sich, direkt mit dem Datenblatt des RF12 (das ist das IC auf dem Modul) zu arbeiten. Dieses ist so gut wie fehlerfrei.

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net