Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2015:p2p-rfm12b

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2015:p2p-rfm12b [2016/01/17 23:43]
Petr Prachař
2015:p2p-rfm12b [2016/01/17 23:56] (aktuální)
Petr Prachař
Řádek 6: Řádek 6:
 ===== Hardware ===== ===== Hardware =====
 ==== RFM12B ==== ==== RFM12B ====
-Jedná se o univerzální poloduplexní transceiver pracující v ISM pásmu. Nosný kmitočet lze nastavit do pásem 433 MHz, 868 MHz a 915 MHz. Komunikační rychlost by dle katalogového listu měla dosahovat rychlosti až 115,2 kb/s při použití digitálního filtru a až 256 kb/s při použití analogového filtru. Modul ke komunikaci využívá FSK modulaci, přičemž kmitočtový zdvih lze nastavovat v rozmezí 15 kHz – 240 KHz. Maximální výstupní výkon při použití antény se vstupní impedancí 50 Ω je 5 dBm a lze jej snižovat s krokem 2,5 dB až na hodnotu -12,5 dBm. Modul je vybaven SPI rozhraním, který slouží k jeho řízení a k přenosu dat z/do připojeného kontroléru.+Jedná se o univerzální poloduplexní transceiver pracující v ISM pásmu. Nosný kmitočet lze nastavit do pásem 433 MHz, 868 MHz a 915 MHz. Komunikační rychlost by dle katalogového listu měla dosahovat rychlosti až 115,2 kb/s při použití digitálního filtru a až 256 kb/s při použití analogového filtru. Modul ke komunikaci využívá FSK modulaci, přičemž kmitočtový zdvih lze nastavovat v rozmezí 15 kHz – 240 KHz. Maximální výstupní výkon při použití antény se vstupní impedancí 50 Ω je 5 dBm a lze jej snižovat s krokem 2,5 dB až na hodnotu -12,5 dBm. Modul je vybaven SPI rozhraním, který slouží k jeho řízení a k přenosu dat z/do připojeného kontroléru.{{ :​2015:​rfm12b_868s2.jpg?​nolink&​300 |}}
  
 ==== FRDM KL25Z ==== ==== FRDM KL25Z ====
 K řízení modulů a ke komunikaci s počítačem byl využit vývojový kit FDRM KL25Z, na kterém je osazen 32-bitový mikrokontrolér Kinetis MKL25Z128 od firmy Freescale Semiconductor (respektive NXP). Maximální takt tohoto mikrokontroléru je 48 MHz. Pro programování procesoru je na desce integrováno rozhraní OpenSDA, které zároveň realizuje virtuální COM port, který je v projektu využit k řízení komunikace. K řízení modulů a ke komunikaci s počítačem byl využit vývojový kit FDRM KL25Z, na kterém je osazen 32-bitový mikrokontrolér Kinetis MKL25Z128 od firmy Freescale Semiconductor (respektive NXP). Maximální takt tohoto mikrokontroléru je 48 MHz. Pro programování procesoru je na desce integrováno rozhraní OpenSDA, které zároveň realizuje virtuální COM port, který je v projektu využit k řízení komunikace.
- +{{ :​2015:​frdm.png?​nolink&​300 |}}
  
 ===== Řešení ===== ===== Řešení =====
Řádek 26: Řádek 25:
 nIRQ........PTD5 (interupt request)\\ nIRQ........PTD5 (interupt request)\\
 Toto zapojení bylo zvoleno kvůli původnímu záměru využít hardwarové SPI rozhraní, přestože nakonec bylo SPI implementováno softwarově,​ zapojení bylo ponecháno.\\ Toto zapojení bylo zvoleno kvůli původnímu záměru využít hardwarové SPI rozhraní, přestože nakonec bylo SPI implementováno softwarově,​ zapojení bylo ponecháno.\\
