找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9096|回復(fù): 1
收起左側(cè)

CC2530串口通信實(shí)驗(yàn)詳解 帶源碼與安卓APP

[復(fù)制鏈接]
ID:262881 發(fā)表于 2017-12-17 22:26 | 顯示全部樓層 |閱讀模式
串口通信,發(fā)送字符串
模塊通過串口向安卓發(fā)送數(shù)據(jù)
1、往CC2530模塊里面下載程序 打開 iar810,再用 iar810 去打開工程,在“2014-5-1-NJZBcc2530\2.基礎(chǔ)實(shí)驗(yàn)源碼\9.串口通訊-發(fā)送字符串”文件夾內(nèi),打開之后,rebuild all,然后再 debug(如果不會(huì),請(qǐng)看基礎(chǔ)實(shí)驗(yàn)的第一個(gè)實(shí)驗(yàn)),然后按仿真器的復(fù)位按鈕。程序就運(yùn)行起來了。
2、安裝APK到安卓設(shè)備(需要安卓 3.1以上)
安卓 APK 在“2014-8-1-NJZBcc2530\2.基礎(chǔ)實(shí)驗(yàn)源碼\9.串口通訊-發(fā)送字符串”目錄下,請(qǐng)大家自己把這個(gè) apk:“WchUsbDriver.apk”安裝到你的安卓設(shè)備。
0.jpg
3、安卓顯示cc2530通過串口送來的數(shù)據(jù):
如下順序連接硬件:
安卓—OTG 數(shù)據(jù)線————套件中的 usb 數(shù)據(jù)線—模塊   把安卓和模塊連接:
0.jpg
如上連接后,在你的安卓打開你剛安裝的 apk 程序,波特率選擇115200,然后點(diǎn)擊 config 按鈕,
就會(huì)在數(shù)據(jù)接受區(qū),看到模塊送來的“Hello Zigbee”字符了。
0.jpg
4、實(shí)驗(yàn)分析
本實(shí)驗(yàn)相關(guān)電路:
0.jpg
  P0_2、 P0_3 配置為外設(shè)功能時(shí): P0_2為 RX,   P0_3為 TX. USART0 和 USART1 是串行通信接口,它們能夠分別運(yùn)行于異步 UART 模式或者同步 SPI 模式。兩個(gè) USART 具有同樣的功能,可以設(shè)置在單獨(dú)的 I/O 引腳。

實(shí)驗(yàn)相關(guān)寄存器   
相關(guān)寄存器 UxCSR、UxCSR、UxGCR、UxBUF、UxBAUD、CLKCONCMD、CLKCONSTA 如下表
所示:  (見附件)

0.jpg
CC2530配置串口的一般步驟:   
1、 配置 IO,使用外部設(shè)備功能。此處配置 P0_2 和 P0_3 用作串口 UART0   
2、 配置相應(yīng)串口的控制和狀態(tài)寄存器。   
3、 配置串口工作的波特率。   
寄存器具體配置如下:   
PERCFG = 0x00; //位置 1 P0 口   
P0SEL = 0x0c; //P0_2,P0_3用作串口(外部設(shè)備功能)   
P2DIR &= ~0XC0; //P0優(yōu)先作為UART0   
U0CSR |= 0x80; //設(shè)置為UART方式   
U0GCR |= 11;   
U0BAUD |= 216; //波特率設(shè)為115200 根據(jù)上面表中獲得的數(shù)據(jù)   
   UTX0IF = 0; //UART0 TX 中斷標(biāo)志初始置位 0   
源碼分析,大家可以在 IAR 中看下注釋。


九、串口通信----發(fā)送字符
1、打開 iar810,再用 iar810去打開工程,在“2014-5-1-NJZBcc2530\2.基礎(chǔ)實(shí)驗(yàn)源碼\9.串口通訊-發(fā)送字符串”
文件夾內(nèi),打開之后,debug,然后按仿真器的復(fù)位按鈕。程序就運(yùn)行起來了。
2、用usb 數(shù)據(jù)線直接把模塊鏈接到電腦
0.jpg
如上圖操作后,就會(huì)在電腦里面生成一個(gè) com口,可以在設(shè)備管理器中看的到: +
0.jpg

然后打開串口助手(在“cc2530模塊資料(天線桿版本--2013-9-25)\8.軟件工具\(yùn)串口調(diào)試助手 V2.2”):
0.jpg
本實(shí)驗(yàn)相關(guān)電路:
0.jpg
  P0_2、P0_3配置為外設(shè)功能時(shí):P0_2為RX,  P0_3為TX. USART0和USART1是串行通信接口,它們能夠分
