Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 7554|Odpowiedź: 0

Podróż Zigbee (5): Kilka ważnych podstawowych eksperymentów CC2430 – komunikacja szeregowa

[Skopiuj link]
Opublikowano 30.10.2014 23:18:18 | | | |
1. Połączenie górnego i dolnego poziomu

W sieci bezprzewodowej CC2430 musi przesłać zebrane dane do komputera hosta (czyli PC) w celu ich przetwarzania, a komputer gospodarza musi przesłać informacje sterujące do CC2430. To wszystko jest nierozerwalne z przekazywaniem informacji między nimi. W tej sekcji nauczymy się, jak zaimplementować komunikację portową szeregową między komputerem PC a CC2430.

CC2430 wyposażony jest w 2 interfejsy komunikacji szeregowejUSART0iUSART1, każdy port szeregowy zawiera dwa tryby:UART(tryb asynchroniczny),SPI(tryb synchroniczny), ta sekcja dotyczy tylko trybu UART).

2. Eksperyment komunikacji szeregowej z portem szeregowym(1) Wprowadzenie do eksperymentu

Zrozum komunikację między płytą deweloperską a komputerem: PC wysyła określony ciąg do CC2430, a CC2430 zwraca ten ciąg do komputera po jego otrzymaniu.

(2) Przygotowanie eksperymentalne

Zanim zaczniesz pisać kod, musisz skonfigurować sprzęt: poprawne połączenie + zainstalować sterownik szeregowy USB.

Wymagane są dwa połączenia sprzętowe:

    Port JTAG na płycie CC2430 → debugger → portu USB komputera(Do debugowania i pobierania programów)

    Port szeregowy płyty deweloperskiej CC2430 → port USB komputera(Do komunikacji danych między PC a CC2430)

Następnie musisz zainstalować sterownik USB na szeregowy (Adres do pobrania

Aby przesłać dane na port szeregowy, stosuje się narzędzie do debugowania portów szeregowych (Adres do pobrania)。

(3) Schemat przepływu programu

(4) Kod źródłowy eksperymentalny i analiza/*
  Opis eksperymentalny: UART0, przerzut 115200bps, PC wysyła ciąg do CC2430 (kończący się na znak @), CC2430 zwraca ciąg po jego otrzymaniu
*/

#include

Niepodpisany charrecv_buf[300] = {0};
Niepodpisany charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
pustkaxtal_init(pustka)
{
  SEN &= ~0x04;            //都上电
  podczas gdy(! (SEN &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Wybierz oscylator kryształowy 32MHz
  SEN |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
pustkaUart0Init(Niepodpisany charStopBits,Niepodpisany charParytet)
{
   PERCFG&= ~0x01;                  Wybierz UART0 jako pierwszą opcjonalną pozycję, czyli RXD do P0.2 i TXD do P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Ustaw tryb UART i włącz odbiornik
   
   U0GCR = 11;
   U0BAUD = 216;                     Ustaw prędkość UART0 na 115200 bps, a dlaczego jest 216 i 11, zapoznaj się z chińską instrukcją CC2430
   
   U0UCR |= StopBits| Równość;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
pustka  Uart0Send(Niepodpisany chardane)
{
  podczas gdy(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = dane;
}

/*UART0发送字符串
-------------------------------------------------------*/
pustkaUart0SendString(Niepodpisany char*s)
{
  podczas gdy(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
Niepodpisany charUart0Receive(pustka)
{
  Niepodpisany chardane;
  podczas gdy(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  powrótdane;         
}

/*主函数
-------------------------------------------------------*/
pustkamain(pustka)
{
  Niepodpisany chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Proszę wprowadź ciąg zakończony na '@'!");

  recv_count =0;
  
  podczas gdy(1)
  {
    podczas gdy(1)                           
    {
      b = Uart0Receive(); UART
      jeśli(b=='@')przerwa;                 Jeśli otrzyma się '@', wyskakuje on z pętli i wychodzi ciąg znaków

      recv_buf[recv_count] = b;        Jeśli nie jest to '@', kontynuuj dodawanie znaków do tablicy znaków recv_buf[]
      recv_count++;
    }
    dla(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" łańcuch wyjściowy[="" i][="" kolor]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Najpierw skonfiguruj port I/O odpowiadający USART0: przekaż paręPECFRG.0Ustaw UART0 na opcjonalną pozycję 1, czyli P0.2 dla RXD i P0.3 dla TXD. Następnie skonfiguruj P0.2 i P0.3 jako zewnętrzne I/O dla urządzeń.

Następnie wybierz tryb UART i włącz amplituner. Następnie skonfiguruj parametry USART0: transmisja 115200, brak parzystości i bit stopu 1.

Następnie wyślij ciąg do komputera: Proszę wpisać ciąg zakończony na'@'! , a następnie używam while(1), by dalej próbować otrzymać każdy znak. Gdy ta postać tego nie robi'@', oznacza to, że wejście nie jest kompletne, i nadal dodaj ten znak do tablicy znaków recv_buf; Ta postać jest idealna'@', wejście jest kompletne, więc pętla jest wysyłana do komputera, aby każdy znak z recv_buf został wysłany do komputera, podczas resetowania recv_count.

(5) Wyniki eksperymentalne

Najpierw zakończ połączenie sprzętowe, otwórz narzędzie do debugowania portów szeregowych i skonfiguruj parametry zgodnie z poniższymi parametrami:

Kliknij "Open Serial Port", następnie rozpocznij debugowanie IAR, pozwól programowi działać, a oczekiwany ciąg znaków pojawi się w polu odbioru w narzędziu do debugowania portów szeregowych:

Następnie wpisz "Hello" w polu tekstowym "Oślij" poniżej narzędzia do debugowania portów szeregowych, jak pokazano poniżej:

Po kliknięciu "Wyślij" możesz się zastanawiać, dlaczego CC2430 nie zwraca tego, co napisałeś, skoro nie skończyłeś na @.

Ponownie wpisujemy "Zigbee!@", klikamy "Wyślij" i wynik wygląda tak:

Pojawi się oczekiwana treść "Hello Zigbee!". To koniec! To koniec eksperymentu~

3. Podsumowanie

Ten artykuł opisuje komunikację między płytą deweloperską CC2430 a komputerem hostem. Teraz, gdy mamy już podstawy komunikacji szeregowej, poznajmy w kolejnej sekcji pojedyncze próbkowanie ADC (konwersja analogowo-cyfrowa). Dzięki ADC możemy zebrać wartość czujnika temperatury na płycie deweloperskiej i przesłać ją do komputera przez port szeregowy, aby ją wyświetlić.






Poprzedni:Podróż Zigbee (4): Kilka ważnych podstawowych eksperymentów CC2430 – przerwanie timera
Następny:Podróż Zigbee (6): Kilka ważnych podstawowych eksperymentów CC2430 - pojedyncze próbkowanie ADC
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com