-Jako anténa sloužil při testování obyčejný drát délky přibližně 8,6 cm což zhruba odpovídá ​lamda/4 pro kmitočet 868 MHz.+Jako anténa sloužil při testování obyčejný drát délky přibližně 8,6 cm což zhruba odpovídá ​λ/4 pro kmitočet 868 MHz.\\ 
 +Moduly mají ještě několik dalších komunikačních pinů, ty však v tomto projektu nebyly využity
 ==== Vývojové prostředí. ==== ==== Vývojové prostředí. ====
 Původním záměrem bylo řešit projekt pomocí online vývojového prostředí mbed.org, protože jsou zde k dispozici knihovny pro použitý modul. Bohužel ani s jednou ze dvou testovaných knihoven se mi nepodařilo zprovoznit ani základní komunikaci. Důvod nefunkčnosti zřejmě nebyl v knihovnách,​ protože obě byly relativně dost používané,​ ale někde v mém kódu, chybu se však nepodařilo najít. Proto jsem přistoupil k použití vývojového prostředí Kinetis Design Studio s rozšířením Procesor Expert. Původním záměrem bylo řešit projekt pomocí online vývojového prostředí mbed.org, protože jsou zde k dispozici knihovny pro použitý modul. Bohužel ani s jednou ze dvou testovaných knihoven se mi nepodařilo zprovoznit ani základní komunikaci. Důvod nefunkčnosti zřejmě nebyl v knihovnách,​ protože obě byly relativně dost používané,​ ale někde v mém kódu, chybu se však nepodařilo najít. Proto jsem přistoupil k použití vývojového prostředí Kinetis Design Studio s rozšířením Procesor Expert.
Řádek 439: Řádek 439:
  return;  return;
 </​code>​ </​code>​
 +
  
 Poslední zmíněná funkce byla navržena na poslední chvíli a nebyla otestována na hardwaru, je však jednoduchá a neměl by s ní být problém. Poslední zmíněná funkce byla navržena na poslední chvíli a nebyla otestována na hardwaru, je však jednoduchá a neměl by s ní být problém.
 +
 +Ovládání je řešeno pomocí dedikovaných kláves:
 +<code c>
 +void UART_OnRxChar(void)
 +{
 +  /* Write your code here ... */
 + char c;
 +
 + uint8_t i;
 + UART_RecvChar(&​c);​
 + UART_SendChar(c);​
 +
 +
 + //unsigned char TXdata[16]={"​ABCDEFGHIJKLMNO\0"​};​
 +   ​switch(c)
 +   {
 + case('​n'​):​
 + sendTEST(1);​
 + break;
 + case('​m'​):​
 + menu();
 +     break;
 + case('​r'​):​
 + flags=resend;​
 + break;
 + case('​a'​):​
 + RTTmeasure();​
 + break;
 + case('​d'​):​
 + dataRATEmenu();​
 + flags=DRset;​
 + break;
 + case('​p'​):​
 + powerMenu();​
 + flags=Pset;​
 + break;
 +/​* case('​f'​):​
 + deviationMenu;​
 + flags=DEVset;​
 + break;
 +*/​ case('​t'​):​
 + sendTEST(0);​
 +     break;
 + case('​c'​):​
 + flags=0;
 + menu();
 + break;
 +   }
 +
 +   ​if(c>'​0'​ && c<'​9'​ &&​(flags==DRset)) ​                           setDataRate(c,&​flags);​ menu();
 +   ​if(c>'​0'​ && c<'​9'​ &&​(flags==Pset)) ​                            ​setDataRate(c,&​flags);​ menu();
 +  // if(((c>​='​0'​ && c<​='​9'​)||(c>​='​A'​ && c<​='​F'​)) &&​(flags==DEVset)) setDeviation(c,&​flags);​menu();​
 +}
 +</​code>​
 +
  
 ==== Video ==== ==== Video ====
2015/p2p-rfm12b.1453070587.txt.gz · Poslední úprava: 2016/01/17 23:43 autor: Petr Prachař