Má někdo nějaké zkušenosti s vysílačem RFM02 a přijímačem RFM01. Dělal s nimi někdo někdy nějakou aplikaci s použitím uP. K těmto obvodům existují sice datashety výrobce, ale ty jsou velice strohé, obsahují i několik chyb a některé věci vůbec nepopisují.(např. počet a význam bitů Status Read Registru, ale i další.) Děkuju za případné odpovědi.
Výrobky firmy HOPERF se stále prodávají a jak je vidět na internetu v mnohých aplikacích, kde se využívají musí být nepochybně funkční. Z datasheetů jsem “rozchodil” různé jiné obvody, ale tento modul neustále vzdoruje. Použil jsem věškeré informace z dostupných datasheetů na internetu a stále mi obvod (zatím vysílač RFM02) nepracuje tak jak má. Sice nějaká data do éteru vysílá ale nejsou to ona data která mám ve vysílacím bafru a nejsou ve správném množství.
Taktéž nastavení přenosové rychlosti (Data rate se chová divně, zadaná hodnota v registru neodpovídá skutečnosti. Stále asi něco dělám špatně. V režimu kdy posílám data přes pin FSK a po příchodu nIRQ synchronizuju data z bafru příkazem C220 hex. Na osciliskopu je ale patrné že časový průběh signálu nIRQ je poněkud podivný.Nechová se tak jak by měl. Přitom modulů mám několik a všechny se chovají naprosto stejně, tak že vada modulu nepřipadá v úvahu.
Vidím nedostatek v posloupnosti příkazů, asi jsem stále něco nepochopil (ač jsem vyzkoušel mnohé kombinace).
Úrovně, časový diagram a průběhy na sériové sběrnici SPI mám správně. Vyšlu-li po ní různé jiné příkazy, vykonávají se bezchybně a vše funguje tak jak má. (Např. nastavení dělícího poměru děličky modulu, vypnutí hodin CLK pro mikroprocesor, reset (FF00 hex.), programové smyčky Open TX a Close TX to je vše absolutně v pořádku a funkční. Dá se říci že všechno se chová normálně, ale to nejhlavnější nefunguje.
V příkladech programů je i něraký příkaz Rate/2 (D040 hex.) Který zdá se nic nedělá. (Asi půlí přenosovou rychlost Data Rate?). Přitom tento příkaz není nikde v dokumentaci vysvětlen, vyskytuje se pouze v příkladu programu v C# v datasheetu výrobce.
Taktéž reset modulu (FF00 hex.) se v datasheetu nikde nezmiňuje ač existuje. Věřím že takovýchto “tajných” - nezdokumentovaných příkazů má modul víc. Adresního prostoru pro ně se nabízí spousta.
Rozchození, vlastně nerozchození modulu jsem věnoval spousty času a věřím, že už jsem docela blízko cíle. Uvítám všechny podněty, protože se mi zdá, že už jsem “vystřílel všechny náboje”. Věřím tomu, že dělám nějakou hloupost, nebo že něco klíčového doteď nevím.
Jak už jsem napsal výše, dokumentace k modulu je velice stručná a jsou v ní chyby.
Poradí někdo? Děkuju všem za projevenou snahu a poskytnu patřičné informace. V případě zájmu poskytnu jiné informace i já.
Ty jsi s tím za rok nepohnul
Co třeba zkusit jinej RF modul ? HOPE už je stejně nepodporuje.
V příloze je nějakej kód odněkud z netu, třeba Ti pomůže.
RFM02.c (6.79 KB)
Loni v létě jsem to musel přerušit a dostal jsem se k tomu zas až teď. Tenkrát mi to vysílalo jenom nosnou, bez modulace a letos jsem se dopracoval k tomu, že mi to vysílá už i data - leč blbě, přes pin FSK s použitím přerušení a pin nIRQ. Přerušením, které mi posílá vždycky 1 synchronizovaný bit z bafru. Teda mělo by.
Vysílá to blok dat stále 10101010 10101010 ač by to mělo vysílat docela jiná data. Kde se to 10101010 10101010 bere je zatím záhada!
Mám teď taky daleko lepší spektrální analyzátor s několika druhy provozů, kde vidím křivku, přesnou frekvenci, sílu signálu v dB atd.
Z toho diagramu v datasheetu pod popisem registru - 6. Low Battery and TX bit synchronization Command (číslování stránek datasheetu 1,6Mb chybí), vycházím z toho, že se musí synchronizovat každý odesílaný bit od signálu nIRQ…
Děkuju za přiložený program. C#čkem sice moc nevládnu (dělám to v Assembleru) ale snad mi to cosi napoví. Vím že transceiver RFM12 je hodně podobný, (taky ho mám). A jsou mraky jiných - vím. Vy jste s RFM02 něco dělal?
C není C#. C# je produkt Microsoftu který vychází z C++ a JAVA a je objektové orientovaný.
Ne, nedělal. Budeš si muset poradit sám.