Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 7554|Відповідь: 0

Zigbee Journey (5): Кілька важливих базових експериментів CC2430 — послідовна комунікація

[Копіювати посилання]
Опубліковано 30.10.2014 23:18:18 | | | |
1. З'єднання верхнього та нижнього рівнів

У бездротовій сенсорній мережі CC2430 повинен надсилати зібрані дані на хост-комп'ютер (тобто ПК) для обробки, а хост-комп'ютер — на CC2430. Усе це нерозривно пов'язане з передачею інформації між ними. У цьому розділі ми дізнаємося, як реалізувати послідовний порт між ПК і CC2430.

CC2430 включає 2 послідовні інтерфейси зв'язкуUSART0іUSART1, кожен послідовний порт має два режими:UART(асинхронний) режим,SPI(синхронний) режим, цей розділ стосується лише режиму UART).

2. Експеримент із послідовним портом зв'язку(1) Вступ до експерименту

Усвідомте зв'язок між платою розробки та ПК: ПК надсилає певний рядок CC2430, і CC2430 повертає цей рядок на ПК після отримання.

(2) Експериментальна підготовка

Перед початком написання коду потрібно налаштувати апаратні функції: правильне підключення + встановлення USB-послідовного драйвера.

Потрібні два апаратних з'єднання:

    Порт JTAG плати розробки CC2430 → відлагоджувач → USB-порт ПК(Для налагодження та завантаження програм)

    Послідовний порт плати розробки CC2430 → USB-порт ПК(Для передачі даних між ПК і CC2430)

Потім потрібно встановити USB у послідовний драйвер (Адреса для завантаження

Для передачі даних на послідовний порт використовується інструмент налагодження послідовних портів (Адреса для завантаження)。

(3) Блок-схема програми

(4) Експериментальний вихідний код і аналіз/*
  Експериментальний опис: UART0, швидкість передачі 115200bps, ПК надсилає рядок CC2430 (закінчується на @ символ), CC2430 повертає рядок після отримання
*/

#include

Без підпису charrecv_buf[300] = {0};
Без підпису charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
Порожнечаxtal_init(Порожнеча)
{
  SLEEP &= ~0x04;            //都上电
  поки(! (SLEEP &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Виберіть кристалічний осцилятор на 32 МГц
  СОН |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
ПорожнечаUart0Init(Без підпису charStopBits,Без підпису charПаритет)
{
   PERCFG&= ~0x01;                  Виберіть UART0 як першу опціональну позицію, тобто RXD до P0.2 і TXD до P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Встановіть режим UART і увімкніть ресивер
   
   U0GCR = 11;
   U0BAUD = 216;                     Встановіть швидкість передачі UART0 на 115200 біт/с. Щодо причин 216 і 11, будь ласка, зверніться до китайського посібника CC2430
   
   U0UCR |= StopBits| Паритет;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
Порожнеча  Uart0Send(Без підпису charдані)
{
  поки(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = дані;
}

/*UART0发送字符串
-------------------------------------------------------*/
ПорожнечаUart0SendString(Без підпису char*s)
{
  поки(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
Без підпису charUart0Receive(Порожнеча)
{
  Без підпису charдані;
  поки(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  Поверненнядані;         
}

/*主函数
-------------------------------------------------------*/
ПорожнечаГоловна(Порожнеча)
{
  Без підпису chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Будь ласка, рядок введення закінчується на '@'!");

  recv_count =0;
  
  поки(1)
  {
    поки(1)                           
    {
      b = Uart0Receive(); UART
      якщо(b=='@')Перерва;                 Якщо отримано '@', він вистрибує з циклу і виводить рядок

      recv_buf[recv_count] = b;        Якщо це не '@', продовжуйте додавати символи до масиву символів recv_buf[]
      recv_count++;
    }
    для(i=0; I<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" вихідний рядок[="" i][="" колір]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Спочатку налаштуйте порт введення/вивод, що відповідає USART0: передайте паруPECFRG.0Встановіть UART0 на опціональну позицію 1, тобто P0.2 для RXD і P0.3 для TXD. Потім налаштуйте P0.2 і P0.3 як зовнішній ввод/вивід пристроїв.

Потім виберіть режим UART і увімкніть ресивер. Потім налаштуйте параметри USART0: швидкість передачі 115200, без парності та стоп-біт 1.

Потім надішліть рядок на ПК: Будь ласка, рядок введення закінчується на'@'! , а потім використовуй while(1), щоб намагатися отримати всіх отриманих персонажів. Коли цей персонаж цього не робить'@', це означає, що вхід не є повним, і продовжує додавати цей символ до масиву символів recv_buf; Цей персонаж ідеально підходить'@', вхід завершений, тому цикл надсилається на ПК, щоб кожен персонаж у recv_buf міг бути переданий на ПК, при цьому recv_count скидається.

(5) Експериментальні результати

Спочатку завершить апаратне підключення, відкрийте інструмент налагодження послідовних портів і налаштуйте параметри, як показано нижче:

Натисніть «Відкрити послідовний порт», потім починайте налагодження в IAR, дайте програмі запуститися, і ви побачите очікуваний рядок у полі прийому на інструменті налагодження послідовних портів:

Потім введіть «Hello» у текстове поле надсилання під інструментом налагодження послідовних портів, як показано нижче:

Після натискання «Відправити» ви можете здивуватися, чому CC2430 не повертає те, що ви ввели, бо ви не закінчилися на @.

Ми знову вводимо «Zigbee!@», натискаємо «Відправити», і результат виглядає так:

З'явиться очікуваний контент «Привіт, Зігбі!». Все скінчено! Це кінець експерименту~

3. Висновок

У цій статті описується зв'язок між платою розробки CC2430 та хост-комп'ютером. Тепер, коли ми маємо основи послідовної комунікації, давайте дізнаємося про одиночне семплінгування ADC (аналогово-цифрове перетворення) у наступному розділі. З ADC ми можемо зібрати значення температурного датчика на платі розробки і надіслати його на ПК через послідовний порт для відображення.






Попередній:Zigbee Journey (4): Кілька важливих базових експериментів CC2430 — переривання таймера
Наступний:Zigbee Journey (6): Кілька важливих базових експериментів CC2430 — ADC single sampleling
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com