《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 如何實現PC機與CC2430之間的串口通信
如何實現PC機與CC2430之間的串口通信
摘要: 在無線傳感網絡中,CC2430需要將采集到的數據發送給上位機(即PC)處理,同時上位機需要向CC2430發送控制信息。這一切都離不開兩者之間的信息傳遞。這一節,我們就來學習如何實現PC機與CC2430之間的串口通信。
Abstract:
Key words :

  一、承上啟下

  在無線傳感網絡中,CC2430需要將采集到的數據發送給上位機(即PC)處理,同時上位機需要向CC2430發送控制信息。這一切都離不開兩者之間的信息傳遞。這一節,我們就來學習如何實現PC機與CC2430之間的串口通信。

  CC2430包括2個串行通信接口 USART0 與 USART1,每個串口包括兩個模式:UART(異步)模式、SPI(同步)模式,本節僅涉及UART模式)。

  二、串口通信實驗

 ?。?)實驗簡介

  實現開發板與PC機的通信:PC向CC2430發送某一字符串,CC2430收到后返回此此字符串給PC。

 ?。?)實驗準備

  開始編寫代碼之前,需要搭建好硬件設施:正確連線 + 安裝USB轉串的驅動。

  硬件連線需要兩條:

  CC2430開發板的JTAG口 → 調試器 → PC的USB口(用于程序的調試、下載)

  CC2430開發板的串口 → PC的USB口(用于PC與CC2430的數據通信)

  然后需要安裝USB轉串口的驅動(下載地址)

  為了向串口發送數據,還需要一個串口調試工具(下載地址)。

 ?。?)程序流程圖

 ?。?)實驗源碼及剖析

/*

  實驗說明:UART0,波特率115200bps,PC機向CC2430送字符串(以@字符結束),CC2430收到后返回該字符串

*/

#include

unsigned char recv_buf[300] = {0};

unsigned char recv_count = 0;

/*系統時鐘初始化

-------------------------------------------------------*/

void xtal_init(void)

{

  SLEEP &= ~0x04;             //都上電

  while(!(SLEEP & 0x40));     //晶體振蕩器開啟且穩定

  CLKCON &= ~0x47;            //選擇32MHz 晶體振蕩器

  SLEEP |= 0x04;

}

/*UART0通信初始化

-------------------------------------------------------*/

void Uart0Init(unsigned char StopBits,unsigned char Parity)

{

   PERCFG&= ~0x01;                  //選擇UART0為可選位置一,即RXD接P0.2,TXD接P0.3

   P0SEL |=  0x0C;                  //初始化UART0端口,設置P0.2與P0.3為外部設備IO口

   U0CSR = 0xC0;                    //設置為UART模式,并使能接收器

 

   U0GCR = 216;

   U0BAUD = 11;                     //設置UART0波特率為115200bps,至于為何是216和11,可查閱CC2430中文手冊

 

   U0UCR |= StopBits|Parity;        //設置停止位與奇偶校驗

}

/*UART0發送數據

-------------------------------------------------------*/

void  Uart0Send(unsigned char data)

{

  while(U0CSR&0x01);    //等待UART空閑時發送數據

  U0DBUF = data;

}

/*UART0發送字符串

-------------------------------------------------------*/

void Uart0SendString(unsigned char *s)

{

  while(*s != 0)         //依次發送字符串s中的每個字符

    Uart0Send(*s++);

}

/*UART0接受數據

-------------------------------------------------------*/

unsigned char Uart0Receive(void)

{

  unsigned char data;

  while(!(U0CSR&0x04)); //查詢是否收到數據,否則繼續等待

  data=U0DBUF;          //提取接收到的數據

  return data;        

}

/*主函數

-------------------------------------------------------*/

void main(void)

{

  unsigned char i,b;

 

  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,設置1個停止位,無奇偶校驗

  Uart0SendString("Please Input string ended with '@'!\r\n");

  recv_count = 0;

 

  while(1)

  {

    while(1)                         

    {

      b = Uart0Receive();UART

      if(b=='@')break;                 //若接收到'@',則跳出循環,輸出字符串

      recv_buf[recv_count] = b;        //若不是'@',則繼續向字符數組recv_buf[]添加字符

      recv_count++;

    }

    for(i=0; i

      Uart0Send(recv_buf[i]);

  

    Uart0SendString("\n");

    recv_count =0;                     //重置

  }

}

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 人人公开免费超级碰碰碰视频 | 国产操操 | 精品欧美 | 日本视频中文字幕一区二区 | 成年人影院在线观看 | 五月婷婷狠狠干 | 国产精品视频ccav | 窝窝午夜一级看片爽 | 国产满18av精品免费观看视频 | 免费国产成人综合 | 一区二区不卡在线观看 | 亚洲国产高清在线精品一区 | 波多野结衣福利视频 | 免费高清a级毛片在线播放 免费高清欧美一区二区视频 | 国产精品麻豆免费版 | 免费精品国偷自产在线读大二 | 岛国毛片一级一级特级毛片 | 久久99网| 国产在线视频欧美亚综合 | 欧美在线视频免费播放 | 国产新疆成人a一片在线观看 | 久久99精品久久久久久国产越南 | 一丝不遮视频免费观看 | 亚洲综合91| 久久性视频 | 天天网综合| 4虎影视国产在线观看精品 4k岛国精品午夜高清在线观看 | 国产成人手机在线好好热 | 久久精品国产一区二区三区日韩 | 欧美亚洲综合网 | 九月丁香激情综合婷婷玉立 | 亚洲一区二区三区四区在线 | 深夜在线观看网站 | 美国人成毛片在线播放 | 亚洲欧美专区精品久久 | 色免费看 | 国产精品边做边接电话在线观看 | 国产欧美日韩视频在线观看 | 亚洲日本va中文字幕婷婷 | 国产片a | 丝袜美女在线观看 |