Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 7554|Atbildi: 0

Zigbee ceļojums (5): Vairāki svarīgi CC2430 pamata eksperimenti - sērijveida komunikācija

[Kopēt saiti]
Publicēts 30.10.2014 23:18:18 | | | |
1. Augšējā un apakšējā līmeņa savienošana

Bezvadu sensoru tīklā CC2430 ir jānosūta savāktie dati uz resursdatoru (t.i., datoru) apstrādei, un resursdatoram ir jānosūta vadības informācija uz CC2430. Tas viss ir neatdalāms no informācijas pārraides starp abiem. Šajā sadaļā mēs uzzināsim, kā īstenot seriālā porta sakarus starp datoru un CC2430.

CC2430 ietver 2 seriālās sakaru saskarnesUSART0unUSART1, katrā seriālajā portā ir divi režīmi:UARTS(asinhrons) režīms,SPI(sinhronā) režīmā, šajā sadaļā ir aplūkots tikai UART režīms).

2. Seriālā porta sakaru eksperiments(1) Ievads eksperimentā

Realizējiet saziņu starp izstrādes paneli un datoru: Dators nosūta noteiktu virkni uz CC2430, un CC2430 pēc tās saņemšanas atgriež šo virkni datorā.

(2) Eksperimentālā sagatavošana

Pirms sākat rakstīt kodu, jums ir jāiestata aparatūras iekārtas: pareizs savienojums + instalējiet USB seriālo draiveri.

Nepieciešami divi aparatūras savienojumi:

    CC2430 izstrādes plates JTAG ports → atkļūdotājs → datora USB ports(Programmu atkļūdošanai un lejupielādei)

    CC2430 izstrādes plates seriālais ports → datora USB ports(Datu saziņai starp datoru un CC2430)