別運(yùn)行于異步 UART模式或者同步SPI  模式。兩個(gè) USART具有同樣的功能,可以設(shè)置在單獨(dú)的 I/O  引腳。

0.jpg

  1. /****************************************************************************
  2. * 文 件 名: main.c
  3. * 作    者: Andy
  4. * 修    訂: 2013-01-08
  5. * 版    本: 1.0
  6. * 描    述: 設(shè)置串口調(diào)試助手波特率:115200bps 8N1
  7. *           會(huì)收到CC2530發(fā)過來的:Hello Zigbee
  8. ****************************************************************************/
  9. #include <ioCC2530.h>
  10. #include <string.h>

  11. typedef unsigned char uchar;
  12. typedef unsigned int  uint;
  13. #define TX_SIZE    20

  14. #define TX_STRING  "Hello Zigbee  "

  15. char TxData[TX_SIZE];        //存儲(chǔ)發(fā)送字符串

  16. /****************************************************************************
  17. * 名    稱: DelayMS()
  18. * 功    能: 以毫秒為單位延時(shí) 16M時(shí)約為535,32M時(shí)要調(diào)整,系統(tǒng)時(shí)鐘不修改默認(rèn)為16M
  19. * 入口參數(shù): msec 延時(shí)參數(shù),值越大延時(shí)越久
  20. * 出口參數(shù): 無
  21. ****************************************************************************/
  22. void DelayMS(uint msec)
  23. {  
  24.     uint i,j;
  25.    
  26.     for (i=0; i<msec; i++)
  27.         for (j=0; j<1070; j++);
  28. }

  29. /****************************************************************************
  30. * 名    稱: InitUart()
  31. * 功    能: 串口初始化函數(shù)
  32. * 入口參數(shù): 無
  33. * 出口參數(shù): 無
  34. ****************************************************************************/
  35. void InitUart(void)
  36. {
  37.     PERCFG = 0x00;           //外設(shè)控制寄存器 USART 0的IO位置:0為P0口位置1
  38.     P0SEL = 0x0c;            //P0_2,P0_3用作串口(外設(shè)功能)
  39.     P2DIR &= ~0XC0;          //P0優(yōu)先作為UART0
  40.    
  41.     U0CSR |= 0x80;           //設(shè)置為UART方式
  42.     U0GCR |= 11;                                       
  43.     U0BAUD |= 216;           //波特率設(shè)為115200
  44.     UTX0IF = 0;              //UART0 TX中斷標(biāo)志初始置位0
  45. }

  46. /****************************************************************************
  47. * 名    稱: UartSendString()
  48. * 功    能: 串口發(fā)送函數(shù)
  49. * 入口參數(shù): Data:發(fā)送緩沖區(qū)   len:發(fā)送長(zhǎng)度
  50. * 出口參數(shù): 無
  51. ****************************************************************************/
  52. void UartSendString(char *Data, int len)
  53. {
  54.     uint i;
  55.    
  56.     for(i=0; i<len; i++)
  57.     {
  58.         U0DBUF = *Data++;
  59.         while(UTX0IF == 0);
  60.         UTX0IF = 0;
  61.     }
  62. }

  63. /****************************************************************************
  64. * 程序入口函數(shù)
  65. ****************************************************************************/
  66. void main(void)
  67. {       
  68.     CLKCONCMD &= ~0x40;               //設(shè)置系統(tǒng)時(shí)鐘源為32MHZ晶振
  69.     while(CLKCONSTA & 0x40);          //等待晶振穩(wěn)定為32M
  70.     CLKCONCMD &= ~0x47;               //設(shè)置系統(tǒng)主時(shí)鐘頻率為32MHZ   
  71.       
  72.     InitUart();                       //調(diào)置串口相關(guān)寄存器
  73.     memset(TxData, 0, TX_SIZE);       //數(shù)據(jù)清0
  74.     memcpy(TxData, TX_STRING, sizeof(TX_STRING)); //復(fù)制發(fā)送字符串到TxData
  75.         
  76.     while(1)
  77.     {
  78.         UartSendString(TxData, sizeof(TX_STRING)); //串口發(fā)送數(shù)據(jù)
  79.         DelayMS(1000);                 //延時(shí)
  80.     }
  81. }
復(fù)制代碼

全部資料51hei下載地址:
9.串口通訊-發(fā)送字符串.rar (3.21 MB, 下載次數(shù): 49)


回復(fù)

使用道具 舉報(bào)

ID:552120 發(fā)表于 2019-6-2 19:45 | 顯示全部樓層
下載不了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表