Tad jums ir jāinstalē USB uz seriālo draiveri (Lejupielādes adrese

Lai nosūtītu datus uz seriālo portu, seriālā porta atkļūdošanas rīks (Lejupielādes adrese)。

(3) Programmas plūsmas diagramma

(4) Eksperimentālais pirmkods un analīze/*
  Eksperimentālais apraksts: UART0, datu pārraides ātrums 115200bps, dators nosūta virkni uz CC2430 (beidzas ar @ rakstzīmi), CC2430 atgriež virkni pēc tās saņemšanas
*/

#include

bez paraksta oglesrecv_buf[300] = {0};
bez paraksta oglesrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
Tukšumsxtal_init (Tukšums)
{
  MIEGS &= ~0x04;            //都上电
  kamēr(! (MIEGS &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Izvēlieties 32MHz kristāla oscilatoru
  MIEGS |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
TukšumsUart0Init(bez paraksta oglesStopBits,bez paraksta oglesParitāte)
{
   PERCFG&= ~0x01;                  Izvēlieties UART0 kā pirmo izvēles pozīciju, tas ir, RXD uz P0.2 un TXD uz P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Iestatiet UART režīmu un iespējojiet uztvērēju
   
   U0GCR = 11;
   U0BAUD = 216;                     Iestatiet UART0 pārraides ātrumu uz 115200 bps, kāpēc tas ir 216 un 11, lūdzu, skatiet CC2430 ķīniešu rokasgrāmatu
   
   U0UCR |= StopBits| Paritāte;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
Tukšums  Uart0Sūtīt(bez paraksta oglesdati)
{
  kamēr(U0CSR &0x01);   //等待UART空闲时发送数据
  U0DBUF = dati;
}

/*UART0发送字符串
-------------------------------------------------------*/
TukšumsUart0SendString(bez paraksta ogles*s)
{
  kamēr(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Sūtīt(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
bez paraksta oglesUart0Saņemt(Tukšums)
{
  bez paraksta oglesdati;
  kamēr(! (U0CSR &0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  Atgriešanāsdati;         
}

/*主函数
-------------------------------------------------------*/
Tukšumsgalvenais(Tukšums)
{
  bez paraksta oglesi, b;
  
  xtal_init ();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Lūdzu, ievades virkne beidzās ar "@"!");

  recv_count =0;
  
  kamēr(1)
  {
    kamēr(1)                           
    {
      b = Uart0Saņemt(); UARTS
      ja(b =='@')pārtraukums;                 Ja tiek saņemts '@', tas izlec no cilpas un izvada virkni

      recv_buf[recv_count] = b;        Ja tas nav '@', turpiniet pievienot rakstzīmes rakstzīmju masīvam recv_buf[]
      recv_count++;
    }
    par(i =0; i<recv_count; i++)="" [krāsa="rgb(0," 136,="" 0)]="" izvades virkne[="" i][="" krāsa]
      Uart0Sūtīt(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Vispirms konfigurējiet I/O portu, kas atbilst USART0: nododiet pāriPECFRG.0Iestatiet UART0 uz izvēles pozīciju 1, t.i., P0.2 RXD un P0.3 TXD. Pēc tam konfigurējiet P0.2 un P0.3 kā ārējās ierīces I/O.

Pēc tam atlasiet UART režīmu un iespējojiet uztvērēju. Pēc tam konfigurējiet USART0 parametrus: baudu ātrums 115200, bez paritātes un apturēšanas bits 1.

Pēc tam nosūtiet virkni uz datoru: Lūdzu, ievadiet virkni beidzās ar'@'! un pēc tam izmantojiet while(1), lai turpinātu mēģināt saņemt katru rakstzīmi. Kad šis varonis to nedara'@', tas nozīmē, ka ievade nav pabeigta, un turpiniet pievienot šo rakstzīmi rakstzīmju masīvam recv_buf; Šis varonis ir tieši pareizs'@', ievade ir pabeigta, tāpēc cilpa tiek nosūtīta uz datoru, lai katra recv_buf rakstzīme tiktu nosūtīta uz datoru, vienlaikus atiestatot recv_count.

(5) Eksperimentu rezultāti

Vispirms pabeidziet aparatūras savienojumu, atveriet seriālā porta atkļūdošanas rīku un konfigurējiet parametrus, kā parādīts tālāk:

Noklikšķiniet uz "Atvērt seriālo portu", pēc tam sāciet IAR atkļūdošanu, ļaujiet programmai darboties, un jūs atradīsit paredzamo virkni, kas parādās seriālā porta atkļūdošanas rīka saņemšanas lodziņā:

Pēc tam ievadiet "Sveiki" sūtīšanas tekstlodziņā zem seriālā porta atkļūdošanas rīka, kā parādīts tālāk:

Noklikšķinot uz "Sūtīt", jūs varat brīnīties, kāpēc CC2430 neatgriež to, ko ierakstījāt, jo jūs nebeidzāt @.

Mēs vēlreiz ierakstām "Zigbee!@", noklikšķiniet uz "Sūtīt", un rezultāts izskatās šādi:

Parādīsies paredzamais saturs "Sveiki Zigbee!". Tas ir beidzies! Tas ir eksperimenta beigas~

3. Secinājums

Šajā rakstā aprakstīta saziņa starp CC2430 izstrādes plati un resursdatoru. Tagad, kad mums ir sērijveida sakaru pamati, nākamajā sadaļā uzzināsim par ADC (analogo-ciparu konvertēšanu) vienu paraugu ņemšanu. Izmantojot ADC, mēs varam savākt temperatūras sensora vērtību izstrādes panelī un nosūtīt temperatūras vērtību uz datoru caur seriālo portu, lai to parādītu.






Iepriekšējo:Zigbee ceļojums (4): Vairāki svarīgi CC2430 pamata eksperimenti - taimera pārtraukums
Nākamo:Zigbee ceļojums (6): Vairāki svarīgi CC2430 pamata eksperimenti - ADC viena paraugu ņemšana
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com